diff --git a/src/Esprima/JavascriptParser.cs b/src/Esprima/JavascriptParser.cs index 177ede87..11398d98 100644 --- a/src/Esprima/JavascriptParser.cs +++ b/src/Esprima/JavascriptParser.cs @@ -25,7 +25,8 @@ public void Reset() IsModule = false; AllowIn = true; AllowStrictDirective = true; - AllowSuper = false; + AllowSuperCall = false; + AllowSuperAccess = false; AllowYield = true; IsAsync = false; FirstCoverInitializedNameError = null; @@ -34,7 +35,6 @@ public void Reset() InFunctionBody = false; InIteration = false; InSwitch = false; - InClassConstructor = false; Strict = false; AllowIdentifierEscape = false; @@ -59,7 +59,8 @@ public void ReleaseLargeBuffers() public bool IsModule; public bool AllowIn; public bool AllowStrictDirective; - public bool AllowSuper; + public bool AllowSuperCall; + public bool AllowSuperAccess; public bool AllowYield; public bool IsAsync; public bool IsAssignmentTarget; @@ -67,7 +68,6 @@ public void ReleaseLargeBuffers() public bool InFunctionBody; public bool InIteration; public bool InSwitch; - public bool InClassConstructor; public bool InClassBody; public bool Strict; public bool AllowIdentifierEscape; @@ -955,39 +955,30 @@ private BlockStatement ParsePropertyMethod(ref ParsedParameters parameters, out return body; } - private FunctionExpression ParsePropertyMethodFunction(bool isGenerator) + private FunctionExpression ParsePropertyMethodFunction(bool isAsync, bool isGenerator, bool allowSuperCall) { var node = CreateNode(); + var previousIsAsync = _context.IsAsync; var previousAllowYield = _context.AllowYield; - _context.AllowYield = true; - - var parameters = ParseFormalParameters(); - _context.AllowYield = !isGenerator; - var method = ParsePropertyMethod(ref parameters, out var hasStrictDirective); - - _context.AllowYield = previousAllowYield; - - return Finalize(node, new FunctionExpression(null, NodeList.From(ref parameters.Parameters), method, isGenerator, hasStrictDirective, false)); - } + var previousAllowSuperAccess = _context.AllowSuperAccess; + var previousAllowSuperCall = _context.AllowSuperCall; - private FunctionExpression ParsePropertyMethodAsyncFunction(bool isGenerator) - { - var node = CreateNode(); - - var previousAllowYield = _context.AllowYield; - var previousIsAsync = _context.IsAsync; + _context.IsAsync = isAsync; _context.AllowYield = true; - _context.IsAsync = true; - + _context.AllowSuperAccess = true; + _context.AllowSuperCall = allowSuperCall; var parameters = ParseFormalParameters(); + _context.AllowYield = !isGenerator; var method = ParsePropertyMethod(ref parameters, out var hasStrictDirective); - _context.AllowYield = previousAllowYield; _context.IsAsync = previousIsAsync; + _context.AllowYield = previousAllowYield; + _context.AllowSuperAccess = previousAllowSuperAccess; + _context.AllowSuperCall = previousAllowSuperCall; - return Finalize(node, new FunctionExpression(null, NodeList.From(ref parameters.Parameters), method, isGenerator, hasStrictDirective, true)); + return Finalize(node, new FunctionExpression(null, NodeList.From(ref parameters.Parameters), method, isGenerator, hasStrictDirective, isAsync)); } private Expression ParseObjectPropertyKey() @@ -1125,13 +1116,7 @@ private Property ParseObjectProperty(ref bool hasProto) kind = PropertyKind.Get; computed = Match("["); key = ParseObjectPropertyKey(); - var previousAllowYield = _context.AllowYield; - var previousAllowSuper = _context.AllowSuper; - _context.AllowYield = false; - _context.AllowSuper = true; value = ParseGetterMethod(); - _context.AllowYield = previousAllowYield; - _context.AllowSuper = previousAllowSuper; } else if (token.Type == TokenType.Identifier && !isAsync && "set".Equals(token.Value) && lookaheadPropertyKey) { @@ -1143,20 +1128,14 @@ private Property ParseObjectProperty(ref bool hasProto) kind = PropertyKind.Set; computed = Match("["); key = ParseObjectPropertyKey(); - var previousAllowSuper = _context.AllowSuper; - _context.AllowSuper = true; value = ParseSetterMethod(); - _context.AllowSuper = previousAllowSuper; } else if (token.Type == TokenType.Punctuator && "*".Equals(token.Value) && lookaheadPropertyKey) { kind = PropertyKind.Init; computed = Match("["); key = ParseObjectPropertyKey(); - var previousAllowSuper = _context.AllowSuper; - _context.AllowSuper = true; value = ParseGeneratorMethod(isAsync); - _context.AllowSuper = previousAllowSuper; method = true; } else @@ -1184,10 +1163,7 @@ private Property ParseObjectProperty(ref bool hasProto) } else if (Match("(")) { - var previousAllowSuper = _context.AllowSuper; - _context.AllowSuper = true; - value = isAsync ? ParsePropertyMethodAsyncFunction(isGenerator) : ParsePropertyMethodFunction(isGenerator); - _context.AllowSuper = previousAllowSuper; + value = ParsePropertyMethodFunction(isAsync, isGenerator, allowSuperCall: false); method = true; } else if (token.Type == TokenType.Identifier) @@ -1799,14 +1775,28 @@ private Expression ParseLeftHandSideExpressionAllowCall() Expression expr; var isSuper = MatchKeyword("super"); - if (isSuper && _context.InFunctionBody) + if (isSuper) { var node = CreateNode(); NextToken(); expr = Finalize(node, new Super()); - if (!Match("(") && !Match(".") && !Match("[")) + if (Match("(")) { - ThrowUnexpectedToken(_lookahead); + if (!_context.AllowSuperCall) + { + TolerateError(Messages.UnexpectedSuper); + } + } + else if (Match(".") || Match("[")) + { + if (!_context.AllowSuperAccess) + { + TolerateError(Messages.UnexpectedSuper); + } + } + else + { + TolerateError(Messages.UnexpectedSuper); } } else @@ -1816,11 +1806,6 @@ private Expression ParseLeftHandSideExpressionAllowCall() : InheritCoverGrammar(_parsePrimaryExpression); } - if (isSuper && !_context.AllowSuper && (!_context.InClassConstructor || (string?) _lookahead.Value != ".")) - { - TolerateError(Messages.UnexpectedSuper); - } - var hasOptional = false; while (true) { @@ -1875,6 +1860,12 @@ private Expression ParseLeftHandSideExpressionAllowCall() } var property = ParseIdentifierOrPrivateIdentifierName(); + + if (isSuper && property.Type == Nodes.PrivateIdentifier) + { + TolerateError(Messages.UnexpectedPrivateField); + } + _context.AllowIdentifierEscape = previousAllowIdentifierEscape; expr = Finalize(startMarker, new StaticMemberExpression(expr, property, optional)); } @@ -1916,7 +1907,7 @@ private Expression ParseCallExpression(bool maybeAsync, in Marker startToken, Ex return expr; } - private Super ParseSuper() + private Super ParseSuperAccess() { var node = CreateNode(); @@ -1935,7 +1926,7 @@ private Expression ParseLeftHandSideExpression() var startMarker = StartNode(_lookahead); var expr = MatchKeyword("super") && _context.InFunctionBody - ? ParseSuper() + ? ParseSuperAccess() : MatchKeyword("new") ? InheritCoverGrammar(_parseNewExpression) : InheritCoverGrammar(_parsePrimaryExpression); @@ -1987,6 +1978,7 @@ private Expression ParseLeftHandSideExpression() } var property = ParseIdentifierName(); + expr = Finalize(startMarker, new StaticMemberExpression(expr, property, optional)); } else @@ -4495,9 +4487,15 @@ private FunctionExpression ParseGetterMethod() { var node = CreateNode(); - const bool isGenerator = false; + var previousIsAsync = _context.IsAsync; var previousAllowYield = _context.AllowYield; - _context.AllowYield = !isGenerator; + var previousAllowSuperAccess = _context.AllowSuperAccess; + var previousAllowSuperCall = _context.AllowSuperCall; + + _context.IsAsync = false; + _context.AllowYield = true; + _context.AllowSuperAccess = true; + _context.AllowSuperCall = false; var formalParameters = ParseFormalParameters(); if (formalParameters.Parameters.Count > 0) { @@ -4505,19 +4503,28 @@ private FunctionExpression ParseGetterMethod() } var method = ParsePropertyMethod(ref formalParameters, out var hasStrictDirective); + + _context.IsAsync = previousIsAsync; _context.AllowYield = previousAllowYield; + _context.AllowSuperAccess = previousAllowSuperAccess; + _context.AllowSuperCall = previousAllowSuperCall; - return Finalize(node, new FunctionExpression(null, NodeList.From(ref formalParameters.Parameters), method, isGenerator, hasStrictDirective, false)); + return Finalize(node, new FunctionExpression(null, NodeList.From(ref formalParameters.Parameters), method, generator: false, hasStrictDirective, false)); } private FunctionExpression ParseSetterMethod() { var node = CreateNode(); - const bool isGenerator = false; + var previousIsAsync = _context.IsAsync; var previousAllowYield = _context.AllowYield; - _context.AllowYield = !isGenerator; + var previousAllowSuperAccess = _context.AllowSuperAccess; + var previousAllowSuperCall = _context.AllowSuperCall; + _context.IsAsync = false; + _context.AllowYield = true; + _context.AllowSuperAccess = true; + _context.AllowSuperCall = false; var formalParameters = ParseFormalParameters(); if (formalParameters.Parameters.Count != 1) { @@ -4529,28 +4536,39 @@ private FunctionExpression ParseSetterMethod() } var method = ParsePropertyMethod(ref formalParameters, out var hasStrictDirective); + + _context.IsAsync = previousIsAsync; _context.AllowYield = previousAllowYield; + _context.AllowSuperAccess = previousAllowSuperAccess; + _context.AllowSuperCall = previousAllowSuperCall; - return Finalize(node, new FunctionExpression(null, NodeList.From(ref formalParameters.Parameters), method, isGenerator, hasStrictDirective, false)); + return Finalize(node, new FunctionExpression(null, NodeList.From(ref formalParameters.Parameters), method, generator: false, hasStrictDirective, false)); } - private FunctionExpression ParseGeneratorMethod(bool isAsync = false) + private FunctionExpression ParseGeneratorMethod(bool isAsync) { var node = CreateNode(); - var previousAllowYield = _context.AllowYield; var previousIsAsync = _context.IsAsync; - _context.AllowYield = true; - _context.IsAsync = isAsync; + var previousAllowYield = _context.AllowYield; + var previousAllowSuperAccess = _context.AllowSuperAccess; + var previousAllowSuperCall = _context.AllowSuperCall; + _context.IsAsync = isAsync; + _context.AllowYield = true; + _context.AllowSuperAccess = true; + _context.AllowSuperCall = false; var parameters = ParseFormalParameters(); + _context.AllowYield = false; var method = ParsePropertyMethod(ref parameters, out var hasStrictDirective); - _context.AllowYield = previousAllowYield; _context.IsAsync = previousIsAsync; + _context.AllowYield = previousAllowYield; + _context.AllowSuperAccess = previousAllowSuperAccess; + _context.AllowSuperCall = previousAllowSuperCall; - return Finalize(node, new FunctionExpression(null, NodeList.From(ref parameters.Parameters), method, true, hasStrictDirective, isAsync)); + return Finalize(node, new FunctionExpression(null, NodeList.From(ref parameters.Parameters), method, generator: true, hasStrictDirective, isAsync)); } // https://tc39.github.io/ecma262/#sec-generator-function-definitions @@ -4618,6 +4636,11 @@ private StaticBlock ParseStaticBlock() Expect("{"); + var previousAllowSuperAccess = _context.AllowSuperAccess; + var previousAllowSuperCall = _context.AllowSuperCall; + _context.AllowSuperAccess = true; + _context.AllowSuperCall = false; + var block = new ArrayList(); while (true) { @@ -4629,6 +4652,9 @@ private StaticBlock ParseStaticBlock() block.Add(ParseStatementListItem()); } + _context.AllowSuperAccess = previousAllowSuperAccess; + _context.AllowSuperCall = previousAllowSuperCall; + Expect("}"); return Finalize(node, new StaticBlock(NodeList.From(ref block))); @@ -4671,7 +4697,7 @@ private ArrayList ParseDecorators() return decorators; } - private ClassElement ParseClassElement(ref bool hasConstructor) + private ClassElement ParseClassElement(bool hasSuperClass, ref bool hasConstructor) { Token token; var node = CreateNode(); @@ -4855,29 +4881,14 @@ private ClassElement ParseClassElement(ref bool hasConstructor) { case PropertyKind.Get: case PropertyKind.Set: - _context.AllowYield = false; value = kind == PropertyKind.Get ? ParseGetterMethod() : ParseSetterMethod(); - return Finalize(node, new MethodDefinition(key!, computed, (FunctionExpression) value!, kind, isStatic, NodeList.From(ref decorators))); + return Finalize(node, new MethodDefinition(key, computed, (FunctionExpression) value!, kind, isStatic, NodeList.From(ref decorators))); case PropertyKind.Constructor: case PropertyKind.Method: - if (!isGenerator) - { - var previousAllowSuper = _context.AllowSuper; - var previousInClassConstructor = _context.InClassConstructor; - _context.InClassConstructor = kind == PropertyKind.Constructor; - if (!_context.InClassConstructor) - { - _context.AllowSuper = true; - } - value = isAsync ? ParsePropertyMethodAsyncFunction(isGenerator) : ParsePropertyMethodFunction(isGenerator); - _context.InClassConstructor = previousInClassConstructor; - _context.AllowSuper = previousAllowSuper; - } - else - { - value = ParseGeneratorMethod(isAsync); - } + value = !isGenerator + ? ParsePropertyMethodFunction(isAsync, isGenerator, allowSuperCall: kind == PropertyKind.Constructor && hasSuperClass) + : ParseGeneratorMethod(isAsync); return Finalize(node, new MethodDefinition(key!, computed, (FunctionExpression) value!, kind, isStatic, NodeList.From(ref decorators))); case PropertyKind.Property: @@ -4888,10 +4899,13 @@ private ClassElement ParseClassElement(ref bool hasConstructor) { ThrowUnexpectedToken(_lookahead, Messages.ArgumentsNotAllowedInClassField); } - var previousAllowSuper = _context.AllowSuper; - _context.AllowSuper = true; + var previousAllowSuperAccess = _context.AllowSuperAccess; + var previousAllowSuperCall = _context.AllowSuperCall; + _context.AllowSuperAccess = true; + _context.AllowSuperCall = false; value = IsolateCoverGrammar(_parseAssignmentExpression); - _context.AllowSuper = previousAllowSuper; + _context.AllowSuperAccess = previousAllowSuperAccess; + _context.AllowSuperCall = previousAllowSuperCall; } else { @@ -4909,7 +4923,7 @@ private ClassElement ParseClassElement(ref bool hasConstructor) } } - private ArrayList ParseClassElementList() + private ArrayList ParseClassElementList(bool hasSuperClass) { var body = new ArrayList(); var hasConstructor = false; @@ -4923,7 +4937,7 @@ private ArrayList ParseClassElementList() } else { - body.Push(ParseClassElement(ref hasConstructor)); + body.Push(ParseClassElement(hasSuperClass, ref hasConstructor)); } } @@ -4932,12 +4946,12 @@ private ArrayList ParseClassElementList() return body; } - private ClassBody ParseClassBody() + private ClassBody ParseClassBody(bool hasSuperClass) { var node = CreateNode(); var previousInClassBody = _context.InClassBody; _context.InClassBody = true; - var elementList = ParseClassElementList(); + var elementList = ParseClassElementList(hasSuperClass); _context.InClassBody = previousInClassBody; return Finalize(node, new ClassBody(NodeList.From(ref elementList))); @@ -4946,9 +4960,7 @@ private ClassBody ParseClassBody() private ClassDeclaration ParseClassDeclarationCore(in Marker node, bool identifierIsOptional = false) { var previousStrict = _context.Strict; - var previousAllowSuper = _context.AllowSuper; _context.Strict = true; - _context.AllowSuper = false; ExpectKeyword("class"); @@ -4961,12 +4973,10 @@ private ClassDeclaration ParseClassDeclarationCore(in Marker node, bool identifi { NextToken(); superClass = IsolateCoverGrammar(_parseLeftHandSideExpressionAllowCall); - _context.AllowSuper = true; } - var classBody = ParseClassBody(); + var classBody = ParseClassBody(hasSuperClass: superClass is not null); _context.Strict = previousStrict; - _context.AllowSuper = previousAllowSuper; return Finalize(node, new ClassDeclaration(id, superClass, classBody, NodeList.From(ref _context.Decorators))); } @@ -4993,9 +5003,7 @@ private ClassExpression ParseClassExpression() var node = CreateNode(); var previousStrict = _context.Strict; - var previousAllowSuper = _context.AllowSuper; _context.Strict = true; - _context.AllowSuper = false; ExpectKeyword("class"); var id = _lookahead.Type == TokenType.Identifier @@ -5007,12 +5015,10 @@ private ClassExpression ParseClassExpression() { NextToken(); superClass = IsolateCoverGrammar(_parseLeftHandSideExpressionAllowCall); - _context.AllowSuper = true; } - var classBody = ParseClassBody(); + var classBody = ParseClassBody(hasSuperClass: superClass is not null); _context.Strict = previousStrict; - _context.AllowSuper = previousAllowSuper; return Finalize(node, new ClassExpression(id, superClass, classBody, NodeList.From(ref _context.Decorators))); } diff --git a/src/Esprima/Messages.cs b/src/Esprima/Messages.cs index 3333bb31..4a4fd77c 100644 --- a/src/Esprima/Messages.cs +++ b/src/Esprima/Messages.cs @@ -1,7 +1,7 @@ namespace Esprima; // Error messages should be identical to V8. -public static class Messages +internal static class Messages { public const string ArgumentsNotAllowedInClassField = "'arguments' is not allowed in class field initializer or static initialization block"; public const string AsyncFunctionInSingleStatementContext = "Async functions can only be declared at the top level or inside a block."; @@ -80,6 +80,7 @@ public static class Messages public const string UnexpectedEOS = "Unexpected end of input"; public const string UnexpectedIdentifier = "Unexpected identifier"; public const string UnexpectedNumber = "Unexpected number"; + public const string UnexpectedPrivateField = "Unexpected private field"; public const string UnexpectedReserved = "Unexpected reserved word"; public const string UnexpectedString = "Unexpected string"; public const string UnexpectedSuper = "'super' keyword unexpected here"; diff --git a/test/Esprima.Tests.Test262/allow-list.txt b/test/Esprima.Tests.Test262/allow-list.txt index 0e4fa208..18185bed 100644 --- a/test/Esprima.Tests.Test262/allow-list.txt +++ b/test/Esprima.Tests.Test262/allow-list.txt @@ -327,16 +327,12 @@ test/language/expressions/class/elements/fields-duplicate-privatenames.js(defaul test/language/expressions/class/elements/fields-duplicate-privatenames.js(strict mode) test/language/expressions/class/elements/nested-arrow-fnc-init-err-contains-arguments.js(default) test/language/expressions/class/elements/nested-arrow-fnc-init-err-contains-arguments.js(strict mode) -test/language/expressions/class/elements/nested-arrow-fnc-init-err-contains-super.js(default) -test/language/expressions/class/elements/nested-arrow-fnc-init-err-contains-super.js(strict mode) test/language/expressions/class/elements/nested-comp-name-init-err-contains-arguments.js(default) test/language/expressions/class/elements/nested-comp-name-init-err-contains-arguments.js(strict mode) test/language/expressions/class/elements/nested-literal-name-init-err-contains-arguments.js(default) test/language/expressions/class/elements/nested-literal-name-init-err-contains-arguments.js(strict mode) test/language/expressions/class/elements/nested-private-arrow-fnc-init-err-contains-arguments.js(default) test/language/expressions/class/elements/nested-private-arrow-fnc-init-err-contains-arguments.js(strict mode) -test/language/expressions/class/elements/nested-private-arrow-fnc-init-err-contains-super.js(default) -test/language/expressions/class/elements/nested-private-arrow-fnc-init-err-contains-super.js(strict mode) test/language/expressions/class/elements/nested-private-literal-name-init-err-contains-arguments.js(default) test/language/expressions/class/elements/nested-private-literal-name-init-err-contains-arguments.js(strict mode) test/language/expressions/class/elements/nested-private-ternary-init-err-contains-arguments.js(default) @@ -369,8 +365,6 @@ test/language/expressions/class/elements/syntax/early-errors/grammar-private-env test/language/expressions/class/elements/syntax/early-errors/grammar-private-environment-on-class-heritage-recursive.js(strict mode) test/language/expressions/class/elements/syntax/early-errors/grammar-private-environment-on-class-heritage.js(default) test/language/expressions/class/elements/syntax/early-errors/grammar-private-environment-on-class-heritage.js(strict mode) -test/language/expressions/class/elements/syntax/early-errors/grammar-private-field-super-access.js(default) -test/language/expressions/class/elements/syntax/early-errors/grammar-private-field-super-access.js(strict mode) test/language/expressions/class/elements/syntax/early-errors/grammar-privatemeth-duplicate-async-gen.js(default) test/language/expressions/class/elements/syntax/early-errors/grammar-privatemeth-duplicate-async-gen.js(strict mode) test/language/expressions/class/elements/syntax/early-errors/grammar-privatemeth-duplicate-async.js(default) @@ -401,56 +395,16 @@ test/language/expressions/class/elements/syntax/early-errors/grammar-privatename test/language/expressions/class/elements/syntax/early-errors/grammar-privatename-constructor.js(strict mode) test/language/expressions/class/elements/syntax/early-errors/grammar-privatename-in-computed-property-missing.js(default) test/language/expressions/class/elements/syntax/early-errors/grammar-privatename-in-computed-property-missing.js(strict mode) -test/language/expressions/class/elements/syntax/early-errors/grammar-special-meth-contains-super-async-gen.js(default) -test/language/expressions/class/elements/syntax/early-errors/grammar-special-meth-contains-super-async-gen.js(strict mode) -test/language/expressions/class/elements/syntax/early-errors/grammar-special-meth-contains-super-async.js(default) -test/language/expressions/class/elements/syntax/early-errors/grammar-special-meth-contains-super-async.js(strict mode) -test/language/expressions/class/elements/syntax/early-errors/grammar-special-meth-contains-super-gen.js(default) -test/language/expressions/class/elements/syntax/early-errors/grammar-special-meth-contains-super-gen.js(strict mode) -test/language/expressions/class/elements/syntax/early-errors/grammar-special-meth-contains-super-get.js(default) -test/language/expressions/class/elements/syntax/early-errors/grammar-special-meth-contains-super-get.js(strict mode) -test/language/expressions/class/elements/syntax/early-errors/grammar-special-meth-contains-super-method.js(default) -test/language/expressions/class/elements/syntax/early-errors/grammar-special-meth-contains-super-method.js(strict mode) -test/language/expressions/class/elements/syntax/early-errors/grammar-special-meth-contains-super-private-async-gen.js(default) -test/language/expressions/class/elements/syntax/early-errors/grammar-special-meth-contains-super-private-async-gen.js(strict mode) -test/language/expressions/class/elements/syntax/early-errors/grammar-special-meth-contains-super-private-async.js(default) -test/language/expressions/class/elements/syntax/early-errors/grammar-special-meth-contains-super-private-async.js(strict mode) -test/language/expressions/class/elements/syntax/early-errors/grammar-special-meth-contains-super-private-gen.js(default) -test/language/expressions/class/elements/syntax/early-errors/grammar-special-meth-contains-super-private-gen.js(strict mode) -test/language/expressions/class/elements/syntax/early-errors/grammar-special-meth-contains-super-private-method.js(default) -test/language/expressions/class/elements/syntax/early-errors/grammar-special-meth-contains-super-private-method.js(strict mode) -test/language/expressions/class/elements/syntax/early-errors/grammar-special-meth-contains-super-set.js(default) -test/language/expressions/class/elements/syntax/early-errors/grammar-special-meth-contains-super-set.js(strict mode) -test/language/expressions/class/elements/syntax/early-errors/grammar-static-async-gen-meth-super.js(default) -test/language/expressions/class/elements/syntax/early-errors/grammar-static-async-gen-meth-super.js(strict mode) -test/language/expressions/class/elements/syntax/early-errors/grammar-static-async-meth-super.js(default) -test/language/expressions/class/elements/syntax/early-errors/grammar-static-async-meth-super.js(strict mode) -test/language/expressions/class/elements/syntax/early-errors/grammar-static-gen-meth-super.js(default) -test/language/expressions/class/elements/syntax/early-errors/grammar-static-gen-meth-super.js(strict mode) -test/language/expressions/class/elements/syntax/early-errors/grammar-static-get-meth-super.js(default) -test/language/expressions/class/elements/syntax/early-errors/grammar-static-get-meth-super.js(strict mode) -test/language/expressions/class/elements/syntax/early-errors/grammar-static-meth-super.js(default) -test/language/expressions/class/elements/syntax/early-errors/grammar-static-meth-super.js(strict mode) test/language/expressions/class/elements/syntax/early-errors/grammar-static-private-async-gen-meth-constructor.js(default) test/language/expressions/class/elements/syntax/early-errors/grammar-static-private-async-gen-meth-constructor.js(strict mode) -test/language/expressions/class/elements/syntax/early-errors/grammar-static-private-async-gen-meth-super.js(default) -test/language/expressions/class/elements/syntax/early-errors/grammar-static-private-async-gen-meth-super.js(strict mode) test/language/expressions/class/elements/syntax/early-errors/grammar-static-private-async-meth-constructor.js(default) test/language/expressions/class/elements/syntax/early-errors/grammar-static-private-async-meth-constructor.js(strict mode) -test/language/expressions/class/elements/syntax/early-errors/grammar-static-private-async-meth-super.js(default) -test/language/expressions/class/elements/syntax/early-errors/grammar-static-private-async-meth-super.js(strict mode) test/language/expressions/class/elements/syntax/early-errors/grammar-static-private-gen-meth-constructor.js(default) test/language/expressions/class/elements/syntax/early-errors/grammar-static-private-gen-meth-constructor.js(strict mode) -test/language/expressions/class/elements/syntax/early-errors/grammar-static-private-gen-meth-super.js(default) -test/language/expressions/class/elements/syntax/early-errors/grammar-static-private-gen-meth-super.js(strict mode) test/language/expressions/class/elements/syntax/early-errors/grammar-static-private-meth-constructor.js(default) test/language/expressions/class/elements/syntax/early-errors/grammar-static-private-meth-constructor.js(strict mode) -test/language/expressions/class/elements/syntax/early-errors/grammar-static-private-meth-super.js(default) -test/language/expressions/class/elements/syntax/early-errors/grammar-static-private-meth-super.js(strict mode) test/language/expressions/class/elements/syntax/early-errors/grammar-static-privatename-constructor.js(default) test/language/expressions/class/elements/syntax/early-errors/grammar-static-privatename-constructor.js(strict mode) -test/language/expressions/class/elements/syntax/early-errors/grammar-static-set-meth-super.js(default) -test/language/expressions/class/elements/syntax/early-errors/grammar-static-set-meth-super.js(strict mode) test/language/expressions/class/elements/syntax/early-errors/invalid-names/field-init-call-expression-bad-reference.js(default) test/language/expressions/class/elements/syntax/early-errors/invalid-names/field-init-call-expression-bad-reference.js(strict mode) test/language/expressions/class/elements/syntax/early-errors/invalid-names/field-init-call-expression-this.js(default) @@ -507,8 +461,6 @@ test/language/expressions/class/elements/syntax/early-errors/invalid-names/metho test/language/expressions/class/elements/syntax/early-errors/invalid-names/method-outter-member-expression-bad-reference.js(strict mode) test/language/expressions/class/elements/syntax/early-errors/invalid-names/method-outter-member-expression-this.js(default) test/language/expressions/class/elements/syntax/early-errors/invalid-names/method-outter-member-expression-this.js(strict mode) -test/language/expressions/class/elements/syntax/early-errors/super-private-access-invalid.js(default) -test/language/expressions/class/elements/syntax/early-errors/super-private-access-invalid.js(strict mode) test/language/expressions/class/elements/ternary-init-err-contains-arguments.js(default) test/language/expressions/class/elements/ternary-init-err-contains-arguments.js(strict mode) test/language/expressions/class/elements/typeof-init-err-contains-arguments.js(default) @@ -537,11 +489,7 @@ test/language/expressions/object/method-definition/async-gen-meth-escaped-async. test/language/expressions/object/method-definition/async-gen-meth-escaped-async.js(strict mode) test/language/expressions/object/method-definition/async-meth-escaped-async.js(default) test/language/expressions/object/method-definition/async-meth-escaped-async.js(strict mode) -test/language/expressions/object/method-definition/async-super-call-param.js(default) -test/language/expressions/object/method-definition/async-super-call-param.js(strict mode) test/language/expressions/object/method-definition/early-errors-object-async-method-duplicate-parameters.js(default) -test/language/expressions/object/method-definition/early-errors-object-method-body-contains-super-call.js(default) -test/language/expressions/object/method-definition/early-errors-object-method-body-contains-super-call.js(strict mode) test/language/expressions/object/method-definition/early-errors-object-method-duplicate-parameters.js(default) test/language/expressions/object/method-definition/generator-param-id-yield.js(default) test/language/expressions/object/method-definition/generator-param-init-yield.js(default) @@ -549,16 +497,8 @@ test/language/expressions/object/method-definition/generator-param-redecl-const. test/language/expressions/object/method-definition/generator-param-redecl-const.js(strict mode) test/language/expressions/object/method-definition/generator-param-redecl-let.js(default) test/language/expressions/object/method-definition/generator-param-redecl-let.js(strict mode) -test/language/expressions/object/method-definition/generator-super-call-body.js(default) -test/language/expressions/object/method-definition/generator-super-call-body.js(strict mode) -test/language/expressions/object/method-definition/generator-super-prop-param.js(default) -test/language/expressions/object/method-definition/generator-super-prop-param.js(strict mode) test/language/expressions/object/method-definition/name-param-redecl.js(default) test/language/expressions/object/method-definition/name-param-redecl.js(strict mode) -test/language/expressions/object/method-definition/name-super-call-body.js(default) -test/language/expressions/object/method-definition/name-super-call-body.js(strict mode) -test/language/expressions/object/method-definition/name-super-prop-param.js(default) -test/language/expressions/object/method-definition/name-super-prop-param.js(strict mode) test/language/expressions/object/method-definition/yield-as-parameter.js(default) test/language/expressions/object/prop-def-invalid-async-prefix.js(default) test/language/expressions/object/prop-def-invalid-async-prefix.js(strict mode) @@ -897,10 +837,6 @@ test/language/statements/class/async-gen-meth-escaped-async.js(default) test/language/statements/class/async-gen-meth-escaped-async.js(strict mode) test/language/statements/class/async-meth-escaped-async.js(default) test/language/statements/class/async-meth-escaped-async.js(strict mode) -test/language/statements/class/definition/early-errors-class-method-body-contains-super-call.js(default) -test/language/statements/class/definition/early-errors-class-method-body-contains-super-call.js(strict mode) -test/language/statements/class/definition/methods-async-super-call-param.js(default) -test/language/statements/class/definition/methods-async-super-call-param.js(strict mode) test/language/statements/class/elements/arrow-fnc-init-err-contains-arguments.js(default) test/language/statements/class/elements/arrow-fnc-init-err-contains-arguments.js(strict mode) test/language/statements/class/elements/equality-init-err-contains-arguments.js(default) @@ -909,16 +845,12 @@ test/language/statements/class/elements/fields-duplicate-privatenames.js(default test/language/statements/class/elements/fields-duplicate-privatenames.js(strict mode) test/language/statements/class/elements/nested-arrow-fnc-init-err-contains-arguments.js(default) test/language/statements/class/elements/nested-arrow-fnc-init-err-contains-arguments.js(strict mode) -test/language/statements/class/elements/nested-arrow-fnc-init-err-contains-super.js(default) -test/language/statements/class/elements/nested-arrow-fnc-init-err-contains-super.js(strict mode) test/language/statements/class/elements/nested-comp-name-init-err-contains-arguments.js(default) test/language/statements/class/elements/nested-comp-name-init-err-contains-arguments.js(strict mode) test/language/statements/class/elements/nested-literal-name-init-err-contains-arguments.js(default) test/language/statements/class/elements/nested-literal-name-init-err-contains-arguments.js(strict mode) test/language/statements/class/elements/nested-private-arrow-fnc-init-err-contains-arguments.js(default) test/language/statements/class/elements/nested-private-arrow-fnc-init-err-contains-arguments.js(strict mode) -test/language/statements/class/elements/nested-private-arrow-fnc-init-err-contains-super.js(default) -test/language/statements/class/elements/nested-private-arrow-fnc-init-err-contains-super.js(strict mode) test/language/statements/class/elements/nested-private-literal-name-init-err-contains-arguments.js(default) test/language/statements/class/elements/nested-private-literal-name-init-err-contains-arguments.js(strict mode) test/language/statements/class/elements/nested-private-ternary-init-err-contains-arguments.js(default) @@ -959,8 +891,6 @@ test/language/statements/class/elements/syntax/early-errors/grammar-private-envi test/language/statements/class/elements/syntax/early-errors/grammar-private-environment-on-class-heritage-recursive.js(strict mode) test/language/statements/class/elements/syntax/early-errors/grammar-private-environment-on-class-heritage.js(default) test/language/statements/class/elements/syntax/early-errors/grammar-private-environment-on-class-heritage.js(strict mode) -test/language/statements/class/elements/syntax/early-errors/grammar-private-field-super-access.js(default) -test/language/statements/class/elements/syntax/early-errors/grammar-private-field-super-access.js(strict mode) test/language/statements/class/elements/syntax/early-errors/grammar-privatemeth-duplicate-async-gen.js(default) test/language/statements/class/elements/syntax/early-errors/grammar-privatemeth-duplicate-async-gen.js(strict mode) test/language/statements/class/elements/syntax/early-errors/grammar-privatemeth-duplicate-async.js(default) @@ -991,56 +921,16 @@ test/language/statements/class/elements/syntax/early-errors/grammar-privatename- test/language/statements/class/elements/syntax/early-errors/grammar-privatename-constructor.js(strict mode) test/language/statements/class/elements/syntax/early-errors/grammar-privatename-in-computed-property-missing.js(default) test/language/statements/class/elements/syntax/early-errors/grammar-privatename-in-computed-property-missing.js(strict mode) -test/language/statements/class/elements/syntax/early-errors/grammar-special-meth-contains-super-async-gen.js(default) -test/language/statements/class/elements/syntax/early-errors/grammar-special-meth-contains-super-async-gen.js(strict mode) -test/language/statements/class/elements/syntax/early-errors/grammar-special-meth-contains-super-async.js(default) -test/language/statements/class/elements/syntax/early-errors/grammar-special-meth-contains-super-async.js(strict mode) -test/language/statements/class/elements/syntax/early-errors/grammar-special-meth-contains-super-gen.js(default) -test/language/statements/class/elements/syntax/early-errors/grammar-special-meth-contains-super-gen.js(strict mode) -test/language/statements/class/elements/syntax/early-errors/grammar-special-meth-contains-super-get.js(default) -test/language/statements/class/elements/syntax/early-errors/grammar-special-meth-contains-super-get.js(strict mode) -test/language/statements/class/elements/syntax/early-errors/grammar-special-meth-contains-super-method.js(default) -test/language/statements/class/elements/syntax/early-errors/grammar-special-meth-contains-super-method.js(strict mode) -test/language/statements/class/elements/syntax/early-errors/grammar-special-meth-contains-super-private-async-gen.js(default) -test/language/statements/class/elements/syntax/early-errors/grammar-special-meth-contains-super-private-async-gen.js(strict mode) -test/language/statements/class/elements/syntax/early-errors/grammar-special-meth-contains-super-private-async.js(default) -test/language/statements/class/elements/syntax/early-errors/grammar-special-meth-contains-super-private-async.js(strict mode) -test/language/statements/class/elements/syntax/early-errors/grammar-special-meth-contains-super-private-gen.js(default) -test/language/statements/class/elements/syntax/early-errors/grammar-special-meth-contains-super-private-gen.js(strict mode) -test/language/statements/class/elements/syntax/early-errors/grammar-special-meth-contains-super-private-method.js(default) -test/language/statements/class/elements/syntax/early-errors/grammar-special-meth-contains-super-private-method.js(strict mode) -test/language/statements/class/elements/syntax/early-errors/grammar-special-meth-contains-super-set.js(default) -test/language/statements/class/elements/syntax/early-errors/grammar-special-meth-contains-super-set.js(strict mode) -test/language/statements/class/elements/syntax/early-errors/grammar-static-async-gen-meth-super.js(default) -test/language/statements/class/elements/syntax/early-errors/grammar-static-async-gen-meth-super.js(strict mode) -test/language/statements/class/elements/syntax/early-errors/grammar-static-async-meth-super.js(default) -test/language/statements/class/elements/syntax/early-errors/grammar-static-async-meth-super.js(strict mode) -test/language/statements/class/elements/syntax/early-errors/grammar-static-gen-meth-super.js(default) -test/language/statements/class/elements/syntax/early-errors/grammar-static-gen-meth-super.js(strict mode) -test/language/statements/class/elements/syntax/early-errors/grammar-static-get-meth-super.js(default) -test/language/statements/class/elements/syntax/early-errors/grammar-static-get-meth-super.js(strict mode) -test/language/statements/class/elements/syntax/early-errors/grammar-static-meth-super.js(default) -test/language/statements/class/elements/syntax/early-errors/grammar-static-meth-super.js(strict mode) test/language/statements/class/elements/syntax/early-errors/grammar-static-private-async-gen-meth-constructor.js(default) test/language/statements/class/elements/syntax/early-errors/grammar-static-private-async-gen-meth-constructor.js(strict mode) -test/language/statements/class/elements/syntax/early-errors/grammar-static-private-async-gen-meth-super.js(default) -test/language/statements/class/elements/syntax/early-errors/grammar-static-private-async-gen-meth-super.js(strict mode) test/language/statements/class/elements/syntax/early-errors/grammar-static-private-async-meth-constructor.js(default) test/language/statements/class/elements/syntax/early-errors/grammar-static-private-async-meth-constructor.js(strict mode) -test/language/statements/class/elements/syntax/early-errors/grammar-static-private-async-meth-super.js(default) -test/language/statements/class/elements/syntax/early-errors/grammar-static-private-async-meth-super.js(strict mode) test/language/statements/class/elements/syntax/early-errors/grammar-static-private-gen-meth-constructor.js(default) test/language/statements/class/elements/syntax/early-errors/grammar-static-private-gen-meth-constructor.js(strict mode) -test/language/statements/class/elements/syntax/early-errors/grammar-static-private-gen-meth-super.js(default) -test/language/statements/class/elements/syntax/early-errors/grammar-static-private-gen-meth-super.js(strict mode) test/language/statements/class/elements/syntax/early-errors/grammar-static-private-meth-constructor.js(default) test/language/statements/class/elements/syntax/early-errors/grammar-static-private-meth-constructor.js(strict mode) -test/language/statements/class/elements/syntax/early-errors/grammar-static-private-meth-super.js(default) -test/language/statements/class/elements/syntax/early-errors/grammar-static-private-meth-super.js(strict mode) test/language/statements/class/elements/syntax/early-errors/grammar-static-privatename-constructor.js(default) test/language/statements/class/elements/syntax/early-errors/grammar-static-privatename-constructor.js(strict mode) -test/language/statements/class/elements/syntax/early-errors/grammar-static-set-meth-super.js(default) -test/language/statements/class/elements/syntax/early-errors/grammar-static-set-meth-super.js(strict mode) test/language/statements/class/elements/syntax/early-errors/invalid-names/field-init-call-expression-bad-reference.js(default) test/language/statements/class/elements/syntax/early-errors/invalid-names/field-init-call-expression-bad-reference.js(strict mode) test/language/statements/class/elements/syntax/early-errors/invalid-names/field-init-call-expression-this.js(default) @@ -1097,8 +987,6 @@ test/language/statements/class/elements/syntax/early-errors/invalid-names/method test/language/statements/class/elements/syntax/early-errors/invalid-names/method-outter-member-expression-bad-reference.js(strict mode) test/language/statements/class/elements/syntax/early-errors/invalid-names/method-outter-member-expression-this.js(default) test/language/statements/class/elements/syntax/early-errors/invalid-names/method-outter-member-expression-this.js(strict mode) -test/language/statements/class/elements/syntax/early-errors/super-private-access-invalid.js(default) -test/language/statements/class/elements/syntax/early-errors/super-private-access-invalid.js(strict mode) test/language/statements/class/elements/ternary-init-err-contains-arguments.js(default) test/language/statements/class/elements/ternary-init-err-contains-arguments.js(strict mode) test/language/statements/class/elements/typeof-init-err-contains-arguments.js(default) @@ -1127,8 +1015,6 @@ test/language/statements/class/static-init-invalid-return.js(default) test/language/statements/class/static-init-invalid-return.js(strict mode) test/language/statements/class/static-init-invalid-yield.js(default) test/language/statements/class/static-init-invalid-yield.js(strict mode) -test/language/statements/class/static-init-super-property.js(default) -test/language/statements/class/static-init-super-property.js(strict mode) test/language/statements/class/syntax/early-errors/class-definition-evaluation-block-duplicate-binding.js(default) test/language/statements/class/syntax/early-errors/class-definition-evaluation-block-duplicate-binding.js(strict mode) test/language/statements/class/syntax/early-errors/class-definition-evaluation-scriptbody-duplicate-binding.js(default)