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.rs | 19 |
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)) |