]> git.lizzy.rs Git - rust.git/commitdiff
Simplify
authorAleksey Kladov <aleksey.kladov@gmail.com>
Sun, 22 Dec 2019 18:32:35 +0000 (19:32 +0100)
committerAleksey Kladov <aleksey.kladov@gmail.com>
Sun, 22 Dec 2019 18:32:35 +0000 (19:32 +0100)
crates/ra_hir_def/src/item_scope.rs
crates/ra_hir_def/src/nameres/path_resolution.rs

index 08d788cc9cc5854c97f8fe831c784cebe9ce8e32..e8ddcc3c27436d4643bb9d5912c8018964350ebf 100644 (file)
@@ -70,20 +70,27 @@ pub(crate) fn legacy_macros<'a>(&'a self) -> impl Iterator<Item = (&'a Name, Mac
     }
 
     /// Get a name from current module scope, legacy macros are not included
-    pub(crate) fn get(&self, name: &Name, shadow: BuiltinShadowMode) -> Option<PerNs> {
+    pub(crate) fn get(&self, name: &Name, shadow: BuiltinShadowMode) -> PerNs {
         match shadow {
-            BuiltinShadowMode::Module => {
-                self.visible.get(name).or_else(|| BUILTIN_SCOPE.get(name)).copied()
-            }
+            BuiltinShadowMode::Module => self
+                .visible
+                .get(name)
+                .or_else(|| BUILTIN_SCOPE.get(name))
+                .copied()
+                .unwrap_or_else(PerNs::none),
             BuiltinShadowMode::Other => {
                 let item = self.visible.get(name).copied();
                 if let Some(def) = item {
                     if let Some(ModuleDefId::ModuleId(_)) = def.take_types() {
-                        return BUILTIN_SCOPE.get(name).copied().or(item);
+                        return BUILTIN_SCOPE
+                            .get(name)
+                            .copied()
+                            .or(item)
+                            .unwrap_or_else(PerNs::none);
                     }
                 }
 
-                item.or_else(|| BUILTIN_SCOPE.get(name).copied())
+                item.or_else(|| BUILTIN_SCOPE.get(name).copied()).unwrap_or_else(PerNs::none)
             }
         }
     }
index 9b85ae0181962972353969d122a19b33e8e954a3..695014c7bb95dcea74065020110cce2d6e77e77e 100644 (file)
@@ -180,13 +180,7 @@ pub(super) fn resolve_path_fp_with_macro(
                     }
 
                     // Since it is a qualified path here, it should not contains legacy macros
-                    match self[module.local_id].scope.get(&segment, prefer_module(i)) {
-                        Some(def) => def,
-                        _ => {
-                            log::debug!("path segment {:?} not found", segment);
-                            return ResolvePathResult::empty(ReachedFixedPoint::No);
-                        }
-                    }
+                    self[module.local_id].scope.get(&segment, prefer_module(i))
                 }
                 ModuleDefId::AdtId(AdtId::EnumId(e)) => {
                     // enum variant
@@ -243,7 +237,7 @@ fn resolve_name_in_module(
         //  - std prelude
         let from_legacy_macro =
             self[module].scope.get_legacy_macro(name).map_or_else(PerNs::none, PerNs::macros);
-        let from_scope = self[module].scope.get(name, shadow).unwrap_or_else(PerNs::none);
+        let from_scope = self[module].scope.get(name, shadow);
         let from_extern_prelude =
             self.extern_prelude.get(name).map_or(PerNs::none(), |&it| PerNs::types(it));
         let from_prelude = self.resolve_in_prelude(db, name, shadow);
@@ -256,7 +250,7 @@ fn resolve_name_in_crate_root_or_extern_prelude(
         name: &Name,
         shadow: BuiltinShadowMode,
     ) -> PerNs {
-        let from_crate_root = self[self.root].scope.get(name, shadow).unwrap_or_else(PerNs::none);
+        let from_crate_root = self[self.root].scope.get(name, shadow);
         let from_extern_prelude = self.resolve_name_in_extern_prelude(name);
 
         from_crate_root.or(from_extern_prelude)
@@ -277,7 +271,7 @@ fn resolve_in_prelude(
                 keep = db.crate_def_map(prelude.krate);
                 &keep
             };
-            def_map[prelude.local_id].scope.get(name, shadow).unwrap_or_else(PerNs::none)
+            def_map[prelude.local_id].scope.get(name, shadow)
         } else {
             PerNs::none()
         }