Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/cfg/src/cfg_expr.rs')
| -rw-r--r-- | crates/cfg/src/cfg_expr.rs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/crates/cfg/src/cfg_expr.rs b/crates/cfg/src/cfg_expr.rs index 8a1a51e6e7..2158fb9f2d 100644 --- a/crates/cfg/src/cfg_expr.rs +++ b/crates/cfg/src/cfg_expr.rs @@ -50,6 +50,7 @@ impl fmt::Display for CfgAtom { } #[derive(Debug, Clone, PartialEq, Eq, Hash)] +#[cfg_attr(test, derive(derive_arbitrary::Arbitrary))] pub enum CfgExpr { Invalid, Atom(CfgAtom), @@ -128,3 +129,17 @@ fn next_cfg_expr(it: &mut SliceIter<tt::TokenTree>) -> Option<CfgExpr> { } Some(ret) } + +#[cfg(test)] +impl arbitrary::Arbitrary<'_> for CfgAtom { + fn arbitrary(u: &mut arbitrary::Unstructured<'_>) -> arbitrary::Result<Self> { + if u.arbitrary()? { + Ok(CfgAtom::Flag(String::arbitrary(u)?.into())) + } else { + Ok(CfgAtom::KeyValue { + key: String::arbitrary(u)?.into(), + value: String::arbitrary(u)?.into(), + }) + } + } +} |