From 016e7f4793be0204aca28b43d1b9ab6fd95f2ab7 Mon Sep 17 00:00:00 2001 From: Daniel Ehrenberg Date: Sat, 16 Mar 2019 12:43:45 +0100 Subject: [PATCH] Rebase on recent ECMA-262 Changes: - Async/await landed, so there are some grammar changes in passing around the [Await] parameter, and async arrow function cover grammars. - Various refactorings in how some 'static semantics' algorithms work; some now cover CallExpression as a whole, and others have a different sort of signature. --- spec.html | 97 ++++++++++--------------------------------------------- 1 file changed, 17 insertions(+), 80 deletions(-) diff --git a/spec.html b/spec.html index 51c9914..137ea57 100644 --- a/spec.html +++ b/spec.html @@ -123,88 +123,25 @@

Runtime Semantics: FinishDynamicImport ( _referencingScriptOrModule_, _

Left-Hand-Side Expressions

Syntax

- CallExpression[Yield] : - MemberExpression[?Yield] Arguments[?Yield] - SuperCall[?Yield] - ImportCall[?Yield] - CallExpression[?Yield] Arguments[?Yield] - CallExpression[?Yield] `[` Expression[+In, ?Yield] `]` - CallExpression[?Yield] `.` IdentifierName - CallExpression[?Yield] TemplateLiteral[?Yield] - - ImportCall[Yield] : - `import` `(` AssignmentExpression[+In, ?Yield] `)` + CallExpression[Yield, Await] : + MemberExpression[?Yield, ?Await] Arguments[?Yield, ?Await] + SuperCall[?Yield, ?Await] + ImportCall[?Yield, ?Await] + CallExpression[?Yield, ?Await] Arguments[?Yield, ?Await] + CallExpression[?Yield, ?Await] `[` Expression[+In, ?Yield, ?Await] `]` + CallExpression[?Yield, ?Await] `.` IdentifierName + CallExpression[?Yield, ?Await] TemplateLiteral[?Yield, ?Await] + + ImportCall[Yield, Await] : + `import` `(` AssignmentExpression[+In, ?Yield, ?Await] `)`

Static Semantics

- -

Static Semantics: IsFunctionDefinition

- - - MemberExpression : - MemberExpression `[` Expression `]` - MemberExpression `.` IdentifierName - MemberExpression TemplateLiteral - SuperProperty - MetaProperty - `new` MemberExpression Arguments - - NewExpression : - `new` NewExpression - - CallExpression : - MemberExpression Arguments - SuperCall - ImportCall - CallExpression Arguments - CallExpression `[` Expression `]` - CallExpression `.` IdentifierName - CallExpression TemplateLiteral - - - 1. Return *false*. - -
- - -

Static Semantics: IsDestructuring

- - MemberExpression : PrimaryExpression - - 1. If |PrimaryExpression| is either an |ObjectLiteral| or an |ArrayLiteral|, return *true*. - 1. Return *false*. - - - MemberExpression : - MemberExpression `[` Expression `]` - MemberExpression `.` IdentifierName - MemberExpression TemplateLiteral - SuperProperty - MetaProperty - `new` MemberExpression Arguments - - NewExpression : - `new` NewExpression - - CallExpression : - MemberExpression Arguments - SuperCall - ImportCall - CallExpression Arguments - CallExpression `[` Expression `]` - CallExpression `.` IdentifierName - CallExpression TemplateLiteral - - - 1. Return *false*. - -
- - -

Static Semantics: IsValidSimpleAssignmentTarget

- + +

Static Semantics: AssignmentTargetType

+ CallExpression : CallExpression `[` Expression `]` @@ -216,11 +153,11 @@

Static Semantics: IsValidSimpleAssignmentTarget

SuperProperty
- 1. Return *true*. + 1. Return ~simple~. CallExpression : - MemberExpression Arguments + CoverCallExpressionAndAsyncArrowHead SuperCall ImportCall CallExpression Arguments @@ -237,7 +174,7 @@

Static Semantics: IsValidSimpleAssignmentTarget

`new` `.` `target`
- 1. Return *false*. + 1. Return ~invalid~.