diff options
Diffstat (limited to 'deps/v8/test/mjsunit/strong/classes.js')
-rw-r--r-- | deps/v8/test/mjsunit/strong/classes.js | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/deps/v8/test/mjsunit/strong/classes.js b/deps/v8/test/mjsunit/strong/classes.js deleted file mode 100644 index 92dea0f2a9..0000000000 --- a/deps/v8/test/mjsunit/strong/classes.js +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright 2015 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: --strong-mode - -'use strong'; - -class C {} - -let indirect_eval = eval; - -function assertTypeError(script) { assertThrows(script, TypeError) } -function assertSyntaxError(script) { assertThrows(script, SyntaxError) } -function assertReferenceError(script) { assertThrows(script, ReferenceError) } - -(function ImmutableClassBindings() { - class D {} - assertTypeError(function(){ indirect_eval("C = 0") }); - assertEquals('function', typeof C); - assertEquals('function', typeof D); - assertTypeError("'use strong'; (function f() {class E {}; E = 0})()"); -})(); - -function constructor(body) { - return "'use strong'; " + - "(class extends Object { constructor() { " + body + " } })"; -} - -(function NoSuperExceptCall() { - assertSyntaxError(constructor("super.a;")); - assertSyntaxError(constructor("super['a'];")); - assertSyntaxError(constructor("super.f();")); - assertSyntaxError(constructor("super.a;")); - assertSyntaxError(constructor("{ super.a }")); - assertSyntaxError(constructor("if (0) super.a;")); - // TODO(rossberg): arrow functions do not handle 'super' yet. - // assertSyntaxError(constructor("() => super.a;")); - // assertSyntaxError(constructor("() => () => super.a;")); - // assertSyntaxError(constructor("() => { () => if (0) { super.a; } }")); -})(); - -(function NoMissingSuper() { - assertReferenceError(constructor("")); - assertReferenceError(constructor("1")); -})(); - -(function NoNestedSuper() { - assertSyntaxError(constructor("super(), 0;")); - assertSyntaxError(constructor("(super());")); - assertSyntaxError(constructor("super().a;")); - assertSyntaxError(constructor("(() => super())();")); - assertSyntaxError(constructor("{ super(); }")); - assertSyntaxError(constructor("if (1) super();")); - assertSyntaxError(constructor("label: super();")); -})(); - -(function NoDuplicateSuper() { - assertSyntaxError(constructor("super(), super();")); - assertSyntaxError(constructor("super(); super();")); - assertSyntaxError(constructor("super(); (super());")); - assertSyntaxError(constructor("super(); { super() }")); - assertSyntaxError(constructor("super(); (() => super())();")); -})(); - -(function NoSuperAfterThis() { - assertSyntaxError(constructor("this.a = 0, super();")); - assertSyntaxError(constructor("this.a = 0; super();")); - assertSyntaxError(constructor("this.a = 0; super(); this.b = 0;")); - assertSyntaxError(constructor("this.a = 0; (super());")); - assertSyntaxError(constructor("super(this.a = 0);")); -})(); - -(function NoReturnValue() { - assertSyntaxError(constructor("return {};")); - assertSyntaxError(constructor("return undefined;")); - assertSyntaxError(constructor("return this;")); - assertSyntaxError(constructor("return this.a = 0;")); - assertSyntaxError(constructor("{ return {}; }")); - assertSyntaxError(constructor("if (1) return {};")); -})(); - -(function NoReturnBeforeSuper() { - assertSyntaxError(constructor("return; super();")); - assertSyntaxError(constructor("if (0) return; super();")); - assertSyntaxError(constructor("{ return; } super();")); -})(); - -(function NoReturnBeforeThis() { - assertSyntaxError(constructor("return; this.a = 0;")); - assertSyntaxError(constructor("if (0) return; this.a = 0;")); - assertSyntaxError(constructor("{ return; } this.a = 0;")); -})(); - -(function NoThisExceptInitialization() { - assertSyntaxError(constructor("this;")); - assertSyntaxError(constructor("this.a;")); - assertSyntaxError(constructor("this['a'];")); - assertSyntaxError(constructor("this();")); - assertSyntaxError(constructor("this.a();")); - assertSyntaxError(constructor("this.a.b = 0;")); - assertSyntaxError(constructor("{ this }")); - assertSyntaxError(constructor("if (0) this;")); - // TODO(rossberg): this does not handle arrow functions yet. - // assertSyntaxError(constructor("() => this;")); - // assertSyntaxError(constructor("() => () => this;")); - // assertSyntaxError(constructor("() => { () => if (0) { this; } }")); -})(); - -(function NoNestedThis() { - assertSyntaxError(constructor("(this.a = 0);")); - assertSyntaxError(constructor("{ this.a = 0; }")); - assertSyntaxError(constructor("if (0) this.a = 0;")); - // TODO(rossberg): this does not handle arrow functions yet. - // assertSyntaxError(constructor("() => this.a = 0;")); - // assertSyntaxError(constructor("() => { this.a = 0; }")); - assertSyntaxError(constructor("label: this.a = 0;")); -})(); |