Diff
Modified: trunk/LayoutTests/ChangeLog (97672 => 97673)
--- trunk/LayoutTests/ChangeLog 2011-10-17 23:42:42 UTC (rev 97672)
+++ trunk/LayoutTests/ChangeLog 2011-10-17 23:49:25 UTC (rev 97673)
@@ -1,3 +1,18 @@
+2011-10-17 Gavin Barraclough <barraclo...@apple.com>
+
+ Incorrect behavior from String match/search & undefined pattern
+ https://bugs.webkit.org/show_bug.cgi?id=70286
+
+ Reviewed by Sam weinig.
+
+ * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T4-expected.txt:
+ * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T6-expected.txt:
+ * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T7-expected.txt:
+ * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T8-expected.txt:
+ * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T9-expected.txt:
+ * sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T4-expected.txt:
+ - Check in passing results.
+
2011-10-17 Chris Fleizach <cfleiz...@apple.com>
AX: buttons of number type <input> controls are not fully accessible
Modified: trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T4-expected.txt (97672 => 97673)
--- trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T4-expected.txt 2011-10-17 23:42:42 UTC (rev 97672)
+++ trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T4-expected.txt 2011-10-17 23:49:25 UTC (rev 97673)
@@ -1,6 +1,6 @@
S15.5.4.10_A1_T4
-FAIL TypeError: 'null' is not an object (evaluating '__matched.length')
+PASS
TEST COMPLETE
Modified: trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T6-expected.txt (97672 => 97673)
--- trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T6-expected.txt 2011-10-17 23:42:42 UTC (rev 97672)
+++ trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T6-expected.txt 2011-10-17 23:49:25 UTC (rev 97673)
@@ -1,6 +1,6 @@
S15.5.4.10_A1_T6
-FAIL SputnikError: #4.0: __matched = new String("undefined").match(x); __expected = RegExp(x).exec("undefined"); __matched[0]===__expected[0]. Actual: undefined
+PASS
TEST COMPLETE
Modified: trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T7-expected.txt (97672 => 97673)
--- trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T7-expected.txt 2011-10-17 23:42:42 UTC (rev 97672)
+++ trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T7-expected.txt 2011-10-17 23:49:25 UTC (rev 97673)
@@ -1,6 +1,6 @@
S15.5.4.10_A1_T7
-FAIL SputnikError: #4.0: __matched = String("undefined").match(undefined); __expected = RegExp(undefined).exec("undefined"); __matched[0]===__expected[0]. Actual: undefined
+PASS
TEST COMPLETE
Modified: trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T8-expected.txt (97672 => 97673)
--- trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T8-expected.txt 2011-10-17 23:42:42 UTC (rev 97672)
+++ trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T8-expected.txt 2011-10-17 23:49:25 UTC (rev 97673)
@@ -1,6 +1,6 @@
S15.5.4.10_A1_T8
-FAIL SputnikError: #4.0: __obj = {toString:function(){}}; __matched = String(__obj).match(void 0); __expected = RegExp(void 0).exec("undefined"); __matched[0]===__expected[0]. Actual: undefined
+PASS
TEST COMPLETE
Modified: trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T9-expected.txt (97672 => 97673)
--- trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T9-expected.txt 2011-10-17 23:42:42 UTC (rev 97672)
+++ trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T9-expected.txt 2011-10-17 23:49:25 UTC (rev 97673)
@@ -1,6 +1,6 @@
S15.5.4.10_A1_T9
-FAIL SputnikError: #4.0: __obj = {valueOf:function(){}, toString:void 0}; __matched = new String(__obj).match(function(){}()); __expected = RegExp(undefined).exec("undefined"); __matched[0]===__expected[0]. Actual: undefined
+PASS
TEST COMPLETE
Modified: trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T4-expected.txt (97672 => 97673)
--- trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T4-expected.txt 2011-10-17 23:42:42 UTC (rev 97672)
+++ trunk/LayoutTests/sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.12_String.prototype.search/S15.5.4.12_A1_T4-expected.txt 2011-10-17 23:49:25 UTC (rev 97673)
@@ -1,6 +1,6 @@
S15.5.4.12_A1_T4
-FAIL SputnikError: #1: "".search() === 0. Actual: -1
+PASS
TEST COMPLETE
Modified: trunk/Source/_javascript_Core/ChangeLog (97672 => 97673)
--- trunk/Source/_javascript_Core/ChangeLog 2011-10-17 23:42:42 UTC (rev 97672)
+++ trunk/Source/_javascript_Core/ChangeLog 2011-10-17 23:49:25 UTC (rev 97673)
@@ -1,5 +1,18 @@
2011-10-17 Gavin Barraclough <barraclo...@apple.com>
+ Incorrect behavior from String match/search & undefined pattern
+ https://bugs.webkit.org/show_bug.cgi?id=70286
+
+ Reviewed by Sam weinig.
+
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncMatch):
+ - In case of undefined, pattern is "".
+ (JSC::stringProtoFuncSearch):
+ - In case of undefined, pattern is "".
+
+2011-10-17 Gavin Barraclough <barraclo...@apple.com>
+
https://bugs.webkit.org/show_bug.cgi?id=70207
After deleting __defineSetter__, it is absent but appears in name list
Modified: trunk/Source/_javascript_Core/runtime/StringPrototype.cpp (97672 => 97673)
--- trunk/Source/_javascript_Core/runtime/StringPrototype.cpp 2011-10-17 23:42:42 UTC (rev 97672)
+++ trunk/Source/_javascript_Core/runtime/StringPrototype.cpp 2011-10-17 23:49:25 UTC (rev 97673)
@@ -705,8 +705,9 @@
* ECMA 15.5.4.12 String.prototype.search (regexp)
* If regexp is not an object whose [[Class]] property is "RegExp", it is
* replaced with the result of the _expression_ new RegExp(regexp).
+ * Per ECMA 15.10.4.1, if a0 is undefined substitute the empty string.
*/
- reg = RegExp::create(exec->globalData(), a0.toString(exec), NoFlags);
+ reg = RegExp::create(exec->globalData(), a0.isUndefined() ? UString("") : a0.toString(exec), NoFlags);
}
RegExpConstructor* regExpConstructor = exec->lexicalGlobalObject()->regExpConstructor();
int pos;
@@ -754,8 +755,9 @@
* ECMA 15.5.4.12 String.prototype.search (regexp)
* If regexp is not an object whose [[Class]] property is "RegExp", it is
* replaced with the result of the _expression_ new RegExp(regexp).
+ * Per ECMA 15.10.4.1, if a0 is undefined substitute the empty string.
*/
- reg = RegExp::create(exec->globalData(), a0.toString(exec), NoFlags);
+ reg = RegExp::create(exec->globalData(), a0.isUndefined() ? UString("") : a0.toString(exec), NoFlags);
}
RegExpConstructor* regExpConstructor = exec->lexicalGlobalObject()->regExpConstructor();
int pos;