From dec43a0c5dd164279f94e9ab6e6d69ec28e294fd Mon Sep 17 00:00:00 2001 From: uHOOCCOOHu Date: Thu, 5 Sep 2019 16:20:36 +0800 Subject: Consider prelude to be `macro_use` --- crates/ra_hir/src/nameres/tests/macros.rs | 57 +++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) (limited to 'crates/ra_hir/src/nameres/tests') diff --git a/crates/ra_hir/src/nameres/tests/macros.rs b/crates/ra_hir/src/nameres/tests/macros.rs index ebfefe273..8fcd86bfe 100644 --- a/crates/ra_hir/src/nameres/tests/macros.rs +++ b/crates/ra_hir/src/nameres/tests/macros.rs @@ -191,3 +191,60 @@ fn macro_rules_from_other_crates_are_visible_with_macro_use() { ⋮Baz: t v "###); } + +#[test] +fn prelude_is_macro_use() { + covers!(prelude_is_macro_use); + let map = def_map_with_crate_graph( + " + //- /main.rs + structs!(Foo); + structs_priv!(Bar); + structs_outside!(Out); + crate::structs!(MacroNotResolved2); + + mod bar; + + //- /bar.rs + structs!(Baz); + crate::structs!(MacroNotResolved3); + + //- /lib.rs + #[prelude_import] + use self::prelude::*; + + mod prelude { + #[macro_export] + macro_rules! structs { + ($i:ident) => { struct $i; } + } + + mod priv_mod { + #[macro_export] + macro_rules! structs_priv { + ($i:ident) => { struct $i; } + } + } + } + + #[macro_export] + macro_rules! structs_outside { + ($i:ident) => { struct $i; } + } + ", + crate_graph! { + "main": ("/main.rs", ["foo"]), + "foo": ("/lib.rs", []), + }, + ); + assert_snapshot!(map, @r###" + ⋮crate + ⋮Bar: t v + ⋮Foo: t v + ⋮Out: t v + ⋮bar: t + ⋮ + ⋮crate::bar + ⋮Baz: t v + "###); +} -- cgit v1.2.3