diff options
author | Aleksey Kladov <[email protected]> | 2018-10-20 19:52:49 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2018-10-20 19:52:49 +0100 |
commit | c4b0d3cd56ab68f4fa23f7c1f6c76f7f6148153e (patch) | |
tree | 90b7472979686314ca041dfe5ee7f95277827f9d /crates/ra_analysis/src/lib.rs | |
parent | 61518580ed60bb16edcd4fb7200d0b564b5ee9e9 (diff) |
make parent module cancelable
Diffstat (limited to 'crates/ra_analysis/src/lib.rs')
-rw-r--r-- | crates/ra_analysis/src/lib.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/crates/ra_analysis/src/lib.rs b/crates/ra_analysis/src/lib.rs index b1d5c4936..988a45b46 100644 --- a/crates/ra_analysis/src/lib.rs +++ b/crates/ra_analysis/src/lib.rs | |||
@@ -42,6 +42,15 @@ pub struct Cancel; | |||
42 | 42 | ||
43 | pub type Cancelable<T> = Result<T, Cancel>; | 43 | pub type Cancelable<T> = Result<T, Cancel>; |
44 | 44 | ||
45 | impl std::fmt::Display for Cancel { | ||
46 | fn fmt(&self, fmt: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | ||
47 | fmt.write_str("Canceled") | ||
48 | } | ||
49 | } | ||
50 | |||
51 | impl std::error::Error for Cancel { | ||
52 | } | ||
53 | |||
45 | #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] | 54 | #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] |
46 | pub struct FileId(pub u32); | 55 | pub struct FileId(pub u32); |
47 | 56 | ||
@@ -225,7 +234,7 @@ impl Analysis { | |||
225 | pub fn find_all_refs(&self, file_id: FileId, offset: TextUnit, token: &JobToken) -> Vec<(FileId, TextRange)> { | 234 | pub fn find_all_refs(&self, file_id: FileId, offset: TextUnit, token: &JobToken) -> Vec<(FileId, TextRange)> { |
226 | self.imp.find_all_refs(file_id, offset, token) | 235 | self.imp.find_all_refs(file_id, offset, token) |
227 | } | 236 | } |
228 | pub fn parent_module(&self, file_id: FileId) -> Vec<(FileId, FileSymbol)> { | 237 | pub fn parent_module(&self, file_id: FileId) -> Cancelable<Vec<(FileId, FileSymbol)>> { |
229 | self.imp.parent_module(file_id) | 238 | self.imp.parent_module(file_id) |
230 | } | 239 | } |
231 | pub fn crate_for(&self, file_id: FileId) -> Vec<CrateId> { | 240 | pub fn crate_for(&self, file_id: FileId) -> Vec<CrateId> { |