mbe: Add support matching for matching idents

This commit is contained in:
Jeff Muizelaar 2019-02-03 15:16:55 -05:00
parent 1997797adc
commit 0000f00787
2 changed files with 29 additions and 0 deletions

View File

@ -232,4 +232,28 @@ impl_froms!(TokenTree: Leaf, Subtree);
assert_expansion(&rules, "foo! { bar = }", "fn bar () {}");
assert_expansion(&rules, "foo! { Baz + }", "struct Baz ;");
}
#[test]
fn test_fail_match_pattern_by_word_token() {
let rules = create_rules(
r#"
macro_rules! foo {
($ i:ident) => (
mod $ i {}
);
(spam $ i:ident) => (
fn $ i() {}
);
(eggs $ i:ident) => (
struct $ i;
)
}
"#,
);
assert_expansion(&rules, "foo! { foo }", "mod foo {}");
assert_expansion(&rules, "foo! { spam bar }", "fn bar () {}");
assert_expansion(&rules, "foo! { eggs Baz }", "struct Baz ;");
}
}

View File

@ -126,6 +126,11 @@ fn match_lhs(pattern: &crate::Subtree, input: &mut TtCursor) -> Option<Bindings>
return None;
}
}
crate::Leaf::Ident(ident) => {
if input.eat_ident()?.text != ident.text {
return None;
}
}
_ => return None,
},
crate::TokenTree::Repeat(crate::Repeat {