diff options
Diffstat (limited to 'crates/ide/src/mock_analysis.rs')
-rw-r--r-- | crates/ide/src/mock_analysis.rs | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/crates/ide/src/mock_analysis.rs b/crates/ide/src/mock_analysis.rs deleted file mode 100644 index 838547599..000000000 --- a/crates/ide/src/mock_analysis.rs +++ /dev/null | |||
@@ -1,73 +0,0 @@ | |||
1 | //! FIXME: write short doc here | ||
2 | |||
3 | use base_db::fixture::ChangeFixture; | ||
4 | use test_utils::{extract_annotations, RangeOrOffset}; | ||
5 | |||
6 | use crate::{Analysis, AnalysisHost, FileId, FilePosition, FileRange}; | ||
7 | |||
8 | /// Creates analysis from a multi-file fixture, returns positions marked with <|>. | ||
9 | pub(crate) fn analysis_and_position(ra_fixture: &str) -> (Analysis, FilePosition) { | ||
10 | let mut host = AnalysisHost::default(); | ||
11 | let change_fixture = ChangeFixture::parse(ra_fixture); | ||
12 | host.db.apply_change(change_fixture.change); | ||
13 | let (file_id, range_or_offset) = change_fixture.file_position.expect("expected a marker (<|>)"); | ||
14 | let offset = match range_or_offset { | ||
15 | RangeOrOffset::Range(_) => panic!(), | ||
16 | RangeOrOffset::Offset(it) => it, | ||
17 | }; | ||
18 | (host.analysis(), FilePosition { file_id, offset }) | ||
19 | } | ||
20 | |||
21 | /// Creates analysis for a single file. | ||
22 | pub(crate) fn single_file(ra_fixture: &str) -> (Analysis, FileId) { | ||
23 | let mut host = AnalysisHost::default(); | ||
24 | let change_fixture = ChangeFixture::parse(ra_fixture); | ||
25 | host.db.apply_change(change_fixture.change); | ||
26 | (host.analysis(), change_fixture.files[0]) | ||
27 | } | ||
28 | |||
29 | /// Creates analysis for a single file. | ||
30 | pub(crate) fn many_files(ra_fixture: &str) -> (Analysis, Vec<FileId>) { | ||
31 | let mut host = AnalysisHost::default(); | ||
32 | let change_fixture = ChangeFixture::parse(ra_fixture); | ||
33 | host.db.apply_change(change_fixture.change); | ||
34 | (host.analysis(), change_fixture.files) | ||
35 | } | ||
36 | |||
37 | /// Creates analysis for a single file, returns range marked with a pair of <|>. | ||
38 | pub(crate) fn analysis_and_range(ra_fixture: &str) -> (Analysis, FileRange) { | ||
39 | let mut host = AnalysisHost::default(); | ||
40 | let change_fixture = ChangeFixture::parse(ra_fixture); | ||
41 | host.db.apply_change(change_fixture.change); | ||
42 | let (file_id, range_or_offset) = change_fixture.file_position.expect("expected a marker (<|>)"); | ||
43 | let range = match range_or_offset { | ||
44 | RangeOrOffset::Range(it) => it, | ||
45 | RangeOrOffset::Offset(_) => panic!(), | ||
46 | }; | ||
47 | (host.analysis(), FileRange { file_id, range }) | ||
48 | } | ||
49 | |||
50 | /// Creates analysis from a multi-file fixture, returns positions marked with <|>. | ||
51 | pub(crate) fn analysis_and_annotations( | ||
52 | ra_fixture: &str, | ||
53 | ) -> (Analysis, FilePosition, Vec<(FileRange, String)>) { | ||
54 | let mut host = AnalysisHost::default(); | ||
55 | let change_fixture = ChangeFixture::parse(ra_fixture); | ||
56 | host.db.apply_change(change_fixture.change); | ||
57 | let (file_id, range_or_offset) = change_fixture.file_position.expect("expected a marker (<|>)"); | ||
58 | let offset = match range_or_offset { | ||
59 | RangeOrOffset::Range(_) => panic!(), | ||
60 | RangeOrOffset::Offset(it) => it, | ||
61 | }; | ||
62 | |||
63 | let annotations = change_fixture | ||
64 | .files | ||
65 | .iter() | ||
66 | .flat_map(|&file_id| { | ||
67 | let file_text = host.analysis().file_text(file_id).unwrap(); | ||
68 | let annotations = extract_annotations(&file_text); | ||
69 | annotations.into_iter().map(move |(range, data)| (FileRange { file_id, range }, data)) | ||
70 | }) | ||
71 | .collect(); | ||
72 | (host.analysis(), FilePosition { file_id, offset }, annotations) | ||
73 | } | ||