diff options
Diffstat (limited to 'crates/ra_analysis/src/descriptors/module/mod.rs')
-rw-r--r-- | crates/ra_analysis/src/descriptors/module/mod.rs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/crates/ra_analysis/src/descriptors/module/mod.rs b/crates/ra_analysis/src/descriptors/module/mod.rs index 8464b0618..3d799ba05 100644 --- a/crates/ra_analysis/src/descriptors/module/mod.rs +++ b/crates/ra_analysis/src/descriptors/module/mod.rs | |||
@@ -142,9 +142,7 @@ impl LinkId { | |||
142 | .1; | 142 | .1; |
143 | ast.into() | 143 | ast.into() |
144 | } | 144 | } |
145 | ModuleSourceNode::Inline(..) => { | 145 | ModuleSourceNode::Inline(it) => it, |
146 | unimplemented!("https://github.com/rust-analyzer/rust-analyzer/issues/181") | ||
147 | } | ||
148 | } | 146 | } |
149 | } | 147 | } |
150 | } | 148 | } |
@@ -157,6 +155,12 @@ struct ModuleData { | |||
157 | } | 155 | } |
158 | 156 | ||
159 | impl ModuleSource { | 157 | impl ModuleSource { |
158 | pub(crate) fn new_inline(file_id: FileId, module: ast::Module) -> ModuleSource { | ||
159 | assert!(!module.has_semi()); | ||
160 | let ptr = SyntaxPtr::new(file_id, module.syntax()); | ||
161 | ModuleSource::Inline(ptr) | ||
162 | } | ||
163 | |||
160 | pub(crate) fn as_file(self) -> Option<FileId> { | 164 | pub(crate) fn as_file(self) -> Option<FileId> { |
161 | match self { | 165 | match self { |
162 | ModuleSource::File(f) => Some(f), | 166 | ModuleSource::File(f) => Some(f), |
@@ -164,7 +168,7 @@ impl ModuleSource { | |||
164 | } | 168 | } |
165 | } | 169 | } |
166 | 170 | ||
167 | fn file_id(self) -> FileId { | 171 | pub(crate) fn file_id(self) -> FileId { |
168 | match self { | 172 | match self { |
169 | ModuleSource::File(f) => f, | 173 | ModuleSource::File(f) => f, |
170 | ModuleSource::Inline(ptr) => ptr.file_id(), | 174 | ModuleSource::Inline(ptr) => ptr.file_id(), |