Improve parsing of invalid expressions. (#2726)

This addresses crashes for infix operator expressions, but the approach should more generally yield balanced parsed trees.
This commit is contained in:
Jon Ross-Perkins
2023-03-31 20:51:59 -07:00
committed by GitHub
parent 7824e9618c
commit a905cdea30
8 changed files with 74 additions and 13 deletions
+3
View File
@@ -959,6 +959,9 @@ auto Parser::HandleExpressionInPostfixState() -> void {
break;
}
default: {
// Add a node to keep the parse tree balanced.
AddLeafNode(ParseNodeKind::InvalidExpression, *position_,
/*has_error=*/true);
CARBON_DIAGNOSTIC(ExpectedExpression, Error, "Expected expression.");
emitter_->Emit(*position_, ExpectedExpression);
ReturnErrorOnState();