diff options
author | Aleksey Kladov <[email protected]> | 2018-11-27 13:30:02 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2018-11-27 15:25:35 +0000 |
commit | 5b0e347f89be317d21fd894c0ccf4abee5645429 (patch) | |
tree | 571bc8be565fd37aa9f1bcd3f6e4aceeced273c2 /crates/ra_analysis | |
parent | 6bb06addf8d5100cd1125c40d3dfa5f7613b42c1 (diff) |
Make resolve_path cancelable
Diffstat (limited to 'crates/ra_analysis')
-rw-r--r-- | crates/ra_analysis/src/completion/reference_completion.rs | 2 | ||||
-rw-r--r-- | crates/ra_analysis/src/descriptors/module/mod.rs | 10 |
2 files changed, 10 insertions, 2 deletions
diff --git a/crates/ra_analysis/src/completion/reference_completion.rs b/crates/ra_analysis/src/completion/reference_completion.rs index 1faa70a18..41df881b3 100644 --- a/crates/ra_analysis/src/completion/reference_completion.rs +++ b/crates/ra_analysis/src/completion/reference_completion.rs | |||
@@ -157,7 +157,7 @@ fn complete_path( | |||
157 | return Ok(()); | 157 | return Ok(()); |
158 | } | 158 | } |
159 | path.segments.pop(); | 159 | path.segments.pop(); |
160 | let target_module = match module.resolve_path(path) { | 160 | let target_module = match module.resolve_path(path)? { |
161 | None => return Ok(()), | 161 | None => return Ok(()), |
162 | Some(it) => it, | 162 | Some(it) => it, |
163 | }; | 163 | }; |
diff --git a/crates/ra_analysis/src/descriptors/module/mod.rs b/crates/ra_analysis/src/descriptors/module/mod.rs index a6eaec178..f5238e239 100644 --- a/crates/ra_analysis/src/descriptors/module/mod.rs +++ b/crates/ra_analysis/src/descriptors/module/mod.rs | |||
@@ -133,7 +133,15 @@ impl ModuleDescriptor { | |||
133 | Ok(res) | 133 | Ok(res) |
134 | } | 134 | } |
135 | 135 | ||
136 | pub(crate) fn resolve_path(&self, path: Path) -> Option<ModuleDescriptor> { | 136 | pub(crate) fn resolve_path(&self, path: Path) -> Cancelable<Option<ModuleDescriptor>> { |
137 | let res = match self.do_resolve_path(path) { | ||
138 | None => return Ok(None), | ||
139 | Some(it) => it, | ||
140 | }; | ||
141 | Ok(Some(res)) | ||
142 | } | ||
143 | |||
144 | fn do_resolve_path(&self, path: Path) -> Option<ModuleDescriptor> { | ||
137 | let mut curr = match path.kind { | 145 | let mut curr = match path.kind { |
138 | PathKind::Crate => self.crate_root(), | 146 | PathKind::Crate => self.crate_root(), |
139 | PathKind::Self_ | PathKind::Plain => self.clone(), | 147 | PathKind::Self_ | PathKind::Plain => self.clone(), |