diff options
author | Jonas Schievink <[email protected]> | 2020-06-23 19:20:30 +0100 |
---|---|---|
committer | Jonas Schievink <[email protected]> | 2020-06-24 15:53:56 +0100 |
commit | 16fd4dabb754b017237127e70ef1e2b409c4f9b6 (patch) | |
tree | 2743ebecc714b27f75a9dfe0a488437e475010ba /crates/ra_hir_def/src/item_tree.rs | |
parent | c019002d17185f4e8be54a978ab5d67bc632f518 (diff) |
Remove file id from item tree
It's not needed, and `source` is only used by tests anyways
Diffstat (limited to 'crates/ra_hir_def/src/item_tree.rs')
-rw-r--r-- | crates/ra_hir_def/src/item_tree.rs | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/crates/ra_hir_def/src/item_tree.rs b/crates/ra_hir_def/src/item_tree.rs index d55b3f777..40bb78b57 100644 --- a/crates/ra_hir_def/src/item_tree.rs +++ b/crates/ra_hir_def/src/item_tree.rs | |||
@@ -67,7 +67,6 @@ enum AttrOwner { | |||
67 | /// The item tree of a source file. | 67 | /// The item tree of a source file. |
68 | #[derive(Debug, Eq, PartialEq)] | 68 | #[derive(Debug, Eq, PartialEq)] |
69 | pub struct ItemTree { | 69 | pub struct ItemTree { |
70 | file_id: HirFileId, | ||
71 | top_level: SmallVec<[ModItem; 1]>, | 70 | top_level: SmallVec<[ModItem; 1]>, |
72 | attrs: FxHashMap<AttrOwner, Attrs>, | 71 | attrs: FxHashMap<AttrOwner, Attrs>, |
73 | inner_items: FxHashMap<FileAstId<ast::ModuleItem>, SmallVec<[ModItem; 1]>>, | 72 | inner_items: FxHashMap<FileAstId<ast::ModuleItem>, SmallVec<[ModItem; 1]>>, |
@@ -81,7 +80,7 @@ impl ItemTree { | |||
81 | let syntax = if let Some(node) = db.parse_or_expand(file_id) { | 80 | let syntax = if let Some(node) = db.parse_or_expand(file_id) { |
82 | node | 81 | node |
83 | } else { | 82 | } else { |
84 | return Arc::new(Self::empty(file_id)); | 83 | return Arc::new(Self::empty()); |
85 | }; | 84 | }; |
86 | 85 | ||
87 | let hygiene = Hygiene::new(db.upcast(), file_id); | 86 | let hygiene = Hygiene::new(db.upcast(), file_id); |
@@ -113,9 +112,8 @@ impl ItemTree { | |||
113 | Arc::new(item_tree) | 112 | Arc::new(item_tree) |
114 | } | 113 | } |
115 | 114 | ||
116 | fn empty(file_id: HirFileId) -> Self { | 115 | fn empty() -> Self { |
117 | Self { | 116 | Self { |
118 | file_id, | ||
119 | top_level: Default::default(), | 117 | top_level: Default::default(), |
120 | attrs: Default::default(), | 118 | attrs: Default::default(), |
121 | inner_items: Default::default(), | 119 | inner_items: Default::default(), |
@@ -150,19 +148,14 @@ impl ItemTree { | |||
150 | self.inner_items.values().flatten().copied() | 148 | self.inner_items.values().flatten().copied() |
151 | } | 149 | } |
152 | 150 | ||
153 | pub fn source<S: ItemTreeNode>( | 151 | pub fn source<S: ItemTreeNode>(&self, db: &dyn DefDatabase, of: ItemTreeId<S>) -> S::Source { |
154 | &self, | ||
155 | db: &dyn DefDatabase, | ||
156 | of: FileItemTreeId<S>, | ||
157 | ) -> S::Source { | ||
158 | // This unwrap cannot fail, since it has either succeeded above, or resulted in an empty | 152 | // This unwrap cannot fail, since it has either succeeded above, or resulted in an empty |
159 | // ItemTree (in which case there is no valid `FileItemTreeId` to call this method with). | 153 | // ItemTree (in which case there is no valid `FileItemTreeId` to call this method with). |
160 | let root = db | 154 | let root = |
161 | .parse_or_expand(self.file_id) | 155 | db.parse_or_expand(of.file_id).expect("parse_or_expand failed on constructed ItemTree"); |
162 | .expect("parse_or_expand failed on constructed ItemTree"); | ||
163 | 156 | ||
164 | let id = self[of].ast_id(); | 157 | let id = self[of.value].ast_id(); |
165 | let map = db.ast_id_map(self.file_id); | 158 | let map = db.ast_id_map(of.file_id); |
166 | let ptr = map.get(id); | 159 | let ptr = map.get(id); |
167 | ptr.to_node(&root) | 160 | ptr.to_node(&root) |
168 | } | 161 | } |