Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/mbe/src/expander/matcher.rs')
-rw-r--r--crates/mbe/src/expander/matcher.rs19
1 files changed, 8 insertions, 11 deletions
diff --git a/crates/mbe/src/expander/matcher.rs b/crates/mbe/src/expander/matcher.rs
index 910724411d..fb785665b9 100644
--- a/crates/mbe/src/expander/matcher.rs
+++ b/crates/mbe/src/expander/matcher.rs
@@ -697,6 +697,7 @@ fn match_meta_var(kind: &str, input: &mut TtIter) -> ExpandResult<Option<Fragmen
"block" => parser::PrefixEntryPoint::Block,
"meta" => parser::PrefixEntryPoint::MetaItem,
"item" => parser::PrefixEntryPoint::Item,
+ "vis" => parser::PrefixEntryPoint::Vis,
"expr" => {
return input
.expect_fragment(parser::PrefixEntryPoint::Expr)
@@ -706,12 +707,10 @@ fn match_meta_var(kind: &str, input: &mut TtIter) -> ExpandResult<Option<Fragmen
let tt_result = match kind {
"ident" => input
.expect_ident()
- .map(|ident| Some(tt::Leaf::from(ident.clone()).into()))
+ .map(|ident| tt::Leaf::from(ident.clone()).into())
.map_err(|()| err!("expected ident")),
- "tt" => input.expect_tt().map(Some).map_err(|()| err!()),
- "lifetime" => {
- input.expect_lifetime().map(Some).map_err(|()| err!("expected lifetime"))
- }
+ "tt" => input.expect_tt().map_err(|()| err!()),
+ "lifetime" => input.expect_lifetime().map_err(|()| err!("expected lifetime")),
"literal" => {
let neg = input.eat_char('-');
input
@@ -719,20 +718,18 @@ fn match_meta_var(kind: &str, input: &mut TtIter) -> ExpandResult<Option<Fragmen
.map(|literal| {
let lit = literal.clone();
match neg {
- None => Some(lit.into()),
- Some(neg) => Some(tt::TokenTree::Subtree(tt::Subtree {
+ None => lit.into(),
+ Some(neg) => tt::TokenTree::Subtree(tt::Subtree {
delimiter: None,
token_trees: vec![neg, lit.into()],
- })),
+ }),
}
})
.map_err(|()| err!())
}
- // `vis` is optional
- "vis" => Ok(input.expect_fragment(parser::PrefixEntryPoint::Vis).value),
_ => Err(ExpandError::UnexpectedToken),
};
- return tt_result.map(|it| it.map(Fragment::Tokens)).into();
+ return tt_result.map(|it| Some(Fragment::Tokens(it))).into();
}
};
input.expect_fragment(fragment).map(|it| it.map(Fragment::Tokens))