]> git.lizzy.rs Git - rust.git/blob - src/test/ui/hygiene/traits-in-scope.rs
Rollup merge of #90202 - matthewjasper:xcrate-hygiene, r=petrochenkov
[rust.git] / src / test / ui / hygiene / traits-in-scope.rs
1 // Macros with def-site hygiene still bring traits into scope.
2 // It is not clear whether this is desirable behavior or not.
3 // It is also not clear how to prevent it if it is not desirable.
4
5 // check-pass
6
7 #![feature(decl_macro)]
8 #![feature(trait_alias)]
9
10 mod traits {
11     pub trait Trait1 {
12         fn simple_import(&self) {}
13     }
14     pub trait Trait2 {
15         fn renamed_import(&self) {}
16     }
17     pub trait Trait3 {
18         fn underscore_import(&self) {}
19     }
20     pub trait Trait4 {
21         fn trait_alias(&self) {}
22     }
23
24     impl Trait1 for () {}
25     impl Trait2 for () {}
26     impl Trait3 for () {}
27     impl Trait4 for () {}
28 }
29
30 macro m1() {
31     use traits::Trait1;
32 }
33 macro m2() {
34     use traits::Trait2 as Alias;
35 }
36 macro m3() {
37     use traits::Trait3 as _;
38 }
39 macro m4() {
40     trait Alias = traits::Trait4;
41 }
42
43 fn main() {
44     m1!();
45     m2!();
46     m3!();
47     m4!();
48
49     ().simple_import();
50     ().renamed_import();
51     ().underscore_import();
52     ().trait_alias();
53 }