mirror of https://github.com/rust-lang/rust
89 lines
1.6 KiB
Rust
89 lines
1.6 KiB
Rust
// gate-test-custom_inner_attributes
|
|
//@ compile-flags: -Z span-debug --error-format human
|
|
//@ error-pattern:expected non-macro inner attribute
|
|
//@ aux-build:test-macros.rs
|
|
//@ edition:2018
|
|
|
|
#![feature(custom_inner_attributes)]
|
|
#![feature(proc_macro_hygiene)]
|
|
#![feature(stmt_expr_attributes)]
|
|
#![feature(rustc_attrs)]
|
|
|
|
#![no_std] // Don't load unnecessary hygiene information from std
|
|
extern crate std;
|
|
|
|
#[macro_use]
|
|
extern crate test_macros;
|
|
|
|
#[print_target_and_args(first)]
|
|
#[print_target_and_args(second)]
|
|
fn foo() {
|
|
#![print_target_and_args(third)]
|
|
#![print_target_and_args(fourth)]
|
|
}
|
|
|
|
#[print_target_and_args(mod_first)]
|
|
#[print_target_and_args(mod_second)]
|
|
mod inline_mod {
|
|
#![print_target_and_args(mod_third)]
|
|
#![print_target_and_args(mod_fourth)]
|
|
}
|
|
|
|
struct MyStruct {
|
|
field: bool
|
|
}
|
|
|
|
#[derive(Print)]
|
|
struct MyDerivePrint {
|
|
field: [u8; {
|
|
match true {
|
|
_ => {
|
|
#![cfg_attr(not(FALSE), rustc_dummy(third))]
|
|
true
|
|
}
|
|
};
|
|
0
|
|
}]
|
|
}
|
|
|
|
fn bar() {
|
|
#[print_target_and_args(tuple_attrs)] (
|
|
3, 4, {
|
|
#![cfg_attr(not(FALSE), rustc_dummy(innermost))]
|
|
5
|
|
}
|
|
);
|
|
|
|
#[print_target_and_args(tuple_attrs)] (
|
|
3, 4, {
|
|
#![cfg_attr(not(FALSE), rustc_dummy(innermost))]
|
|
5
|
|
}
|
|
);
|
|
|
|
for _ in &[true] {
|
|
#![print_attr]
|
|
}
|
|
|
|
let _ = {
|
|
#![print_attr]
|
|
};
|
|
|
|
let _ = async {
|
|
#![print_attr]
|
|
};
|
|
|
|
{
|
|
#![print_attr]
|
|
};
|
|
}
|
|
|
|
|
|
extern {
|
|
fn weird_extern() {
|
|
#![print_target_and_args_consume(tenth)]
|
|
}
|
|
}
|
|
|
|
fn main() {}
|