Skip to content

Commit 2189f57

Browse files
Remove extra level of nesting.
1 parent 38912ee commit 2189f57

File tree

1 file changed

+32
-35
lines changed

1 file changed

+32
-35
lines changed

src/libsyntax/ext/tt/macro_parser.rs

+32-35
Original file line numberDiff line numberDiff line change
@@ -436,43 +436,40 @@ pub fn parse(sess: &ParseSess, rdr: TtReader, ms: &[TokenTree]) -> NamedParseRes
436436
} else {
437437
return Failure(parser.span, token::Eof);
438438
}
439-
} else {
440-
if (!bb_eis.is_empty() && !next_eis.is_empty())
441-
|| bb_eis.len() > 1 {
442-
let nts = bb_eis.iter().map(|ei| match ei.top_elts.get_tt(ei.idx) {
443-
TokenTree::Token(_, MatchNt(bind, name)) => {
444-
format!("{} ('{}')", name, bind)
445-
}
446-
_ => panic!()
447-
}).collect::<Vec<String>>().join(" or ");
448-
449-
return Error(parser.span, format!(
450-
"local ambiguity: multiple parsing options: {}",
451-
match next_eis.len() {
452-
0 => format!("built-in NTs {}.", nts),
453-
1 => format!("built-in NTs {} or 1 other option.", nts),
454-
n => format!("built-in NTs {} or {} other options.", nts, n),
455-
}
456-
))
457-
} else if bb_eis.is_empty() && next_eis.is_empty() {
458-
return Failure(parser.span, parser.token);
459-
} else if !next_eis.is_empty() {
460-
/* Now process the next token */
461-
cur_eis.extend(next_eis.drain(..));
462-
parser.bump();
463-
} else /* bb_eis.len() == 1 */ {
464-
let mut ei = bb_eis.pop().unwrap();
465-
if let TokenTree::Token(span, MatchNt(_, ident)) = ei.top_elts.get_tt(ei.idx) {
466-
let match_cur = ei.match_cur;
467-
ei.matches[match_cur].push(Rc::new(MatchedNonterminal(
468-
Rc::new(parse_nt(&mut parser, span, &ident.name.as_str())))));
469-
ei.idx += 1;
470-
ei.match_cur += 1;
471-
} else {
472-
unreachable!()
439+
} else if (!bb_eis.is_empty() && !next_eis.is_empty()) || bb_eis.len() > 1 {
440+
let nts = bb_eis.iter().map(|ei| match ei.top_elts.get_tt(ei.idx) {
441+
TokenTree::Token(_, MatchNt(bind, name)) => {
442+
format!("{} ('{}')", name, bind)
443+
}
444+
_ => panic!()
445+
}).collect::<Vec<String>>().join(" or ");
446+
447+
return Error(parser.span, format!(
448+
"local ambiguity: multiple parsing options: {}",
449+
match next_eis.len() {
450+
0 => format!("built-in NTs {}.", nts),
451+
1 => format!("built-in NTs {} or 1 other option.", nts),
452+
n => format!("built-in NTs {} or {} other options.", nts, n),
473453
}
474-
cur_eis.push(ei);
454+
));
455+
} else if bb_eis.is_empty() && next_eis.is_empty() {
456+
return Failure(parser.span, parser.token);
457+
} else if !next_eis.is_empty() {
458+
/* Now process the next token */
459+
cur_eis.extend(next_eis.drain(..));
460+
parser.bump();
461+
} else /* bb_eis.len() == 1 */ {
462+
let mut ei = bb_eis.pop().unwrap();
463+
if let TokenTree::Token(span, MatchNt(_, ident)) = ei.top_elts.get_tt(ei.idx) {
464+
let match_cur = ei.match_cur;
465+
ei.matches[match_cur].push(Rc::new(MatchedNonterminal(
466+
Rc::new(parse_nt(&mut parser, span, &ident.name.as_str())))));
467+
ei.idx += 1;
468+
ei.match_cur += 1;
469+
} else {
470+
unreachable!()
475471
}
472+
cur_eis.push(ei);
476473
}
477474

478475
assert!(!cur_eis.is_empty());

0 commit comments

Comments
 (0)