]> git.lizzy.rs Git - rust.git/blob - src/test/ui/macros/ambiguity-legacy-vs-modern.rs
Merge commit '4911ab124c481430672a3833b37075e6435ec34d' into clippyup
[rust.git] / src / test / ui / macros / ambiguity-legacy-vs-modern.rs
1 // Some non-controversial subset of ambiguities "modern macro name" vs "macro_rules"
2 // is disambiguated to mitigate regressions from macro modularization.
3 // Scoping for `macro_rules` behaves like scoping for `let` at module level, in general.
4
5 #![feature(decl_macro)]
6
7 fn same_unnamed_mod() {
8     macro m() { 0 }
9
10     macro_rules! m { () => (()) }
11
12     m!() // OK
13 }
14
15 fn nested_unnamed_mod() {
16     macro m() { 0 }
17
18     {
19         macro_rules! m { () => (()) }
20
21         m!() // OK
22     }
23 }
24
25 fn nested_unnamed_mod_fail() {
26     macro_rules! m { () => (()) }
27
28     {
29         macro m() { 0 }
30
31         m!() //~ ERROR `m` is ambiguous
32     }
33 }
34
35 fn nexted_named_mod_fail() {
36     macro m() { 0 }
37
38     #[macro_use]
39     mod inner {
40         macro_rules! m { () => (()) }
41     }
42
43     m!() //~ ERROR `m` is ambiguous
44 }
45
46 fn main() {}