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 | 46 |
1 files changed, 12 insertions, 34 deletions
diff --git a/crates/mbe/src/expander/matcher.rs b/crates/mbe/src/expander/matcher.rs index 3137bd91cf..bcda2381a4 100644 --- a/crates/mbe/src/expander/matcher.rs +++ b/crates/mbe/src/expander/matcher.rs @@ -61,7 +61,6 @@ use std::rc::Rc; -use parser::ParserEntryPoint; use smallvec::{smallvec, SmallVec}; use syntax::SmolStr; @@ -690,41 +689,21 @@ fn match_leaf(lhs: &tt::Leaf, src: &mut TtIter) -> Result<(), ExpandError> { fn match_meta_var(kind: &str, input: &mut TtIter) -> ExpandResult<Option<Fragment>> { let fragment = match kind { - "path" => { - return input - .expect_fragment2(parser::PrefixEntryPoint::Path) - .map(|tt| tt.map(Fragment::Tokens)); - } - "expr" => { - return input - .expect_fragment2(parser::PrefixEntryPoint::Expr) - .map(|tt| tt.map(Fragment::Expr)); - } - "ty" => { - return input - .expect_fragment2(parser::PrefixEntryPoint::Ty) - .map(|tt| tt.map(Fragment::Tokens)); - } + "path" => parser::PrefixEntryPoint::Path, + "ty" => parser::PrefixEntryPoint::Ty, // FIXME: These two should actually behave differently depending on the edition. // // https://doc.rust-lang.org/edition-guide/rust-2021/or-patterns-macro-rules.html - "pat" | "pat_param" => { - return input - .expect_fragment2(parser::PrefixEntryPoint::Pat) - .map(|tt| tt.map(Fragment::Tokens)); - } - "stmt" => { - return input - .expect_fragment2(parser::PrefixEntryPoint::Stmt) - .map(|tt| tt.map(Fragment::Tokens)); - } - "block" => { + "pat" | "pat_param" => parser::PrefixEntryPoint::Pat, + "stmt" => parser::PrefixEntryPoint::Stmt, + "block" => parser::PrefixEntryPoint::Block, + "meta" => parser::PrefixEntryPoint::MetaItem, + "item" => parser::PrefixEntryPoint::Item, + "expr" => { return input - .expect_fragment2(parser::PrefixEntryPoint::Block) - .map(|tt| tt.map(Fragment::Tokens)); + .expect_fragment(parser::PrefixEntryPoint::Expr) + .map(|tt| tt.map(Fragment::Expr)) } - "meta" => ParserEntryPoint::MetaItem, - "item" => ParserEntryPoint::Item, _ => { let tt_result = match kind { "ident" => input @@ -752,14 +731,13 @@ fn match_meta_var(kind: &str, input: &mut TtIter) -> ExpandResult<Option<Fragmen .map_err(|()| err!()) } // `vis` is optional - "vis" => Ok(input.expect_fragment2(parser::PrefixEntryPoint::Vis).value), + "vis" => Ok(input.expect_fragment(parser::PrefixEntryPoint::Vis).value), _ => Err(ExpandError::UnexpectedToken), }; return tt_result.map(|it| it.map(Fragment::Tokens)).into(); } }; - let result = input.expect_fragment(fragment); - result.map(|tt| if kind == "expr" { tt.map(Fragment::Expr) } else { tt.map(Fragment::Tokens) }) + input.expect_fragment(fragment).map(|it| it.map(Fragment::Tokens)) } fn collect_vars(buf: &mut Vec<SmolStr>, pattern: &MetaTemplate) { |