#![feature(macro_metavar_expr_concat)] macro_rules! idents_01 { ($rhs:ident) => { let ${concat(abc, $rhs)}: () = (); //~^ ERROR `${concat(..)}` currently does not support raw identifiers }; } macro_rules! idents_10 { ($lhs:ident) => { let ${concat($lhs, abc)}: () = (); //~^ ERROR `${concat(..)}` currently does not support raw identifiers }; } macro_rules! idents_11 { ($lhs:ident, $rhs:ident) => { let ${concat($lhs, $rhs)}: () = (); //~^ ERROR `${concat(..)}` currently does not support raw identifiers //~| ERROR `${concat(..)}` currently does not support raw identifiers //~| ERROR `${concat(..)}` currently does not support raw identifiers }; } macro_rules! no_params { () => { let ${concat(r#abc, abc)}: () = (); //~^ ERROR expected identifier or string literal //~| ERROR expected pattern, found `$` let ${concat(abc, r#abc)}: () = (); //~^ ERROR expected identifier or string literal let ${concat(r#abc, r#abc)}: () = (); //~^ ERROR expected identifier or string literal }; } macro_rules! tts_01 { ($rhs:tt) => { let ${concat(abc, $rhs)}: () = (); //~^ ERROR `${concat(..)}` currently does not support raw identifiers }; } macro_rules! tts_10 { ($lhs:tt) => { let ${concat($lhs, abc)}: () = (); //~^ ERROR `${concat(..)}` currently does not support raw identifiers }; } macro_rules! tts_11 { ($lhs:tt, $rhs:tt) => { let ${concat($lhs, $rhs)}: () = (); //~^ ERROR `${concat(..)}` currently does not support raw identifiers //~| ERROR `${concat(..)}` currently does not support raw identifiers //~| ERROR `${concat(..)}` currently does not support raw identifiers }; } fn main() { idents_01!(r#_c); idents_10!(r#_c); idents_11!(r#_c, d); idents_11!(_e, r#f); idents_11!(r#_g, r#h); tts_01!(r#_c); tts_10!(r#_c); tts_11!(r#_c, d); tts_11!(_e, r#f); tts_11!(r#_g, r#h); no_params!(); }