Revision: 24292
Author:   [email protected]
Date:     Mon Sep 29 15:17:03 2014 UTC
Log:      Clean-up tests for super getters and setters

[email protected]

Review URL: https://codereview.chromium.org/617443003
https://code.google.com/p/v8/source/detail?r=24292

Modified:
 /branches/bleeding_edge/src/full-codegen.h
 /branches/bleeding_edge/test/mjsunit/harmony/super.js

=======================================
--- /branches/bleeding_edge/src/full-codegen.h  Mon Sep 29 13:56:32 2014 UTC
+++ /branches/bleeding_edge/src/full-codegen.h  Mon Sep 29 15:17:03 2014 UTC
@@ -521,7 +521,7 @@
   // The receiver is left on the stack by the IC.
   void EmitNamedPropertyLoad(Property* expr);

-  // Load a value from super.named prroperty.
+  // Load a value from super.named property.
   // Expect receiver ('this' value) and home_object on the stack.
   void EmitNamedSuperPropertyLoad(Property* expr);

=======================================
--- /branches/bleeding_edge/test/mjsunit/harmony/super.js Mon Sep 29 13:56:32 2014 UTC +++ /branches/bleeding_edge/test/mjsunit/harmony/super.js Mon Sep 29 15:17:03 2014 UTC
@@ -120,17 +120,17 @@


 (function TestAccessorsOnPrimitives() {
-  var getCalled = false;
-  var setCalled = false;
+  var getCalled = 0;
+  var setCalled = 0;
   function Base() {}
   Base.prototype = {
     constructor: Base,
     get x() {
-      getCalled = true;
+      getCalled++;
       return 1;
     },
     set x(v) {
-      setCalled = true;
+      setCalled++;
       return v;
     },
   };
@@ -141,46 +141,41 @@
     constructor: Derived,
   };
   Derived.prototype.testSetter = function() {
-    assertTrue(42 == this);
-    getCalled = false;
-    setCalled = false;
+    setCalled = 0;
+    getCalled = 0;
+    assertEquals('object', typeof this);
+    assertTrue(this instanceof Number)
+    assertEquals(42, this.valueOf());
     assertEquals(1, super.x);
-    assertTrue(getCalled);
-    assertFalse(setCalled);
+    assertEquals(1, getCalled);
+    assertEquals(0, setCalled);

-    setCalled = false;
-    getCalled = false;
     assertEquals(5, super.x = 5);
-    assertFalse(getCalled);
-    assertTrue(setCalled);
+    assertEquals(1, getCalled);
+    assertEquals(1, setCalled);

-    getCalled = false;
-    setCalled = false;
     assertEquals(6, super.x += 5);
-    assertTrue(getCalled);
-    assertTrue(setCalled);
+    assertEquals(2, getCalled);
+    assertEquals(2, setCalled);
   }.toMethod(Derived.prototype);

   Derived.prototype.testSetterStrict = function() {
     'use strict';
-    assertTrue(42 == this);
-    getCalled = false;
-    setCalled = false;
+    getCalled = 0;
+    setCalled = 0;
+    assertTrue(42 === this);
+
     assertEquals(1, super.x);
-    assertTrue(getCalled);
-    assertFalse(setCalled);
+    assertEquals(1, getCalled);
+    assertEquals(0, setCalled);

-    setCalled = false;
-    getCalled = false;
     assertEquals(5, super.x = 5);
-    assertFalse(getCalled);
-    assertTrue(setCalled);
+    assertEquals(1, getCalled);
+    assertEquals(1, setCalled);

-    getCalled = false;
-    setCalled = false;
     assertEquals(6, super.x += 5);
-    assertTrue(getCalled);
-    assertTrue(setCalled);
+    assertEquals(2, getCalled);
+    assertEquals(2, setCalled);
   }.toMethod(Derived.prototype);

   Derived.prototype.testSetter.call(42);
@@ -191,13 +186,14 @@

   function f() {
     'use strict';
-    assertTrue(42 == this);
+    assertTrue(42 === this);
     assertEquals(String.prototype.toString, super.toString);
-    var except = false;
+    var ex;
     try {
       super.toString();
-    } catch(e) { except = true; }
-    assertTrue(except);
+    } catch(e) { ex = e; }
+
+    assertTrue(ex instanceof TypeError);
   }
   f.toMethod(DerivedFromString.prototype).call(42);
 }());
@@ -213,7 +209,7 @@
   }.toMethod(Derived.prototype);

   Derived.prototype.mStrict = function () {
-    "use strict";
+    'use strict';
     super.x = 10;
   }.toMethod(Derived.prototype);
   var d = new Derived();
@@ -276,7 +272,7 @@
 (function TestUnsupportedCases() {
   function f1(x) { return super[x]; }
   function f2(x) { super[x] = 5; }
-  var o = {}
+  var o = {};
   assertThrows(function(){f1.toMethod(o)(x);}, ReferenceError);
   assertThrows(function(){f2.toMethod(o)(x);}, ReferenceError);
 }());

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to