browser.js |
|
0 |
cptn-a-abrupt-empty.js |
---
es6id: 13.12.11
description: >
Completion value when the matching case is exited via an empty abrupt
completion
info: |
SwitchStatement : switch ( Expression ) CaseBlock
[...]
8. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
argument switchValue.
9. Set the running execution context’s LexicalEnvironment to oldEnv.
10. Return R.
13.12.9 Runtime Semantics: CaseBlockEvaluation
CaseBlock : { CaseClausesopt DefaultClause CaseClausesopt }
1. Let V = undefined.
2. Let A be the list of CaseClause items in the first CaseClauses, in
source text order. If the first CaseClauses is not present A is « ».
3. Let found be false.
4. Repeat for each CaseClause C in A
a. If found is false, then
i. Let clauseSelector be the result of CaseSelectorEvaluation of C.
ii. If clauseSelector is an abrupt completion, then
1. If clauseSelector.[[value]] is empty, return
Completion{[[type]]: clauseSelector.[[type]], [[value]]:
undefined, [[target]]: clauseSelector.[[target]]}.
2. Else, return Completion(clauseSelector).
iii. Let found be the result of performing Strict Equality Comparison
input === clauseSelector.[[value]].
b. If found is true, then
i. Let R be the result of evaluating C.
ii. If R.[[value]] is not empty, let V = R.[[value]].
iii. If R is an abrupt completion, return Completion(UpdateEmpty(R,
V)).
--- |
2146 |
cptn-a-fall-thru-abrupt-empty.js |
---
es6id: 13.12.11
description: >
Completion value when execution continues through multiple cases and ends
with an empty abrupt completion
info: |
SwitchStatement : switch ( Expression ) CaseBlock
[...]
8. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
argument switchValue.
9. Set the running execution context’s LexicalEnvironment to oldEnv.
10. Return R.
13.12.9 Runtime Semantics: CaseBlockEvaluation
CaseBlock : { CaseClausesopt DefaultClause CaseClausesopt }
1. Let V = undefined.
2. Let A be the list of CaseClause items in the first CaseClauses, in
source text order. If the first CaseClauses is not present A is « ».
3. Let found be false.
4. Repeat for each CaseClause C in A
a. If found is false, then
[...]
b. If found is true, then
i. Let R be the result of evaluating C.
ii. If R.[[value]] is not empty, let V = R.[[value]].
iii. If R is an abrupt completion, return Completion(UpdateEmpty(R,
V)).
--- |
2220 |
cptn-a-fall-thru-nrml.js |
---
es6id: 13.12.11
description: >
Completion value when execution continues through multiple cases and ends
with a normal completion
info: |
SwitchStatement : switch ( Expression ) CaseBlock
[...]
8. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
argument switchValue.
9. Set the running execution context’s LexicalEnvironment to oldEnv.
10. Return R.
13.12.9 Runtime Semantics: CaseBlockEvaluation
CaseBlock : { CaseClausesopt DefaultClause CaseClausesopt }
1. Let V = undefined.
2. Let A be the list of CaseClause items in the first CaseClauses, in
source text order. If the first CaseClauses is not present A is « ».
3. Let found be false.
4. Repeat for each CaseClause C in A
a. If found is false, then
i. Let clauseSelector be the result of CaseSelectorEvaluation of C.
ii. If clauseSelector is an abrupt completion, then
[...]
iii. Let found be the result of performing Strict Equality Comparison
input === clauseSelector.[[value]].
b. If found is true, then
i. Let R be the result of evaluating C.
ii. If R.[[value]] is not empty, let V = R.[[value]].
[...]
5. Let foundInB be false.
6. Let B be the List containing the CaseClause items in the second
CaseClauses, in source text order. If the second CaseClauses is not
present B is « ».
7. If found is false, then
[...]
[...]
9. Let R be the result of evaluating DefaultClause.
10. If R.[[value]] is not empty, let V = R.[[value]].
11. If R is an abrupt completion, return Completion(UpdateEmpty(R, V)).
12. Repeat for each CaseClause C in B (NOTE this is another complete
iteration of the second CaseClauses)
[...]
13. Return NormalCompletion(V).
--- |
2445 |
cptn-abrupt-empty.js |
---
es6id: 13.12.11
description: >
Completion value when case block is empty
info: |
SwitchStatement : switch ( Expression ) CaseBlock
[...]
8. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
argument switchValue.
9. Set the running execution context’s LexicalEnvironment to oldEnv.
10. Return R.
13.12.9 Runtime Semantics: CaseBlockEvaluation
CaseBlock : { }
1. Return NormalCompletion(undefined).
--- |
699 |
cptn-b-abrupt-empty.js |
---
es6id: 13.12.11
description: >
Completion value when the matching case is exited via an empty abrupt
completion
info: |
SwitchStatement : switch ( Expression ) CaseBlock
[...]
8. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
argument switchValue.
9. Set the running execution context’s LexicalEnvironment to oldEnv.
10. Return R.
13.12.9 Runtime Semantics: CaseBlockEvaluation
CaseBlock : { CaseClausesopt DefaultClause CaseClausesopt }
1. Let V = undefined.
2. Let A be the list of CaseClause items in the first CaseClauses, in
source text order. If the first CaseClauses is not present A is « ».
3. Let found be false.
4. Repeat for each CaseClause C in A
[...]
5. Let foundInB be false.
6. Let B be the List containing the CaseClause items in the second
CaseClauses, in source text order. If the second CaseClauses is not
present B is « ».
7. If found is false, then
a. Repeat for each CaseClause C in B
i. If foundInB is false, then
1. Let clauseSelector be the result of CaseSelectorEvaluation of
C.
2. If clauseSelector is an abrupt completion, then
a. If clauseSelector.[[value]] is empty, return
Completion{[[type]]: clauseSelector.[[type]], [[value]]:
undefined, [[target]]: clauseSelector.[[target]]}.
b. Else, return Completion(clauseSelector).
3. Let foundInB be the result of performing Strict Equality
Comparison input === clauseSelector.[[value]].
ii. If foundInB is true, then
1. Let R be the result of evaluating CaseClause C.
2. If R.[[value]] is not empty, let V = R.[[value]].
3. If R is an abrupt completion, return
Completion(UpdateEmpty(R, V)).
--- |
2511 |
cptn-b-fall-thru-abrupt-empty.js |
---
es6id: 13.12.11
description: >
Completion value when execution continues through multiple cases and ends
with an empty abrupt completion
info: |
SwitchStatement : switch ( Expression ) CaseBlock
[...]
8. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
argument switchValue.
9. Set the running execution context’s LexicalEnvironment to oldEnv.
10. Return R.
13.12.9 Runtime Semantics: CaseBlockEvaluation
CaseBlock : { CaseClausesopt DefaultClause CaseClausesopt }
1. Let V = undefined.
2. Let A be the list of CaseClause items in the first CaseClauses, in
source text order. If the first CaseClauses is not present A is « ».
3. Let found be false.
4. Repeat for each CaseClause C in A
[...]
5. Let foundInB be false.
6. Let B be the List containing the CaseClause items in the second
CaseClauses, in source text order. If the second CaseClauses is not
present B is « ».
7. If found is false, then
a. Repeat for each CaseClause C in B
i. If foundInB is false, then
1. Let clauseSelector be the result of CaseSelectorEvaluation of
C.
2. If clauseSelector is an abrupt completion, then
a. If clauseSelector.[[value]] is empty, return
Completion{[[type]]: clauseSelector.[[type]], [[value]]:
undefined, [[target]]: clauseSelector.[[target]]}.
b. Else, return Completion(clauseSelector).
3. Let foundInB be the result of performing Strict Equality
Comparison input === clauseSelector.[[value]].
ii. If foundInB is true, then
1. Let R be the result of evaluating CaseClause C.
2. If R.[[value]] is not empty, let V = R.[[value]].
3. If R is an abrupt completion, return
Completion(UpdateEmpty(R, V)).
--- |
3102 |
cptn-b-fall-thru-nrml.js |
---
es6id: 13.12.11
description: >
Completion value when execution continues through multiple cases and ends
with a normal completion
info: |
SwitchStatement : switch ( Expression ) CaseBlock
[...]
8. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
argument switchValue.
9. Set the running execution context’s LexicalEnvironment to oldEnv.
10. Return R.
13.12.9 Runtime Semantics: CaseBlockEvaluation
CaseBlock : { CaseClausesopt DefaultClause CaseClausesopt }
1. Let V = undefined.
2. Let A be the list of CaseClause items in the first CaseClauses, in
source text order. If the first CaseClauses is not present A is « ».
3. Let found be false.
4. Repeat for each CaseClause C in A
[...]
5. Let foundInB be false.
6. Let B be the List containing the CaseClause items in the second
CaseClauses, in source text order. If the second CaseClauses is not
present B is « ».
7. If found is false, then
a. Repeat for each CaseClause C in B
i. If foundInB is false, then
1. Let clauseSelector be the result of CaseSelectorEvaluation of
C.
2. If clauseSelector is an abrupt completion, then
a. If clauseSelector.[[value]] is empty, return
Completion{[[type]]: clauseSelector.[[type]], [[value]]:
undefined, [[target]]: clauseSelector.[[target]]}.
b. Else, return Completion(clauseSelector).
3. Let foundInB be the result of performing Strict Equality
Comparison input === clauseSelector.[[value]].
ii. If foundInB is true, then
1. Let R be the result of evaluating CaseClause C.
2. If R.[[value]] is not empty, let V = R.[[value]].
3. If R is an abrupt completion, return
Completion(UpdateEmpty(R, V)).
8. If foundInB is true, return NormalCompletion(V).
--- |
2605 |
cptn-b-final.js |
---
es6id: 13.12.11
description: Completion value when the final case matches
info: |
SwitchStatement : switch ( Expression ) CaseBlock
[...]
8. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
argument switchValue.
9. Set the running execution context’s LexicalEnvironment to oldEnv.
10. Return R.
13.12.9 Runtime Semantics: CaseBlockEvaluation
CaseBlock : { CaseClauses }
1. Let V = undefined.
2. Let A be the list of CaseClause items in the first CaseClauses, in
source text order. If the first CaseClauses is not present A is « ».
3. Let found be false.
4. Repeat for each CaseClause C in A
[...]
5. Let foundInB be false.
6. Let B be the List containing the CaseClause items in the second
CaseClauses, in source text order. If the second CaseClauses is not
present B is « ».
7. If found is false, then
a. Repeat for each CaseClause C in B
i. If foundInB is false, then
1. Let clauseSelector be the result of CaseSelectorEvaluation of
C.
2. If clauseSelector is an abrupt completion, then
a. If clauseSelector.[[value]] is empty, return
Completion{[[type]]: clauseSelector.[[type]], [[value]]:
undefined, [[target]]: clauseSelector.[[target]]}.
b. Else, return Completion(clauseSelector).
3. Let foundInB be the result of performing Strict Equality
Comparison input === clauseSelector.[[value]].
ii. If foundInB is true, then
1. Let R be the result of evaluating CaseClause C.
2. If R.[[value]] is not empty, let V = R.[[value]].
3. If R is an abrupt completion, return
Completion(UpdateEmpty(R, V)).
8. If foundInB is true, return NormalCompletion(V).
--- |
2913 |
cptn-dflt-abrupt-empty.js |
---
es6id: 13.12.11
description: >
Completion value when the default case is exited via an empty abrupt
completion
info: |
SwitchStatement : switch ( Expression ) CaseBlock
[...]
8. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
argument switchValue.
9. Set the running execution context’s LexicalEnvironment to oldEnv.
10. Return R.
13.12.9 Runtime Semantics: CaseBlockEvaluation
CaseBlock : { CaseClausesopt DefaultClause CaseClausesopt }
1. Let V = undefined.
2. Let A be the list of CaseClause items in the first CaseClauses, in
source text order. If the first CaseClauses is not present A is « ».
3. Let found be false.
4. Repeat for each CaseClause C in A
[...]
5. Let foundInB be false.
6. Let B be the List containing the CaseClause items in the second
CaseClauses, in source text order. If the second CaseClauses is not
present B is « ».
7. If found is false, then
[...]
8. If foundInB is true, return NormalCompletion(V).
9. Let R be the result of evaluating DefaultClause.
10. If R.[[value]] is not empty, let V = R.[[value]].
11. If R is an abrupt completion, return Completion(UpdateEmpty(R, V)).
--- |
1795 |
cptn-dflt-b-abrupt-empty.js |
---
es6id: 13.12.11
description: >
Completion value when the matching case is exited via an empty abrupt
completion
info: |
SwitchStatement : switch ( Expression ) CaseBlock
[...]
8. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
argument switchValue.
9. Set the running execution context’s LexicalEnvironment to oldEnv.
10. Return R.
13.12.9 Runtime Semantics: CaseBlockEvaluation
CaseBlock : { CaseClausesopt DefaultClause CaseClausesopt }
1. Let V = undefined.
2. Let A be the list of CaseClause items in the first CaseClauses, in
source text order. If the first CaseClauses is not present A is « ».
3. Let found be false.
4. Repeat for each CaseClause C in A
[...]
5. Let foundInB be false.
6. Let B be the List containing the CaseClause items in the second
CaseClauses, in source text order. If the second CaseClauses is not
present B is « ».
7. If found is false, then
a. Repeat for each CaseClause C in B
i. If foundInB is false, then
1. Let clauseSelector be the result of CaseSelectorEvaluation of
C.
[...]
3. Let foundInB be the result of performing Strict Equality
Comparison input === clauseSelector.[[value]].
ii. If foundInB is true, then
[...]
8. If foundInB is true, return NormalCompletion(V).
9. Let R be the result of evaluating DefaultClause.
10. If R.[[value]] is not empty, let V = R.[[value]].
11. If R is an abrupt completion, return Completion(UpdateEmpty(R, V)).
12. Repeat for each CaseClause C in B (NOTE this is another complete
iteration of the second CaseClauses)
a. Let R be the result of evaluating CaseClause C.
b. If R.[[value]] is not empty, let V = R.[[value]].
c. If R is an abrupt completion, return Completion(UpdateEmpty(R, V)).
--- |
2542 |
cptn-dflt-b-fall-thru-abrupt-empty.js |
---
es6id: 13.12.11
description: >
Completion value when execution continues through multiple cases and ends
with an empty abrupt completion
info: |
SwitchStatement : switch ( Expression ) CaseBlock
[...]
8. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
argument switchValue.
9. Set the running execution context’s LexicalEnvironment to oldEnv.
10. Return R.
13.12.9 Runtime Semantics: CaseBlockEvaluation
CaseBlock : { CaseClausesopt DefaultClause CaseClausesopt }
1. Let V = undefined.
2. Let A be the list of CaseClause items in the first CaseClauses, in
source text order. If the first CaseClauses is not present A is « ».
3. Let found be false.
4. Repeat for each CaseClause C in A
[...]
5. Let foundInB be false.
6. Let B be the List containing the CaseClause items in the second
CaseClauses, in source text order. If the second CaseClauses is not
present B is « ».
7. If found is false, then
a. Repeat for each CaseClause C in B
i. If foundInB is false, then
1. Let clauseSelector be the result of CaseSelectorEvaluation of
C.
[...]
3. Let foundInB be the result of performing Strict Equality
Comparison input === clauseSelector.[[value]].
ii. If foundInB is true, then
[...]
8. If foundInB is true, return NormalCompletion(V).
9. Let R be the result of evaluating DefaultClause.
10. If R.[[value]] is not empty, let V = R.[[value]].
11. If R is an abrupt completion, return Completion(UpdateEmpty(R, V)).
12. Repeat for each CaseClause C in B (NOTE this is another complete
iteration of the second CaseClauses)
a. Let R be the result of evaluating CaseClause C.
b. If R.[[value]] is not empty, let V = R.[[value]].
c. If R is an abrupt completion, return Completion(UpdateEmpty(R, V)).
--- |
3133 |
cptn-dflt-b-fall-thru-nrml.js |
---
es6id: 13.12.11
description: >
Completion value when execution continues through multiple cases and ends
with a normal completion
info: |
SwitchStatement : switch ( Expression ) CaseBlock
[...]
8. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
argument switchValue.
9. Set the running execution context’s LexicalEnvironment to oldEnv.
10. Return R.
13.12.9 Runtime Semantics: CaseBlockEvaluation
CaseBlock : { CaseClausesopt DefaultClause CaseClausesopt }
1. Let V = undefined.
2. Let A be the list of CaseClause items in the first CaseClauses, in
source text order. If the first CaseClauses is not present A is « ».
3. Let found be false.
4. Repeat for each CaseClause C in A
[...]
5. Let foundInB be false.
6. Let B be the List containing the CaseClause items in the second
CaseClauses, in source text order. If the second CaseClauses is not
present B is « ».
7. If found is false, then
a. Repeat for each CaseClause C in B
i. If foundInB is false, then
1. Let clauseSelector be the result of CaseSelectorEvaluation of
C.
[...]
3. Let foundInB be the result of performing Strict Equality
Comparison input === clauseSelector.[[value]].
ii. If foundInB is true, then
[...]
8. If foundInB is true, return NormalCompletion(V).
9. Let R be the result of evaluating DefaultClause.
10. If R.[[value]] is not empty, let V = R.[[value]].
11. If R is an abrupt completion, return Completion(UpdateEmpty(R, V)).
12. Repeat for each CaseClause C in B (NOTE this is another complete
iteration of the second CaseClauses)
a. Let R be the result of evaluating CaseClause C.
b. If R.[[value]] is not empty, let V = R.[[value]].
c. If R is an abrupt completion, return Completion(UpdateEmpty(R, V)).
13. Return NormalCompletion(V).
--- |
2616 |
cptn-dflt-b-final.js |
---
es6id: 13.12.11
description: Completion value when the final case matches
info: |
SwitchStatement : switch ( Expression ) CaseBlock
[...]
8. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
argument switchValue.
9. Set the running execution context’s LexicalEnvironment to oldEnv.
10. Return R.
13.12.9 Runtime Semantics: CaseBlockEvaluation
CaseBlock : { CaseClauses }
1. Let V = undefined.
2. Let A be the list of CaseClause items in the first CaseClauses, in
source text order. If the first CaseClauses is not present A is « ».
3. Let found be false.
4. Repeat for each CaseClause C in A
[...]
5. Let foundInB be false.
6. Let B be the List containing the CaseClause items in the second
CaseClauses, in source text order. If the second CaseClauses is not
present B is « ».
7. If found is false, then
a. Repeat for each CaseClause C in B
i. If foundInB is false, then
1. Let clauseSelector be the result of CaseSelectorEvaluation of
C.
[...]
3. Let foundInB be the result of performing Strict Equality
Comparison input === clauseSelector.[[value]].
ii. If foundInB is true, then
[...]
8. If foundInB is true, return NormalCompletion(V).
9. Let R be the result of evaluating DefaultClause.
10. If R.[[value]] is not empty, let V = R.[[value]].
11. If R is an abrupt completion, return Completion(UpdateEmpty(R, V)).
12. Repeat for each CaseClause C in B (NOTE this is another complete
iteration of the second CaseClauses)
a. Let R be the result of evaluating CaseClause C.
b. If R.[[value]] is not empty, let V = R.[[value]].
c. If R is an abrupt completion, return Completion(UpdateEmpty(R, V)).
13. Return NormalCompletion(V).
--- |
2916 |
cptn-dflt-fall-thru-abrupt-empty.js |
---
es6id: 13.12.11
description: >
Completion value when execution continues through multiple cases and ends
with an empty abrupt completion in the default case
info: |
SwitchStatement : switch ( Expression ) CaseBlock
[...]
8. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
argument switchValue.
9. Set the running execution context’s LexicalEnvironment to oldEnv.
10. Return R.
13.12.9 Runtime Semantics: CaseBlockEvaluation
CaseBlock : { CaseClausesopt DefaultClause CaseClausesopt }
1. Let V = undefined.
2. Let A be the list of CaseClause items in the first CaseClauses, in
source text order. If the first CaseClauses is not present A is « ».
3. Let found be false.
4. Repeat for each CaseClause C in A
[...]
5. Let foundInB be false.
6. Let B be the List containing the CaseClause items in the second
CaseClauses, in source text order. If the second CaseClauses is not
present B is « ».
7. If found is false, then
[...]
8. If foundInB is true, return NormalCompletion(V).
9. Let R be the result of evaluating DefaultClause.
10. If R.[[value]] is not empty, let V = R.[[value]].
11. If R is an abrupt completion, return Completion(UpdateEmpty(R, V)).
--- |
2391 |
cptn-dflt-fall-thru-nrml.js |
---
es6id: 13.12.11
description: >
Completion value when execution continues through multiple cases and ends
with a normal completion in the default case
info: |
SwitchStatement : switch ( Expression ) CaseBlock
[...]
8. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
argument switchValue.
9. Set the running execution context’s LexicalEnvironment to oldEnv.
10. Return R.
13.12.9 Runtime Semantics: CaseBlockEvaluation
CaseBlock : { CaseClausesopt DefaultClause CaseClausesopt }
1. Let V = undefined.
2. Let A be the list of CaseClause items in the first CaseClauses, in
source text order. If the first CaseClauses is not present A is « ».
3. Let found be false.
4. Repeat for each CaseClause C in A
[...]
5. Let foundInB be false.
6. Let B be the List containing the CaseClause items in the second
CaseClauses, in source text order. If the second CaseClauses is not
present B is « ».
7. If found is false, then
[...]
8. If foundInB is true, return NormalCompletion(V).
9. Let R be the result of evaluating DefaultClause.
10. If R.[[value]] is not empty, let V = R.[[value]].
11. If R is an abrupt completion, return Completion(UpdateEmpty(R, V)).
12. Repeat for each CaseClause C in B (NOTE this is another complete
iteration of the second CaseClauses)
[...]
13. Return NormalCompletion(V).
--- |
2036 |
cptn-dflt-final.js |
---
es6id: 13.12.11
description: Completion value when the default case matches and is final
info: |
SwitchStatement : switch ( Expression ) CaseBlock
[...]
8. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
argument switchValue.
9. Set the running execution context’s LexicalEnvironment to oldEnv.
10. Return R.
13.12.9 Runtime Semantics: CaseBlockEvaluation
CaseBlock : { CaseClauses }
1. Let V = undefined.
2. Let A be the list of CaseClause items in the first CaseClauses, in
source text order. If the first CaseClauses is not present A is « ».
3. Let found be false.
4. Repeat for each CaseClause C in A
[...]
5. Let foundInB be false.
6. Let B be the List containing the CaseClause items in the second
CaseClauses, in source text order. If the second CaseClauses is not
present B is « ».
7. If found is false, then
a. Repeat for each CaseClause C in B
[...]
8. If foundInB is true, return NormalCompletion(V).
9. Let R be the result of evaluating DefaultClause.
10. If R.[[value]] is not empty, let V = R.[[value]].
[...]
13. Return NormalCompletion(V).
--- |
2155 |
cptn-no-dflt-match-abrupt-empty.js |
---
es6id: 13.12.11
description: >
Completion value when the matching case is exited via an empty abrupt
completion
info: |
SwitchStatement : switch ( Expression ) CaseBlock
[...]
8. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
argument switchValue.
9. Set the running execution context’s LexicalEnvironment to oldEnv.
10. Return R.
13.12.9 Runtime Semantics: CaseBlockEvaluation
CaseBlock : { CaseClauses }
1. Let V = undefined.
2. Let A be the List of CaseClause items in CaseClauses, in source text
order.
3. Let found be false.
4. Repeat for each CaseClause C in A,
a. If found is false, then
i. Let clauseSelector be the result of CaseSelectorEvaluation of C.
ii. If clauseSelector is an abrupt completion, then
1. If clauseSelector.[[value]] is empty, return
Completion{[[type]]: clauseSelector.[[type]], [[value]]:
undefined, [[target]]: clauseSelector.[[target]]}.
2. Else, return Completion(clauseSelector).
iii. Let found be the result of performing Strict Equality Comparison
input === clauseSelector.[[value]].
b. If found is true, then
i. Let R be the result of evaluating C.
ii. If R.[[value]] is not empty, let V = R.[[value]].
iii. If R is an abrupt completion, return Completion(UpdateEmpty(R,
V)).
--- |
2015 |
cptn-no-dflt-match-fall-thru-abrupt-empty.js |
---
es6id: 13.12.11
description: >
Completion value when execution continues through multiple cases and ends
with an empty abrupt completion
info: |
SwitchStatement : switch ( Expression ) CaseBlock
[...]
8. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
argument switchValue.
9. Set the running execution context’s LexicalEnvironment to oldEnv.
10. Return R.
13.12.9 Runtime Semantics: CaseBlockEvaluation
CaseBlock : { CaseClauses }
1. Let V = undefined.
2. Let A be the List of CaseClause items in CaseClauses, in source text
order.
3. Let found be false.
4. Repeat for each CaseClause C in A,
a. If found is false, then
[...]
b. If found is true, then
i. Let R be the result of evaluating C.
ii. If R.[[value]] is not empty, let V = R.[[value]].
iii. If R is an abrupt completion, return Completion(UpdateEmpty(R,
V)).
--- |
2073 |
cptn-no-dflt-match-fall-thru-nrml.js |
---
es6id: 13.12.11
description: >
Completion value when execution continues through multiple cases and ends
with a normal completion
info: |
SwitchStatement : switch ( Expression ) CaseBlock
[...]
8. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
argument switchValue.
9. Set the running execution context’s LexicalEnvironment to oldEnv.
10. Return R.
13.12.9 Runtime Semantics: CaseBlockEvaluation
CaseBlock : { CaseClauses }
1. Let V = undefined.
2. Let A be the List of CaseClause items in CaseClauses, in source text
order.
3. Let found be false.
4. Repeat for each CaseClause C in A,
a. If found is false, then
[...]
b. If found is true, then
i. Let R be the result of evaluating C.
ii. If R.[[value]] is not empty, let V = R.[[value]].
[...]
5. Return NormalCompletion(V).
--- |
1500 |
cptn-no-dflt-match-final.js |
---
es6id: 13.12.11
description: Completion value when only the final case matches
info: |
SwitchStatement : switch ( Expression ) CaseBlock
[...]
8. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
argument switchValue.
9. Set the running execution context’s LexicalEnvironment to oldEnv.
10. Return R.
13.12.9 Runtime Semantics: CaseBlockEvaluation
CaseBlock : { CaseClauses }
1. Let V = undefined.
2. Let A be the List of CaseClause items in CaseClauses, in source text
order.
3. Let found be false.
4. Repeat for each CaseClause C in A,
a. If found is false, then
i. Let clauseSelector be the result of CaseSelectorEvaluation of C.
ii. If clauseSelector is an abrupt completion, then
1. If clauseSelector.[[value]] is empty, return
Completion{[[type]]: clauseSelector.[[type]], [[value]]:
undefined, [[target]]: clauseSelector.[[target]]}.
2. Else, return Completion(clauseSelector).
iii. Let found be the result of performing Strict Equality Comparison
input === clauseSelector.[[value]].
b. If found is true, then
i. Let R be the result of evaluating C.
ii. If R.[[value]] is not empty, let V = R.[[value]].
iii. If R is an abrupt completion, return Completion(UpdateEmpty(R,
V)).
5. Return NormalCompletion(V).
--- |
2417 |
cptn-no-dflt-no-match.js |
---
es6id: 13.12.11
description: Completion value when no cases match
info: |
SwitchStatement : switch ( Expression ) CaseBlock
[...]
8. Let R be the result of performing CaseBlockEvaluation of CaseBlock with
argument switchValue.
9. Set the running execution context’s LexicalEnvironment to oldEnv.
10. Return R.
13.12.9 Runtime Semantics: CaseBlockEvaluation
CaseBlock : { CaseClauses }
1. Let V = undefined.
2. Let A be the List of CaseClause items in CaseClauses, in source text
order.
3. Let found be false.
4. Repeat for each CaseClause C in A,
a. If found is false, then
i. Let clauseSelector be the result of CaseSelectorEvaluation of C.
ii. If clauseSelector is an abrupt completion, then
[...]
iii. Let found be the result of performing Strict Equality Comparison
input === clauseSelector.[[value]].
b. If found is true, then
[...]
5. Return NormalCompletion(V).
--- |
1396 |
S12.11_A1_T1.js |
---
info: |
If Result.type is break and Result.target is in the current
label set, return (normal, Result.value, empty)
es5id: 12.11_A1_T1
description: Simple test using switch statement
--- |
2051 |
S12.11_A1_T2.js |
---
info: |
If Result.type is break and Result.target is in the current
label set, return (normal, Result.value, empty)
es5id: 12.11_A1_T2
description: Switch with different types of variables
--- |
2358 |
S12.11_A1_T3.js |
---
info: |
If Result.type is break and Result.target is in the current
label set, return (normal, Result.value, empty)
es5id: 12.11_A1_T3
description: Using case with null, NaN, Infinity
--- |
2519 |
S12.11_A1_T4.js |
---
info: |
If Result.type is break and Result.target is in the current
label set, return (normal, Result.value, empty)
es5id: 12.11_A1_T4
description: Using case with isNaN and isNaN(value)
--- |
2228 |
S12.11_A2_T1.js |
---
info: There can be only one DefaultClause
es5id: 12.11_A2_T1
description: Duplicate DefaultClause
negative:
phase: parse
type: SyntaxError
--- |
575 |
S12.11_A3_T1.js |
---
info: Syntax constructions of switch statement
es5id: 12.11_A3_T1
description: Checking if execution of "switch() {}" fails
negative:
phase: parse
type: SyntaxError
--- |
550 |
S12.11_A3_T2.js |
---
info: Syntax constructions of switch statement
es5id: 12.11_A3_T2
description: Checking if execution of "switch {}" fails
negative:
phase: parse
type: SyntaxError
--- |
546 |
S12.11_A3_T3.js |
---
info: Syntax constructions of switch statement
es5id: 12.11_A3_T3
description: Checking if execution of "switch(value)" fails
negative:
phase: parse
type: SyntaxError
--- |
382 |
S12.11_A3_T4.js |
---
info: Syntax constructions of switch statement
es5id: 12.11_A3_T4
description: >
Using "case" that has no Expresson after it. "CaseClause: case
Expression : [StatementList]"
negative:
phase: parse
type: SyntaxError
--- |
611 |
S12.11_A3_T5.js |
---
info: Syntax constructions of switch statement
es5id: 12.11_A3_T5
description: Introducing statement not followed by "case" keyword
negative:
phase: parse
type: SyntaxError
--- |
577 |
S12.11_A4_T1.js |
---
info: Embedded syntax constructions of switch statement
es5id: 12.11_A4_T1
description: Nesting one "switch" statement into StatementList of the other's
--- |
790 |
scope-lex-async-function.js |
---
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
--- |
907 |
scope-lex-async-generator.js |
---
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
--- |
909 |
scope-lex-class.js |
---
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
--- |
896 |
scope-lex-close-case.js |
---
esid: sec-switch-statement-runtime-semantics-evaluation
description: Removal of lexical environment (from `case` 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.
[...]
features: [let]
--- |
1164 |
scope-lex-close-dflt.js |
---
esid: sec-switch-statement-runtime-semantics-evaluation
description: Removal of lexical environment (from `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.
[...]
features: [let]
--- |
1459 |
scope-lex-const.js |
---
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
--- |
898 |
scope-lex-generator.js |
---
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
--- |
903 |
scope-lex-let.js |
---
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
--- |
898 |
scope-lex-open-case.js |
---
esid: sec-switch-statement-runtime-semantics-evaluation
description: Creation of new lexical environment (into `case` 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.
[...]
features: [let]
--- |
1265 |
scope-lex-open-dflt.js |
---
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.
[...]
features: [let]
--- |
1077 |
scope-var-none-case.js |
---
esid: sec-switch-statement-runtime-semantics-evaluation
description: Retainment of existing variable environment (`case` 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.
[...]
flags: [noStrict]
--- |
1463 |
scope-var-none-dflt.js |
---
esid: sec-switch-statement-runtime-semantics-evaluation
description: Retainment of existing variable environment (`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.
[...]
flags: [noStrict]
--- |
1305 |
shell.js |
---
description: |
This defines the number of consecutive recursive function calls that must be
made in order to prove that stack frames are properly destroyed according to
ES2015 tail call optimization semantics.
defines: [$MAX_ITERATIONS]
--- |
481 |
syntax |
|
|
tco-case-body-dflt-strict.js |
---
description: Statement within statement is a candidate for tail-call optimization.
esid: sec-static-semantics-hascallintailposition
flags: [onlyStrict]
features: [tail-call-optimization]
includes: [tcoHelper.js]
--- |
651 |
tco-case-body-strict.js |
---
description: Statement within statement is a candidate for tail-call optimization.
esid: sec-static-semantics-hascallintailposition
flags: [onlyStrict]
features: [tail-call-optimization]
includes: [tcoHelper.js]
--- |
642 |
tco-dftl-body-strict.js |
---
description: Statement within statement is a candidate for tail-call optimization.
esid: sec-static-semantics-hascallintailposition
flags: [onlyStrict]
features: [tail-call-optimization]
includes: [tcoHelper.js]
--- |
643 |