Changeset 190188 in webkit for trunk/Source/JavaScriptCore/parser/Parser.cpp
- Timestamp:
- Sep 23, 2015, 3:37:36 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/parser/Parser.cpp
r189504 r190188 605 605 if (declarationType == DeclarationType::ConstDeclaration) 606 606 internalFailWithMessage(false, "Cannot declare a const variable twice: '", name->impl(), "'"); 607 RELEASE_ASSERT_NOT_REACHED(); 607 ASSERT(declarationType == DeclarationType::VarDeclaration); 608 internalFailWithMessage(false, "Cannot declare a var variable that shadows a let/const/class variable: '", name->impl(), "'"); 608 609 } 609 610 } … … 668 669 ASSERT(name.impl()->isAtomic() || name.impl()->isSymbol()); 669 670 670 if (kind == DestructureToVariables) 671 failIfTrueIfStrict(declareVariable(&name) & DeclarationResult::InvalidStrictMode, "Cannot declare a variable named '", name.impl(), "' in strict mode"); 672 else if (kind == DestructureToLet || kind == DestructureToConst) { 671 if (kind == DestructureToVariables) { 672 DeclarationResultMask declarationResult = declareVariable(&name); 673 failIfTrueIfStrict(declarationResult & DeclarationResult::InvalidStrictMode, "Cannot declare a variable named '", name.impl(), "' in strict mode"); 674 if (declarationResult & DeclarationResult::InvalidDuplicateDeclaration) 675 internalFailWithMessage(false, "Cannot declare a var variable that shadows a let/const/class variable: '", name.impl(), "'"); 676 } else if (kind == DestructureToLet || kind == DestructureToConst) { 673 677 DeclarationResultMask declarationResult = declareVariable(&name, kind == DestructureToLet ? DeclarationType::LetDeclaration : DeclarationType::ConstDeclaration); 674 678 if (declarationResult != DeclarationResult::Valid) { … … 1874 1878 functionKeywordStart, functionInfo, StandardFunctionParseType)), "Cannot parse this function"); 1875 1879 failIfFalse(functionInfo.name, "Function statements must have a name"); 1876 failIfTrueIfStrict(declareVariable(functionInfo.name) & DeclarationResult::InvalidStrictMode, "Cannot declare a function named '", functionInfo.name->impl(), "' in strict mode"); 1880 DeclarationResultMask declarationResult = declareVariable(functionInfo.name); 1881 failIfTrueIfStrict(declarationResult & DeclarationResult::InvalidStrictMode, "Cannot declare a function named '", functionInfo.name->impl(), "' in strict mode"); 1882 if (declarationResult & DeclarationResult::InvalidDuplicateDeclaration) 1883 internalFailWithMessage(false, "Cannot declare a function that shadows a let/const/class variable '", functionInfo.name->impl(), "' in strict mode"); 1877 1884 if (exportType == ExportType::Exported) { 1878 1885 semanticFailIfFalse(exportName(*functionInfo.name), "Cannot export a duplicate function name: '", functionInfo.name->impl(), "'");
Note:
See TracChangeset
for help on using the changeset viewer.