Skip to content

Commit 9699be7

Browse files
committed
fix: don't panic when a macro expansion contains a lone '
1 parent aad2293 commit 9699be7

3 files changed

Lines changed: 25 additions & 7 deletions

File tree

crates/hir-def/src/macro_expansion_tests/mbe/tt_conversion.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,22 @@ fn f2() { /* error: expected ident */ }
106106
)
107107
}
108108

109+
#[test]
110+
fn lifetime_bound_to_ident_fragment() {
111+
check(
112+
r#"
113+
macro_rules! m { ($t:ident) => { $t } }
114+
115+
fn f() { m!('a); }
116+
"#,
117+
expect![[r#"
118+
macro_rules! m { ($t:ident) => { $t } }
119+
120+
fn f() { /* error: expected ident */missing; }
121+
"#]],
122+
)
123+
}
124+
109125
#[test]
110126
fn expansion_does_not_parse_as_expression() {
111127
check(

crates/mbe/src/expander/matcher.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -842,11 +842,14 @@ fn match_meta_var<'t>(
842842
_ => unreachable!(),
843843
}
844844
.err();
845-
let tt_result = input.from_savepoint(savepoint);
846-
return ValueResult {
847-
value: Fragment::Tokens { tree: tt_result, origin: TokensOrigin::Raw },
848-
err,
845+
let value = match err {
846+
Some(_) => Fragment::Empty,
847+
None => Fragment::Tokens {
848+
tree: input.from_savepoint(savepoint),
849+
origin: TokensOrigin::Raw,
850+
},
849851
};
852+
return ValueResult { value, err };
850853
}
851854
MetaVarKind::Ty => (parser::PrefixEntryPoint::Ty, TokensOrigin::Ast),
852855
MetaVarKind::Pat => (parser::PrefixEntryPoint::PatTop, TokensOrigin::Ast),

crates/mbe/src/tests.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -468,9 +468,8 @@ fn minus_belongs_to_literal() {
468468
}
469469
470470
SUBTREE $$ 1:Root[0000, 0]@0..6#ROOT2024 1:Root[0000, 0]@0..6#ROOT2024
471-
PUNCH - [joint] 1:Root[0000, 0]@1..2#ROOT2024
472-
PUNCH - [alone] 1:Root[0000, 0]@2..3#ROOT2024
471+
IDENT missing 0:Root[0000, 0]@72..75#ROOT2024
473472
474-
--"#]],
473+
missing"#]],
475474
);
476475
}

0 commit comments

Comments
 (0)