//@ 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 { api: T, contract: C, } }; } use_contract!(ContractName, file!()); fn main() {}