| // Copyright (C) 2014 the V8 project authors. All rights reserved. |
| // This code is governed by the BSD license found in the LICENSE file. |
| /*--- |
| es6id: 14.5 |
| description: > |
| class this access restriction |
| ---*/ |
| class Base {} |
| (function() { |
| class C extends Base { |
| constructor() { |
| var y; |
| super(); |
| } |
| }; new C(); |
| }()); |
| assert.throws(ReferenceError, function() { |
| class C extends Base { |
| constructor() { |
| super(this.x); |
| } |
| }; new C(); |
| }); |
| assert.throws(ReferenceError, function() { |
| class C extends Base { |
| constructor() { |
| super(this); |
| } |
| }; new C(); |
| }); |
| assert.throws(ReferenceError, function() { |
| class C extends Base { |
| constructor() { |
| super.method(); |
| super(this); |
| } |
| }; new C(); |
| }); |
| assert.throws(ReferenceError, function() { |
| class C extends Base { |
| constructor() { |
| super(super.method()); |
| } |
| }; new C(); |
| }); |
| assert.throws(ReferenceError, function() { |
| class C extends Base { |
| constructor() { |
| super(super()); |
| } |
| }; new C(); |
| }); |
| assert.throws(ReferenceError, function() { |
| class C extends Base { |
| constructor() { |
| super(1, 2, Object.getPrototypeOf(this)); |
| } |
| }; new C(); |
| }); |
| (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(); |