// Part of the Carbon Language project, under the Apache License v2.0 with LLVM
// Exceptions. See /LICENSE for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

#include "toolchain/parse/context.h"
#include "toolchain/parse/handle.h"

namespace Carbon::Parse {

auto HandlePattern(Context& context) -> void {
  auto state = context.PopState();
  switch (context.PositionKind()) {
    case Lex::TokenKind::OpenParen:
      context.PushStateForPattern(StateKind::PatternListAsTuple,
                                  state.in_var_pattern);
      break;
    case Lex::TokenKind::Var:
      context.PushStateForPattern(StateKind::VariablePattern,
                                  state.in_var_pattern);
      break;
    default:
      context.PushStateForPattern(StateKind::BindingPattern,
                                  state.in_var_pattern);
      break;
  }
}

}  // namespace Carbon::Parse
