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

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

Issue 1213813003: [es6] Remove harmony-classes flag (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Remove empty flags field from json Created 5 years, 6 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
Index: test/mjsunit/harmony/classes.js
diff --git a/test/mjsunit/harmony/classes.js b/test/mjsunit/harmony/classes.js
deleted file mode 100644
index 9c090413450ca203116da1d13dbbc5f03d980374..0000000000000000000000000000000000000000
--- a/test/mjsunit/harmony/classes.js
+++ /dev/null
@@ -1,948 +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 --harmony-sloppy
-
-(function TestBasics() {
- var C = class C {}
- assertEquals(typeof C, 'function');
- assertEquals(C.__proto__, Function.prototype);
- assertEquals(Object.prototype, Object.getPrototypeOf(C.prototype));
- assertEquals(Function.prototype, Object.getPrototypeOf(C));
- assertEquals('C', C.name);
-
- class D {}
- assertEquals(typeof D, 'function');
- assertEquals(D.__proto__, Function.prototype);
- assertEquals(Object.prototype, Object.getPrototypeOf(D.prototype));
- assertEquals(Function.prototype, Object.getPrototypeOf(D));
- assertEquals('D', D.name);
-
- class D2 { constructor() {} }
- assertEquals('D2', D2.name);
-
- // TODO(arv): The logic for the name of anonymous functions in ES6 requires
- // the below to be 'E';
- var E = class {}
- assertEquals('', E.name); // Should be 'E'.
-
- var F = class { constructor() {} };
- assertEquals('', F.name); // Should be 'F'.
-})();
-
-
-(function TestBasicsExtends() {
- class C extends null {}
- assertEquals(typeof C, 'function');
- assertEquals(C.__proto__, Function.prototype);
- assertEquals(null, Object.getPrototypeOf(C.prototype));
-
- class D extends C {}
- assertEquals(typeof D, 'function');
- assertEquals(D.__proto__, C);
- assertEquals(C.prototype, Object.getPrototypeOf(D.prototype));
-})();
-
-
-(function TestSideEffectInExtends() {
- var calls = 0;
- class C {}
- class D extends (calls++, C) {}
- assertEquals(1, calls);
- assertEquals(typeof D, 'function');
- assertEquals(D.__proto__, C);
- assertEquals(C.prototype, Object.getPrototypeOf(D.prototype));
-})();
-
-
-(function TestInvalidExtends() {
- assertThrows(function() {
- class C extends 42 {}
- }, TypeError);
-
- assertThrows(function() {
- // Function but its .prototype is not null or a function.
- class C extends Math.abs {}
- }, TypeError);
-
- assertThrows(function() {
- Math.abs.prototype = 42;
- class C extends Math.abs {}
- }, TypeError);
- delete Math.abs.prototype;
-
- assertThrows(function() {
- function* g() {}
- class C extends g {}
- }, TypeError);
-})();
-
-
-(function TestConstructorProperty() {
- class C {}
- assertEquals(C, C.prototype.constructor);
- var descr = Object.getOwnPropertyDescriptor(C.prototype, 'constructor');
- assertTrue(descr.configurable);
- assertFalse(descr.enumerable);
- assertTrue(descr.writable);
-})();
-
-
-(function TestPrototypeProperty() {
- class C {}
- var descr = Object.getOwnPropertyDescriptor(C, 'prototype');
- assertFalse(descr.configurable);
- assertFalse(descr.enumerable);
- assertFalse(descr.writable);
-})();
-
-
-(function TestConstructor() {
- var count = 0;
- class C {
- constructor() {
- assertEquals(Object.getPrototypeOf(this), C.prototype);
- count++;
- }
- }
- assertEquals(C, C.prototype.constructor);
- var descr = Object.getOwnPropertyDescriptor(C.prototype, 'constructor');
- assertTrue(descr.configurable);
- assertFalse(descr.enumerable);
- assertTrue(descr.writable);
-
- var c = new C();
- assertEquals(1, count);
- assertEquals(Object.getPrototypeOf(c), C.prototype);
-})();
-
-
-(function TestImplicitConstructor() {
- class C {}
- var c = new C();
- assertEquals(Object.getPrototypeOf(c), C.prototype);
-})();
-
-
-(function TestConstructorStrict() {
- class C {
- constructor() {
- assertThrows(function() {
- nonExistingBinding = 42;
- }, ReferenceError);
- }
- }
- new C();
-})();
-
-
-(function TestSuperInConstructor() {
- var calls = 0;
- class B {}
- B.prototype.x = 42;
-
- class C extends B {
- constructor() {
- super();
- calls++;
- assertEquals(42, super.x);
- }
- }
-
- new C;
- assertEquals(1, calls);
-})();
-
-
-(function TestStrictMode() {
- class C {}
-
- with ({a: 1}) {
- assertEquals(1, a);
- }
-
- assertThrows('class C extends function B() { with ({}); return B; }() {}',
- SyntaxError);
-
- var D = class extends function() {
- arguments.caller;
- } {};
- assertThrows(function() {
- Object.getPrototypeOf(D).arguments;
- }, TypeError);
- assertThrows(function() {
- new D;
- }, TypeError);
-})();
-
-
-(function TestToString() {
- class C {}
- assertEquals('class C {}', C.toString());
-
- class D { constructor() { 42; } }
- assertEquals('class D { constructor() { 42; } }', D.toString());
-
- class E { x() { 42; } }
- assertEquals('class E { x() { 42; } }', E.toString());
-})();
-
-
-function assertMethodDescriptor(object, name) {
- var descr = Object.getOwnPropertyDescriptor(object, name);
- assertTrue(descr.configurable);
- assertFalse(descr.enumerable);
- assertTrue(descr.writable);
- assertEquals('function', typeof descr.value);
- assertFalse('prototype' in descr.value);
-}
-
-
-function assertGetterDescriptor(object, name) {
- var descr = Object.getOwnPropertyDescriptor(object, name);
- assertTrue(descr.configurable);
- assertFalse(descr.enumerable);
- assertEquals('function', typeof descr.get);
- assertFalse('prototype' in descr.get);
- assertEquals(undefined, descr.set);
-}
-
-
-function assertSetterDescriptor(object, name) {
- var descr = Object.getOwnPropertyDescriptor(object, name);
- assertTrue(descr.configurable);
- assertFalse(descr.enumerable);
- assertEquals(undefined, descr.get);
- assertEquals('function', typeof descr.set);
- assertFalse('prototype' in descr.set);
-}
-
-
-function assertAccessorDescriptor(object, name) {
- var descr = Object.getOwnPropertyDescriptor(object, name);
- assertTrue(descr.configurable);
- assertFalse(descr.enumerable);
- assertEquals('function', typeof descr.get);
- assertEquals('function', typeof descr.set);
- assertFalse('prototype' in descr.get);
- assertFalse('prototype' in descr.set);
-}
-
-
-(function TestMethods() {
- class C {
- method() { return 1; }
- static staticMethod() { return 2; }
- method2() { return 3; }
- static staticMethod2() { return 4; }
- }
-
- assertMethodDescriptor(C.prototype, 'method');
- assertMethodDescriptor(C.prototype, 'method2');
- assertMethodDescriptor(C, 'staticMethod');
- assertMethodDescriptor(C, 'staticMethod2');
-
- assertEquals(1, new C().method());
- assertEquals(2, C.staticMethod());
- assertEquals(3, new C().method2());
- assertEquals(4, C.staticMethod2());
-})();
-
-
-(function TestGetters() {
- class C {
- get x() { return 1; }
- static get staticX() { return 2; }
- get y() { return 3; }
- static get staticY() { return 4; }
- }
-
- assertGetterDescriptor(C.prototype, 'x');
- assertGetterDescriptor(C.prototype, 'y');
- assertGetterDescriptor(C, 'staticX');
- assertGetterDescriptor(C, 'staticY');
-
- assertEquals(1, new C().x);
- assertEquals(2, C.staticX);
- assertEquals(3, new C().y);
- assertEquals(4, C.staticY);
-})();
-
-
-
-(function TestSetters() {
- var x, staticX, y, staticY;
- class C {
- set x(v) { x = v; }
- static set staticX(v) { staticX = v; }
- set y(v) { y = v; }
- static set staticY(v) { staticY = v; }
- }
-
- assertSetterDescriptor(C.prototype, 'x');
- assertSetterDescriptor(C.prototype, 'y');
- assertSetterDescriptor(C, 'staticX');
- assertSetterDescriptor(C, 'staticY');
-
- assertEquals(1, new C().x = 1);
- assertEquals(1, x);
- assertEquals(2, C.staticX = 2);
- assertEquals(2, staticX);
- assertEquals(3, new C().y = 3);
- assertEquals(3, y);
- assertEquals(4, C.staticY = 4);
- assertEquals(4, staticY);
-})();
-
-
-(function TestSideEffectsInPropertyDefine() {
- function B() {}
- B.prototype = {
- constructor: B,
- set m(v) {
- throw Error();
- }
- };
-
- class C extends B {
- m() { return 1; }
- }
-
- assertEquals(1, new C().m());
-})();
-
-
-(function TestAccessors() {
- class C {
- constructor(x) {
- this._x = x;
- }
-
- get x() { return this._x; }
- set x(v) { this._x = v; }
-
- static get staticX() { return this._x; }
- static set staticX(v) { this._x = v; }
- }
-
- assertAccessorDescriptor(C.prototype, 'x');
- assertAccessorDescriptor(C, 'staticX');
-
- var c = new C(1);
- c._x = 1;
- assertEquals(1, c.x);
- c.x = 2;
- assertEquals(2, c._x);
-
- C._x = 3;
- assertEquals(3, C.staticX);
- C._x = 4;
- assertEquals(4, C.staticX );
-})();
-
-
-(function TestProto() {
- class C {
- __proto__() { return 1; }
- }
- assertMethodDescriptor(C.prototype, '__proto__');
- assertEquals(1, new C().__proto__());
-})();
-
-
-(function TestProtoStatic() {
- class C {
- static __proto__() { return 1; }
- }
- assertMethodDescriptor(C, '__proto__');
- assertEquals(1, C.__proto__());
-})();
-
-
-(function TestProtoAccessor() {
- class C {
- get __proto__() { return this._p; }
- set __proto__(v) { this._p = v; }
- }
- assertAccessorDescriptor(C.prototype, '__proto__');
- var c = new C();
- c._p = 1;
- assertEquals(1, c.__proto__);
- c.__proto__ = 2;
- assertEquals(2, c.__proto__);
-})();
-
-
-(function TestStaticProtoAccessor() {
- class C {
- static get __proto__() { return this._p; }
- static set __proto__(v) { this._p = v; }
- }
- assertAccessorDescriptor(C, '__proto__');
- C._p = 1;
- assertEquals(1, C.__proto__);
- C.__proto__ = 2;
- assertEquals(2, C.__proto__);
-})();
-
-
-(function TestSettersOnProto() {
- function Base() {}
- Base.prototype = {
- set constructor(_) {
- assertUnreachable();
- },
- set m(_) {
- assertUnreachable();
- }
- };
- Object.defineProperty(Base, 'staticM', {
- set: function() {
- assertUnreachable();
- }
- });
-
- class C extends Base {
- m() {
- return 1;
- }
- static staticM() {
- return 2;
- }
- }
-
- assertEquals(1, new C().m());
- assertEquals(2, C.staticM());
-})();
-
-
-(function TestConstructableButNoPrototype() {
- var Base = function() {}.bind();
- assertThrows(function() {
- class C extends Base {}
- }, TypeError);
-})();
-
-
-(function TestPrototypeGetter() {
- var calls = 0;
- var Base = function() {}.bind();
- Object.defineProperty(Base, 'prototype', {
- get: function() {
- calls++;
- return null;
- },
- configurable: true
- });
- class C extends Base {}
- assertEquals(1, calls);
-
- calls = 0;
- Object.defineProperty(Base, 'prototype', {
- get: function() {
- calls++;
- return 42;
- },
- configurable: true
- });
- assertThrows(function() {
- class C extends Base {}
- }, TypeError);
- assertEquals(1, calls);
-})();
-
-
-(function TestPrototypeSetter() {
- var Base = function() {}.bind();
- Object.defineProperty(Base, 'prototype', {
- set: function() {
- assertUnreachable();
- }
- });
- assertThrows(function() {
- class C extends Base {}
- }, TypeError);
-})();
-
-
-(function TestSuperInMethods() {
- class B {
- method() {
- return 1;
- }
- get x() {
- return 2;
- }
- }
- class C extends B {
- method() {
- assertEquals(2, super.x);
- return super.method();
- }
- }
- assertEquals(1, new C().method());
-})();
-
-
-(function TestSuperInGetter() {
- class B {
- method() {
- return 1;
- }
- get x() {
- return 2;
- }
- }
- class C extends B {
- get y() {
- assertEquals(2, super.x);
- return super.method();
- }
- }
- assertEquals(1, new C().y);
-})();
-
-
-(function TestSuperInSetter() {
- class B {
- method() {
- return 1;
- }
- get x() {
- return 2;
- }
- }
- class C extends B {
- set y(v) {
- assertEquals(3, v);
- assertEquals(2, super.x);
- assertEquals(1, super.method());
- }
- }
- assertEquals(3, new C().y = 3);
-})();
-
-
-(function TestSuperInStaticMethods() {
- class B {
- static method() {
- return 1;
- }
- static get x() {
- return 2;
- }
- }
- class C extends B {
- static method() {
- assertEquals(2, super.x);
- return super.method();
- }
- }
- assertEquals(1, C.method());
-})();
-
-
-(function TestSuperInStaticGetter() {
- class B {
- static method() {
- return 1;
- }
- static get x() {
- return 2;
- }
- }
- class C extends B {
- static get x() {
- assertEquals(2, super.x);
- return super.method();
- }
- }
- assertEquals(1, C.x);
-})();
-
-
-(function TestSuperInStaticSetter() {
- class B {
- static method() {
- return 1;
- }
- static get x() {
- return 2;
- }
- }
- class C extends B {
- static set x(v) {
- assertEquals(3, v);
- assertEquals(2, super.x);
- assertEquals(1, super.method());
- }
- }
- assertEquals(3, C.x = 3);
-})();
-
-
-(function TestNumericPropertyNames() {
- class B {
- 1() { return 1; }
- get 2() { return 2; }
- set 3(_) {}
-
- static 4() { return 4; }
- static get 5() { return 5; }
- static set 6(_) {}
- }
-
- assertMethodDescriptor(B.prototype, '1');
- assertGetterDescriptor(B.prototype, '2');
- assertSetterDescriptor(B.prototype, '3');
-
- assertMethodDescriptor(B, '4');
- assertGetterDescriptor(B, '5');
- assertSetterDescriptor(B, '6');
-
- class C extends B {
- 1() { return super[1](); }
- get 2() { return super[2]; }
-
- static 4() { return super[4](); }
- static get 5() { return super[5]; }
- }
-
- assertEquals(1, new C()[1]());
- assertEquals(2, new C()[2]);
- assertEquals(4, C[4]());
- assertEquals(5, C[5]);
-})();
-
-
-(function TestDefaultConstructorNoCrash() {
- // Regression test for https://code.google.com/p/v8/issues/detail?id=3661
- class C {}
- assertThrows(function () {C();}, TypeError);
- assertThrows(function () {C(1);}, TypeError);
- assertTrue(new C() instanceof C);
- assertTrue(new C(1) instanceof C);
-})();
-
-
-(function TestDefaultConstructor() {
- var calls = 0;
- class Base {
- constructor() {
- calls++;
- }
- }
- class Derived extends Base {}
- var object = new Derived;
- assertEquals(1, calls);
-
- calls = 0;
- assertThrows(function() { Derived(); }, TypeError);
- assertEquals(0, calls);
-})();
-
-
-(function TestDefaultConstructorArguments() {
- var args, self;
- class Base {
- constructor() {
- self = this;
- args = arguments;
- }
- }
- class Derived extends Base {}
-
- new Derived;
- assertEquals(0, args.length);
-
- new Derived(0, 1, 2);
- assertEquals(3, args.length);
- assertTrue(self instanceof Derived);
-
- var arr = new Array(100);
- var obj = {};
- assertThrows(function() {Derived.apply(obj, arr);}, TypeError);
-})();
-
-
-(function TestDefaultConstructorArguments2() {
- var args;
- class Base {
- constructor(x, y) {
- args = arguments;
- }
- }
- class Derived extends Base {}
-
- new Derived;
- assertEquals(0, args.length);
-
- new Derived(1);
- assertEquals(1, args.length);
- assertEquals(1, args[0]);
-
- new Derived(1, 2, 3);
- assertEquals(3, args.length);
- assertEquals(1, args[0]);
- assertEquals(2, args[1]);
- assertEquals(3, args[2]);
-})();
-
-
-(function TestNameBindingConst() {
- assertThrows('class C { constructor() { C = 42; } }; new C();', TypeError);
- assertThrows('new (class C { constructor() { C = 42; } })', TypeError);
- assertThrows('class C { m() { C = 42; } }; new C().m()', TypeError);
- assertThrows('new (class C { m() { C = 42; } }).m()', TypeError);
- assertThrows('class C { get x() { C = 42; } }; new C().x', TypeError);
- assertThrows('(new (class C { get x() { C = 42; } })).x', TypeError);
- assertThrows('class C { set x(_) { C = 42; } }; new C().x = 15;', TypeError);
- assertThrows('(new (class C { set x(_) { C = 42; } })).x = 15;', TypeError);
-})();
-
-
-(function TestNameBinding() {
- var C2;
- class C {
- constructor() {
- C2 = C;
- }
- m() {
- C2 = C;
- }
- get x() {
- C2 = C;
- }
- set x(_) {
- C2 = C;
- }
- }
- new C();
- assertEquals(C, C2);
-
- C2 = undefined;
- new C().m();
- assertEquals(C, C2);
-
- C2 = undefined;
- new C().x;
- assertEquals(C, C2);
-
- C2 = undefined;
- new C().x = 1;
- assertEquals(C, C2);
-})();
-
-
-(function TestNameBindingExpression() {
- var C3;
- var C = class C2 {
- constructor() {
- assertEquals(C2, C);
- C3 = C2;
- }
- m() {
- assertEquals(C2, C);
- C3 = C2;
- }
- get x() {
- assertEquals(C2, C);
- C3 = C2;
- }
- set x(_) {
- assertEquals(C2, C);
- C3 = C2;
- }
- }
- new C();
- assertEquals(C, C3);
-
- C3 = undefined;
- new C().m();
- assertEquals(C, C3);
-
- C3 = undefined;
- new C().x;
- assertEquals(C, C3);
-
- C3 = undefined;
- new C().x = 1;
- assertEquals(C, C3);
-})();
-
-
-(function TestNameBindingInExtendsExpression() {
- assertThrows(function() {
- class x extends x {}
- }, ReferenceError);
-
- assertThrows(function() {
- (class x extends x {});
- }, ReferenceError);
-
- assertThrows(function() {
- var x = (class x extends x {});
- }, ReferenceError);
-})();
-
-
-(function TestThisAccessRestriction() {
- class Base {}
- (function() {
- class C extends Base {
- constructor() {
- var y;
- super();
- }
- }; new C();
- }());
- assertThrows(function() {
- class C extends Base {
- constructor() {
- super(this.x);
- }
- }; new C();
- }, ReferenceError);
- assertThrows(function() {
- class C extends Base {
- constructor() {
- super(this);
- }
- }; new C();
- }, ReferenceError);
- assertThrows(function() {
- class C extends Base {
- constructor() {
- super.method();
- super(this);
- }
- }; new C();
- }, ReferenceError);
- assertThrows(function() {
- class C extends Base {
- constructor() {
- super(super.method());
- }
- }; new C();
- }, ReferenceError);
- assertThrows(function() {
- class C extends Base {
- constructor() {
- super(super());
- }
- }; new C();
- }, ReferenceError);
- assertThrows(function() {
- class C extends Base {
- constructor() {
- super(1, 2, Object.getPrototypeOf(this));
- }
- }; new C();
- }, ReferenceError);
- (function() {
- class C extends Base {
- constructor() {
- { super(1, 2); }
- }
- }; new C();
- }());
- (function() {
- class C extends Base {
- constructor() {
- if (1) super();
- }
- }; new C();
- }());
-
- class C1 extends Object {
- constructor() {
- 'use strict';
- super();
- }
- };
- new C1();
-
- class C2 extends Object {
- constructor() {
- ; 'use strict';;;;;
- super();
- }
- };
- new C2();
-
- class C3 extends Object {
- constructor() {
- ; 'use strict';;;;;
- // This is a comment.
- super();
- }
- };
- new C3();
-}());
-
-
-function testClassRestrictedProperties(C) {
- assertEquals(false, C.hasOwnProperty("arguments"));
- assertThrows(function() { return C.arguments; }, TypeError);
- assertThrows(function() { C.arguments = {}; }, TypeError);
-
- assertEquals(false, C.hasOwnProperty("caller"));
- assertThrows(function() { return C.caller; }, TypeError);
- assertThrows(function() { C.caller = {}; }, TypeError);
-
- assertEquals(false, (new C).method.hasOwnProperty("arguments"));
- assertThrows(function() { return new C().method.arguments; }, TypeError);
- assertThrows(function() { new C().method.arguments = {}; }, TypeError);
-
- assertEquals(false, (new C).method.hasOwnProperty("caller"));
- assertThrows(function() { return new C().method.caller; }, TypeError);
- assertThrows(function() { new C().method.caller = {}; }, TypeError);
-}
-
-
-(function testRestrictedPropertiesStrict() {
- "use strict";
- class ClassWithDefaultConstructor {
- method() {}
- }
- class Class {
- constructor() {}
- method() {}
- }
- class DerivedClassWithDefaultConstructor extends Class {}
- class DerivedClass extends Class { constructor() { super(); } }
-
- testClassRestrictedProperties(ClassWithDefaultConstructor);
- testClassRestrictedProperties(Class);
- testClassRestrictedProperties(DerivedClassWithDefaultConstructor);
- testClassRestrictedProperties(DerivedClass);
- testClassRestrictedProperties(class { method() {} });
- testClassRestrictedProperties(class { constructor() {} method() {} });
- testClassRestrictedProperties(class extends Class { });
- testClassRestrictedProperties(
- class extends Class { constructor() { super(); } });
-})();
-
-
-(function testRestrictedPropertiesSloppy() {
- class ClassWithDefaultConstructor {
- method() {}
- }
- class Class {
- constructor() {}
- method() {}
- }
- class DerivedClassWithDefaultConstructor extends Class {}
- class DerivedClass extends Class { constructor() { super(); } }
-
- testClassRestrictedProperties(ClassWithDefaultConstructor);
- testClassRestrictedProperties(Class);
- testClassRestrictedProperties(DerivedClassWithDefaultConstructor);
- testClassRestrictedProperties(DerivedClass);
- testClassRestrictedProperties(class { method() {} });
- testClassRestrictedProperties(class { constructor() {} method() {} });
- testClassRestrictedProperties(class extends Class { });
- testClassRestrictedProperties(
- class extends Class { constructor() { super(); } });
-})();
« no previous file with comments | « test/mjsunit/harmony/class-property-name-eval-arguments.js ('k') | test/mjsunit/harmony/classes-experimental.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698