| // Regression tests for issue #55414, expansion happens in the value of a key-value attribute, |
| // and the expanded expression is more complex than simply a macro call. |
| |
| //@ aux-build:key-value-expansion.rs |
| |
| #![feature(rustc_attrs)] |
| |
| extern crate key_value_expansion; |
| |
| // Minimized test case. |
| |
| macro_rules! bug { |
| ($expr:expr) => { |
| #[rustc_dummy = $expr] // Any key-value attribute, not necessarily `doc` |
| struct S; |
| }; |
| } |
| |
| // Any expressions containing macro call `X` that's more complex than `X` itself. |
| // Parentheses will work. |
| bug!((column!())); //~ ERROR attribute value must be a literal |
| |
| // Original test case. |
| |
| macro_rules! bug { |
| () => { |
| bug!("bug" + stringify!(found)); //~ ERROR attribute value must be a literal |
| }; |
| ($test:expr) => { |
| #[doc = $test] |
| struct Test {} |
| }; |
| } |
| |
| bug!(); |
| |
| // Test case from #66804. |
| |
| macro_rules! doc_comment { |
| ($x:expr) => { |
| #[doc = $x] |
| extern {} |
| }; |
| } |
| |
| macro_rules! some_macro { |
| ($t1: ty) => { |
| doc_comment! {format!("{coor}", coor = stringify!($t1)).as_str()} |
| //~^ ERROR attribute value must be a literal |
| }; |
| } |
| |
| some_macro!(u8); |
| |
| fn main() {} |