mirror of https://github.com/rust-lang/rust
38 lines
748 B
Rust
38 lines
748 B
Rust
//@ 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() {}
|