11179: minor: simplify mbe matcher r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
This commit is contained in:
bors[bot] 2022-01-03 13:28:56 +00:00 committed by GitHub
commit 120d76e0a3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 15 deletions

View File

@ -697,6 +697,7 @@ fn match_meta_var(kind: &str, input: &mut TtIter) -> ExpandResult<Option<Fragmen
"block" => parser::PrefixEntryPoint::Block, "block" => parser::PrefixEntryPoint::Block,
"meta" => parser::PrefixEntryPoint::MetaItem, "meta" => parser::PrefixEntryPoint::MetaItem,
"item" => parser::PrefixEntryPoint::Item, "item" => parser::PrefixEntryPoint::Item,
"vis" => parser::PrefixEntryPoint::Vis,
"expr" => { "expr" => {
return input return input
.expect_fragment(parser::PrefixEntryPoint::Expr) .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 { let tt_result = match kind {
"ident" => input "ident" => input
.expect_ident() .expect_ident()
.map(|ident| Some(tt::Leaf::from(ident.clone()).into())) .map(|ident| tt::Leaf::from(ident.clone()).into())
.map_err(|()| err!("expected ident")), .map_err(|()| err!("expected ident")),
"tt" => input.expect_tt().map(Some).map_err(|()| err!()), "tt" => input.expect_tt().map_err(|()| err!()),
"lifetime" => { "lifetime" => input.expect_lifetime().map_err(|()| err!("expected lifetime")),
input.expect_lifetime().map(Some).map_err(|()| err!("expected lifetime"))
}
"literal" => { "literal" => {
let neg = input.eat_char('-'); let neg = input.eat_char('-');
input input
@ -719,20 +718,18 @@ fn match_meta_var(kind: &str, input: &mut TtIter) -> ExpandResult<Option<Fragmen
.map(|literal| { .map(|literal| {
let lit = literal.clone(); let lit = literal.clone();
match neg { match neg {
None => Some(lit.into()), None => lit.into(),
Some(neg) => Some(tt::TokenTree::Subtree(tt::Subtree { Some(neg) => tt::TokenTree::Subtree(tt::Subtree {
delimiter: None, delimiter: None,
token_trees: vec![neg, lit.into()], token_trees: vec![neg, lit.into()],
})), }),
} }
}) })
.map_err(|()| err!()) .map_err(|()| err!())
} }
// `vis` is optional
"vis" => Ok(input.expect_fragment(parser::PrefixEntryPoint::Vis).value),
_ => Err(ExpandError::UnexpectedToken), _ => 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)) input.expect_fragment(fragment).map(|it| it.map(Fragment::Tokens))

View File

@ -114,7 +114,7 @@ impl<'a> TtIter<'a> {
} }
} }
let mut err = if !cursor.is_root() || error { let err = if error || !cursor.is_root() {
Some(err!("expected {:?}", entry_point)) Some(err!("expected {:?}", entry_point))
} else { } else {
None None
@ -132,9 +132,6 @@ impl<'a> TtIter<'a> {
} }
} }
self.inner = self.inner.as_slice()[res.len()..].iter(); self.inner = self.inner.as_slice()[res.len()..].iter();
if res.is_empty() && err.is_none() {
err = Some(err!("no tokens consumed"));
}
let res = match res.len() { let res = match res.len() {
1 => Some(res[0].cloned()), 1 => Some(res[0].cloned()),
0 => None, 0 => None,