mirror of
https://github.com/tc39/test262.git
synced 2025-04-08 19:35:28 +02:00
Switch: lexical declarations inner scope. Fixes gh-422
This commit is contained in:
parent
58559ddddd
commit
6e6516a558
22
test/language/statements/switch/scope-lex-async-function.js
Normal file
22
test/language/statements/switch/scope-lex-async-function.js
Normal file
@ -0,0 +1,22 @@
|
||||
// Copyright (C) 2020 Rick Waldron. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
esid: sec-switch-statement-runtime-semantics-evaluation
|
||||
description: Creation of new lexical environment (into `default` clause)
|
||||
info: |
|
||||
1. Let exprRef be the result of evaluating Expression.
|
||||
2. Let switchValue be ? GetValue(exprRef).
|
||||
3. Let oldEnv be the running execution context's LexicalEnvironment.
|
||||
4. Let blockEnv be NewDeclarativeEnvironment(oldEnv).
|
||||
5. Perform BlockDeclarationInstantiation(CaseBlock, blockEnv).
|
||||
6. Set the running execution context's LexicalEnvironment to blockEnv.
|
||||
7. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
|
||||
argument switchValue.
|
||||
[...]
|
||||
negative:
|
||||
phase: runtime
|
||||
type: ReferenceError
|
||||
---*/
|
||||
|
||||
switch (0) { default: async function x() {} }
|
||||
x;
|
22
test/language/statements/switch/scope-lex-async-generator.js
Normal file
22
test/language/statements/switch/scope-lex-async-generator.js
Normal file
@ -0,0 +1,22 @@
|
||||
// Copyright (C) 2020 Rick Waldron. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
esid: sec-switch-statement-runtime-semantics-evaluation
|
||||
description: Creation of new lexical environment (into `default` clause)
|
||||
info: |
|
||||
1. Let exprRef be the result of evaluating Expression.
|
||||
2. Let switchValue be ? GetValue(exprRef).
|
||||
3. Let oldEnv be the running execution context's LexicalEnvironment.
|
||||
4. Let blockEnv be NewDeclarativeEnvironment(oldEnv).
|
||||
5. Perform BlockDeclarationInstantiation(CaseBlock, blockEnv).
|
||||
6. Set the running execution context's LexicalEnvironment to blockEnv.
|
||||
7. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
|
||||
argument switchValue.
|
||||
[...]
|
||||
negative:
|
||||
phase: runtime
|
||||
type: ReferenceError
|
||||
---*/
|
||||
|
||||
switch (0) { default: async function * x() {} }
|
||||
x;
|
22
test/language/statements/switch/scope-lex-class.js
Normal file
22
test/language/statements/switch/scope-lex-class.js
Normal file
@ -0,0 +1,22 @@
|
||||
// Copyright (C) 2020 Rick Waldron. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
esid: sec-switch-statement-runtime-semantics-evaluation
|
||||
description: Creation of new lexical environment (into `default` clause)
|
||||
info: |
|
||||
1. Let exprRef be the result of evaluating Expression.
|
||||
2. Let switchValue be ? GetValue(exprRef).
|
||||
3. Let oldEnv be the running execution context's LexicalEnvironment.
|
||||
4. Let blockEnv be NewDeclarativeEnvironment(oldEnv).
|
||||
5. Perform BlockDeclarationInstantiation(CaseBlock, blockEnv).
|
||||
6. Set the running execution context's LexicalEnvironment to blockEnv.
|
||||
7. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
|
||||
argument switchValue.
|
||||
[...]
|
||||
negative:
|
||||
phase: runtime
|
||||
type: ReferenceError
|
||||
---*/
|
||||
|
||||
switch (0) { default: class x {} }
|
||||
x;
|
22
test/language/statements/switch/scope-lex-const.js
Normal file
22
test/language/statements/switch/scope-lex-const.js
Normal file
@ -0,0 +1,22 @@
|
||||
// Copyright (C) 2020 Rick Waldron. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
esid: sec-switch-statement-runtime-semantics-evaluation
|
||||
description: Creation of new lexical environment (into `default` clause)
|
||||
info: |
|
||||
1. Let exprRef be the result of evaluating Expression.
|
||||
2. Let switchValue be ? GetValue(exprRef).
|
||||
3. Let oldEnv be the running execution context's LexicalEnvironment.
|
||||
4. Let blockEnv be NewDeclarativeEnvironment(oldEnv).
|
||||
5. Perform BlockDeclarationInstantiation(CaseBlock, blockEnv).
|
||||
6. Set the running execution context's LexicalEnvironment to blockEnv.
|
||||
7. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
|
||||
argument switchValue.
|
||||
[...]
|
||||
negative:
|
||||
phase: runtime
|
||||
type: ReferenceError
|
||||
---*/
|
||||
|
||||
switch (0) { default: const x = 1; }
|
||||
x;
|
22
test/language/statements/switch/scope-lex-generator.js
Normal file
22
test/language/statements/switch/scope-lex-generator.js
Normal file
@ -0,0 +1,22 @@
|
||||
// Copyright (C) 2020 Rick Waldron. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
esid: sec-switch-statement-runtime-semantics-evaluation
|
||||
description: Creation of new lexical environment (into `default` clause)
|
||||
info: |
|
||||
1. Let exprRef be the result of evaluating Expression.
|
||||
2. Let switchValue be ? GetValue(exprRef).
|
||||
3. Let oldEnv be the running execution context's LexicalEnvironment.
|
||||
4. Let blockEnv be NewDeclarativeEnvironment(oldEnv).
|
||||
5. Perform BlockDeclarationInstantiation(CaseBlock, blockEnv).
|
||||
6. Set the running execution context's LexicalEnvironment to blockEnv.
|
||||
7. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
|
||||
argument switchValue.
|
||||
[...]
|
||||
negative:
|
||||
phase: runtime
|
||||
type: ReferenceError
|
||||
---*/
|
||||
|
||||
switch (0) { default: function * x() {} }
|
||||
x;
|
22
test/language/statements/switch/scope-lex-let.js
Normal file
22
test/language/statements/switch/scope-lex-let.js
Normal file
@ -0,0 +1,22 @@
|
||||
// Copyright (C) 2020 Rick Waldron. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
esid: sec-switch-statement-runtime-semantics-evaluation
|
||||
description: Creation of new lexical environment (into `default` clause)
|
||||
info: |
|
||||
1. Let exprRef be the result of evaluating Expression.
|
||||
2. Let switchValue be ? GetValue(exprRef).
|
||||
3. Let oldEnv be the running execution context's LexicalEnvironment.
|
||||
4. Let blockEnv be NewDeclarativeEnvironment(oldEnv).
|
||||
5. Perform BlockDeclarationInstantiation(CaseBlock, blockEnv).
|
||||
6. Set the running execution context's LexicalEnvironment to blockEnv.
|
||||
7. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
|
||||
argument switchValue.
|
||||
[...]
|
||||
negative:
|
||||
phase: runtime
|
||||
type: ReferenceError
|
||||
---*/
|
||||
|
||||
switch (0) { default: /*{ body }*/ }
|
||||
f;
|
Loading…
x
Reference in New Issue
Block a user