self.body.item_scope.define_def(def);
if let Some(name) = name {
let vis = crate::visibility::Visibility::Public; // FIXME determine correctly
- let favor_types = match def {
+ let has_constructor = match def {
ModuleDefId::AdtId(AdtId::StructId(s)) => {
- self.db.struct_data(s).variant_data.kind() == StructKind::Record
+ self.db.struct_data(s).variant_data.kind() != StructKind::Record
}
- _ => false,
+ _ => true,
};
self.body.item_scope.push_res(
name.as_name(),
- crate::per_ns::PerNs::from_def(def, vis, favor_types),
+ crate::per_ns::PerNs::from_def(def, vis, has_constructor),
);
}
}
}
impl PerNs {
- pub(crate) fn from_def(def: ModuleDefId, v: Visibility, favor_types: bool) -> PerNs {
+ pub(crate) fn from_def(def: ModuleDefId, v: Visibility, has_constructor: bool) -> PerNs {
match def {
ModuleDefId::ModuleId(_) => PerNs::types(def, v),
ModuleDefId::FunctionId(_) => PerNs::values(def, v),
AdtId::UnionId(_) => PerNs::both(def, def, v),
AdtId::EnumId(_) => PerNs::types(def, v),
AdtId::StructId(_) => {
- if favor_types {
+ if !has_constructor {
PerNs::types(def, v)
} else {
PerNs::both(def, def, v)
let name = def.name.clone();
let container = ContainerId::ModuleId(module);
let vis = &def.visibility;
- let mut favor_types = false;
+ let mut has_constructor = false;
let def: ModuleDefId = match def.kind {
raw::DefKind::Function(ast_id) => FunctionLoc {
.intern(self.def_collector.db)
.into(),
raw::DefKind::Struct(ast_id, mode) => {
- favor_types = mode == raw::StructDefKind::Record;
+ has_constructor = mode != raw::StructDefKind::Record;
StructLoc { container, ast_id: AstId::new(self.file_id, ast_id) }
.intern(self.def_collector.db)
.into()
.unwrap_or(Visibility::Public);
self.def_collector.update(
self.module_id,
- &[(name, PerNs::from_def(def, vis, favor_types))],
+ &[(name, PerNs::from_def(def, vis, has_constructor))],
vis,
)
}