browser.js |
|
0 |
escaped-let.js |
---
esid: sec-grammar-notation
description: >
The `let` contextual keyword must not contain Unicode escape sequences.
info: |
Terminal symbols are shown
in fixed width font, both in the productions of the grammars and throughout this
specification whenever the text directly refers to such a terminal symbol. These
are to appear in a script exactly as written. All terminal symbol code points
specified in this way are to be understood as the appropriate Unicode code points
from the Basic Latin range, as opposed to any similar-looking code points from
other Unicode ranges.
flags: [noStrict]
--- |
1037 |
identifier-let-allowed-as-lefthandside-expression-strict-strict.js |
---
es6id: 13.6.0.1
description: >
for declaration:
identifier "let" disallowed as lefthandside expression in strict mode
flags: [onlyStrict]
negative:
phase: parse
type: SyntaxError
--- |
443 |
identifier-let-disallowed-as-boundname.js |
---
es6id: 13.6.4.1
description: >
It is a Syntax Error if the BoundNames of ForDeclaration contains "let".
negative:
phase: parse
type: SyntaxError
--- |
378 |
let-closure-inside-condition.js |
---
es6id: 13.1
description: >
let: closure inside for loop condition
--- |
384 |
let-closure-inside-initialization.js |
---
es6id: 13.1
description: >
let: closure inside for loop initialization
--- |
396 |
let-closure-inside-next-expression.js |
---
es6id: 13.1
description: >
let: closure inside for loop next-expression
--- |
394 |
let-iteration-variable-is-freshly-allocated-for-each-iteration-multi-let-binding.js |
---
es6id: 13.1
description: >
In a normal for statement the iteration variable is freshly allocated for each iteration. Multi let binding
--- |
549 |
let-iteration-variable-is-freshly-allocated-for-each-iteration-single-let-binding.js |
---
es6id: 13.1
description: >
In a normal for statement the iteration variable is freshly allocated for each iteration. Single let binding
--- |
456 |
let-let-declaration-split-across-two-lines.js |
---
author: Jeff Walden
es6id: 13.3.1.1
description: >
let: |let let| split across two lines is not subject to automatic semicolon insertion.
info: |
|let| followed by a name is a lexical declaration. This is so even if the
name is on a new line. ASI applies *only* if an offending token not allowed
by the grammar is encountered, and there's no [no LineTerminator here]
restriction in LexicalDeclaration or ForDeclaration forbidding a line break.
It's a tricky point, but this is true *even if* the name is "let", a name that
can't be bound by LexicalDeclaration or ForDeclaration. Per 5.3, static
semantics early errors are validated *after* determining productions matching
the source text.
So in this testcase, the eval text matches LexicalDeclaration. No ASI occurs,
because "let\nlet = ..." matches LexicalDeclaration before static semantics
are considered. *Then* 13.3.1.1's static semantics for the LexicalDeclaration
just chosen, per 5.3, are validated to recognize the Script as invalid. Thus
the eval script can't be evaluated, and a SyntaxError is thrown.
negative:
phase: parse
type: SyntaxError
--- |
1415 |
let-let-declaration-with-initializer-split-across-two-lines.js |
---
author: Jeff Walden
es6id: 13.3.1.1
description: >
let: |let let| split across two lines is not subject to automatic semicolon insertion.
info: |
|let| followed by a name is a lexical declaration. This is so even if the
name is on a new line. ASI applies *only* if an offending token not allowed
by the grammar is encountered, and there's no [no LineTerminator here]
restriction in LexicalDeclaration or ForDeclaration forbidding a line break.
It's a tricky point, but this is true *even if* the name is "let", a name that
can't be bound by LexicalDeclaration or ForDeclaration. Per 5.3, static
semantics early errors are validated *after* determining productions matching
the source text.
So in this testcase, the eval text matches LexicalDeclaration. No ASI occurs,
because "let\nlet = ..." matches LexicalDeclaration before static semantics
are considered. *Then* 13.3.1.1's static semantics for the LexicalDeclaration
just chosen, per 5.3, are validated to recognize the Script as invalid. Thus
the eval script can't be evaluated, and a SyntaxError is thrown.
negative:
phase: parse
type: SyntaxError
--- |
1442 |
let-newline-await-in-normal-function.js |
---
author: Jeff Walden <jwalden+code@mit.edu>
esid: sec-let-and-const-declarations
description: >
`let await` does not permit ASI in between, as `await` is a BindingIdentifier
info: |
`await` is a perfectly cromulent binding name in any context grammatically, just
prohibited by static semantics in some contexts. Therefore ASI can never apply
between `let` (where a LexicalDeclaration is permitted) and `await`,
so a subsequent `0` where `=` was expected is a syntax error.
negative:
phase: parse
type: SyntaxError
--- |
765 |
let-newline-yield-in-generator-function.js |
---
author: Jeff Walden <jwalden+code@mit.edu>
esid: sec-let-and-const-declarations
description: >
`let yield` does not permit ASI in between, as `yield` is a BindingIdentifier
info: |
`yield` is a perfectly cromulent binding name in any context grammatically, just
prohibited by static semantics in some contexts. Therefore ASI can never apply
between `let` (where a LexicalDeclaration is permitted) and `yield`,
so a subsequent `0` where `=` was expected is a syntax error.
negative:
phase: parse
type: SyntaxError
features: [generators]
--- |
789 |
let-newline-yield-in-normal-function.js |
---
esid: sec-let-and-const-declarations
description: >
`let yield` does not permit ASI in between, as `yield` is a BindingIdentifier
info: |
`yield` is a perfectly cromulent binding name in any context grammatically, just
prohibited by static semantics in some contexts. Therefore ASI can never apply
between `let` (where a LexicalDeclaration is permitted) and `yield`,
so a subsequent `0` where `=` was expected is a syntax error.
negative:
phase: parse
type: SyntaxError
--- |
725 |
let-outer-inner-let-bindings.js |
---
es6id: 13.1
description: >
outer let binding unchanged by for-loop let binding
--- |
500 |
let.js |
---
es6id: 13.1
description: >
global and block scope let
--- |
406 |
shell.js |
|
0 |
with-initialisers-in-statement-positions-case-expression-statement-list.js |
---
es6id: 13.1
description: >
let declarations with initialisers in statement positions:
case Expression : StatementList
--- |
339 |
with-initialisers-in-statement-positions-default-statement-list.js |
---
es6id: 13.1
description: >
let declarations with initialisers in statement positions:
default : StatementList
--- |
329 |
with-initialisers-in-statement-positions-do-statement-while-expression.js |
---
es6id: 13.1
description: >
let declarations with initialisers in statement positions:
do Statement while ( Expression )
negative:
phase: parse
type: SyntaxError
--- |
401 |
with-initialisers-in-statement-positions-for-statement.js |
---
es6id: 13.1
description: >
let declarations with initialisers in statement positions:
for ( ;;) Statement
negative:
phase: parse
type: SyntaxError
--- |
384 |
with-initialisers-in-statement-positions-if-expression-statement-else-statement.js |
---
es6id: 13.1
description: >
let declarations with initialisers in statement positions:
if ( Expression ) Statement else Statement
negative:
phase: parse
type: SyntaxError
--- |
411 |
with-initialisers-in-statement-positions-if-expression-statement.js |
---
es6id: 13.1
description: >
let declarations with initialisers in statement positions:
if ( Expression ) Statement
negative:
phase: parse
type: SyntaxError
--- |
388 |
with-initialisers-in-statement-positions-label-statement.js |
---
es6id: 13.1
description: >
let declarations with initialisers in statement positions:
label: Statement
negative:
phase: parse
type: SyntaxError
--- |
374 |
with-initialisers-in-statement-positions-while-expression-statement.js |
---
es6id: 13.1
description: >
let declarations with initialisers in statement positions:
while ( Expression ) Statement
negative:
phase: parse
type: SyntaxError
--- |
395 |
without-initialisers-in-statement-positions-case-expression-statement-list.js |
---
es6id: 13.1
description: >
let declarations without initialisers in statement positions:
case Expression : StatementList
--- |
337 |
without-initialisers-in-statement-positions-default-statement-list.js |
---
es6id: 13.1
description: >
let declarations without initialisers in statement positions:
default : StatementList
--- |
327 |
without-initialisers-in-statement-positions-do-statement-while-expression.js |
---
es6id: 13.1
description: >
let declarations without initialisers in statement positions:
do Statement while ( Expression )
negative:
phase: parse
type: SyntaxError
--- |
400 |
without-initialisers-in-statement-positions-for-statement.js |
---
es6id: 13.1
description: >
let declarations without initialisers in statement positions:
for ( ;;) Statement
negative:
phase: parse
type: SyntaxError
--- |
383 |
without-initialisers-in-statement-positions-if-expression-statement-else-statement.js |
---
es6id: 13.1
description: >
let declarations without initialisers in statement positions:
if ( Expression ) Statement else Statement
negative:
phase: parse
type: SyntaxError
--- |
410 |
without-initialisers-in-statement-positions-if-expression-statement.js |
---
es6id: 13.1
description: >
let declarations without initialisers in statement positions:
if ( Expression ) Statement
negative:
phase: parse
type: SyntaxError
--- |
387 |
without-initialisers-in-statement-positions-label-statement.js |
---
es6id: 13.1
description: >
let declarations without initialisers in statement positions:
label: Statement
negative:
phase: parse
type: SyntaxError
--- |
373 |
without-initialisers-in-statement-positions-while-expression-statement.js |
---
es6id: 13.1
description: >
let declarations without initialisers in statement positions:
while ( Expression ) Statement
negative:
phase: parse
type: SyntaxError
--- |
394 |