[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 {
|
pub macro cfg_match {
|
||||||
// with a final wildcard
|
// with a final wildcard
|
||||||
(
|
(
|
||||||
$(cfg($initial_meta:meta) => { $($initial_tokens:item)* })+
|
$(cfg($initial_meta:meta) => { $($initial_tokens:tt)* })+
|
||||||
_ => { $($extra_tokens:item)* }
|
_ => { $($extra_tokens:tt)* }
|
||||||
) => {
|
) => {
|
||||||
cfg_match! {
|
cfg_match! {
|
||||||
@__items ();
|
@__items ();
|
||||||
@ -241,7 +241,7 @@ pub macro cfg_match {
|
|||||||
|
|
||||||
// without a final wildcard
|
// without a final wildcard
|
||||||
(
|
(
|
||||||
$(cfg($extra_meta:meta) => { $($extra_tokens:item)* })*
|
$(cfg($extra_meta:meta) => { $($extra_tokens:tt)* })*
|
||||||
) => {
|
) => {
|
||||||
cfg_match! {
|
cfg_match! {
|
||||||
@__items ();
|
@__items ();
|
||||||
@ -256,7 +256,7 @@ pub macro cfg_match {
|
|||||||
(@__items ($($_:meta,)*);) => {},
|
(@__items ($($_:meta,)*);) => {},
|
||||||
(
|
(
|
||||||
@__items ($($no:meta,)*);
|
@__items ($($no:meta,)*);
|
||||||
(($($yes:meta)?) ($($tokens:item)*)),
|
(($($yes:meta)?) ($($tokens:tt)*)),
|
||||||
$($rest:tt,)*
|
$($rest:tt,)*
|
||||||
) => {
|
) => {
|
||||||
// Emit all items within one block, applying an appropriate #[cfg]. The
|
// 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,
|
// Internal macro to make __apply work out right for different match types,
|
||||||
// because of how macros match/expand stuff.
|
// because of how macros match/expand stuff.
|
||||||
(@__identity $($tokens:item)*) => {
|
(@__identity $($tokens:tt)*) => {
|
||||||
$($tokens)*
|
$($tokens)*
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
#![allow(unused_must_use)]
|
||||||
|
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
trait Trait {
|
trait Trait {
|
||||||
fn blah(&self);
|
fn blah(&self);
|
||||||
@ -173,3 +175,21 @@ fn cfg_match_two_functions() {
|
|||||||
bar2();
|
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