Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/macro_expansion_tests/mbe/regression.rs')
-rw-r--r--crates/hir-def/src/macro_expansion_tests/mbe/regression.rs54
1 files changed, 54 insertions, 0 deletions
diff --git a/crates/hir-def/src/macro_expansion_tests/mbe/regression.rs b/crates/hir-def/src/macro_expansion_tests/mbe/regression.rs
index 6717ee1aa5..4aad53c3bd 100644
--- a/crates/hir-def/src/macro_expansion_tests/mbe/regression.rs
+++ b/crates/hir-def/src/macro_expansion_tests/mbe/regression.rs
@@ -1090,3 +1090,57 @@ fn main() {
"#]],
);
}
+
+#[test]
+fn regression_16529() {
+ check(
+ r#"
+mod any {
+ #[macro_export]
+ macro_rules! nameable {
+ {
+ struct $name:ident[$a:lifetime]
+ } => {
+ $crate::any::nameable! {
+ struct $name[$a]
+ a
+ }
+ };
+ {
+ struct $name:ident[$a:lifetime]
+ a
+ } => {};
+ }
+ pub use nameable;
+
+ nameable! {
+ Name['a]
+ }
+}
+"#,
+ expect![[r#"
+mod any {
+ #[macro_export]
+ macro_rules! nameable {
+ {
+ struct $name:ident[$a:lifetime]
+ } => {
+ $crate::any::nameable! {
+ struct $name[$a]
+ a
+ }
+ };
+ {
+ struct $name:ident[$a:lifetime]
+ a
+ } => {};
+ }
+ pub use nameable;
+
+ /* error: unexpected token in input */$crate::any::nameable! {
+ struct $name[$a]a
+ }
+}
+"#]],
+ );
+}