diff options
Diffstat (limited to 'crates/ra_hir/src/lib.rs')
-rw-r--r-- | crates/ra_hir/src/lib.rs | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/crates/ra_hir/src/lib.rs b/crates/ra_hir/src/lib.rs index 760524f6b..5941a9ea3 100644 --- a/crates/ra_hir/src/lib.rs +++ b/crates/ra_hir/src/lib.rs | |||
@@ -109,7 +109,8 @@ pub(crate) type SourceFileItemId = Id<SyntaxNode>; | |||
109 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] | 109 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] |
110 | pub struct SourceItemId { | 110 | pub struct SourceItemId { |
111 | file_id: FileId, | 111 | file_id: FileId, |
112 | item_id: SourceFileItemId, | 112 | /// None for the whole file. |
113 | item_id: Option<SourceFileItemId>, | ||
113 | } | 114 | } |
114 | 115 | ||
115 | /// Maps item's `SyntaxNode`s to `SourceFileItemId` and back. | 116 | /// Maps item's `SyntaxNode`s to `SourceFileItemId` and back. |
@@ -143,11 +144,14 @@ impl SourceFileItems { | |||
143 | return id; | 144 | return id; |
144 | } | 145 | } |
145 | // This should not happen. Let's try to give a sensible diagnostics. | 146 | // This should not happen. Let's try to give a sensible diagnostics. |
146 | if let Some((_, i)) = self.arena.iter().find(|(_id, i)| i.range() == item.range()) { | 147 | if let Some((id, i)) = self.arena.iter().find(|(_id, i)| i.range() == item.range()) { |
147 | panic!( | 148 | // FIXME(#288): whyyy are we getting here? |
149 | log::error!( | ||
148 | "unequal syntax nodes with the same range:\n{:?}\n{:?}", | 150 | "unequal syntax nodes with the same range:\n{:?}\n{:?}", |
149 | item, i | 151 | item, |
150 | ) | 152 | i |
153 | ); | ||
154 | return id; | ||
151 | } | 155 | } |
152 | panic!( | 156 | panic!( |
153 | "Can't find {:?} in SourceFileItems:\n{:?}", | 157 | "Can't find {:?} in SourceFileItems:\n{:?}", |