Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1533)

Unified Diff: test/mjsunit/harmony/classes-experimental.js

Issue 867153003: new classes: special construct stub for derived classs and TDZ for `this`. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: CHECK_OK fixed Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/x64/full-codegen-x64.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/harmony/classes-experimental.js
diff --git a/test/mjsunit/harmony/classes-experimental.js b/test/mjsunit/harmony/classes-experimental.js
index 73944b182c607d82801e224c44d9e4c8bb288cf6..5a3c3e5558319941e0098dabdc712ebfd1be0e93 100644
--- a/test/mjsunit/harmony/classes-experimental.js
+++ b/test/mjsunit/harmony/classes-experimental.js
@@ -7,29 +7,51 @@
'use strict';
class Base {
- constructor() {
+ constructor(a, b) {
let o = new Object();
- o.prp = 1;
+ o.prp = a + b;
return o;
}
}
class Subclass extends Base {
- constructor() {
+ constructor(a, b) {
+ var exn;
try {
this.prp1 = 3;
} catch (e) {
- // TODO(dslomov): actually test the exception once TDZ is implemented.
+ exn = e;
}
- super();
- assertSame(1, this.prp);
+ assertTrue(exn instanceof ReferenceError);
+ super(a, b);
+ assertSame(a + b, this.prp);
assertSame(undefined, this.prp1);
assertFalse(this.hasOwnProperty("prp1"));
return this;
}
}
-let s = new Subclass();
+let b = new Base(1, 2);
+assertSame(3, b.prp);
+
+let s = new Subclass(2, -1);
assertSame(1, s.prp);
assertSame(undefined, s.prp1);
assertFalse(s.hasOwnProperty("prp1"));
+
+class Subclass2 extends Base {
+ constructor() {
+ super(1,2);
+
+ let called = false;
+ function tmp() { called = true; return 3; }
+ var exn = null;
+ try {
+ super(tmp(),4);
+ } catch(e) { exn = e; }
+ assertTrue(exn !== null);
+ assertFalse(called);
+ }
+}
+
+new Subclass2();
« no previous file with comments | « src/x64/full-codegen-x64.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698