Changeset 192597 in webkit for trunk/Source/JavaScriptCore/parser/Parser.h
- Timestamp:
- Nov 18, 2015, 4:03:26 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/parser/Parser.h
r192586 r192597 425 425 } 426 426 427 enum BindingResult { 428 BindingFailed, 429 StrictBindingFailed, 430 BindingSucceeded 431 }; 432 BindingResult declareBoundParameter(const Identifier* ident) 433 { 434 bool isArgumentsIdent = isArguments(m_vm, ident); 435 auto addResult = m_declaredVariables.add(ident->impl()); 436 addResult.iterator->value.setIsVar(); // Treat destructuring parameters as "var"s. 437 bool isValidStrictMode = addResult.isNewEntry && !isEval(m_vm, ident) && !isArgumentsIdent; 438 m_isValidStrictMode = m_isValidStrictMode && isValidStrictMode; 439 440 if (isArgumentsIdent) 441 m_shadowsArguments = true; 442 if (!addResult.isNewEntry) 443 return BindingFailed; 444 return isValidStrictMode ? BindingSucceeded : StrictBindingFailed; 445 } 446 427 447 void getUsedVariables(IdentifierSet& usedVariables) 428 448 { … … 1035 1055 bool isValidStrictMode() { return currentScope()->isValidStrictMode(); } 1036 1056 DeclarationResultMask declareParameter(const Identifier* ident) { return currentScope()->declareParameter(ident); } 1057 Scope::BindingResult declareBoundParameter(const Identifier* ident) { return currentScope()->declareBoundParameter(ident); } 1037 1058 bool breakIsValid() 1038 1059 { … … 1139 1160 template <class TreeBuilder> TreeSourceElements parseArrowFunctionSingleExpressionBodySourceElements(TreeBuilder&); 1140 1161 template <class TreeBuilder> TreeExpression parseArrowFunctionExpression(TreeBuilder&); 1141 template <class TreeBuilder> NEVER_INLINE TreeDestructuringPattern createBindingPattern(TreeBuilder&, DestructuringKind, ExportType, const Identifier&, JSToken, AssignmentContext, const Identifier** duplicateIdentifier); 1142 template <class TreeBuilder> NEVER_INLINE TreeDestructuringPattern createAssignmentElement(TreeBuilder&, TreeExpression&, const JSTextPosition&, const JSTextPosition&); 1143 template <class TreeBuilder> NEVER_INLINE TreeDestructuringPattern parseBindingOrAssignmentElement(TreeBuilder& context, DestructuringKind, ExportType, const Identifier** duplicateIdentifier, bool* hasDestructuringPattern, AssignmentContext bindingContext, int depth); 1144 template <class TreeBuilder> NEVER_INLINE TreeDestructuringPattern parseAssignmentElement(TreeBuilder& context, DestructuringKind, ExportType, const Identifier** duplicateIdentifier, bool* hasDestructuringPattern, AssignmentContext bindingContext, int depth); 1162 template <class TreeBuilder> NEVER_INLINE TreeDestructuringPattern createBindingPattern(TreeBuilder&, DestructuringKind, ExportType, const Identifier&, int depth, JSToken, AssignmentContext, const Identifier** duplicateIdentifier); 1145 1163 template <class TreeBuilder> NEVER_INLINE TreeDestructuringPattern parseDestructuringPattern(TreeBuilder&, DestructuringKind, ExportType, const Identifier** duplicateIdentifier = nullptr, bool* hasDestructuringPattern = nullptr, AssignmentContext = AssignmentContext::DeclarationStatement, int depth = 0); 1146 1164 template <class TreeBuilder> NEVER_INLINE TreeDestructuringPattern tryParseDestructuringPatternExpression(TreeBuilder&, AssignmentContext);
Note:
See TracChangeset
for help on using the changeset viewer.