// Copyright (C) 2015 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
desc: >
    The Initializer should only be evaluated if v is undefined.
template: default
es6id: 12.14.5.4
---*/

//- setup
var flag1 = false;
var flag2 = false;
var x, y;
//- elems
{ x: x = flag1 = true, y: y = flag2 = true }
//- vals
{ y: 1 }
//- body
assert.sameValue(x, true, 'value of `x`');
assert.sameValue(flag1, true, 'value of `flag1`');
assert.sameValue(y, 1, 'value of `y`');
assert.sameValue(flag2, false, 'value of `flag2`');
