Index: test/mjsunit/regress/regress-1170.js |
diff --git a/test/mjsunit/regress/regress-1170.js b/test/mjsunit/regress/regress-1170.js |
index 66ed9f29e23b48c06f85a006c553bb84066543db..eb3f3c71b72eb090ff2742026940d6c79df74de4 100644 |
--- a/test/mjsunit/regress/regress-1170.js |
+++ b/test/mjsunit/regress/regress-1170.js |
@@ -27,46 +27,70 @@ |
var setter_value = 0; |
-__proto__.__defineSetter__("a", function(v) { setter_value = v; }); |
+this.__defineSetter__("a", function(v) { setter_value = v; }); |
eval("var a = 1"); |
assertEquals(1, setter_value); |
-assertFalse(this.hasOwnProperty("a")); |
+assertFalse("value" in Object.getOwnPropertyDescriptor(this, "a")); |
eval("with({}) { eval('var a = 2') }"); |
assertEquals(2, setter_value); |
-assertFalse(this.hasOwnProperty("a")); |
+assertFalse("value" in Object.getOwnPropertyDescriptor(this, "a")); |
// Function declarations are treated specially to match Safari. We do |
// not call setters for them. |
+this.__defineSetter__("a", function(v) { assertUnreachable(); }); |
eval("function a() {}"); |
-assertTrue(this.hasOwnProperty("a")); |
+assertTrue("value" in Object.getOwnPropertyDescriptor(this, "a")); |
-__proto__.__defineSetter__("b", function(v) { assertUnreachable(); }); |
-var exception = false; |
+this.__defineSetter__("b", function(v) { setter_value = v; }); |
try { |
- eval("const b = 23"); |
+ eval("const b = 3"); |
} catch(e) { |
- exception = true; |
- assertTrue(/TypeError/.test(e)); |
+ assertUnreachable(); |
} |
-assertFalse(exception); |
+assertEquals(3, setter_value); |
-exception = false; |
try { |
eval("with({}) { eval('const b = 23') }"); |
} catch(e) { |
- exception = true; |
- assertTrue(/TypeError/.test(e)); |
+ assertInstanceof(e, TypeError); |
} |
-assertTrue(exception); |
-__proto__.__defineSetter__("c", function(v) { throw 42; }); |
-exception = false; |
+this.__defineSetter__("c", function(v) { throw 42; }); |
try { |
eval("var c = 1"); |
+ assertUnreachable(); |
} catch(e) { |
- exception = true; |
assertEquals(42, e); |
- assertFalse(this.hasOwnProperty("c")); |
+ assertFalse("value" in Object.getOwnPropertyDescriptor(this, "c")); |
+} |
+ |
+ |
+ |
+ |
+__proto__.__defineSetter__("aa", function(v) { assertUnreachable(); }); |
+eval("var aa = 1"); |
+assertTrue(this.hasOwnProperty("aa")); |
+ |
+__proto__.__defineSetter__("bb", function(v) { assertUnreachable(); }); |
+eval("with({}) { eval('var bb = 2') }"); |
+assertTrue(this.hasOwnProperty("bb")); |
+ |
+// Function declarations are treated specially to match Safari. We do |
+// not call setters for them. |
+__proto__.__defineSetter__("cc", function(v) { assertUnreachable(); }); |
+eval("function cc() {}"); |
+assertTrue(this.hasOwnProperty("cc")); |
+ |
+__proto__.__defineSetter__("dd", function(v) { assertUnreachable(); }); |
+try { |
+ eval("const dd = 23"); |
+} catch(e) { |
+ assertUnreachable(); |
+} |
+ |
+try { |
+ eval("with({}) { eval('const dd = 23') }"); |
+} catch(e) { |
+ assertInstanceof(e, TypeError); |
} |
-assertTrue(exception); |