Skip to content

Commit da57ac3

Browse files
committed
Move diagnostic logic out of parser
1 parent a2f853a commit da57ac3

File tree

2 files changed

+20
-19
lines changed

2 files changed

+20
-19
lines changed

src/libsyntax/parse/diagnostics.rs

+19
Original file line numberDiff line numberDiff line change
@@ -614,4 +614,23 @@ impl<'a> Parser<'a> {
614614
}
615615
}
616616

617+
crate fn expected_expression_found(&self) -> DiagnosticBuilder<'a> {
618+
let (span, msg) = match (&self.token, self.subparser_name) {
619+
(&token::Token::Eof, Some(origin)) => {
620+
let sp = self.sess.source_map().next_point(self.span);
621+
(sp, format!( "expected expression, found end of {}", origin))
622+
}
623+
_ => (self.span, format!(
624+
"expected expression, found {}",
625+
self.this_token_descr(),
626+
)),
627+
};
628+
let mut err = self.struct_span_err(span, &msg);
629+
let sp = self.sess.source_map().start_point(self.span);
630+
if let Some(sp) = self.sess.ambiguous_block_expr_parse.borrow().get(&sp) {
631+
self.sess.expr_parentheses_needed(&mut err, *sp, None);
632+
}
633+
err.span_label(span, "expected expression");
634+
err
635+
}
617636
}

src/libsyntax/parse/parser.rs

+1-19
Original file line numberDiff line numberDiff line change
@@ -2601,25 +2601,7 @@ impl<'a> Parser<'a> {
26012601
}
26022602
Err(mut err) => {
26032603
self.cancel(&mut err);
2604-
let (span, msg) = match (&self.token, self.subparser_name) {
2605-
(&token::Token::Eof, Some(origin)) => {
2606-
let sp = self.sess.source_map().next_point(self.span);
2607-
(sp, format!( "expected expression, found end of {}", origin))
2608-
}
2609-
_ => (self.span, format!(
2610-
"expected expression, found {}",
2611-
self.this_token_descr(),
2612-
)),
2613-
};
2614-
let mut err = self.struct_span_err(span, &msg);
2615-
let sp = self.sess.source_map().start_point(self.span);
2616-
if let Some(sp) = self.sess.ambiguous_block_expr_parse.borrow()
2617-
.get(&sp)
2618-
{
2619-
self.sess.expr_parentheses_needed(&mut err, *sp, None);
2620-
}
2621-
err.span_label(span, "expected expression");
2622-
return Err(err);
2604+
return Err(self.expected_expression_found());
26232605
}
26242606
}
26252607
}

0 commit comments

Comments
 (0)