Merge #2595
2595: Fix parsing of interpolated expressions r=matklad a=matklad Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
This commit is contained in:
commit
e17dcc45a6
@ -1450,6 +1450,24 @@ macro_rules! delegate_impl {
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn expr_interpolation() {
|
||||
let rules = create_rules(
|
||||
r#"
|
||||
macro_rules! id {
|
||||
($expr:expr) => {
|
||||
map($expr)
|
||||
}
|
||||
}
|
||||
"#,
|
||||
);
|
||||
|
||||
let expanded = expand(&rules, "id!(x + foo);");
|
||||
let expanded =
|
||||
token_tree_to_syntax_node(&expanded, FragmentKind::Expr).unwrap().0.syntax_node();
|
||||
assert_eq!(expanded.to_string(), "map(x+foo)");
|
||||
}
|
||||
|
||||
pub(crate) fn create_rules(macro_definition: &str) -> MacroRules {
|
||||
let source_file = ast::SourceFile::parse(macro_definition).ok().unwrap();
|
||||
let macro_definition =
|
||||
|
@ -43,6 +43,7 @@ pub(super) const ATOM_EXPR_FIRST: TokenSet =
|
||||
T!['('],
|
||||
T!['{'],
|
||||
T!['['],
|
||||
L_DOLLAR,
|
||||
T![|],
|
||||
T![move],
|
||||
T![box],
|
||||
|
Loading…
x
Reference in New Issue
Block a user