1// Copyright 2019 the V8 project authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef V8_OBJECTS_FUNCTION_SYNTAX_KIND_H_ 6#define V8_OBJECTS_FUNCTION_SYNTAX_KIND_H_ 7 8#include "src/utils/utils.h" 9 10namespace v8 { 11namespace internal { 12 13enum class FunctionSyntaxKind : uint8_t { 14 kAnonymousExpression, 15 kNamedExpression, 16 kDeclaration, 17 kAccessorOrMethod, 18 kWrapped, 19 20 kLastFunctionSyntaxKind = kWrapped, 21}; 22 23inline const char* FunctionSyntaxKind2String(FunctionSyntaxKind kind) { 24 switch (kind) { 25 case FunctionSyntaxKind::kAnonymousExpression: 26 return "AnonymousExpression"; 27 case FunctionSyntaxKind::kNamedExpression: 28 return "NamedExpression"; 29 case FunctionSyntaxKind::kDeclaration: 30 return "Declaration"; 31 case FunctionSyntaxKind::kAccessorOrMethod: 32 return "AccessorOrMethod"; 33 case FunctionSyntaxKind::kWrapped: 34 return "Wrapped"; 35 } 36 UNREACHABLE(); 37} 38 39inline std::ostream& operator<<(std::ostream& os, FunctionSyntaxKind kind) { 40 return os << FunctionSyntaxKind2String(kind); 41} 42 43} // namespace internal 44} // namespace v8 45 46#endif // V8_OBJECTS_FUNCTION_SYNTAX_KIND_H_ 47