Improve behavior of parser when failing on a BlockStart
This commit is contained in:
parent
39d576c799
commit
8e4fae2228
1 changed files with 7 additions and 5 deletions
|
@ -94,7 +94,7 @@ namespace bolt {
|
||||||
Tokens.get();
|
Tokens.get();
|
||||||
return new BindPattern(static_cast<Identifier*>(T0));
|
return new BindPattern(static_cast<Identifier*>(T0));
|
||||||
default:
|
default:
|
||||||
Tokens.get();
|
// Tokens.get();
|
||||||
DE.add<UnexpectedTokenDiagnostic>(File, T0, std::vector { NodeKind::Identifier, NodeKind::StringLiteral, NodeKind::IntegerLiteral });
|
DE.add<UnexpectedTokenDiagnostic>(File, T0, std::vector { NodeKind::Identifier, NodeKind::StringLiteral, NodeKind::IntegerLiteral });
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -244,7 +244,7 @@ after_tuple_element:
|
||||||
case NodeKind::IdentifierAlt:
|
case NodeKind::IdentifierAlt:
|
||||||
return parseReferenceTypeExpression();
|
return parseReferenceTypeExpression();
|
||||||
default:
|
default:
|
||||||
Tokens.get();
|
// Tokens.get();
|
||||||
DE.add<UnexpectedTokenDiagnostic>(File, T0, std::vector { NodeKind::Identifier, NodeKind::IdentifierAlt, NodeKind::LParen });
|
DE.add<UnexpectedTokenDiagnostic>(File, T0, std::vector { NodeKind::Identifier, NodeKind::IdentifierAlt, NodeKind::LParen });
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -464,7 +464,7 @@ after_tuple_elements:
|
||||||
Tokens.get();
|
Tokens.get();
|
||||||
return new ConstantExpression(static_cast<Literal*>(T0));
|
return new ConstantExpression(static_cast<Literal*>(T0));
|
||||||
default:
|
default:
|
||||||
Tokens.get();
|
// Tokens.get();
|
||||||
DE.add<UnexpectedTokenDiagnostic>(File, T0, std::vector { NodeKind::MatchKeyword, NodeKind::Identifier, NodeKind::IdentifierAlt, NodeKind::LParen, NodeKind::IntegerLiteral, NodeKind::StringLiteral });
|
DE.add<UnexpectedTokenDiagnostic>(File, T0, std::vector { NodeKind::MatchKeyword, NodeKind::Identifier, NodeKind::IdentifierAlt, NodeKind::LParen, NodeKind::IntegerLiteral, NodeKind::StringLiteral });
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -1202,8 +1202,10 @@ after_vars:
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::checkLineFoldEnd() {
|
void Parser::checkLineFoldEnd() {
|
||||||
auto T0 = Tokens.get();
|
auto T0 = Tokens.peek();
|
||||||
if (T0->getKind() != NodeKind::LineFoldEnd) {
|
if (T0->getKind() == NodeKind::LineFoldEnd) {
|
||||||
|
Tokens.get();
|
||||||
|
} else {
|
||||||
DE.add<UnexpectedTokenDiagnostic>(File, T0, std::vector { NodeKind::LineFoldEnd });
|
DE.add<UnexpectedTokenDiagnostic>(File, T0, std::vector { NodeKind::LineFoldEnd });
|
||||||
skipToLineFoldEnd();
|
skipToLineFoldEnd();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue