diff options
Diffstat (limited to 'crates/ra_hir/src/code_model_impl')
-rw-r--r-- | crates/ra_hir/src/code_model_impl/module.rs | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/crates/ra_hir/src/code_model_impl/module.rs b/crates/ra_hir/src/code_model_impl/module.rs index eb35779f1..0d22c9dbe 100644 --- a/crates/ra_hir/src/code_model_impl/module.rs +++ b/crates/ra_hir/src/code_model_impl/module.rs | |||
@@ -1,5 +1,5 @@ | |||
1 | use ra_db::{Cancelable, SourceRootId, FileId}; | 1 | use ra_db::{Cancelable, SourceRootId, FileId}; |
2 | use ra_syntax::{ast, SyntaxNode, AstNode}; | 2 | use ra_syntax::{ast, SyntaxNode, AstNode, TreePtr}; |
3 | 3 | ||
4 | use crate::{ | 4 | use crate::{ |
5 | Module, ModuleSource, Problem, | 5 | Module, ModuleSource, Problem, |
@@ -43,12 +43,11 @@ impl Module { | |||
43 | let loc = self.def_id.loc(db); | 43 | let loc = self.def_id.loc(db); |
44 | let file_id = loc.source_item_id.file_id.as_original_file(); | 44 | let file_id = loc.source_item_id.file_id.as_original_file(); |
45 | let syntax_node = db.file_item(loc.source_item_id); | 45 | let syntax_node = db.file_item(loc.source_item_id); |
46 | let syntax_node = syntax_node.borrowed(); | 46 | let module_source = if let Some(source_file) = ast::SourceFile::cast(&syntax_node) { |
47 | let module_source = if let Some(source_file) = ast::SourceFile::cast(syntax_node) { | 47 | ModuleSource::SourceFile(source_file.to_owned()) |
48 | ModuleSource::SourceFile(source_file.owned()) | ||
49 | } else { | 48 | } else { |
50 | let module = ast::Module::cast(syntax_node).unwrap(); | 49 | let module = ast::Module::cast(&syntax_node).unwrap(); |
51 | ModuleSource::Module(module.owned()) | 50 | ModuleSource::Module(module.to_owned()) |
52 | }; | 51 | }; |
53 | Ok((file_id, module_source)) | 52 | Ok((file_id, module_source)) |
54 | } | 53 | } |
@@ -56,7 +55,7 @@ impl Module { | |||
56 | pub fn declaration_source_impl( | 55 | pub fn declaration_source_impl( |
57 | &self, | 56 | &self, |
58 | db: &impl HirDatabase, | 57 | db: &impl HirDatabase, |
59 | ) -> Cancelable<Option<(FileId, ast::ModuleNode)>> { | 58 | ) -> Cancelable<Option<(FileId, TreePtr<ast::Module>)>> { |
60 | let loc = self.def_id.loc(db); | 59 | let loc = self.def_id.loc(db); |
61 | let module_tree = db.module_tree(loc.source_root_id)?; | 60 | let module_tree = db.module_tree(loc.source_root_id)?; |
62 | let link = ctry!(loc.module_id.parent_link(&module_tree)); | 61 | let link = ctry!(loc.module_id.parent_link(&module_tree)); |
@@ -146,7 +145,10 @@ impl Module { | |||
146 | } | 145 | } |
147 | Ok(curr_per_ns) | 146 | Ok(curr_per_ns) |
148 | } | 147 | } |
149 | pub fn problems_impl(&self, db: &impl HirDatabase) -> Cancelable<Vec<(SyntaxNode, Problem)>> { | 148 | pub fn problems_impl( |
149 | &self, | ||
150 | db: &impl HirDatabase, | ||
151 | ) -> Cancelable<Vec<(TreePtr<SyntaxNode>, Problem)>> { | ||
150 | let loc = self.def_id.loc(db); | 152 | let loc = self.def_id.loc(db); |
151 | let module_tree = db.module_tree(loc.source_root_id)?; | 153 | let module_tree = db.module_tree(loc.source_root_id)?; |
152 | Ok(loc.module_id.problems(&module_tree, db)) | 154 | Ok(loc.module_id.problems(&module_tree, db)) |