diff options
Diffstat (limited to 'crates/ra_analysis/src')
-rw-r--r-- | crates/ra_analysis/src/completion/complete_scope.rs | 5 | ||||
-rw-r--r-- | crates/ra_analysis/src/goto_defenition.rs | 4 | ||||
-rw-r--r-- | crates/ra_analysis/src/imp.rs | 5 | ||||
-rw-r--r-- | crates/ra_analysis/src/runnables.rs | 5 |
4 files changed, 12 insertions, 7 deletions
diff --git a/crates/ra_analysis/src/completion/complete_scope.rs b/crates/ra_analysis/src/completion/complete_scope.rs index 21d77aa97..ee9052d3d 100644 --- a/crates/ra_analysis/src/completion/complete_scope.rs +++ b/crates/ra_analysis/src/completion/complete_scope.rs | |||
@@ -20,14 +20,17 @@ pub(super) fn complete_scope(acc: &mut Completions, ctx: &CompletionContext) -> | |||
20 | } | 20 | } |
21 | 21 | ||
22 | let module_scope = module.scope(ctx.db)?; | 22 | let module_scope = module.scope(ctx.db)?; |
23 | let (file_id, _) = module.defenition_source(ctx.db)?; | ||
23 | module_scope | 24 | module_scope |
24 | .entries() | 25 | .entries() |
25 | .filter(|(_name, res)| { | 26 | .filter(|(_name, res)| { |
26 | // Don't expose this item | 27 | // Don't expose this item |
28 | // FIXME: this penetrates through all kinds of abstractions, | ||
29 | // we need to figura out the way to do it less ugly. | ||
27 | match res.import { | 30 | match res.import { |
28 | None => true, | 31 | None => true, |
29 | Some(import) => { | 32 | Some(import) => { |
30 | let range = import.range(ctx.db, module.file_id()); | 33 | let range = import.range(ctx.db, file_id); |
31 | !range.is_subrange(&ctx.leaf.range()) | 34 | !range.is_subrange(&ctx.leaf.range()) |
32 | } | 35 | } |
33 | } | 36 | } |
diff --git a/crates/ra_analysis/src/goto_defenition.rs b/crates/ra_analysis/src/goto_defenition.rs index 68b6ac3ba..aa0616e3b 100644 --- a/crates/ra_analysis/src/goto_defenition.rs +++ b/crates/ra_analysis/src/goto_defenition.rs | |||
@@ -60,8 +60,8 @@ fn name_defenition( | |||
60 | if let Some(child_module) = | 60 | if let Some(child_module) = |
61 | hir::source_binder::module_from_declaration(db, file_id, module)? | 61 | hir::source_binder::module_from_declaration(db, file_id, module)? |
62 | { | 62 | { |
63 | let file_id = child_module.file_id(); | 63 | let (file_id, _) = child_module.defenition_source(db)?; |
64 | let name = match child_module.name() { | 64 | let name = match child_module.name(db)? { |
65 | Some(name) => name.to_string().into(), | 65 | Some(name) => name.to_string().into(), |
66 | None => "".into(), | 66 | None => "".into(), |
67 | }; | 67 | }; |
diff --git a/crates/ra_analysis/src/imp.rs b/crates/ra_analysis/src/imp.rs index 44e7aca44..07a966290 100644 --- a/crates/ra_analysis/src/imp.rs +++ b/crates/ra_analysis/src/imp.rs | |||
@@ -109,8 +109,7 @@ impl db::RootDatabase { | |||
109 | None => return Ok(Vec::new()), | 109 | None => return Ok(Vec::new()), |
110 | Some(it) => it, | 110 | Some(it) => it, |
111 | }; | 111 | }; |
112 | let (file_id, ast_module) = module.source(self); | 112 | let (file_id, ast_module) = match module.declaration_source(self)? { |
113 | let ast_module = match ast_module { | ||
114 | None => return Ok(Vec::new()), | 113 | None => return Ok(Vec::new()), |
115 | Some(it) => it, | 114 | Some(it) => it, |
116 | }; | 115 | }; |
@@ -206,7 +205,7 @@ impl db::RootDatabase { | |||
206 | }) | 205 | }) |
207 | .collect::<Vec<_>>(); | 206 | .collect::<Vec<_>>(); |
208 | if let Some(m) = source_binder::module_from_file_id(self, file_id)? { | 207 | if let Some(m) = source_binder::module_from_file_id(self, file_id)? { |
209 | for (name_node, problem) in m.problems(self) { | 208 | for (name_node, problem) in m.problems(self)? { |
210 | let source_root = self.file_source_root(file_id); | 209 | let source_root = self.file_source_root(file_id); |
211 | let diag = match problem { | 210 | let diag = match problem { |
212 | Problem::UnresolvedModule { candidate } => { | 211 | Problem::UnresolvedModule { candidate } => { |
diff --git a/crates/ra_analysis/src/runnables.rs b/crates/ra_analysis/src/runnables.rs index f24aa514a..216209098 100644 --- a/crates/ra_analysis/src/runnables.rs +++ b/crates/ra_analysis/src/runnables.rs | |||
@@ -72,12 +72,15 @@ fn runnable_mod(db: &RootDatabase, file_id: FileId, module: ast::Module) -> Opti | |||
72 | let range = module.syntax().range(); | 72 | let range = module.syntax().range(); |
73 | let module = | 73 | let module = |
74 | hir::source_binder::module_from_child_node(db, file_id, module.syntax()).ok()??; | 74 | hir::source_binder::module_from_child_node(db, file_id, module.syntax()).ok()??; |
75 | |||
76 | // FIXME: thread cancellation instead of `.ok`ing | ||
75 | let path = module | 77 | let path = module |
76 | .path_to_root(db) | 78 | .path_to_root(db) |
77 | .ok()? | 79 | .ok()? |
78 | .into_iter() | 80 | .into_iter() |
79 | .rev() | 81 | .rev() |
80 | .filter_map(|it| it.name(db).map(Clone::clone)) | 82 | .filter_map(|it| it.name(db).ok()) |
83 | .filter_map(|it| it) | ||
81 | .join("::"); | 84 | .join("::"); |
82 | Some(Runnable { | 85 | Some(Runnable { |
83 | range, | 86 | range, |