Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/test-fixture/src/lib.rs')
-rw-r--r--crates/test-fixture/src/lib.rs26
1 files changed, 17 insertions, 9 deletions
diff --git a/crates/test-fixture/src/lib.rs b/crates/test-fixture/src/lib.rs
index d9f9fb82be..19c81a7c5f 100644
--- a/crates/test-fixture/src/lib.rs
+++ b/crates/test-fixture/src/lib.rs
@@ -9,13 +9,15 @@ use cfg::CfgOptions;
use hir_expand::{
change::ChangeWithProcMacros,
db::ExpandDatabase,
+ files::FilePosition,
proc_macro::{
ProcMacro, ProcMacroExpander, ProcMacroExpansionError, ProcMacroKind, ProcMacros,
},
+ FileRange,
};
use intern::Symbol;
use rustc_hash::FxHashMap;
-use span::{Edition, FileId, FilePosition, FileRange, Span};
+use span::{Edition, EditionedFileId, FileId, Span};
use test_utils::{
extract_range_or_offset, Fixture, FixtureWithProjectMeta, RangeOrOffset, CURSOR_MARKER,
ESCAPED_CURSOR_MARKER,
@@ -26,7 +28,7 @@ pub const WORKSPACE: base_db::SourceRootId = base_db::SourceRootId(0);
pub trait WithFixture: Default + ExpandDatabase + SourceDatabaseExt + 'static {
#[track_caller]
- fn with_single_file(ra_fixture: &str) -> (Self, FileId) {
+ fn with_single_file(ra_fixture: &str) -> (Self, EditionedFileId) {
let fixture = ChangeFixture::parse(ra_fixture);
let mut db = Self::default();
fixture.change.apply(&mut db);
@@ -35,7 +37,7 @@ pub trait WithFixture: Default + ExpandDatabase + SourceDatabaseExt + 'static {
}
#[track_caller]
- fn with_many_files(ra_fixture: &str) -> (Self, Vec<FileId>) {
+ fn with_many_files(ra_fixture: &str) -> (Self, Vec<EditionedFileId>) {
let fixture = ChangeFixture::parse(ra_fixture);
let mut db = Self::default();
fixture.change.apply(&mut db);
@@ -79,7 +81,7 @@ pub trait WithFixture: Default + ExpandDatabase + SourceDatabaseExt + 'static {
}
#[track_caller]
- fn with_range_or_offset(ra_fixture: &str) -> (Self, FileId, RangeOrOffset) {
+ fn with_range_or_offset(ra_fixture: &str) -> (Self, EditionedFileId, RangeOrOffset) {
let fixture = ChangeFixture::parse(ra_fixture);
let mut db = Self::default();
fixture.change.apply(&mut db);
@@ -102,8 +104,8 @@ pub trait WithFixture: Default + ExpandDatabase + SourceDatabaseExt + 'static {
impl<DB: ExpandDatabase + SourceDatabaseExt + Default + 'static> WithFixture for DB {}
pub struct ChangeFixture {
- pub file_position: Option<(FileId, RangeOrOffset)>,
- pub files: Vec<FileId>,
+ pub file_position: Option<(EditionedFileId, RangeOrOffset)>,
+ pub files: Vec<EditionedFileId>,
pub change: ChangeWithProcMacros,
}
@@ -151,13 +153,14 @@ impl ChangeFixture {
let mut file_position = None;
for entry in fixture {
+ let mut range_or_offset = None;
let text = if entry.text.contains(CURSOR_MARKER) {
if entry.text.contains(ESCAPED_CURSOR_MARKER) {
entry.text.replace(ESCAPED_CURSOR_MARKER, CURSOR_MARKER)
} else {
- let (range_or_offset, text) = extract_range_or_offset(&entry.text);
+ let (roo, text) = extract_range_or_offset(&entry.text);
assert!(file_position.is_none());
- file_position = Some((file_id, range_or_offset));
+ range_or_offset = Some(roo);
text
}
} else {
@@ -165,6 +168,11 @@ impl ChangeFixture {
};
let meta = FileMeta::from_fixture(entry, current_source_root_kind);
+ if let Some(range_or_offset) = range_or_offset {
+ file_position =
+ Some((EditionedFileId::new(file_id, meta.edition), range_or_offset));
+ }
+
assert!(meta.path.starts_with(SOURCE_ROOT_PREFIX));
if !meta.deps.is_empty() {
assert!(meta.krate.is_some(), "can't specify deps without naming the crate")
@@ -216,7 +224,7 @@ impl ChangeFixture {
source_change.change_file(file_id, Some(text));
let path = VfsPath::new_virtual_path(meta.path);
file_set.insert(file_id, path);
- files.push(file_id);
+ files.push(EditionedFileId::new(file_id, meta.edition));
file_id = FileId::from_raw(file_id.index() + 1);
}