//@ check-pass
//@ compile-flags: -Z span-debug
//@ proc-macro: 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() {}
