[cfg_match
] Generalize inputs
This commit is contained in:
parent
38e3a5771c
commit
561a6c5f11
@ -229,8 +229,8 @@ pub macro assert_matches {
|
||||
pub macro cfg_match {
|
||||
// with a final wildcard
|
||||
(
|
||||
$(cfg($initial_meta:meta) => { $($initial_tokens:item)* })+
|
||||
_ => { $($extra_tokens:item)* }
|
||||
$(cfg($initial_meta:meta) => { $($initial_tokens:tt)* })+
|
||||
_ => { $($extra_tokens:tt)* }
|
||||
) => {
|
||||
cfg_match! {
|
||||
@__items ();
|
||||
@ -241,7 +241,7 @@ pub macro cfg_match {
|
||||
|
||||
// without a final wildcard
|
||||
(
|
||||
$(cfg($extra_meta:meta) => { $($extra_tokens:item)* })*
|
||||
$(cfg($extra_meta:meta) => { $($extra_tokens:tt)* })*
|
||||
) => {
|
||||
cfg_match! {
|
||||
@__items ();
|
||||
@ -256,7 +256,7 @@ pub macro cfg_match {
|
||||
(@__items ($($_:meta,)*);) => {},
|
||||
(
|
||||
@__items ($($no:meta,)*);
|
||||
(($($yes:meta)?) ($($tokens:item)*)),
|
||||
(($($yes:meta)?) ($($tokens:tt)*)),
|
||||
$($rest:tt,)*
|
||||
) => {
|
||||
// Emit all items within one block, applying an appropriate #[cfg]. The
|
||||
@ -279,7 +279,7 @@ pub macro cfg_match {
|
||||
|
||||
// Internal macro to make __apply work out right for different match types,
|
||||
// because of how macros match/expand stuff.
|
||||
(@__identity $($tokens:item)*) => {
|
||||
(@__identity $($tokens:tt)*) => {
|
||||
$($tokens)*
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,5 @@
|
||||
#![allow(unused_must_use)]
|
||||
|
||||
#[allow(dead_code)]
|
||||
trait Trait {
|
||||
fn blah(&self);
|
||||
@ -173,3 +175,21 @@ fn cfg_match_two_functions() {
|
||||
bar2();
|
||||
}
|
||||
}
|
||||
|
||||
fn _accepts_expressions() -> i32 {
|
||||
cfg_match! {
|
||||
cfg(unix) => { 1 }
|
||||
_ => { 2 }
|
||||
}
|
||||
}
|
||||
|
||||
// The current implementation expands to a macro call, which allows the use of expression
|
||||
// statements.
|
||||
fn _allows_stmt_expr_attributes() {
|
||||
let one = 1;
|
||||
let two = 2;
|
||||
cfg_match! {
|
||||
cfg(unix) => { one * two; }
|
||||
_ => { one + two; }
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user