mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-06 08:54:47 +01:00
Add PushState overload to combine Parse::State change with StateStackEntry (#3485)
Shortens a common `PushState` pattern
This commit is contained in:
@@ -120,9 +120,7 @@ auto HandleStatementForHeader(Context& context) -> void {
|
||||
|
||||
auto HandleStatementForHeaderIn(Context& context) -> void {
|
||||
auto state = context.PopState();
|
||||
|
||||
state.state = State::StatementForHeaderFinish;
|
||||
context.PushState(state);
|
||||
context.PushState(state, State::StatementForHeaderFinish);
|
||||
context.PushState(State::Expr);
|
||||
}
|
||||
|
||||
@@ -151,9 +149,7 @@ auto HandleStatementIf(Context& context) -> void {
|
||||
|
||||
auto HandleStatementIfConditionFinish(Context& context) -> void {
|
||||
auto state = context.PopState();
|
||||
|
||||
state.state = State::StatementIfThenBlockFinish;
|
||||
context.PushState(state);
|
||||
context.PushState(state, State::StatementIfThenBlockFinish);
|
||||
context.PushState(State::CodeBlock);
|
||||
}
|
||||
|
||||
@@ -162,8 +158,7 @@ auto HandleStatementIfThenBlockFinish(Context& context) -> void {
|
||||
|
||||
if (context.ConsumeAndAddLeafNodeIf(Lex::TokenKind::Else,
|
||||
NodeKind::IfStatementElse)) {
|
||||
state.state = State::StatementIfElseBlockFinish;
|
||||
context.PushState(state);
|
||||
context.PushState(state, State::StatementIfElseBlockFinish);
|
||||
// `else if` is permitted as a special case.
|
||||
context.PushState(context.PositionIs(Lex::TokenKind::If)
|
||||
? State::StatementIf
|
||||
@@ -182,8 +177,7 @@ auto HandleStatementIfElseBlockFinish(Context& context) -> void {
|
||||
|
||||
auto HandleStatementReturn(Context& context) -> void {
|
||||
auto state = context.PopState();
|
||||
state.state = State::StatementReturnFinish;
|
||||
context.PushState(state);
|
||||
context.PushState(state, State::StatementReturnFinish);
|
||||
|
||||
context.AddLeafNode(NodeKind::ReturnStatementStart, context.Consume());
|
||||
|
||||
@@ -227,8 +221,7 @@ auto HandleStatementWhile(Context& context) -> void {
|
||||
auto HandleStatementWhileConditionFinish(Context& context) -> void {
|
||||
auto state = context.PopState();
|
||||
|
||||
state.state = State::StatementWhileBlockFinish;
|
||||
context.PushState(state);
|
||||
context.PushState(state, State::StatementWhileBlockFinish);
|
||||
context.PushState(State::CodeBlock);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user