| Index: test/mjsunit/harmony/classes.js
|
| diff --git a/test/mjsunit/harmony/classes.js b/test/mjsunit/harmony/classes.js
|
| index 1c08e924c5e1cf29699c096959a388965c38f273..4efdaa179758d234a047597f2e42a4963a297c16 100644
|
| --- a/test/mjsunit/harmony/classes.js
|
| +++ b/test/mjsunit/harmony/classes.js
|
| @@ -673,15 +673,98 @@ function assertAccessorDescriptor(object, name) {
|
| })();
|
|
|
|
|
| -/* TODO(arv): Implement
|
| -(function TestNameBindingInConstructor() {
|
| +(function TestNameBindingConst() {
|
| + assertThrows('class C { constructor() { C = 42; } }', SyntaxError);
|
| + assertThrows('(class C { constructor() { C = 42; } })', SyntaxError);
|
| + assertThrows('class C { m() { C = 42; } }', SyntaxError);
|
| + assertThrows('(class C { m() { C = 42; } })', SyntaxError);
|
| + assertThrows('class C { get x() { C = 42; } }', SyntaxError);
|
| + assertThrows('(class C { get x() { C = 42; } })', SyntaxError);
|
| + assertThrows('class C { set x(_) { C = 42; } }', SyntaxError);
|
| + assertThrows('(class C { set x(_) { C = 42; } })', SyntaxError);
|
| +})();
|
| +
|
| +
|
| +(function TestNameBinding() {
|
| + var C2;
|
| class C {
|
| constructor() {
|
| - assertThrows(function() {
|
| - C = 42;
|
| - }, ReferenceError);
|
| + 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);
|
| })();
|
| -*/
|
|
|