| //@ check-pass |
| //@ compile-flags: -Z span-debug |
| //@ aux-build:test-macros.rs |
| |
| #![no_std] // Don't load unnecessary hygiene information from std |
| extern crate std; |
| |
| #[macro_use] |
| extern crate test_macros; |
| |
| macro_rules! pass_nonterminal { |
| ($line:expr) => { |
| #[print_attr_args(a, $line, b)] |
| struct S; |
| }; |
| } |
| |
| // `line!()` is not expanded before it's passed to the proc macro. |
| pass_nonterminal!(line!()); |
| |
| // Test case from #43860. |
| |
| #[macro_export] |
| macro_rules! use_contract { |
| ($name: ident, $path: expr) => { |
| #[derive(Empty)] |
| #[empty_helper(path = $path)] // OK |
| pub struct $name<T, C> { |
| api: T, |
| contract: C, |
| } |
| }; |
| } |
| |
| use_contract!(ContractName, file!()); |
| |
| fn main() {} |