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

/*---
desc: >
    When a `yield` token appears within the Initializer of an
    AssignmentProperty and within a generator function body, it should behave
    as a YieldExpression.
template: default
es6id: 12.14.5
features: [generators]
---*/

//- setup
var iterationResult, x, iter;

iter = (function*() {
//- elems
{ x = yield }
//- vals
{}
//- teardown
}());

iterationResult = iter.next();

assert.sameValue(iterationResult.value, undefined);
assert.sameValue(iterationResult.done, false);
assert.sameValue(x, undefined);

iterationResult = iter.next(3);

assert.sameValue(iterationResult.value, undefined);
assert.sameValue(iterationResult.done, true);
assert.sameValue(x, 3);
