https://bugs.webkit.org/show_bug.cgi?id=75452
authorbarraclough@apple.com <barraclough@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 3 Jan 2012 06:56:22 +0000 (06:56 +0000)
committerbarraclough@apple.com <barraclough@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 3 Jan 2012 06:56:22 +0000 (06:56 +0000)
If argument to Error is undefined, message is not set

Reviewed by Sam Weinig.

Source/JavaScriptCore:

Per section 15.11.1.1 of the spec.

* runtime/ErrorInstance.h:
(JSC::ErrorInstance::create):
(JSC::ErrorInstance::finishCreation):

LayoutTests:

Added test case.

* fast/js/native-error-prototype-expected.txt:
* fast/js/script-tests/native-error-prototype.js:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@103924 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/fast/js/native-error-prototype-expected.txt
LayoutTests/fast/js/script-tests/native-error-prototype.js
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/runtime/ErrorInstance.h

index cf71aa03c72d1cbb4a39d684a8b0215a71063839..f6c357862ba5a75644051366c20870ec7700d077 100644 (file)
@@ -1,3 +1,15 @@
+2012-01-02  Gavin Barraclough  <barraclough@apple.com>
+
+        https://bugs.webkit.org/show_bug.cgi?id=75452
+        If argument to Error is undefined, message is not set
+
+        Reviewed by Sam Weinig.
+
+        Added test case.
+
+        * fast/js/native-error-prototype-expected.txt:
+        * fast/js/script-tests/native-error-prototype.js:
+
 2012-01-02  Gavin Barraclough  <barraclough@apple.com>
 
         ES5 prohibits parseInt from supporting octal
index 97d45a80536a1cebc19aceab039f94c35556cd98..8696865c8d0fff85be977edfe568811585ff0806 100644 (file)
@@ -1,4 +1,4 @@
-This is a test case for bug 55346 and bug 70889.
+This is a test case for bugs 55346, 70889, and 75452.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
@@ -6,6 +6,8 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 PASS ({}).toString.call(Error.prototype) is "[object Error]"
 PASS ({}).toString.call(RangeError.prototype) is "[object Error]"
 PASS err.toString() is "message"
+PASS err.hasOwnProperty('message') is false
+PASS err.hasOwnProperty('message') is false
 PASS successfullyParsed is true
 
 TEST COMPLETE
index fb004765358389c6d5a87178adc2dfe7d70e4b6b..4da02ec580e85ac709e010fc981df8d872be18b6 100644 (file)
@@ -1,5 +1,5 @@
 description(
-'This is a test case for <a href="https://bugs.webkit.org/show_bug.cgi?id=55346">bug 55346</a> and <a href="https://bugs.webkit.org/show_bug.cgi?id=70889">bug 70889</a>.'
+'This is a test case for bugs <a href="https://bugs.webkit.org/show_bug.cgi?id=55346">55346</a>, <a href="https://bugs.webkit.org/show_bug.cgi?id=70889">70889</a>, and <a href="https://bugs.webkit.org/show_bug.cgi?id=75452">75452</a>.'
 );
 
 shouldBe("({}).toString.call(Error.prototype)", '"[object Error]"');
@@ -8,3 +8,9 @@ shouldBe("({}).toString.call(RangeError.prototype)", '"[object Error]"');
 var err = new Error("message");
 err.name = "";
 shouldBe("err.toString()", '"message"');
+
+var err = new Error();
+shouldBeFalse("err.hasOwnProperty('message')");
+
+var err = new Error(undefined);
+shouldBeFalse("err.hasOwnProperty('message')");
index 848d206d3304a17fb3dc60e847291b5115ed5954..bbd69ef76d2f1dbd68a2d1f9e608458ae8240bb4 100644 (file)
@@ -1,3 +1,16 @@
+2012-01-02  Gavin Barraclough  <barraclough@apple.com>
+
+        https://bugs.webkit.org/show_bug.cgi?id=75452
+        If argument to Error is undefined, message is not set
+
+        Reviewed by Sam Weinig.
+
+        Per section 15.11.1.1 of the spec.
+
+        * runtime/ErrorInstance.h:
+        (JSC::ErrorInstance::create):
+        (JSC::ErrorInstance::finishCreation):
+
 2012-01-02  Gavin Barraclough  <barraclough@apple.com>
 
         ES5 prohibits parseInt from supporting octal
index 44d4debc585ab50406f59bb0b1dff090f3c7b5e5..888bfe8566b1d92c0d78a0cb788ebb50edad8844 100644 (file)
@@ -46,7 +46,7 @@ namespace JSC {
         {
             if (message.isUndefined()) {
                 ErrorInstance* instance = new (NotNull, allocateCell<ErrorInstance>(*exec->heap())) ErrorInstance(exec->globalData(), structure);
-                instance->finishCreation(exec->globalData(), UString("", 0));
+                instance->finishCreation(exec->globalData(), UString());
                 return instance;
             }
             return create(exec->globalData(), structure, message.toString(exec));
@@ -63,7 +63,8 @@ namespace JSC {
         {
             Base::finishCreation(globalData);
             ASSERT(inherits(&s_info));
-            putDirect(globalData, globalData.propertyNames->message, jsString(&globalData, message), DontEnum);
+            if (!message.isNull())
+                putDirect(globalData, globalData.propertyNames->message, jsString(&globalData, message), DontEnum);
         }
 
         bool m_appendSourceToMessage;