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.