]> git.lizzy.rs Git - rust.git/commitdiff
Change favor_types to has_constructor
authorEdwin Cheng <edwin0cheng@gmail.com>
Mon, 4 May 2020 17:15:27 +0000 (01:15 +0800)
committerEdwin Cheng <edwin0cheng@gmail.com>
Mon, 4 May 2020 17:15:27 +0000 (01:15 +0800)
crates/ra_hir_def/src/body/lower.rs
crates/ra_hir_def/src/item_scope.rs
crates/ra_hir_def/src/nameres/collector.rs

index ea0ddeebcc39122818171d5cfcec9b5de2c22cd7..4671b72e9d801727a99f2c46287a6e7116c0a872 100644 (file)
@@ -575,15 +575,15 @@ fn collect_block_items(&mut self, block: &ast::BlockExpr) {
             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),
                 );
             }
         }
index 6d8d1f8a3852079bbf07568c2be48fbd96aa066e..954f2542a03571d066ae962d39d38a75c89f44a2 100644 (file)
@@ -151,7 +151,7 @@ pub(crate) fn collect_legacy_macros(&self) -> FxHashMap<Name, MacroDefId> {
 }
 
 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),
@@ -159,7 +159,7 @@ pub(crate) fn from_def(def: ModuleDefId, v: Visibility, favor_types: bool) -> Pe
                 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)
index 49b33ca94239422bb0b9a1b9d97bc77c15e02d6a..db994122ae98bb6ce2d78dc28556990e08965d65 100644 (file)
@@ -844,7 +844,7 @@ fn define_def(&mut self, def: &raw::DefData, attrs: &Attrs) {
         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 {
@@ -854,7 +854,7 @@ fn define_def(&mut self, def: &raw::DefData, attrs: &Attrs) {
             .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()
@@ -899,7 +899,7 @@ fn define_def(&mut self, def: &raw::DefData, attrs: &Attrs) {
             .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,
         )
     }