mirror of
https://github.com/tc39/test262.git
synced 2025-07-08 22:54:43 +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