diff options
Diffstat (limited to 'crates/ra_ide/src/mock_analysis.rs')
-rw-r--r-- | crates/ra_ide/src/mock_analysis.rs | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/crates/ra_ide/src/mock_analysis.rs b/crates/ra_ide/src/mock_analysis.rs index 889b84c59..a393d3dba 100644 --- a/crates/ra_ide/src/mock_analysis.rs +++ b/crates/ra_ide/src/mock_analysis.rs | |||
@@ -3,7 +3,9 @@ use std::sync::Arc; | |||
3 | 3 | ||
4 | use ra_cfg::CfgOptions; | 4 | use ra_cfg::CfgOptions; |
5 | use ra_db::{CrateName, Env, FileSet, SourceRoot, VfsPath}; | 5 | use ra_db::{CrateName, Env, FileSet, SourceRoot, VfsPath}; |
6 | use test_utils::{extract_range_or_offset, Fixture, RangeOrOffset, CURSOR_MARKER}; | 6 | use test_utils::{ |
7 | extract_annotations, extract_range_or_offset, Fixture, RangeOrOffset, CURSOR_MARKER, | ||
8 | }; | ||
7 | 9 | ||
8 | use crate::{ | 10 | use crate::{ |
9 | Analysis, AnalysisChange, AnalysisHost, CrateGraph, Edition, FileId, FilePosition, FileRange, | 11 | Analysis, AnalysisChange, AnalysisHost, CrateGraph, Edition, FileId, FilePosition, FileRange, |
@@ -77,6 +79,24 @@ impl MockAnalysis { | |||
77 | .expect("no file in this mock"); | 79 | .expect("no file in this mock"); |
78 | FileId(idx as u32 + 1) | 80 | FileId(idx as u32 + 1) |
79 | } | 81 | } |
82 | pub fn annotations(&self) -> Vec<(FileRange, String)> { | ||
83 | self.files | ||
84 | .iter() | ||
85 | .enumerate() | ||
86 | .flat_map(|(idx, fixture)| { | ||
87 | let file_id = FileId(idx as u32 + 1); | ||
88 | let annotations = extract_annotations(&fixture.text); | ||
89 | annotations | ||
90 | .into_iter() | ||
91 | .map(move |(range, data)| (FileRange { file_id, range }, data)) | ||
92 | }) | ||
93 | .collect() | ||
94 | } | ||
95 | pub fn annotation(&self) -> (FileRange, String) { | ||
96 | let mut all = self.annotations(); | ||
97 | assert_eq!(all.len(), 1); | ||
98 | all.pop().unwrap() | ||
99 | } | ||
80 | pub fn analysis_host(self) -> AnalysisHost { | 100 | pub fn analysis_host(self) -> AnalysisHost { |
81 | let mut host = AnalysisHost::default(); | 101 | let mut host = AnalysisHost::default(); |
82 | let mut change = AnalysisChange::new(); | 102 | let mut change = AnalysisChange::new(); |
@@ -110,7 +130,7 @@ impl MockAnalysis { | |||
110 | let other_crate = crate_graph.add_crate_root( | 130 | let other_crate = crate_graph.add_crate_root( |
111 | file_id, | 131 | file_id, |
112 | edition, | 132 | edition, |
113 | Some(CrateName::new(crate_name).unwrap()), | 133 | Some(crate_name.to_string()), |
114 | cfg, | 134 | cfg, |
115 | env, | 135 | env, |
116 | Default::default(), | 136 | Default::default(), |