Index: test/mjsunit/regress/regress-1530.js |
diff --git a/test/mjsunit/regress/regress-1530.js b/test/mjsunit/regress/regress-1530.js |
index db2114450e4133371bc9045e0c409f5154333d01..6545900d176b4a4cd31d6b756d5a03af9b39f88f 100644 |
--- a/test/mjsunit/regress/regress-1530.js |
+++ b/test/mjsunit/regress/regress-1530.js |
@@ -62,8 +62,21 @@ assertSame(new f().foo, 'other'); |
assertSame(Object.getPrototypeOf(new f()), z); |
assertSame(Object.getOwnPropertyDescriptor(f, 'prototype').value, z); |
+// Verify that 'name' is (initially) non-writable, but configurable. |
+var fname = f.name; |
+f.name = z; |
+assertSame(fname, f.name); |
+Object.defineProperty(f, 'name', {value: 'other'}); |
+assertSame('other', f.name); |
+ |
+// Verify same for 'length', another configurable and non-writable property. |
+assertEquals(0, Object.getOwnPropertyDescriptor(f, 'length').value); |
+assertDoesNotThrow(function () { Object.defineProperty(f, 'length', {writable: true}); }); |
+f.length = 3; |
+assertEquals(3, Object.getOwnPropertyDescriptor(f, 'length').value); |
+f.length = "untyped"; |
+assertSame("untyped", Object.getOwnPropertyDescriptor(f, 'length').value); |
+ |
// Verify that non-writability of other properties is respected. |
-assertThrows("Object.defineProperty(f, 'name', { value: {} })"); |
-assertThrows("Object.defineProperty(f, 'length', { value: {} })"); |
assertThrows("Object.defineProperty(f, 'caller', { value: {} })"); |
assertThrows("Object.defineProperty(f, 'arguments', { value: {} })"); |