]> git.lizzy.rs Git - rust.git/blob - src/test/ui/proc-macro/auxiliary/generate-mod.rs
normalize stderr
[rust.git] / src / test / ui / proc-macro / auxiliary / generate-mod.rs
1 // run-pass
2 // force-host
3 // no-prefer-dynamic
4 // ignore-pass
5
6 #![crate_type = "proc-macro"]
7
8 extern crate proc_macro;
9 use proc_macro::*;
10
11 #[proc_macro]
12 pub fn check(_: TokenStream) -> TokenStream {
13     "
14     type Alias = FromOutside; // OK
15     struct Outer;
16     mod inner {
17         type Alias = FromOutside; // `FromOutside` shouldn't be available from here
18         type Inner = Outer; // `Outer` shouldn't be available from here
19     }
20     ".parse().unwrap()
21 }
22
23 #[proc_macro_attribute]
24 pub fn check_attr(_: TokenStream, _: TokenStream) -> TokenStream {
25     "
26     type AliasAttr = FromOutside; // OK
27     struct OuterAttr;
28     mod inner_attr {
29         type Alias = FromOutside; // `FromOutside` shouldn't be available from here
30         type Inner = OuterAttr; // `OuterAttr` shouldn't be available from here
31     }
32     ".parse().unwrap()
33 }
34
35 #[proc_macro_derive(CheckDerive)]
36 pub fn check_derive(_: TokenStream) -> TokenStream {
37     "
38     type AliasDerive = FromOutside; // OK
39     struct OuterDerive;
40     mod inner_derive {
41         type Alias = FromOutside; // `FromOutside` shouldn't be available from here
42         type Inner = OuterDerive; // `OuterDerive` shouldn't be available from here
43     }
44     ".parse().unwrap()
45 }
46
47 #[proc_macro_derive(CheckDeriveLint)]
48 pub fn check_derive_lint(_: TokenStream) -> TokenStream {
49     "
50     type AliasDeriveLint = FromOutside; // OK
51     struct OuterDeriveLint;
52     #[allow(proc_macro_derive_resolution_fallback)]
53     mod inner_derive_lint {
54         type Alias = FromOutside; // `FromOutside` shouldn't be available from here
55         type Inner = OuterDeriveLint; // `OuterDeriveLint` shouldn't be available from here
56     }
57     ".parse().unwrap()
58 }