mirror of https://github.com/tc39/test262.git
Switch: lexical declarations inner scope. Fixes gh-422
This commit is contained in:
parent
58559ddddd
commit
6e6516a558
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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…
Reference in New Issue