Change return of SkipPastLikelyEnd to be last consumed token (#3493)

This approach means the parse subtree includes the full token range
consumed.

---------

Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
This commit is contained in:
josh11b
2023-12-11 22:11:09 +00:00
committed by GitHub
co-authored by Jon Ross-Perkins
parent 1addf10054
commit 6067ca3f49
28 changed files with 72 additions and 94 deletions
+3 -5
View File
@@ -35,8 +35,8 @@ auto HandleVarAsReturned(Context& context) -> void {
CARBON_DIAGNOSTIC(ExpectedVarAfterReturned, Error,
"Expected `var` after `returned`.");
context.emitter().Emit(*context.position(), ExpectedVarAfterReturned);
auto semi = context.SkipPastLikelyEnd(returned_token);
context.AddLeafNode(NodeKind::EmptyDecl, semi ? *semi : returned_token,
context.AddLeafNode(NodeKind::EmptyDecl,
context.SkipPastLikelyEnd(returned_token),
/*has_error=*/true);
context.PopAndDiscardState();
return;
@@ -76,9 +76,7 @@ auto HandleVarFinishAsDecl(Context& context) -> void {
// TODO: Disambiguate between statement and member declaration.
context.EmitExpectedDeclSemi(Lex::TokenKind::Var);
state.has_error = true;
if (auto semi_token = context.SkipPastLikelyEnd(state.token)) {
end_token = *semi_token;
}
end_token = context.SkipPastLikelyEnd(state.token);
}
context.AddNode(NodeKind::VariableDecl, end_token, state.subtree_start,
state.has_error);