WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-178175-20200322225606.patch (text/plain), 27.06 KB, created by
Alexey Shvayka
on 2020-03-22 13:56:08 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Alexey Shvayka
Created:
2020-03-22 13:56:08 PDT
Size:
27.06 KB
patch
obsolete
>Subversion Revision: 258819 >diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog >index 6bab3bffc46668991ba9965f3ffc1ab6e8f464de..174d21b6a12d285f07bcc34731dcefffdc03d747 100644 >--- a/Source/JavaScriptCore/ChangeLog >+++ b/Source/JavaScriptCore/ChangeLog >@@ -1,3 +1,37 @@ >+2020-03-22 Alexey Shvayka <shvaikalesh@gmail.com> >+ >+ Test262 failure with Named Capture Groups - using a reference before the group is defined >+ https://bugs.webkit.org/show_bug.cgi?id=178175 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * yarr/YarrParser.h: >+ (JSC::Yarr::Parser::CharacterClassParserDelegate::atomNamedBackReference): >+ (JSC::Yarr::Parser::Parser): >+ (JSC::Yarr::Parser::parseEscape): >+ (JSC::Yarr::Parser::parseParenthesesBegin): >+ (JSC::Yarr::Parser::parse): >+ (JSC::Yarr::Parser::handleIllegalReferences): >+ (JSC::Yarr::Parser::containsIllegalNumericReference): >+ (JSC::Yarr::Parser::containsIllegalNamedReference): >+ (JSC::Yarr::Parser::resetForReparsing): >+ (JSC::Yarr::parse): >+ (JSC::Yarr::Parser::CharacterClassParserDelegate::isValidNamedForwardReference): Deleted. >+ * yarr/YarrPattern.cpp: >+ (JSC::Yarr::YarrPatternConstructor::atomBackReference): >+ (JSC::Yarr::YarrPatternConstructor::atomNamedForwardReference): >+ (JSC::Yarr::YarrPattern::compile): >+ (JSC::Yarr::YarrPatternConstructor::saveUnmatchedNamedForwardReferences): Deleted. >+ (JSC::Yarr::YarrPatternConstructor::isValidNamedForwardReference): Deleted. >+ * yarr/YarrPattern.h: >+ (JSC::Yarr::YarrPattern::resetForReparsing): >+ (JSC::Yarr::YarrPattern::containsIllegalBackReference): Deleted. >+ (JSC::Yarr::YarrPattern::containsIllegalNamedForwardReferences): Deleted. >+ * yarr/YarrSyntaxChecker.cpp: >+ (JSC::Yarr::SyntaxChecker::atomNamedBackReference): >+ (JSC::Yarr::SyntaxChecker::resetForReparsing): >+ (JSC::Yarr::SyntaxChecker::isValidNamedForwardReference): Deleted. >+ > 2020-03-20 Ross Kirsling <ross.kirsling@sony.com> > > hasObservableSideEffectsForRegExpSplit doesn't check for @@match override >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index b4e18df11621196d844481f27663c66a5c8a37b4..c4127c324d05e991fcaa05643212a744f26fd8bc 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,15 @@ >+2020-03-22 Alexey Shvayka <shvaikalesh@gmail.com> >+ >+ Test262 failure with Named Capture Groups - using a reference before the group is defined >+ https://bugs.webkit.org/show_bug.cgi?id=178175 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * contentextensions/URLFilterParser.cpp: >+ (WebCore::ContentExtensions::PatternParser::resetForReparsing): >+ (WebCore::ContentExtensions::URLFilterParser::addPattern): >+ (WebCore::ContentExtensions::PatternParser::isValidNamedForwardReference): Deleted. >+ > 2020-03-22 Zalan Bujtas <zalan@apple.com> > > [LFC] Layout::Box::containingBlock should return a const ContainerBox& >diff --git a/Source/JavaScriptCore/yarr/YarrParser.h b/Source/JavaScriptCore/yarr/YarrParser.h >index d655091c2dd55b9874823dfdc0948e274ca237f3..d0669b876540efd55446f85d9893a448331c77f7 100644 >--- a/Source/JavaScriptCore/yarr/YarrParser.h >+++ b/Source/JavaScriptCore/yarr/YarrParser.h >@@ -1,5 +1,6 @@ > /* >- * Copyright (C) 2009-2019 Apple Inc. All rights reserved. >+ * Copyright (C) 2009-2020 Apple Inc. All rights reserved. >+ * Copyright (C) 2020 Alexey Shvayka <shvaikalesh@gmail.com>. > * > * Redistribution and use in source and binary forms, with or without > * modification, are permitted provided that the following conditions >@@ -10,17 +11,17 @@ > * notice, this list of conditions and the following disclaimer in the > * documentation and/or other materials provided with the distribution. > * >- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY >- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE >- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR >- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, >- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, >- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR >- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY >- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT >- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE >- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. > */ > > #pragma once >@@ -41,7 +42,7 @@ template<class Delegate, typename CharType> > class Parser { > private: > template<class FriendDelegate> >- friend ErrorCode parse(FriendDelegate&, const String& pattern, bool isUnicode, unsigned backReferenceLimit); >+ friend ErrorCode parse(FriendDelegate&, const String& pattern, bool isUnicode); > > /* > * CharacterClassParserDelegate: >@@ -200,7 +201,6 @@ private: > NO_RETURN_DUE_TO_ASSERT void assertionWordBoundary(bool) { RELEASE_ASSERT_NOT_REACHED(); } > NO_RETURN_DUE_TO_ASSERT void atomBackReference(unsigned) { RELEASE_ASSERT_NOT_REACHED(); } > NO_RETURN_DUE_TO_ASSERT void atomNamedBackReference(const String&) { RELEASE_ASSERT_NOT_REACHED(); } >- NO_RETURN_DUE_TO_ASSERT bool isValidNamedForwardReference(const String&) { RELEASE_ASSERT_NOT_REACHED(); } > NO_RETURN_DUE_TO_ASSERT void atomNamedForwardReference(const String&) { RELEASE_ASSERT_NOT_REACHED(); } > > private: >@@ -217,9 +217,8 @@ private: > UChar32 m_character; > }; > >- Parser(Delegate& delegate, const String& pattern, bool isUnicode, unsigned backReferenceLimit) >+ Parser(Delegate& delegate, const String& pattern, bool isUnicode) > : m_delegate(delegate) >- , m_backReferenceLimit(backReferenceLimit) > , m_data(pattern.characters<CharType>()) > , m_size(pattern.length()) > , m_isUnicode(isUnicode) >@@ -341,16 +340,12 @@ private: > > unsigned backReference = consumeNumber(); > if (backReference <= m_backReferenceLimit) { >+ m_maxSeenBackReference = std::max(m_maxSeenBackReference, backReference); > delegate.atomBackReference(backReference); > break; > } > > restoreState(state); >- >- if (m_isUnicode) { >- m_errorCode = ErrorCode::InvalidBackreference; >- return false; >- } > } > > // Not a backreference, and not octal. Just a number. >@@ -442,28 +437,27 @@ private: > case 'k': { > consume(); > ParseState state = saveState(); >- if (!atEndOfPattern() && !inCharacterClass) { >- if (consume() == '<') { >- auto groupName = tryConsumeGroupName(); >- if (groupName) { >- if (m_captureGroupNames.contains(groupName.value())) { >- delegate.atomNamedBackReference(groupName.value()); >- break; >- } >- >- if (delegate.isValidNamedForwardReference(groupName.value())) { >- delegate.atomNamedForwardReference(groupName.value()); >- break; >- } >+ if (!inCharacterClass && !atEndOfPattern() && consume() == '<') { >+ auto groupName = tryConsumeGroupName(); >+ if (groupName) { >+ if (m_captureGroupNames.contains(groupName.value())) { >+ delegate.atomNamedBackReference(groupName.value()); >+ break; > } >- if (m_isUnicode) { >- m_errorCode = ErrorCode::InvalidBackreference; >+ >+ if (m_isNamedForwardReferenceAllowed) { >+ m_forwardReferenceNames.add(groupName.value()); >+ delegate.atomNamedForwardReference(groupName.value()); > break; > } > } > } >+ > restoreState(state); >- delegate.atomPatternCharacter('k'); >+ if (!isIdentityEscapeAnError('k')) { >+ delegate.atomPatternCharacter('k'); >+ m_kIdentityEscapeSeen = true; >+ } > break; > } > >@@ -697,6 +691,9 @@ private: > } else > m_delegate.atomParenthesesSubpatternBegin(); > >+ if (type == ParenthesesType::Subpattern) >+ ++m_numSubpatterns; >+ > m_parenthesesStack.append(type); > } > >@@ -884,14 +881,89 @@ private: > ErrorCode parse() > { > if (m_size > MAX_PATTERN_SIZE) >- m_errorCode = ErrorCode::PatternTooLarge; >- else >- parseTokens(); >- ASSERT(atEndOfPattern() || hasError(m_errorCode)); >- >+ return ErrorCode::PatternTooLarge; >+ >+ parseTokens(); >+ >+ if (!hasError(m_errorCode)) { >+ ASSERT(atEndOfPattern()); >+ handleIllegalReferences(); >+ ASSERT(atEndOfPattern()); >+ } >+ > return m_errorCode; > } > >+ void handleIllegalReferences() >+ { >+ bool shouldReparse = false; >+ >+ if (containsIllegalNumericReference()) { >+ if (m_isUnicode) { >+ m_errorCode = ErrorCode::InvalidBackreference; >+ return; >+ } >+ >+ m_backReferenceLimit = m_numSubpatterns; >+ shouldReparse = true; >+ } >+ >+ if (m_kIdentityEscapeSeen && !m_captureGroupNames.isEmpty()) { >+ m_errorCode = ErrorCode::InvalidBackreference; >+ return; >+ } >+ >+ if (containsIllegalNamedReference()) { >+ if (m_isUnicode || !m_captureGroupNames.isEmpty()) { >+ m_errorCode = ErrorCode::InvalidBackreference; >+ return; >+ } >+ >+ m_isNamedForwardReferenceAllowed = false; >+ shouldReparse = true; >+ } >+ >+ if (shouldReparse) { >+ resetForReparsing(); >+ parseTokens(); >+ } >+ } >+ >+ bool containsIllegalNumericReference() >+ { >+ return m_maxSeenBackReference > m_numSubpatterns; >+ } >+ >+ bool containsIllegalNamedReference() >+ { >+ if (m_forwardReferenceNames.isEmpty()) >+ return false; >+ >+ if (m_captureGroupNames.isEmpty()) >+ return true; >+ >+ for (auto& entry : m_forwardReferenceNames) { >+ if (!m_captureGroupNames.contains(entry)) >+ return true; >+ } >+ >+ return false; >+ } >+ >+ void resetForReparsing() >+ { >+ ASSERT(!hasError(m_errorCode)); >+ >+ m_delegate.resetForReparsing(); >+ m_index = 0; >+ m_numSubpatterns = 0; >+ m_maxSeenBackReference = 0; >+ m_kIdentityEscapeSeen = false; >+ m_parenthesesStack.clear(); >+ m_captureGroupNames.clear(); >+ m_forwardReferenceNames.clear(); >+ } >+ > // Misc helper functions: > > typedef unsigned ParseState; >@@ -1156,14 +1228,19 @@ private: > enum class ParenthesesType : uint8_t { Subpattern, Assertion }; > > Delegate& m_delegate; >- unsigned m_backReferenceLimit; > ErrorCode m_errorCode { ErrorCode::NoError }; > const CharType* m_data; > unsigned m_size; > unsigned m_index { 0 }; >+ unsigned m_numSubpatterns { 0 }; >+ unsigned m_maxSeenBackReference { 0 }; >+ unsigned m_backReferenceLimit { quantifyInfinite }; > bool m_isUnicode; >+ bool m_isNamedForwardReferenceAllowed { true }; >+ bool m_kIdentityEscapeSeen { false }; > Vector<ParenthesesType, 16> m_parenthesesStack; > HashSet<String> m_captureGroupNames; >+ HashSet<String> m_forwardReferenceNames; > > // Derived by empirical testing of compile time in PCRE and WREC. > static constexpr unsigned MAX_PATTERN_SIZE = 1024 * 1024; >@@ -1195,7 +1272,6 @@ private: > * void atomParenthesesEnd(); > * void atomBackReference(unsigned subpatternId); > * void atomNamedBackReference(const String& subpatternName); >- * bool isValidNamedForwardReference(const String& subpatternName); > * void atomNamedForwardReference(const String& subpatternName); > * > * void quantifyAtom(unsigned min, unsigned max, bool greedy); >@@ -1232,11 +1308,11 @@ private: > */ > > template<class Delegate> >-ErrorCode parse(Delegate& delegate, const String& pattern, bool isUnicode, unsigned backReferenceLimit = quantifyInfinite) >+ErrorCode parse(Delegate& delegate, const String& pattern, bool isUnicode) > { > if (pattern.is8Bit()) >- return Parser<Delegate, LChar>(delegate, pattern, isUnicode, backReferenceLimit).parse(); >- return Parser<Delegate, UChar>(delegate, pattern, isUnicode, backReferenceLimit).parse(); >+ return Parser<Delegate, LChar>(delegate, pattern, isUnicode).parse(); >+ return Parser<Delegate, UChar>(delegate, pattern, isUnicode).parse(); > } > > } } // namespace JSC::Yarr >diff --git a/Source/JavaScriptCore/yarr/YarrPattern.cpp b/Source/JavaScriptCore/yarr/YarrPattern.cpp >index c508208562a7527a60f5c303d1ccdb17e1f06ad2..97fb86847c0a2392c0c5adc7f82321c3e652cb18 100644 >--- a/Source/JavaScriptCore/yarr/YarrPattern.cpp >+++ b/Source/JavaScriptCore/yarr/YarrPattern.cpp >@@ -462,16 +462,6 @@ public: > m_pattern.m_disjunctions.append(WTFMove(body)); > } > >- void saveUnmatchedNamedForwardReferences() >- { >- m_unmatchedNamedForwardReferences.shrink(0); >- >- for (auto& entry : m_pattern.m_namedForwardReferences) { >- if (!m_pattern.m_captureGroupNames.contains(entry)) >- m_unmatchedNamedForwardReferences.append(entry); >- } >- } >- > void assertionBOL() > { > if (!m_alternative->m_terms.size() && !m_invertParentheticalAssertion) { >@@ -657,7 +647,6 @@ public: > { > ASSERT(subpatternId); > m_pattern.m_containsBackreferences = true; >- m_pattern.m_maxBackReference = std::max(m_pattern.m_maxBackReference, subpatternId); > > if (subpatternId > m_pattern.m_numSubpatterns) { > m_alternative->m_terms.append(PatternTerm::ForwardReference()); >@@ -687,14 +676,8 @@ public: > atomBackReference(m_pattern.m_namedGroupToParenIndex.get(subpatternName)); > } > >- bool isValidNamedForwardReference(const String& subpatternName) >+ void atomNamedForwardReference(const String&) > { >- return !m_unmatchedNamedForwardReferences.contains(subpatternName); >- } >- >- void atomNamedForwardReference(const String& subpatternName) >- { >- m_pattern.m_namedForwardReferences.appendIfNotContains(subpatternName); > m_alternative->m_terms.append(PatternTerm::ForwardReference()); > } > >@@ -1130,7 +1113,6 @@ private: > YarrPattern& m_pattern; > PatternAlternative* m_alternative; > CharacterClassConstructor m_characterClassConstructor; >- Vector<String> m_unmatchedNamedForwardReferences; > void* m_stackLimit; > ErrorCode m_error { ErrorCode::NoError }; > bool m_invertCharacterClass; >@@ -1146,23 +1128,6 @@ ErrorCode YarrPattern::compile(const String& patternString, void* stackLimit) > if (hasError(error)) > return error; > } >- >- // If the pattern contains illegal backreferences reset & reparse. >- // Quoting Netscape's "What's new in JavaScript 1.2", >- // "Note: if the number of left parentheses is less than the number specified >- // in \#, the \# is taken as an octal escape as described in the next row." >- if (containsIllegalBackReference() || containsIllegalNamedForwardReferences()) { >- if (unicode()) >- return ErrorCode::InvalidBackreference; >- >- unsigned numSubpatterns = m_numSubpatterns; >- >- constructor.saveUnmatchedNamedForwardReferences(); >- constructor.resetForReparsing(); >- ErrorCode error = parse(constructor, patternString, unicode(), numSubpatterns); >- ASSERT_UNUSED(error, !hasError(error)); >- ASSERT(numSubpatterns == m_numSubpatterns); >- } > > constructor.checkForTerminalParentheses(); > constructor.optimizeDotStarWrappedExpressions(); >diff --git a/Source/JavaScriptCore/yarr/YarrPattern.h b/Source/JavaScriptCore/yarr/YarrPattern.h >index f6b22e57e8f0b09d5548ebb1641262f602c03b77..277f20b747a2ea90dadb6b11ba4cace08a184869 100644 >--- a/Source/JavaScriptCore/yarr/YarrPattern.h >+++ b/Source/JavaScriptCore/yarr/YarrPattern.h >@@ -391,7 +391,6 @@ struct YarrPattern { > void resetForReparsing() > { > m_numSubpatterns = 0; >- m_maxBackReference = 0; > m_initialStartValueFrameLocation = 0; > > m_containsBackreferences = false; >@@ -415,25 +414,6 @@ struct YarrPattern { > m_disjunctions.clear(); > m_userCharacterClasses.clear(); > m_captureGroupNames.shrink(0); >- m_namedForwardReferences.shrink(0); >- } >- >- bool containsIllegalBackReference() >- { >- return m_maxBackReference > m_numSubpatterns; >- } >- >- bool containsIllegalNamedForwardReferences() >- { >- if (m_namedForwardReferences.isEmpty()) >- return false; >- >- for (auto& entry : m_namedForwardReferences) { >- if (!m_captureGroupNames.contains(entry)) >- return true; >- } >- >- return false; > } > > bool containsUnsignedLengthPattern() >@@ -555,13 +535,11 @@ struct YarrPattern { > bool m_saveInitialStartValue : 1; > OptionSet<Flags> m_flags; > unsigned m_numSubpatterns { 0 }; >- unsigned m_maxBackReference { 0 }; > unsigned m_initialStartValueFrameLocation { 0 }; > PatternDisjunction* m_body; > Vector<std::unique_ptr<PatternDisjunction>, 4> m_disjunctions; > Vector<std::unique_ptr<CharacterClass>> m_userCharacterClasses; > Vector<String> m_captureGroupNames; >- Vector<String> m_namedForwardReferences; > HashMap<String, unsigned> m_namedGroupToParenIndex; > > private: >diff --git a/Source/JavaScriptCore/yarr/YarrSyntaxChecker.cpp b/Source/JavaScriptCore/yarr/YarrSyntaxChecker.cpp >index 86b0e67d146c2617646d8c63246cc6245b47b22d..3c7a5dc3482ff2e731dd7f82ef6cd6f05832400a 100644 >--- a/Source/JavaScriptCore/yarr/YarrSyntaxChecker.cpp >+++ b/Source/JavaScriptCore/yarr/YarrSyntaxChecker.cpp >@@ -49,10 +49,10 @@ public: > void atomParenthesesEnd() {} > void atomBackReference(unsigned) {} > void atomNamedBackReference(const String&) {} >- bool isValidNamedForwardReference(const String&) { return true; } > void atomNamedForwardReference(const String&) {} > void quantifyAtom(unsigned, unsigned, bool) {} > void disjunction() {} >+ void resetForReparsing() {} > }; > > ErrorCode checkSyntax(const String& pattern, const String& flags) >diff --git a/Source/WebCore/contentextensions/URLFilterParser.cpp b/Source/WebCore/contentextensions/URLFilterParser.cpp >index f0420d5158c734cf10504c7a7c4bc0f2424d831a..481cbf029aaf1ff01b3a24accf4d641aeb5020cc 100644 >--- a/Source/WebCore/contentextensions/URLFilterParser.cpp >+++ b/Source/WebCore/contentextensions/URLFilterParser.cpp >@@ -134,9 +134,9 @@ public: > fail(URLFilterParser::BackReference); > } > >- bool isValidNamedForwardReference(const String&) >+ void resetForReparsing() > { >- return false; >+ RELEASE_ASSERT_NOT_REACHED(); > } > > void atomNamedForwardReference(const String&) >@@ -358,7 +358,7 @@ URLFilterParser::ParseStatus URLFilterParser::addPattern(const String& pattern, > > ParseStatus status = Ok; > PatternParser patternParser(patternIsCaseSensitive); >- if (!JSC::Yarr::hasError(JSC::Yarr::parse(patternParser, pattern, false, 0))) >+ if (!JSC::Yarr::hasError(JSC::Yarr::parse(patternParser, pattern, false))) > patternParser.finalize(patternId, m_combinedURLFilters); > else > status = YarrError; >diff --git a/JSTests/ChangeLog b/JSTests/ChangeLog >index 84fedd8fb6d9f9d1c896df492906fbd3b54ca5ee..3606eb08a1e416ed33c6caf33dc2d61c007b38eb 100644 >--- a/JSTests/ChangeLog >+++ b/JSTests/ChangeLog >@@ -1,3 +1,12 @@ >+2020-03-22 Alexey Shvayka <shvaikalesh@gmail.com> >+ >+ Test262 failure with Named Capture Groups - using a reference before the group is defined >+ https://bugs.webkit.org/show_bug.cgi?id=178175 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * test262/expectations.yaml: Mark 44 test cases as passing. >+ > 2020-03-20 Ross Kirsling <ross.kirsling@sony.com> > > hasObservableSideEffectsForRegExpSplit doesn't check for @@match override >diff --git a/JSTests/test262/expectations.yaml b/JSTests/test262/expectations.yaml >index 5b2befa8cefbe376f2d3553680fe8868a95d9650..b322113ce93126e7247dabf720302da97ae0d477 100644 >--- a/JSTests/test262/expectations.yaml >+++ b/JSTests/test262/expectations.yaml >@@ -1525,9 +1525,6 @@ test/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T22.js: > test/built-ins/RegExp/prototype/unicode/cross-realm.js: > default: 'Test262Error: cross-realm RegExp.prototype Expected a TypeError to be thrown but no exception was thrown at all' > strict mode: 'Test262Error: cross-realm RegExp.prototype Expected a TypeError to be thrown but no exception was thrown at all' >-test/built-ins/RegExp/unicode_restricted_identity_escape_alpha.js: >- default: "Test262Error: IdentityEscape in AtomEscape: 'k' Expected a SyntaxError to be thrown but no exception was thrown at all" >- strict mode: "Test262Error: IdentityEscape in AtomEscape: 'k' Expected a SyntaxError to be thrown but no exception was thrown at all" > test/built-ins/RegExp/unicode_restricted_octal_escape.js: > default: 'Test262Error: RegExp("[\1]", "u"): Expected a SyntaxError to be thrown but no exception was thrown at all' > strict mode: 'Test262Error: RegExp("[\1]", "u"): Expected a SyntaxError to be thrown but no exception was thrown at all' >@@ -3048,69 +3045,6 @@ test/language/global-code/script-decl-func-err-non-extensible.js: > test/language/global-code/script-decl-var-err.js: > default: 'Test262Error: Expected a TypeError to be thrown but no exception was thrown at all' > strict mode: 'Test262Error: Expected a TypeError to be thrown but no exception was thrown at all' >-test/language/literals/regexp/named-groups/invalid-dangling-groupname-2-u.js: >- default: 'Test262: This statement should not be evaluated.' >- strict mode: 'Test262: This statement should not be evaluated.' >-test/language/literals/regexp/named-groups/invalid-dangling-groupname-2.js: >- default: 'Test262: This statement should not be evaluated.' >- strict mode: 'Test262: This statement should not be evaluated.' >-test/language/literals/regexp/named-groups/invalid-dangling-groupname-3-u.js: >- default: 'Test262: This statement should not be evaluated.' >- strict mode: 'Test262: This statement should not be evaluated.' >-test/language/literals/regexp/named-groups/invalid-dangling-groupname-3.js: >- default: 'Test262: This statement should not be evaluated.' >- strict mode: 'Test262: This statement should not be evaluated.' >-test/language/literals/regexp/named-groups/invalid-dangling-groupname-4-u.js: >- default: 'Test262: This statement should not be evaluated.' >- strict mode: 'Test262: This statement should not be evaluated.' >-test/language/literals/regexp/named-groups/invalid-dangling-groupname-4.js: >- default: 'Test262: This statement should not be evaluated.' >- strict mode: 'Test262: This statement should not be evaluated.' >-test/language/literals/regexp/named-groups/invalid-dangling-groupname-5.js: >- default: 'Test262: This statement should not be evaluated.' >- strict mode: 'Test262: This statement should not be evaluated.' >-test/language/literals/regexp/named-groups/invalid-dangling-groupname-u.js: >- default: 'Test262: This statement should not be evaluated.' >- strict mode: 'Test262: This statement should not be evaluated.' >-test/language/literals/regexp/named-groups/invalid-dangling-groupname-without-group-u.js: >- default: 'Test262: This statement should not be evaluated.' >- strict mode: 'Test262: This statement should not be evaluated.' >-test/language/literals/regexp/named-groups/invalid-dangling-groupname.js: >- default: 'Test262: This statement should not be evaluated.' >- strict mode: 'Test262: This statement should not be evaluated.' >-test/language/literals/regexp/named-groups/invalid-incomplete-groupname-2.js: >- default: 'Test262: This statement should not be evaluated.' >- strict mode: 'Test262: This statement should not be evaluated.' >-test/language/literals/regexp/named-groups/invalid-incomplete-groupname-3.js: >- default: 'Test262: This statement should not be evaluated.' >- strict mode: 'Test262: This statement should not be evaluated.' >-test/language/literals/regexp/named-groups/invalid-incomplete-groupname-4.js: >- default: 'Test262: This statement should not be evaluated.' >- strict mode: 'Test262: This statement should not be evaluated.' >-test/language/literals/regexp/named-groups/invalid-incomplete-groupname-5.js: >- default: 'Test262: This statement should not be evaluated.' >- strict mode: 'Test262: This statement should not be evaluated.' >-test/language/literals/regexp/named-groups/invalid-incomplete-groupname-6.js: >- default: 'Test262: This statement should not be evaluated.' >- strict mode: 'Test262: This statement should not be evaluated.' >-test/language/literals/regexp/named-groups/invalid-incomplete-groupname-u.js: >- default: 'Test262: This statement should not be evaluated.' >- strict mode: 'Test262: This statement should not be evaluated.' >-test/language/literals/regexp/named-groups/invalid-incomplete-groupname-without-group-3-u.js: >- default: 'Test262: This statement should not be evaluated.' >- strict mode: 'Test262: This statement should not be evaluated.' >-test/language/literals/regexp/named-groups/invalid-incomplete-groupname.js: >- default: 'Test262: This statement should not be evaluated.' >- strict mode: 'Test262: This statement should not be evaluated.' >-test/language/literals/regexp/u-dec-esc.js: >- default: 'Test262: This statement should not be evaluated.' >- strict mode: 'Test262: This statement should not be evaluated.' >-test/language/literals/regexp/u-invalid-legacy-octal-escape.js: >- default: 'Test262: This statement should not be evaluated.' >- strict mode: 'Test262: This statement should not be evaluated.' >-test/language/literals/regexp/u-invalid-oob-decimal-escape.js: >- default: 'Test262: This statement should not be evaluated.' >- strict mode: 'Test262: This statement should not be evaluated.' > test/language/module-code/eval-rqstd-once.js: > module: "SyntaxError: Unexpected identifier 'as'. Expected 'from' before exported module name." > test/language/module-code/eval-rqstd-order.js:
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 178175
:
394228
|
394256
|
394257
|
394400
|
394553
|
394555