From 08e2149eab4495bd816a30b3caf586bef2cd9649 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 24 Jun 2020 10:22:02 +0200 Subject: Simplify --- crates/ra_db/src/fixture.rs | 40 +++++++++++++++++----------------------- crates/test_utils/src/fixture.rs | 8 ++++---- 2 files changed, 21 insertions(+), 27 deletions(-) (limited to 'crates') diff --git a/crates/ra_db/src/fixture.rs b/crates/ra_db/src/fixture.rs index ddf46e6c4..4f4fb4494 100644 --- a/crates/ra_db/src/fixture.rs +++ b/crates/ra_db/src/fixture.rs @@ -132,10 +132,17 @@ fn with_files( let mut file_position = None; - for entry in fixture.iter() { - let meta = match ParsedMeta::from(entry) { - ParsedMeta::File(it) => it, + for entry in fixture { + let text = if entry.text.contains(CURSOR_MARKER) { + let (range_or_offset, text) = extract_range_or_offset(&entry.text); + assert!(file_position.is_none()); + file_position = Some((file_id, range_or_offset)); + text.to_string() + } else { + entry.text.clone() }; + + let meta = FileMeta::from(entry); assert!(meta.path.starts_with(&source_root_prefix)); if let Some(krate) = meta.krate { @@ -157,15 +164,6 @@ fn with_files( default_crate_root = Some(file_id); } - let text = if entry.text.contains(CURSOR_MARKER) { - let (range_or_offset, text) = extract_range_or_offset(&entry.text); - assert!(file_position.is_none()); - file_position = Some((file_id, range_or_offset)); - text.to_string() - } else { - entry.text.to_string() - }; - db.set_file_text(file_id, Arc::new(text)); db.set_file_source_root(file_id, source_root_id); let path = VfsPath::new_virtual_path(meta.path); @@ -198,10 +196,6 @@ fn with_files( (file_position, files) } -enum ParsedMeta { - File(FileMeta), -} - struct FileMeta { path: String, krate: Option, @@ -211,22 +205,22 @@ struct FileMeta { env: Env, } -impl From<&Fixture> for ParsedMeta { - fn from(f: &Fixture) -> Self { +impl From for FileMeta { + fn from(f: Fixture) -> FileMeta { let mut cfg = CfgOptions::default(); f.cfg_atoms.iter().for_each(|it| cfg.insert_atom(it.into())); f.cfg_key_values.iter().for_each(|(k, v)| cfg.insert_key_value(k.into(), v.into())); - Self::File(FileMeta { - path: f.path.to_owned(), - krate: f.crate_name.to_owned(), - deps: f.deps.to_owned(), + FileMeta { + path: f.path, + krate: f.krate, + deps: f.deps, cfg, edition: f .edition .as_ref() .map_or(Edition::Edition2018, |v| Edition::from_str(&v).unwrap()), env: Env::from(f.env.iter()), - }) + } } } diff --git a/crates/test_utils/src/fixture.rs b/crates/test_utils/src/fixture.rs index 7e93fbcd6..fad8f7e2c 100644 --- a/crates/test_utils/src/fixture.rs +++ b/crates/test_utils/src/fixture.rs @@ -8,7 +8,7 @@ use stdx::{lines_with_ends, split_delim, trim_indent}; pub struct Fixture { pub path: String, pub text: String, - pub crate_name: Option, + pub krate: Option, pub deps: Vec, pub cfg_atoms: Vec, pub cfg_key_values: Vec<(String, String)>, @@ -56,7 +56,7 @@ impl Fixture { } //- /lib.rs crate:foo deps:bar,baz cfg:foo=a,bar=b env:OUTDIR=path/to,OTHER=foo - pub fn parse_meta_line(meta: &str) -> Fixture { + fn parse_meta_line(meta: &str) -> Fixture { assert!(meta.starts_with("//-")); let meta = meta["//-".len()..].trim(); let components = meta.split_ascii_whitespace().collect::>(); @@ -98,7 +98,7 @@ impl Fixture { Fixture { path, text: String::new(), - crate_name: krate, + krate: krate, deps, cfg_atoms, cfg_key_values, @@ -136,7 +136,7 @@ fn parse_fixture_gets_full_meta() { let meta = &parsed[0]; assert_eq!("mod m;\n", meta.text); - assert_eq!("foo", meta.crate_name.as_ref().unwrap()); + assert_eq!("foo", meta.krate.as_ref().unwrap()); assert_eq!("/lib.rs", meta.path); assert_eq!(2, meta.env.len()); } -- cgit v1.2.3