Index: test/mjsunit/strong/classes.js |
diff --git a/test/mjsunit/strong/classes.js b/test/mjsunit/strong/classes.js |
index 3c7caf5f84e4a5d31ac3519d975816a4be05ae8b..d5c4560844e688b2fa335f3b63b62ab9b4dbd9ca 100644 |
--- a/test/mjsunit/strong/classes.js |
+++ b/test/mjsunit/strong/classes.js |
@@ -3,15 +3,44 @@ |
// found in the LICENSE file. |
// Flags: --strong-mode |
+// Flags: --harmony-classes --harmony-arrow-functions |
'use strong'; |
class C {} |
+function assertTypeError(script) { assertThrows(script, TypeError) } |
+function assertSyntaxError(script) { assertThrows(script, SyntaxError) } |
+function assertReferenceError(script) { assertThrows(script, ReferenceError) } |
+ |
(function ImmutableClassBindings() { |
class D {} |
- assertThrows(function(){ eval("C = 0") }, TypeError); |
- assertThrows(function(){ eval("D = 0") }, TypeError); |
+ assertTypeError(function(){ eval("C = 0") }); |
+ assertTypeError(function(){ eval("D = 0") }); |
assertEquals('function', typeof C); |
assertEquals('function', typeof D); |
})(); |
+ |
+function constructor(body) { |
+ return "'use strong'; " + |
+ "(class extends Object { constructor() { " + body + " } })"; |
+} |
+ |
+(function NoMissingSuper() { |
+ assertReferenceError(constructor("")); |
+ assertReferenceError(constructor("1")); |
+})(); |
+ |
+(function NoNestedSuper() { |
+ assertSyntaxError(constructor("(super())")); |
+ assertSyntaxError(constructor("(() => super())(); } })")); |
+ assertSyntaxError(constructor("{ super();")); |
+ assertSyntaxError(constructor("if (1) super();")); |
+})(); |
+ |
+(function NoDuplicateSuper() { |
+ assertSyntaxError(constructor("super(), super();")); |
+ assertSyntaxError(constructor("super(); super();")); |
+ assertSyntaxError(constructor("super(); (super());")); |
+ assertSyntaxError(constructor("super(); { super() }")); |
+})(); |