aboutsummaryrefslogtreecommitdiff
path: root/crates/ide/src/mock_analysis.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2020-10-02 16:34:31 +0100
committerAleksey Kladov <[email protected]>2020-10-02 16:49:44 +0100
commitb06259673f9b535a63c0cabf4eeb935ff73d86d0 (patch)
treea1d9c304711806c393163547fe6da69289aa9f16 /crates/ide/src/mock_analysis.rs
parent09348b247465864c6462a39055803bcbb0156cfe (diff)
rename mock_analysis -> fixture
Diffstat (limited to 'crates/ide/src/mock_analysis.rs')
-rw-r--r--crates/ide/src/mock_analysis.rs73
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
3use base_db::fixture::ChangeFixture;
4use test_utils::{extract_annotations, RangeOrOffset};
5
6use crate::{Analysis, AnalysisHost, FileId, FilePosition, FileRange};
7
8/// Creates analysis from a multi-file fixture, returns positions marked with <|>.
9pub(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.
22pub(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.
30pub(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 <|>.
38pub(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 <|>.
51pub(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}