-
ArrayBinding
restElement
must be BindingIdentifier ornull
except when ArrayBinding is part of an AssignmentPattern
-
BindingIdentifier
name
must match the ES6 IdentifierName lexical grammar except whenname
is"*default*"
and BindingIdentifier is thename
of a ClassDeclaration or FunctionDeclaration which is thebody
of an ExportDefaultname
must not be a reserved wordname
must not be a future reserved word in strict mode- (12.1.1 and 12.14.5.1 and 14.1.2 and 14.4.1)
name
must not be a restricted word in strict mode - (12.1.1)
name
must not beyield
in strict mode
-
ImportSpecifier
name
must match the ES6 IdentifierName lexical grammar
-
ExportSpecifier
- (15.2.3.1?)
name
must not be a reserved word or future reserved word except when ExportSpecifier is thenamedExports
of an ExportFrom
- (15.2.3.1?)
-
Method
- (14.3.1 and 14.4.1)
body
must not contain (without crossing a lexical boundary) a FunctionDeclaration, ClassDeclaration, or VariableDeclaration withkind
oflet
orconst
whose bound names intersect the bound names ofparams
- (14.3.1 and 14.4.1)
-
Setter
param
must not contain a MemberExpression- (14.3.1)
param
must not have duplicate bindings - (14.3.1)
body
must not contain (without crossing a lexical boundary) a FunctionDeclaration, ClassDeclaration, or VariableDeclaration withkind
oflet
orconst
whose bound names intersect the bound names ofparams
-
ShorthandProperty
name
must match the ES6 IdentifierName lexical grammarname
must not be a reserved word- (12.1.1)
name
must not be a future reserved word in strict mode - (12.1.1)
name
must not beyield
in strict mode
-
ArrowExpression
- (14.2.1)
body
must not contain (without crossing a lexical boundary) a FunctionDeclaration, ClassDeclaration, or VariableDeclaration withkind
oflet
orconst
whose bound names intersect the bound names ofparams
- (14.2.1)
-
AssignmentExpression
- (12.14.1)
binding
must be a BindingIdentifier or MemberExpression whenoperator
is not"="
- (12.14.1)
-
FunctionExpression
- (14.1.2)
body
must not contain (without crossing a lexical boundary) a FunctionDeclaration, ClassDeclaration, or VariableDeclaration withkind
oflet
orconst
whose bound names intersect the bound names ofparams
- (14.1.2)
-
IdentifierExpression
name
must match the ES6 IdentifierName lexical grammarname
must not be a reserved word- (12.1.1)
name
must not be a future reserved word in strict mode - (12.1.1)
name
must not beyield
in strict mode
-
LiteralNumericExpression
value
must be finitevalue
must not be a NaN valuevalue
must be non-negative
-
LiteralRegExpExpression
- (12.2.7.1)
pattern
must match the ES6 Pattern lexical grammar - (12.2.7.1)
flags
must not contain any characters other than "g", "i", "m", "u", or "y" - (12.2.7.1)
flags
must not contain more than one instance of any single character
- (12.2.7.1)
-
ObjectExpression
- (12.2.5.1 and B.3.1) ObjectExpression must not have more than data property with name
__proto__
- (12.2.5.1)
properties
must not contain a BindingWithDefault
- (12.2.5.1 and B.3.1) ObjectExpression must not have more than data property with name
-
PostfixExpression
- (12.4.1)
operand
must be a BindingIdentifier or MemberExpression ifoperator
is++
or--
- (12.4.1)
-
PrefixExpression
- (12.5.1)
operand
must be a BindingIdentifier or MemberExpression ifoperator
is++
or--
- (12.5.4.1)
operand
must not be an IdentifierExpression ifoperator
isdelete
in strict mode
- (12.5.1)
-
StaticMemberExpression
property
must match the ES6 IdentifierName lexical grammar
-
TemplateExpression
elements
must be non-emptyelements
must alternate between TemplateElement and Expression- the first and last elements of
elements
must be TemplateElements
-
BreakStatement
label
must match the ES6 IdentifierName lexical grammar whenlabel
is non-null
label
must not be a reserved word- (12.1.1)
label
must not be a future reserved word in strict mode - (12.1.1)
label
must not beyield
in strict mode - (14.1.2 and 15.1.1 and 15.2.1.1) BreakStatement with label must be within a correspondingly labeled statement (without crossing a function boundary)
- (13.8.1) BreakStatement without label must be within an IterationStatement or a SwitchStatement
-
ContinueStatement
label
must match the ES6 IdentifierName lexical grammar whenlabel
is non-null
label
must not be a reserved word- (12.1.1)
label
must not be a future reserved word in strict mode - (12.1.1)
label
must not beyield
in strict mode - (13.7.1 and 14.1.2 and 15.1.1 and 15.2.1.1) ContinueStatement with label must be within a labeled iteration statement (without crossing a function boundary)
- (13.7.1) ContinueStatement without label must be within an iteration statement
-
DoWhileStatement
- (13.6.0.1)
body
must not be a LabeledStatement whosebody
is a FunctionDeclaration
- (13.6.0.1)
-
ForInStatement
left
must not be a VariableDeclaration with more than one VariableDeclarator in itsdeclarators
- (13.6.4.1)
body
must not contain (without crossing a function boundary) a VariableDeclaration withkind
ofvar
whose bound names intersect the bound names ofleft
ifleft
is a VariableDeclaration withkind
oflet
orconst
- (13.6.0.1)
body
must not be a LabeledStatement whosebody
is a FunctionDeclaration
-
ForOfStatement
left
must not be a VariableDeclaration with more than one VariableDeclarator in itsdeclarators
- (13.6.4.1)
body
must not contain (without crossing a function boundary) a VariableDeclaration withkind
ofvar
whose bound names intersect the bound names ofleft
ifleft
is a VariableDeclaration withkind
oflet
orconst
- (13.6.0.1)
body
must not be a LabeledStatement whosebody
is a FunctionDeclaration
-
ForStatement
- (13.6.3.1)
body
must not contain (without crossing a function boundary) a VariableDeclaration withkind
ofvar
whose bound names intersect the bound names ofinit
ifinit
is a VariableDeclaration withkind
oflet
orconst
- (13.6.0.1)
body
must not be a LabeledStatement whosebody
is a FunctionDeclaration
- (13.6.3.1)
-
IfStatement
consequent
must not have a trailingelse
whenalternate
isnull
- (13.5.1)
consequent
andalternate
must not be a LabeledStatement whosebody
is a FunctionDeclaration
-
LabeledStatement
- (13.12.1)
body
must not be a FunctionDeclaration in strict mode body
must not be a FunctionDeclaration ifisGenerator
of FunctionDeclaration istrue
label
must match the ES6 IdentifierName lexical grammarlabel
must not be a reserved word- (12.1.1)
label
must not be a future reserved word in strict mode - (12.1.1)
label
must not beyield
in strict mode - (14.1.2 and 15.1.1 and 15.2.1.1) LabeledStatement must not contain (without crossing a function boundary) a LabeledStatement with the same label
- (13.12.1)
-
ReturnStatement
- ReturnStatement must be nested within a FunctionExpression, FunctionDeclaration, Getter, Setter, Method, or ArrowExpression node
-
SwitchStatement
- (13.11.1)
cases
must not contain (without crossing a lexical boundary) a VariableDeclaration withkind
oflet
orconst
whose bound names intersect the bound names of another VariableDeclaration withkind
oflet
orconst
contained (without crossing a lexical boundary) incases
- (13.11.1)
cases
must not contain (without crossing a lexical boundary) a VariableDeclaration withkind
oflet
orconst
whose bound names intersect the bound names of a VariableDeclaration withkind
ofvar
contained (without crossing a function boundary) incases
- (13.11.1)
-
SwitchStatementWithDefault
-
WhileStatement
- (13.6.0.1)
body
must not be a LabeledStatement whosebody
is a FunctionDeclaration
- (13.6.0.1)
-
WithStatement
- (13.10.1) WithStatement must not exist in strict mode
- (13.10.1)
body
must not be a LabeledStatement whosebody
is a FunctionDeclaration
-
CatchClause
- (13.14.1)
binding
must not have any duplicate bound names binding
must not contain a MemberExpression- (13.14.1 and B.3.5)
body
must not contain (without crossing a lexical boundary) a ClassDeclaration, FunctionDeclaration, or VariableDeclaration withkind
oflet
orconst
with bound names that intersect the bound names ofbinding
- (13.14.1 and B.3.5)
body
must not contain (without crossing a function boundary) a VariableDeclaration withkind
ofvar
whose bound names intersect the bound names ofbinding
if VariableDeclaration is theinit
of ForStatement, thedeclaration
of VariableDeclarationStatement, or theleft
of ForInStatement
- (13.14.1)
-
Directive
rawValue
must be the empty string or match either of the ES6 lexical grammars DoubleStringCharacters or SingleStringCharacters
-
FormalParameters
items
must not contain a MemberExpression- (14.1.2 and 14.4.1) FormalParameters must not have duplicate bound names in strict mode
- (14.1.2) FormalParameters must not have duplicate bound names if FormalParameters is the
params
of a Method or an ArrowExpression - (14.1.2) FormalParamaters must not have duplicate bound names if
rest
is non-null or ifitems
contains an ObjectBinding, ArrayBinding, or BindingWithDefault
-
FunctionDeclaration
- (14.1.2)
body
must not contain (without crossing a function boundary) a FunctionDeclaration, ClassDeclaration, or VariableDeclaration withkind
oflet
orconst
whose bound names intersect the bound names ofparams
- (14.1.2)
-
Module
- (15.2.1.1) Module must not contain any duplicate exported names
- (15.2.1.1) the exported names of Module must each appear in the bound names of a VariableDeclaration
with a
kind
ofvar
initems
(without crossing a function boundary) or the bound names of a VariableDeclaration with akind
oflet
orconst
initems
(without crossing a function boundary) - (15.2.2.1) Module must not contain any duplicate imported names
- (15.2.1.1)
items
must not contain (without crossing a function boundary) NewTargetExpression - (11.6.2.2)
items
must not contain anIdentifierExpression
orShorhandProperty
whosename
is "await".
-
Script
- (15.1.1)
body
must not contain (without crossing a function boundary) NewTargetExpression
- (15.1.1)
-
Super
- TODO: move these to CallExpression and MemberExpression (or maybe FunctionBody and Module)
- (12.2.5.1 and 14.1.2 and 14.4.1 and 14.5.1 and 15.1.1 and 15.2.1.1) Super must be nested (without
crossing function boundaries) within a Method with
isGenerator
offalse
and a StaticPropertyNamename
whosevalue
is "constructor" in a ClassExpression or ClassDeclaration with non-nullsuper
if it is thecallee
of a CallExpression - (12.2.5.1 and 14.1.2 and 14.4.1 and 14.5.1 and 15.1.1 and 15.2.1.1) Super must be nested (without
crossing function boundaries) within a Method with
isGenerator
offalse
in a ClassExpression or ClassDeclaration with non-nullsuper
if it is theobject
of a MemberExpression
-
TemplateElement
rawValue
must match the ES6 TemplateCharacters lexical grammar
-
VariableDeclaration
-
declarators
must be non-empty -
(13.2.1.1 and 13.6.4.1) VariableDeclaration must not have duplicate bound names if
kind
islet
orconst
-
(13.2.1.1 and 13.6.4.1) VariableDeclaration must not have
let
in its bound names ifkind
islet
orconst
-
(13.1.1 and 15.1.1 and 15.2.1.1) VariableDeclaration must not be contained within a Block, FunctionBody, or Module (without crossing Block or FunctionBody boundaries) with any other VariableDeclaration with kind
let
orconst
and bound names that intersect the bound names of VariableDeclaration ifkind
islet
orconst
-
(14.1.2 and 15.1.1 and 15.2.1.1) VariableDeclaration must not be contained within a FunctionBody or Module (without crossing FunctionBody boundaries) with any other VariableDeclaration with kind
var
and bound names that intersect the bound names of VariableDeclaration ifkind
islet
orconst
-
-
VariableDeclarator
- (13.2.1.1)
init
must not benull
when VariableDeclarator is in thedeclarators
list of a VariableDeclaration whosekind
isconst
init
must not benull
except when VariableDeclarator is in thedeclarators
list of a VariableDeclaration that is thedeclaration
of an Exportinit
must benull
when VariableDeclarator is in thedeclarators
list of a VariableDeclaration that is theleft
of a ForInStatement or ForOfStatementbinding
must not contain a MemberExpression
- (13.2.1.1)
Last active
August 29, 2015 14:16
-
-
Save michaelficarra/a15104b743565aed94e4 to your computer and use it in GitHub Desktop.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment