-
ArrayBinding
restElementmust be BindingIdentifier ornullexcept when ArrayBinding is part of an AssignmentPattern
-
BindingIdentifier
namemust match the ES6 IdentifierName lexical grammar except whennameis"*default*"and BindingIdentifier is thenameof a ClassDeclaration or FunctionDeclaration which is thebodyof an ExportDefaultnamemust not be a reserved wordnamemust 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)
namemust not be a restricted word in strict mode - (12.1.1)
namemust not beyieldin strict mode
-
ImportSpecifier
namemust match the ES6 IdentifierName lexical grammar
-
ExportSpecifier
- (15.2.3.1?)
namemust not be a reserved word or future reserved word except when ExportSpecifier is thenamedExportsof an ExportFrom
- (15.2.3.1?)
-
Method
- (14.3.1 and 14.4.1)
bodymust not contain (without crossing a lexical boundary) a FunctionDeclaration, ClassDeclaration, or VariableDeclaration withkindofletorconstwhose bound names intersect the bound names ofparams
- (14.3.1 and 14.4.1)
-
Setter
parammust not contain a MemberExpression- (14.3.1)
parammust not have duplicate bindings - (14.3.1)
bodymust not contain (without crossing a lexical boundary) a FunctionDeclaration, ClassDeclaration, or VariableDeclaration withkindofletorconstwhose bound names intersect the bound names ofparams
-
ShorthandProperty
namemust match the ES6 IdentifierName lexical grammarnamemust not be a reserved word- (12.1.1)
namemust not be a future reserved word in strict mode - (12.1.1)
namemust not beyieldin strict mode
-
ArrowExpression
- (14.2.1)
bodymust not contain (without crossing a lexical boundary) a FunctionDeclaration, ClassDeclaration, or VariableDeclaration withkindofletorconstwhose bound names intersect the bound names ofparams
- (14.2.1)
-
AssignmentExpression
- (12.14.1)
bindingmust be a BindingIdentifier or MemberExpression whenoperatoris not"="
- (12.14.1)
-
FunctionExpression
- (14.1.2)
bodymust not contain (without crossing a lexical boundary) a FunctionDeclaration, ClassDeclaration, or VariableDeclaration withkindofletorconstwhose bound names intersect the bound names ofparams
- (14.1.2)
-
IdentifierExpression
namemust match the ES6 IdentifierName lexical grammarnamemust not be a reserved word- (12.1.1)
namemust not be a future reserved word in strict mode - (12.1.1)
namemust not beyieldin strict mode
-
LiteralNumericExpression
valuemust be finitevaluemust not be a NaN valuevaluemust be non-negative
-
LiteralRegExpExpression
- (12.2.7.1)
patternmust match the ES6 Pattern lexical grammar - (12.2.7.1)
flagsmust not contain any characters other than "g", "i", "m", "u", or "y" - (12.2.7.1)
flagsmust 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)
propertiesmust 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)
operandmust be a BindingIdentifier or MemberExpression ifoperatoris++or--
- (12.4.1)
-
PrefixExpression
- (12.5.1)
operandmust be a BindingIdentifier or MemberExpression ifoperatoris++or-- - (12.5.4.1)
operandmust not be an IdentifierExpression ifoperatorisdeletein strict mode
- (12.5.1)
-
StaticMemberExpression
propertymust match the ES6 IdentifierName lexical grammar
-
TemplateExpression
elementsmust be non-emptyelementsmust alternate between TemplateElement and Expression- the first and last elements of
elementsmust be TemplateElements
-
BreakStatement
labelmust match the ES6 IdentifierName lexical grammar whenlabelis non-nulllabelmust not be a reserved word- (12.1.1)
labelmust not be a future reserved word in strict mode - (12.1.1)
labelmust not beyieldin 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
labelmust match the ES6 IdentifierName lexical grammar whenlabelis non-nulllabelmust not be a reserved word- (12.1.1)
labelmust not be a future reserved word in strict mode - (12.1.1)
labelmust not beyieldin 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)
bodymust not be a LabeledStatement whosebodyis a FunctionDeclaration
- (13.6.0.1)
-
ForInStatement
leftmust not be a VariableDeclaration with more than one VariableDeclarator in itsdeclarators- (13.6.4.1)
bodymust not contain (without crossing a function boundary) a VariableDeclaration withkindofvarwhose bound names intersect the bound names ofleftifleftis a VariableDeclaration withkindofletorconst - (13.6.0.1)
bodymust not be a LabeledStatement whosebodyis a FunctionDeclaration
-
ForOfStatement
leftmust not be a VariableDeclaration with more than one VariableDeclarator in itsdeclarators- (13.6.4.1)
bodymust not contain (without crossing a function boundary) a VariableDeclaration withkindofvarwhose bound names intersect the bound names ofleftifleftis a VariableDeclaration withkindofletorconst - (13.6.0.1)
bodymust not be a LabeledStatement whosebodyis a FunctionDeclaration
-
ForStatement
- (13.6.3.1)
bodymust not contain (without crossing a function boundary) a VariableDeclaration withkindofvarwhose bound names intersect the bound names ofinitifinitis a VariableDeclaration withkindofletorconst - (13.6.0.1)
bodymust not be a LabeledStatement whosebodyis a FunctionDeclaration
- (13.6.3.1)
-
IfStatement
consequentmust not have a trailingelsewhenalternateisnull- (13.5.1)
consequentandalternatemust not be a LabeledStatement whosebodyis a FunctionDeclaration
-
LabeledStatement
- (13.12.1)
bodymust not be a FunctionDeclaration in strict mode bodymust not be a FunctionDeclaration ifisGeneratorof FunctionDeclaration istruelabelmust match the ES6 IdentifierName lexical grammarlabelmust not be a reserved word- (12.1.1)
labelmust not be a future reserved word in strict mode - (12.1.1)
labelmust not beyieldin 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)
casesmust not contain (without crossing a lexical boundary) a VariableDeclaration withkindofletorconstwhose bound names intersect the bound names of another VariableDeclaration withkindofletorconstcontained (without crossing a lexical boundary) incases - (13.11.1)
casesmust not contain (without crossing a lexical boundary) a VariableDeclaration withkindofletorconstwhose bound names intersect the bound names of a VariableDeclaration withkindofvarcontained (without crossing a function boundary) incases
- (13.11.1)
-
SwitchStatementWithDefault
-
WhileStatement
- (13.6.0.1)
bodymust not be a LabeledStatement whosebodyis a FunctionDeclaration
- (13.6.0.1)
-
WithStatement
- (13.10.1) WithStatement must not exist in strict mode
- (13.10.1)
bodymust not be a LabeledStatement whosebodyis a FunctionDeclaration
-
CatchClause
- (13.14.1)
bindingmust not have any duplicate bound names bindingmust not contain a MemberExpression- (13.14.1 and B.3.5)
bodymust not contain (without crossing a lexical boundary) a ClassDeclaration, FunctionDeclaration, or VariableDeclaration withkindofletorconstwith bound names that intersect the bound names ofbinding - (13.14.1 and B.3.5)
bodymust not contain (without crossing a function boundary) a VariableDeclaration withkindofvarwhose bound names intersect the bound names ofbindingif VariableDeclaration is theinitof ForStatement, thedeclarationof VariableDeclarationStatement, or theleftof ForInStatement
- (13.14.1)
-
Directive
rawValuemust be the empty string or match either of the ES6 lexical grammars DoubleStringCharacters or SingleStringCharacters
-
FormalParameters
itemsmust 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
paramsof a Method or an ArrowExpression - (14.1.2) FormalParamaters must not have duplicate bound names if
restis non-null or ifitemscontains an ObjectBinding, ArrayBinding, or BindingWithDefault
-
FunctionDeclaration
- (14.1.2)
bodymust not contain (without crossing a function boundary) a FunctionDeclaration, ClassDeclaration, or VariableDeclaration withkindofletorconstwhose 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
kindofvarinitems(without crossing a function boundary) or the bound names of a VariableDeclaration with akindofletorconstinitems(without crossing a function boundary) - (15.2.2.1) Module must not contain any duplicate imported names
- (15.2.1.1)
itemsmust not contain (without crossing a function boundary) NewTargetExpression - (11.6.2.2)
itemsmust not contain anIdentifierExpressionorShorhandPropertywhosenameis "await".
-
Script
- (15.1.1)
bodymust 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
isGeneratoroffalseand a StaticPropertyNamenamewhosevalueis "constructor" in a ClassExpression or ClassDeclaration with non-nullsuperif it is thecalleeof 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
isGeneratoroffalsein a ClassExpression or ClassDeclaration with non-nullsuperif it is theobjectof a MemberExpression
-
TemplateElement
rawValuemust match the ES6 TemplateCharacters lexical grammar
-
VariableDeclaration
-
declaratorsmust be non-empty -
(13.2.1.1 and 13.6.4.1) VariableDeclaration must not have duplicate bound names if
kindisletorconst -
(13.2.1.1 and 13.6.4.1) VariableDeclaration must not have
letin its bound names ifkindisletorconst -
(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
letorconstand bound names that intersect the bound names of VariableDeclaration ifkindisletorconst -
(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
varand bound names that intersect the bound names of VariableDeclaration ifkindisletorconst
-
-
VariableDeclarator
- (13.2.1.1)
initmust not benullwhen VariableDeclarator is in thedeclaratorslist of a VariableDeclaration whosekindisconst initmust not benullexcept when VariableDeclarator is in thedeclaratorslist of a VariableDeclaration that is thedeclarationof an Exportinitmust benullwhen VariableDeclarator is in thedeclaratorslist of a VariableDeclaration that is theleftof a ForInStatement or ForOfStatementbindingmust 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