// This file was autogenerated by binjs_generate_spidermonkey,
// please DO NOT EDIT BY HAND.
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 * vim: set ts=8 sts=2 et sw=2 tw=80:
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

// To generate this file, see the documentation in
// js/src/frontend/binast/README.md.

#ifndef frontend_BinASTEnum_h
#define frontend_BinASTEnum_h

namespace js {
namespace frontend {
namespace binast {

// ----- Declaring string enums (by lexicographical order)

enum class AssertedDeclaredKind {
  // "var"
  Var,
  // "non-const lexical"
  NonConstLexical,
  // "const lexical"
  ConstLexical,
};

enum class BinaryOperator {
  // ","
  Comma,
  // "||"
  LogicalOr,
  // "&&"
  LogicalAnd,
  // "|"
  BitOr,
  // "^"
  BitXor,
  // "&"
  BitAnd,
  // "=="
  Eq,
  // "!="
  Neq,
  // "==="
  StrictEq,
  // "!=="
  StrictNeq,
  // "<"
  LessThan,
  // "<="
  LeqThan,
  // ">"
  GreaterThan,
  // ">="
  GeqThan,
  // "in"
  In,
  // "instanceof"
  Instanceof,
  // "<<"
  Lsh,
  // ">>"
  Rsh,
  // ">>>"
  Ursh,
  // "+"
  Plus,
  // "-"
  Minus,
  // "*"
  Mul,
  // "/"
  Div,
  // "%"
  Mod,
  // "**"
  Pow,
};

enum class CompoundAssignmentOperator {
  // "+="
  PlusAssign,
  // "-="
  MinusAssign,
  // "*="
  MulAssign,
  // "/="
  DivAssign,
  // "%="
  ModAssign,
  // "**="
  PowAssign,
  // "<<="
  LshAssign,
  // ">>="
  RshAssign,
  // ">>>="
  UrshAssign,
  // "|="
  BitOrAssign,
  // "^="
  BitXorAssign,
  // "&="
  BitAndAssign,
};

enum class UnaryOperator {
  // "+"
  Plus,
  // "-"
  Minus,
  // "!"
  Not,
  // "~"
  BitNot,
  // "typeof"
  Typeof,
  // "void"
  Void,
  // "delete"
  Delete,
};

enum class UpdateOperator {
  // "++"
  Incr,
  // "--"
  Decr,
};

enum class VariableDeclarationKind {
  // "var"
  Var,
  // "let"
  Let,
  // "const"
  Const,
};

}  // namespace binast
}  // namespace frontend
}  // namespace js

#endif  // frontend_BinASTEnum_h
