mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-28 11:17:26 +03:00
58 lines
1.2 KiB
Rust
58 lines
1.2 KiB
Rust
//@ run-pass
|
|
#![allow(unreachable_cfg_select_predicates)]
|
|
|
|
macro_rules! foo {
|
|
($e:expr, $n:ident) => {
|
|
cfg_select! {
|
|
$e => {
|
|
macro_rules! $n {
|
|
() => {}
|
|
}
|
|
}
|
|
_ => {}
|
|
}
|
|
|
|
cfg_select! {
|
|
$e => {
|
|
#[cfg_attr($e, allow(non_snake_case))]
|
|
fn $n() {
|
|
cfg_select! {
|
|
$e => {
|
|
$n!();
|
|
}
|
|
_ => {}
|
|
}
|
|
}
|
|
}
|
|
not($e) => {
|
|
#[cfg_attr(not($e), allow(unused))]
|
|
fn $n() {
|
|
panic!()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
foo!(true, BAR);
|
|
foo!(any(true, unix, target_pointer_width = "64"), baz);
|
|
foo!(target_pointer_width = "64", quux);
|
|
foo!(false, haha);
|
|
|
|
fn main() {
|
|
BAR();
|
|
BAR!();
|
|
baz();
|
|
baz!();
|
|
#[cfg(target_pointer_width = "64")]
|
|
quux();
|
|
#[cfg(target_pointer_width = "64")]
|
|
quux!();
|
|
#[cfg(panic = "unwind")]
|
|
{
|
|
let result = std::panic::catch_unwind(|| {
|
|
haha();
|
|
});
|
|
assert!(result.is_err());
|
|
}
|
|
}
|