diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2020-06-30 12:30:51 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2020-06-30 12:30:51 +0100 |
commit | 6a73d544f4117b942b300afb8bda98216fc92356 (patch) | |
tree | 18b444a0d447465a7de75ec5a0153c90b8566a7f /crates/ra_ide/src/mock_analysis.rs | |
parent | 5a0fb3caff745d20face2d7ab02fa4da63faef9c (diff) | |
parent | af7e300041b1af68e671446fe22d2b9e5d30f83d (diff) |
Merge #5137
5137: Make gotodef tests more data-driven r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <[email protected]>
Diffstat (limited to 'crates/ra_ide/src/mock_analysis.rs')
-rw-r--r-- | crates/ra_ide/src/mock_analysis.rs | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/crates/ra_ide/src/mock_analysis.rs b/crates/ra_ide/src/mock_analysis.rs index 889b84c59..db6d50694 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(); |