mirror of https://github.com/tc39/test262.git
44 lines
1.3 KiB
JavaScript
44 lines
1.3 KiB
JavaScript
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
/*---
|
|
esid: sec-for-statement-runtime-semantics-labelledevaluation
|
|
description: >
|
|
Creation of new lexical environment for each evaluation of the statement
|
|
body
|
|
info: |
|
|
[...]
|
|
11. Let bodyResult be ForBodyEvaluation(the first Expression, the second
|
|
Expression, Statement, perIterationLets, labelSet).
|
|
[...]
|
|
|
|
13.7.4.8 Runtime Semantics: ForBodyEvaluation
|
|
|
|
[...]
|
|
3. Repeat
|
|
[...]
|
|
b. Let result be the result of evaluating stmt.
|
|
[...]
|
|
e. Perform ? CreatePerIterationEnvironment(perIterationBindings).
|
|
[...]
|
|
|
|
13.7.4.9 Runtime Semantics: CreatePerIterationEnvironment
|
|
|
|
1. If perIterationBindings has any elements, then
|
|
[...]
|
|
e. Let thisIterationEnv be NewDeclarativeEnvironment(outer).
|
|
f. Let thisIterationEnvRec be thisIterationEnv's EnvironmentRecord.
|
|
features: [let]
|
|
---*/
|
|
|
|
var probeFirst;
|
|
var probeSecond = null;
|
|
|
|
for (let x = 'first'; probeSecond === null; x = 'second')
|
|
if (!probeFirst)
|
|
probeFirst = function() { return x; };
|
|
else
|
|
probeSecond = function() { return x; };
|
|
|
|
assert.sameValue(probeFirst(), 'first');
|
|
assert.sameValue(probeSecond(), 'second');
|