diff options
Diffstat (limited to 'Source/JavaScriptCore/parser/ParserModes.h')
-rw-r--r-- | Source/JavaScriptCore/parser/ParserModes.h | 140 |
1 files changed, 15 insertions, 125 deletions
diff --git a/Source/JavaScriptCore/parser/ParserModes.h b/Source/JavaScriptCore/parser/ParserModes.h index 4f6bac6c3..4e9a17cd2 100644 --- a/Source/JavaScriptCore/parser/ParserModes.h +++ b/Source/JavaScriptCore/parser/ParserModes.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012, 2013, 2015 Apple Inc. All rights reserved. + * Copyright (C) 2012, 2013 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -27,139 +27,29 @@ #ifndef ParserModes_h #define ParserModes_h -#include "Identifier.h" - namespace JSC { -enum class JSParserStrictMode { NotStrict, Strict }; -enum class JSParserBuiltinMode { NotBuiltin, Builtin }; -enum class JSParserCodeType { Program, Function, Module }; - -enum class ConstructorKind { None, Base, Derived }; -enum class SuperBinding { Needed, NotNeeded }; -enum class ThisTDZMode { AlwaysCheck, CheckIfNeeded }; +enum JSParserStrictness { JSParseNormal, JSParseStrict }; +enum JSParserMode { JSParseProgramCode, JSParseFunctionCode }; enum ProfilerMode { ProfilerOff, ProfilerOn }; enum DebuggerMode { DebuggerOff, DebuggerOn }; -enum FunctionMode { FunctionExpression, FunctionDeclaration }; - -enum class SourceParseMode : uint8_t { - NormalFunctionMode, - GeneratorBodyMode, - GeneratorWrapperFunctionMode, - GetterMode, - SetterMode, - MethodMode, - ArrowFunctionMode, - ProgramMode, - ModuleAnalyzeMode, - ModuleEvaluateMode -}; - -inline bool isFunctionParseMode(SourceParseMode parseMode) -{ - switch (parseMode) { - case SourceParseMode::NormalFunctionMode: - case SourceParseMode::GeneratorBodyMode: - case SourceParseMode::GeneratorWrapperFunctionMode: - case SourceParseMode::GetterMode: - case SourceParseMode::SetterMode: - case SourceParseMode::MethodMode: - case SourceParseMode::ArrowFunctionMode: - return true; - - case SourceParseMode::ProgramMode: - case SourceParseMode::ModuleAnalyzeMode: - case SourceParseMode::ModuleEvaluateMode: - return false; - } - RELEASE_ASSERT_NOT_REACHED(); - return false; -} - -inline bool isModuleParseMode(SourceParseMode parseMode) -{ - switch (parseMode) { - case SourceParseMode::ModuleAnalyzeMode: - case SourceParseMode::ModuleEvaluateMode: - return true; - - case SourceParseMode::NormalFunctionMode: - case SourceParseMode::GeneratorBodyMode: - case SourceParseMode::GeneratorWrapperFunctionMode: - case SourceParseMode::GetterMode: - case SourceParseMode::SetterMode: - case SourceParseMode::MethodMode: - case SourceParseMode::ArrowFunctionMode: - case SourceParseMode::ProgramMode: - return false; - } - RELEASE_ASSERT_NOT_REACHED(); - return false; -} - -inline bool isProgramParseMode(SourceParseMode parseMode) -{ - switch (parseMode) { - case SourceParseMode::ProgramMode: - return true; - - case SourceParseMode::NormalFunctionMode: - case SourceParseMode::GeneratorBodyMode: - case SourceParseMode::GeneratorWrapperFunctionMode: - case SourceParseMode::GetterMode: - case SourceParseMode::SetterMode: - case SourceParseMode::MethodMode: - case SourceParseMode::ArrowFunctionMode: - case SourceParseMode::ModuleAnalyzeMode: - case SourceParseMode::ModuleEvaluateMode: - return false; - } - RELEASE_ASSERT_NOT_REACHED(); - return false; -} - -inline bool functionNameIsInScope(const Identifier& name, FunctionMode functionMode) -{ - if (name.isNull()) - return false; - - if (functionMode != FunctionExpression) - return false; - - return true; -} - -inline bool functionNameScopeIsDynamic(bool usesEval, bool isStrictMode) -{ - // If non-strict eval is in play, a function gets a separate object in the scope chain for its name. - // This enables eval to declare and then delete a name that shadows the function's name. - - if (!usesEval) - return false; - - if (isStrictMode) - return false; - - return true; -} +enum FunctionNameIsInScopeToggle { FunctionNameIsNotInScope, FunctionNameIsInScope }; -typedef uint16_t CodeFeatures; +typedef unsigned CodeFeatures; -const CodeFeatures NoFeatures = 0; -const CodeFeatures EvalFeature = 1 << 0; -const CodeFeatures ArgumentsFeature = 1 << 1; -const CodeFeatures WithFeature = 1 << 2; -const CodeFeatures ThisFeature = 1 << 3; -const CodeFeatures StrictModeFeature = 1 << 4; -const CodeFeatures ShadowsArgumentsFeature = 1 << 5; -const CodeFeatures ModifiedParameterFeature = 1 << 6; -const CodeFeatures ModifiedArgumentsFeature = 1 << 7; -const CodeFeatures ArrowFunctionFeature = 1 << 8; -const CodeFeatures ArrowFunctionContextFeature = 1 << 9; +const CodeFeatures NoFeatures = 0; +const CodeFeatures EvalFeature = 1 << 0; +const CodeFeatures ArgumentsFeature = 1 << 1; +const CodeFeatures WithFeature = 1 << 2; +const CodeFeatures CatchFeature = 1 << 3; +const CodeFeatures ThisFeature = 1 << 4; +const CodeFeatures StrictModeFeature = 1 << 5; +const CodeFeatures ShadowsArgumentsFeature = 1 << 6; +const CodeFeatures ModifiedParameterFeature = 1 << 7; -const CodeFeatures AllFeatures = EvalFeature | ArgumentsFeature | WithFeature | ThisFeature | StrictModeFeature | ShadowsArgumentsFeature | ModifiedParameterFeature | ArrowFunctionFeature | ArrowFunctionContextFeature; +const CodeFeatures AllFeatures = EvalFeature | ArgumentsFeature | WithFeature | CatchFeature | ThisFeature | StrictModeFeature | ShadowsArgumentsFeature | ModifiedParameterFeature; } // namespace JSC |