From dfdb6321acbe30704ef07ba7a2257f860a7a1398 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Mon, 4 Nov 2019 13:25:42 +0300 Subject: Use new text DSL instead of crate_graph! macro --- crates/ra_hir/src/marks.rs | 1 - crates/ra_hir/src/mock.rs | 68 ----------------------------------- crates/ra_hir/src/ty/tests.rs | 84 +++++++++++++------------------------------ 3 files changed, 25 insertions(+), 128 deletions(-) (limited to 'crates/ra_hir') diff --git a/crates/ra_hir/src/marks.rs b/crates/ra_hir/src/marks.rs index b423489a1..c086e5bed 100644 --- a/crates/ra_hir/src/marks.rs +++ b/crates/ra_hir/src/marks.rs @@ -17,5 +17,4 @@ test_utils::marks!( prelude_is_macro_use coerce_merge_fail_fallback macro_dollar_crate_self - macro_dollar_crate_other ); diff --git a/crates/ra_hir/src/mock.rs b/crates/ra_hir/src/mock.rs index 8d98f88ce..ab97a09b9 100644 --- a/crates/ra_hir/src/mock.rs +++ b/crates/ra_hir/src/mock.rs @@ -77,12 +77,6 @@ impl MockDatabase { (db, source_root, file_id) } - pub fn with_position(fixture: &str) -> (MockDatabase, FilePosition) { - let (db, position) = MockDatabase::from_fixture(fixture); - let position = position.expect("expected a marker ( <|> )"); - (db, position) - } - pub fn file_id_of(&self, path: &str) -> FileId { match self.files.get(path) { Some(it) => *it, @@ -90,25 +84,6 @@ impl MockDatabase { } } - pub fn set_crate_graph_from_fixture(&mut self, graph: CrateGraphFixture) { - let mut ids = FxHashMap::default(); - let mut crate_graph = CrateGraph::default(); - for (crate_name, (crate_root, edition, cfg_options, _)) in graph.0.iter() { - let crate_root = self.file_id_of(&crate_root); - let crate_id = crate_graph.add_crate_root(crate_root, *edition, cfg_options.clone()); - Arc::make_mut(&mut self.crate_names).insert(crate_id, crate_name.clone()); - ids.insert(crate_name, crate_id); - } - for (crate_name, (_, _, _, deps)) in graph.0.iter() { - let from = ids[crate_name]; - for dep in deps { - let to = ids[dep]; - crate_graph.add_dep(from, dep.as_str().into(), to).unwrap(); - } - } - self.set_crate_graph(Arc::new(crate_graph)) - } - pub fn diagnostics(&self) -> String { let mut buf = String::new(); let mut files: Vec = self.files.values().copied().collect(); @@ -285,46 +260,3 @@ impl MockDatabase { .collect() } } - -#[derive(Default)] -pub struct CrateGraphFixture(pub Vec<(String, (String, Edition, CfgOptions, Vec))>); - -#[macro_export] -macro_rules! crate_graph { - ($( - $crate_name:literal: ( - $crate_path:literal, - $($edition:literal,)? - [$($dep:literal),*] - $(, cfg = { - $($key:literal $(= $value:literal)?),* - $(,)? - })? - ), - )*) => {{ - let mut res = $crate::mock::CrateGraphFixture::default(); - $( - #[allow(unused_mut, unused_assignments)] - let mut edition = ra_db::Edition::Edition2018; - $(edition = ra_db::Edition::from_string($edition);)? - let cfg_options = { - #[allow(unused_mut)] - let mut cfg = ::ra_cfg::CfgOptions::default(); - $( - $( - if 0 == 0 $(+ { drop($value); 1})? { - cfg.insert_atom($key.into()); - } - $(cfg.insert_key_value($key.into(), $value.into());)? - )* - )? - cfg - }; - res.0.push(( - $crate_name.to_string(), - ($crate_path.to_string(), edition, cfg_options, vec![$($dep.to_string()),*]) - )); - )* - res - }} -} diff --git a/crates/ra_hir/src/ty/tests.rs b/crates/ra_hir/src/ty/tests.rs index f27155737..4b7e34878 100644 --- a/crates/ra_hir/src/ty/tests.rs +++ b/crates/ra_hir/src/ty/tests.rs @@ -2,8 +2,7 @@ use std::fmt::Write; use std::sync::Arc; use insta::assert_snapshot; - -use ra_db::{salsa::Database, FilePosition, SourceDatabase}; +use ra_db::{fixture::WithFixture, salsa::Database, FilePosition, SourceDatabase}; use ra_syntax::{ algo, ast::{self, AstNode}, @@ -25,9 +24,9 @@ mod coercion; #[test] fn cfg_impl_block() { - let (mut db, pos) = MockDatabase::with_position( + let (db, pos) = MockDatabase::with_position( r#" -//- /main.rs +//- /main.rs crate:main deps:foo cfg:test use foo::S as T; struct S; @@ -46,7 +45,7 @@ fn test() { t<|>; } -//- /foo.rs +//- /foo.rs crate:foo struct S; #[cfg(not(test))] @@ -60,18 +59,14 @@ impl S { } "#, ); - db.set_crate_graph_from_fixture(crate_graph! { - "main": ("/main.rs", ["foo"], cfg = { "test" }), - "foo": ("/foo.rs", []), - }); assert_eq!("(i32, {unknown}, i32, {unknown})", type_at_pos(&db, pos)); } #[test] fn infer_await() { - let (mut db, pos) = MockDatabase::with_position( + let (db, pos) = MockDatabase::with_position( r#" -//- /main.rs +//- /main.rs crate:main deps:std struct IntFuture; @@ -85,7 +80,7 @@ fn test() { v<|>; } -//- /std.rs +//- /std.rs crate:std #[prelude_import] use future::*; mod future { trait Future { @@ -95,18 +90,14 @@ mod future { "#, ); - db.set_crate_graph_from_fixture(crate_graph! { - "main": ("/main.rs", ["std"]), - "std": ("/std.rs", []), - }); assert_eq!("u64", type_at_pos(&db, pos)); } #[test] fn infer_box() { - let (mut db, pos) = MockDatabase::with_position( + let (db, pos) = MockDatabase::with_position( r#" -//- /main.rs +//- /main.rs crate:main deps:std fn test() { let x = box 1; @@ -114,7 +105,7 @@ fn test() { t<|>; } -//- /std.rs +//- /std.rs crate:std #[prelude_import] use prelude::*; mod prelude {} @@ -126,10 +117,6 @@ mod boxed { "#, ); - db.set_crate_graph_from_fixture(crate_graph! { - "main": ("/main.rs", ["std"]), - "std": ("/std.rs", []), - }); assert_eq!("(Box, Box>, Box<&i32>, Box<[i32;_]>)", type_at_pos(&db, pos)); } @@ -154,9 +141,9 @@ fn test() { #[test] fn infer_try() { - let (mut db, pos) = MockDatabase::with_position( + let (db, pos) = MockDatabase::with_position( r#" -//- /main.rs +//- /main.rs crate:main deps:std fn test() { let r: Result = Result::Ok(1); @@ -164,7 +151,7 @@ fn test() { v<|>; } -//- /std.rs +//- /std.rs crate:std #[prelude_import] use ops::*; mod ops { @@ -189,18 +176,14 @@ mod result { "#, ); - db.set_crate_graph_from_fixture(crate_graph! { - "main": ("/main.rs", ["std"]), - "std": ("/std.rs", []), - }); assert_eq!("i32", type_at_pos(&db, pos)); } #[test] fn infer_for_loop() { - let (mut db, pos) = MockDatabase::with_position( + let (db, pos) = MockDatabase::with_position( r#" -//- /main.rs +//- /main.rs crate:main deps:std use std::collections::Vec; @@ -212,7 +195,7 @@ fn test() { } } -//- /std.rs +//- /std.rs crate:std #[prelude_import] use iter::*; mod iter { @@ -234,10 +217,6 @@ mod collections { } "#, ); - db.set_crate_graph_from_fixture(crate_graph! { - "main": ("/main.rs", ["std"]), - "std": ("/std.rs", []), - }); assert_eq!("&str", type_at_pos(&db, pos)); } @@ -2505,15 +2484,15 @@ pub fn main_loop() { #[test] fn cross_crate_associated_method_call() { - let (mut db, pos) = MockDatabase::with_position( + let (db, pos) = MockDatabase::with_position( r#" -//- /main.rs +//- /main.rs crate:main deps:other_crate fn test() { let x = other_crate::foo::S::thing(); x<|>; } -//- /lib.rs +//- /lib.rs crate:other_crate mod foo { struct S; impl S { @@ -2522,10 +2501,6 @@ mod foo { } "#, ); - db.set_crate_graph_from_fixture(crate_graph! { - "main": ("/main.rs", ["other_crate"]), - "other_crate": ("/lib.rs", []), - }); assert_eq!("i128", type_at_pos(&db, pos)); } @@ -3403,16 +3378,15 @@ fn test() { S.foo()<|>; } #[test] fn infer_macro_with_dollar_crate_is_correct_in_expr() { - // covers!(macro_dollar_crate_other); - let (mut db, pos) = MockDatabase::with_position( + let (db, pos) = MockDatabase::with_position( r#" -//- /main.rs +//- /main.rs crate:main deps:foo fn test() { let x = (foo::foo!(1), foo::foo!(2)); x<|>; } -//- /lib.rs +//- /lib.rs crate:foo #[macro_export] macro_rules! foo { (1) => { $crate::bar!() }; @@ -3427,10 +3401,6 @@ macro_rules! bar { pub fn baz() -> usize { 31usize } "#, ); - db.set_crate_graph_from_fixture(crate_graph! { - "main": ("/main.rs", ["foo"]), - "foo": ("/lib.rs", []), - }); assert_eq!("(i32, usize)", type_at_pos(&db, pos)); } @@ -3512,9 +3482,9 @@ fn test() { (&S).foo()<|>; } #[test] fn method_resolution_trait_from_prelude() { - let (mut db, pos) = MockDatabase::with_position( + let (db, pos) = MockDatabase::with_position( r#" -//- /main.rs +//- /main.rs crate:main deps:other_crate struct S; impl Clone for S {} @@ -3522,7 +3492,7 @@ fn test() { S.clone()<|>; } -//- /lib.rs +//- /lib.rs crate:other_crate #[prelude_import] use foo::*; mod foo { @@ -3532,10 +3502,6 @@ mod foo { } "#, ); - db.set_crate_graph_from_fixture(crate_graph! { - "main": ("/main.rs", ["other_crate"]), - "other_crate": ("/lib.rs", []), - }); assert_eq!("S", type_at_pos(&db, pos)); } -- cgit v1.2.3