// Ensure that we don't consider `const Trait` and `~const Trait` to // match the macro fragment specifier `ty` as that would be a breaking // change theoretically speaking. Syntactically trait object types can // be "bare", i.e., lack the prefix `dyn`. // By contrast, `?Trait` *does* match `ty` and therefore an arm like // `?$Trait:path` would never be reached. // See `parser/macro/mbe-bare-trait-object-maybe-trait-bound.rs`. //@ check-pass macro_rules! check { ($Type:ty) => { compile_error!("ty"); }; (const $Trait:path) => {}; (~const $Trait:path) => {}; } check! { const Trait } check! { ~const Trait } fn main() {}