Index: test/mjsunit/harmony/classes-experimental.js |
diff --git a/test/mjsunit/harmony/classes-experimental.js b/test/mjsunit/harmony/classes-experimental.js |
deleted file mode 100644 |
index e7ebbda735a30cccd2d2d2606424aa26e03714fa..0000000000000000000000000000000000000000 |
--- a/test/mjsunit/harmony/classes-experimental.js |
+++ /dev/null |
@@ -1,339 +0,0 @@ |
-// Copyright 2014 the V8 project authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
-// |
-// Flags: --harmony-classes |
- |
-'use strict'; |
-(function TestArgumentsAccess() { |
- class Base { |
- constructor() { |
- assertEquals(2, arguments.length); |
- assertEquals(1, arguments[0]); |
- assertEquals(2, arguments[1]); |
- } |
- } |
- |
- let b = new Base(1,2); |
- |
- class Subclass extends Base { |
- constructor() { |
- assertEquals(2, arguments.length); |
- assertEquals(3, arguments[0]); |
- assertEquals(4, arguments[1]); |
- super(1,2); |
- } |
- } |
- |
- let s = new Subclass(3,4); |
- assertEquals(0, Subclass.length); |
- |
- class Subclass2 extends Base { |
- constructor(x,y) { |
- assertEquals(2, arguments.length); |
- assertEquals(3, arguments[0]); |
- assertEquals(4, arguments[1]); |
- super(1,2); |
- } |
- } |
- |
- let s2 = new Subclass2(3,4); |
- assertEquals(2, Subclass2.length); |
-}()); |
- |
-(function TestThisAccessRestriction() { |
- class Base { |
- constructor(a, b) { |
- let o = new Object(); |
- o.prp = a + b; |
- return o; |
- } |
- } |
- |
- class Subclass extends Base { |
- constructor(a, b) { |
- var exn; |
- try { |
- this.prp1 = 3; |
- } catch (e) { |
- exn = e; |
- } |
- assertTrue(exn instanceof ReferenceError); |
- super(a, b); |
- assertSame(a + b, this.prp); |
- assertSame(undefined, this.prp1); |
- assertFalse(this.hasOwnProperty("prp1")); |
- return this; |
- } |
- } |
- |
- 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(x) { |
- super(1,2); |
- |
- if (x < 0) return; |
- |
- let called = false; |
- function tmp() { called = true; return 3; } |
- var exn = null; |
- try { |
- super(tmp(),4); |
- } catch (e) { exn = e; } |
- assertTrue(exn instanceof ReferenceError); |
- assertTrue(called); |
- } |
- } |
- |
- var s2 = new Subclass2(1); |
- assertSame(3, s2.prp); |
- |
- var s3 = new Subclass2(-1); |
- assertSame(3, s3.prp); |
- |
- assertThrows(function() { Subclass.call(new Object(), 1, 2); }, TypeError); |
- assertThrows(function() { Base.call(new Object(), 1, 2); }, TypeError); |
- |
- class BadSubclass extends Base { |
- constructor() {} |
- } |
- |
- assertThrows(function() { new BadSubclass(); }, ReferenceError); |
-}()); |
- |
-(function TestThisCheckOrdering() { |
- let baseCalled = 0; |
- class Base { |
- constructor() { baseCalled++ } |
- } |
- |
- let fCalled = 0; |
- function f() { fCalled++; return 3; } |
- |
- class Subclass1 extends Base { |
- constructor() { |
- baseCalled = 0; |
- super(); |
- assertEquals(1, baseCalled); |
- let obj = this; |
- |
- let exn = null; |
- baseCalled = 0; |
- fCalled = 0; |
- try { |
- super(f()); |
- } catch (e) { exn = e; } |
- assertTrue(exn instanceof ReferenceError); |
- assertEquals(1, fCalled); |
- assertEquals(1, baseCalled); |
- assertSame(obj, this); |
- |
- exn = null; |
- baseCalled = 0; |
- fCalled = 0; |
- try { |
- super(super(), f()); |
- } catch (e) { exn = e; } |
- assertTrue(exn instanceof ReferenceError); |
- assertEquals(0, fCalled); |
- assertEquals(1, baseCalled); |
- assertSame(obj, this); |
- |
- exn = null; |
- baseCalled = 0; |
- fCalled = 0; |
- try { |
- super(f(), super()); |
- } catch (e) { exn = e; } |
- assertTrue(exn instanceof ReferenceError); |
- assertEquals(1, fCalled); |
- assertEquals(1, baseCalled); |
- assertSame(obj, this); |
- } |
- } |
- |
- new Subclass1(); |
-}()); |
- |
- |
-(function TestPrototypeWiring() { |
- class Base { |
- constructor(x) { |
- this.foobar = x; |
- } |
- } |
- |
- class Subclass extends Base { |
- constructor(x) { |
- super(x); |
- } |
- } |
- |
- let s = new Subclass(1); |
- assertSame(1, s.foobar); |
- assertSame(Subclass.prototype, s.__proto__); |
- |
- let s1 = new Subclass(1, 2); |
- assertSame(1, s1.foobar); |
- assertTrue(s1.__proto__ === Subclass.prototype); |
- |
- let s2 = new Subclass(); |
- assertSame(undefined, s2.foobar); |
- assertSame(Subclass.prototype, s2.__proto__); |
- assertThrows(function() { Subclass(1); }, TypeError); |
- assertThrows(function() { Subclass(1,2,3,4); }, TypeError); |
- |
- class Subclass2 extends Subclass { |
- constructor() { |
- super(5, 6, 7); |
- } |
- } |
- |
- let ss2 = new Subclass2(); |
- assertSame(5, ss2.foobar); |
- assertSame(Subclass2.prototype, ss2.__proto__); |
- |
- class Subclass3 extends Base { |
- constructor(x,y) { |
- super(x + y); |
- } |
- } |
- |
- let ss3 = new Subclass3(27,42-27); |
- assertSame(42, ss3.foobar); |
- assertSame(Subclass3.prototype, ss3.__proto__); |
-}()); |
- |
-(function TestSublclassingBuiltins() { |
- class ExtendedUint8Array extends Uint8Array { |
- constructor() { |
- super(10); |
- this[0] = 255; |
- this[1] = 0xFFA; |
- } |
- } |
- |
- var eua = new ExtendedUint8Array(); |
- assertEquals(10, eua.length); |
- assertEquals(10, eua.byteLength); |
- assertEquals(0xFF, eua[0]); |
- assertEquals(0xFA, eua[1]); |
- assertSame(ExtendedUint8Array.prototype, eua.__proto__); |
- assertEquals("[object Uint8Array]", Object.prototype.toString.call(eua)); |
-}()); |
- |
-(function TestSubclassingNull() { |
- let N = null; |
- |
- class Foo extends N { |
- constructor(x,y) { |
- assertSame(1, x); |
- assertSame(2, y); |
- return {}; |
- } |
- } |
- |
- new Foo(1,2); |
-}()); |
- |
-(function TestSubclassBinding() { |
- class Base { |
- constructor(x, y) { |
- this.x = x; |
- this.y = y; |
- } |
- } |
- |
- let obj = {}; |
- class Subclass extends Base { |
- constructor(x,y) { |
- super(x,y); |
- assertTrue(this !== obj); |
- } |
- } |
- |
- let f = Subclass.bind(obj); |
- assertThrows(function () { f(1, 2); }, TypeError); |
- let s = new f(1, 2); |
- assertSame(1, s.x); |
- assertSame(2, s.y); |
- assertSame(Subclass.prototype, s.__proto__); |
- |
- let s1 = new f(1); |
- assertSame(1, s1.x); |
- assertSame(undefined, s1.y); |
- assertSame(Subclass.prototype, s1.__proto__); |
- |
- let g = Subclass.bind(obj, 1); |
- assertThrows(function () { g(8); }, TypeError); |
- let s2 = new g(8); |
- assertSame(1, s2.x); |
- assertSame(8, s2.y); |
- assertSame(Subclass.prototype, s.__proto__); |
-}()); |
- |
- |
-(function TestDefaultConstructor() { |
- class Base1 { } |
- assertThrows(function() { Base1(); }, TypeError); |
- |
- class Subclass1 extends Base1 { } |
- |
- assertThrows(function() { Subclass1(); }, TypeError); |
- |
- let s1 = new Subclass1(); |
- assertSame(s1.__proto__, Subclass1.prototype); |
- |
- class Base2 { |
- constructor(x, y) { |
- this.x = x; |
- this.y = y; |
- } |
- } |
- |
- class Subclass2 extends Base2 {}; |
- |
- let s2 = new Subclass2(1, 2); |
- |
- assertSame(s2.__proto__, Subclass2.prototype); |
- assertSame(1, s2.x); |
- assertSame(2, s2.y); |
- |
- let f = Subclass2.bind({}, 3, 4); |
- let s2prime = new f(); |
- assertSame(s2prime.__proto__, Subclass2.prototype); |
- assertSame(3, s2prime.x); |
- assertSame(4, s2prime.y); |
- |
- let obj = {}; |
- class Base3 { |
- constructor() { |
- return obj; |
- } |
- } |
- |
- class Subclass3 extends Base3 {}; |
- |
- let s3 = new Subclass3(); |
- assertSame(obj, s3); |
- |
- class ExtendedUint8Array extends Uint8Array { } |
- |
- var eua = new ExtendedUint8Array(10); |
- assertEquals(10, eua.length); |
- assertEquals(10, eua.byteLength); |
- eua[0] = 0xFF; |
- eua[1] = 0xFFA; |
- assertEquals(0xFF, eua[0]); |
- assertEquals(0xFA, eua[1]); |
- assertSame(ExtendedUint8Array.prototype, eua.__proto__); |
- assertEquals("[object Uint8Array]", Object.prototype.toString.call(eua)); |
-}()); |