]> git.lizzy.rs Git - rust.git/commitdiff
Intern `ModPath` in `Import`
authorJonas Schievink <jonasschievink@gmail.com>
Sat, 3 Apr 2021 18:56:53 +0000 (20:56 +0200)
committerJonas Schievink <jonasschievink@gmail.com>
Sat, 3 Apr 2021 18:57:25 +0000 (20:57 +0200)
Minor savings only

crates/hir_def/src/item_tree.rs
crates/hir_def/src/item_tree/lower.rs
crates/hir_def/src/nameres/collector.rs

index 69a313c7e2d44cb8146aacb70959e13800857a55..dd80cef23a59a3b4cc37bcb3c000292da97fcb81 100644 (file)
@@ -529,7 +529,7 @@ fn index(&self, id: FileItemTreeId<N>) -> &N {
 /// A desugared `use` import.
 #[derive(Debug, Clone, Eq, PartialEq)]
 pub struct Import {
-    pub path: ModPath,
+    pub path: Interned<ModPath>,
     pub alias: Option<ImportAlias>,
     pub visibility: RawVisibilityId,
     pub is_glob: bool,
index 5247379c58c4a66be55a28ca2b03c65a6888f2c4..ead7cd7a4588549868da3b6cf6e628e32204b3e3 100644 (file)
@@ -577,7 +577,7 @@ fn lower_use(&mut self, use_item: &ast::Use) -> Vec<FileItemTreeId<Import>> {
             &self.hygiene,
             |path, _use_tree, is_glob, alias| {
                 imports.push(id(tree.imports.alloc(Import {
-                    path,
+                    path: Interned::new(path),
                     alias,
                     visibility,
                     is_glob,
index c8f49470788bf602c101ac778e41c532095e5ae3..c2e445b688923fbd47439d8154c26ae65c8e0243 100644 (file)
@@ -23,6 +23,7 @@
     attr::Attrs,
     db::DefDatabase,
     derive_macro_as_call_id,
+    intern::Interned,
     item_scope::{ImportType, PerNsGlobImports},
     item_tree::{
         self, FileItemTreeId, ItemTree, ItemTreeId, MacroCall, MacroDef, MacroRules, Mod, ModItem,
@@ -139,7 +140,7 @@ enum ImportSource {
 
 #[derive(Clone, Debug, Eq, PartialEq)]
 struct Import {
-    path: ModPath,
+    path: Interned<ModPath>,
     alias: Option<ImportAlias>,
     visibility: RawVisibility,
     is_glob: bool,
@@ -181,7 +182,10 @@ fn from_extern_crate(
         let attrs = &tree.attrs(db, krate, ModItem::from(id.value).into());
         let visibility = &tree[it.visibility];
         Self {
-            path: ModPath::from_segments(PathKind::Plain, iter::once(it.name.clone())),
+            path: Interned::new(ModPath::from_segments(
+                PathKind::Plain,
+                iter::once(it.name.clone()),
+            )),
             alias: it.alias.clone(),
             visibility: visibility.clone(),
             is_glob: false,