diff options
Diffstat (limited to 'src/test/ui/macros/macro-expansion-tests.rs')
-rw-r--r-- | src/test/ui/macros/macro-expansion-tests.rs | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/test/ui/macros/macro-expansion-tests.rs b/src/test/ui/macros/macro-expansion-tests.rs new file mode 100644 index 000000000..38f4937c1 --- /dev/null +++ b/src/test/ui/macros/macro-expansion-tests.rs @@ -0,0 +1,40 @@ +#![allow(unused_macros)] + +mod macros_cant_escape_fns { + fn f() { + macro_rules! m { () => { 3 + 4 } } + } + fn g() -> i32 { m!() } + //~^ ERROR cannot find macro +} + +mod macros_cant_escape_mods { + mod f { + macro_rules! m { () => { 3 + 4 } } + } + fn g() -> i32 { m!() } + //~^ ERROR cannot find macro +} + +mod macros_can_escape_flattened_mods_test { + #[macro_use] + mod f { + macro_rules! m { () => { 3 + 4 } } + } + fn g() -> i32 { m!() } +} + +fn macro_tokens_should_match() { + macro_rules! m { (a) => { 13 } } + m!(a); +} + +// should be able to use a bound identifier as a literal in a macro definition: +fn self_macro_parsing() { + macro_rules! foo { (zz) => { 287; } } + fn f(zz: i32) { + foo!(zz); + } +} + +fn main() {} |