class fields: add early errors for argument and super

# Conflicts:
#	src/class-fields/init-err-contains-super.case
This commit is contained in:
Valerie R Young 2017-10-12 17:30:16 -04:00 committed by Leo Balter
parent 9cb6333cb9
commit f2d76e60f2
8 changed files with 129 additions and 0 deletions

View File

@ -0,0 +1,28 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
desc: Syntax error if `arguments` used in class field
info: |
Static Semantics: Early Errors
FieldDefinition:
PropertyNameInitializeropt
- It is a Syntax Error if ContainsArguments of Initializer is true.
Static Semantics: ContainsArguments
IdentifierReference : Identifier
1. If the StringValue of Identifier is "arguments", return true.
...
For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
features: [class-fields]
negative:
type: SyntaxError
phase: early
template: initializer-error
---*/
//- initializer
arguments

View File

@ -0,0 +1,15 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-class-definitions-static-semantics-early-errors
path: language/statements/class/fields-comp-name-
name: computed ClassElementName
---*/
throw "Test262: This statement should not be evaluated.";
var x = "string";
class C {
static [x] = /*{ initializer }*/;
}

View File

@ -0,0 +1,15 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-class-definitions-static-semantics-early-errors
path: language/statements/class/fields-static-comp-name-
name: static computed ClassElementName
---*/
throw "Test262: This statement should not be evaluated.";
var x = "string";
class C {
static [x] = /*{ initializer }*/;
}

View File

@ -0,0 +1,14 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-class-definitions-static-semantics-early-errors
path: language/statements/class/fields-static-literal-
name: static literal ClassElementName
---*/
throw "Test262: This statement should not be evaluated.";
class C {
static x = /*{ initializer }*/;
}

View File

@ -0,0 +1,14 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-class-definitions-static-semantics-early-errors
path: language/statements/class/fields-static-string-literal-name-
name: static string literal ClassElementName
---*/
throw "Test262: This statement should not be evaluated.";
class C {
static 'x' = /*{ initializer }*/;
}

View File

@ -0,0 +1,15 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-class-definitions-static-semantics-early-errors
path: language/expressions/class/fields-static-comp-name-
name: static computed ClassElementName
---*/
throw "Test262: This statement should not be evaluated.";
var x = "string";
var C = class {
static [x] = /*{ initializer }*/;
}

View File

@ -0,0 +1,14 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-class-definitions-static-semantics-early-errors
path: language/expressions/class/fields-static-literal-
name: static literal ClassElementName
---*/
throw "Test262: This statement should not be evaluated.";
var C = class {
static x = /*{ initializer }*/;
}

View File

@ -0,0 +1,14 @@
// Copyright (C) 2017 Valerie Young. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-class-definitions-static-semantics-early-errors
path: language/expressions/class/fields-static-string-literal-name-
name: static string literal ClassElementName
---*/
throw "Test262: This statement should not be evaluated.";
var C = class {
static 'x' = /*{ initializer }*/;
}