diff options
Diffstat (limited to 'crates/ra_ide/src/mock_analysis.rs')
-rw-r--r-- | crates/ra_ide/src/mock_analysis.rs | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/crates/ra_ide/src/mock_analysis.rs b/crates/ra_ide/src/mock_analysis.rs index 8d8e30714..ad78d2d93 100644 --- a/crates/ra_ide/src/mock_analysis.rs +++ b/crates/ra_ide/src/mock_analysis.rs | |||
@@ -1,5 +1,6 @@ | |||
1 | //! FIXME: write short doc here | 1 | //! FIXME: write short doc here |
2 | 2 | ||
3 | use std::str::FromStr; | ||
3 | use std::sync::Arc; | 4 | use std::sync::Arc; |
4 | 5 | ||
5 | use ra_cfg::CfgOptions; | 6 | use ra_cfg::CfgOptions; |
@@ -7,8 +8,8 @@ use ra_db::{CrateName, Env, RelativePathBuf}; | |||
7 | use test_utils::{extract_offset, extract_range, parse_fixture, FixtureEntry, CURSOR_MARKER}; | 8 | use test_utils::{extract_offset, extract_range, parse_fixture, FixtureEntry, CURSOR_MARKER}; |
8 | 9 | ||
9 | use crate::{ | 10 | use crate::{ |
10 | Analysis, AnalysisChange, AnalysisHost, CrateGraph, Edition::Edition2018, FileId, FilePosition, | 11 | Analysis, AnalysisChange, AnalysisHost, CrateGraph, Edition, FileId, FilePosition, FileRange, |
11 | FileRange, SourceRootId, | 12 | SourceRootId, |
12 | }; | 13 | }; |
13 | 14 | ||
14 | #[derive(Debug)] | 15 | #[derive(Debug)] |
@@ -46,6 +47,22 @@ impl MockFileData { | |||
46 | _ => CfgOptions::default(), | 47 | _ => CfgOptions::default(), |
47 | } | 48 | } |
48 | } | 49 | } |
50 | |||
51 | fn edition(&self) -> Edition { | ||
52 | match self { | ||
53 | MockFileData::Fixture(f) => { | ||
54 | f.meta.edition().map_or(Edition::Edition2018, |v| Edition::from_str(v).unwrap()) | ||
55 | } | ||
56 | _ => Edition::Edition2018, | ||
57 | } | ||
58 | } | ||
59 | |||
60 | fn env(&self) -> Env { | ||
61 | match self { | ||
62 | MockFileData::Fixture(f) => Env::from(f.meta.env()), | ||
63 | _ => Env::default(), | ||
64 | } | ||
65 | } | ||
49 | } | 66 | } |
50 | 67 | ||
51 | impl From<FixtureEntry> for MockFileData { | 68 | impl From<FixtureEntry> for MockFileData { |
@@ -153,13 +170,15 @@ impl MockAnalysis { | |||
153 | let path = RelativePathBuf::from_path(&path[1..]).unwrap(); | 170 | let path = RelativePathBuf::from_path(&path[1..]).unwrap(); |
154 | let cfg_options = data.cfg_options(); | 171 | let cfg_options = data.cfg_options(); |
155 | let file_id = FileId(i as u32 + 1); | 172 | let file_id = FileId(i as u32 + 1); |
173 | let edition = data.edition(); | ||
174 | let env = data.env(); | ||
156 | if path == "/lib.rs" || path == "/main.rs" { | 175 | if path == "/lib.rs" || path == "/main.rs" { |
157 | root_crate = Some(crate_graph.add_crate_root( | 176 | root_crate = Some(crate_graph.add_crate_root( |
158 | file_id, | 177 | file_id, |
159 | Edition2018, | 178 | edition, |
160 | None, | 179 | None, |
161 | cfg_options, | 180 | cfg_options, |
162 | Env::default(), | 181 | env, |
163 | Default::default(), | 182 | Default::default(), |
164 | Default::default(), | 183 | Default::default(), |
165 | )); | 184 | )); |
@@ -167,10 +186,10 @@ impl MockAnalysis { | |||
167 | let crate_name = path.parent().unwrap().file_name().unwrap(); | 186 | let crate_name = path.parent().unwrap().file_name().unwrap(); |
168 | let other_crate = crate_graph.add_crate_root( | 187 | let other_crate = crate_graph.add_crate_root( |
169 | file_id, | 188 | file_id, |
170 | Edition2018, | 189 | edition, |
171 | Some(CrateName::new(crate_name).unwrap()), | 190 | Some(CrateName::new(crate_name).unwrap()), |
172 | cfg_options, | 191 | cfg_options, |
173 | Env::default(), | 192 | env, |
174 | Default::default(), | 193 | Default::default(), |
175 | Default::default(), | 194 | Default::default(), |
176 | ); | 195 | ); |