// 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-generator-function-definitions-runtime-semantics-evaluation es6id: 14.4.14 description: > Iteration protocol is not initiated for non-delegating YieldExpression info: | YieldExpression:yieldAssignmentExpression 1. Let exprRef be the result of evaluating AssignmentExpression. 2. Let value be ? GetValue(exprRef). 3. Return ? GeneratorYield(CreateIterResultObject(value, false)). features: [generators, Symbol.iterator] ---*/ var callCount = 0; var iterSpy = Object.defineProperty({}, Symbol.iterator, { get: function() { callCount += 1; } }); function* g() { yield iterSpy; } var iter = g(); var result; result = iter.next(); assert.sameValue(result.value, iterSpy); assert.sameValue(result.done, false); assert.sameValue(callCount, 0); result = iter.next(); assert.sameValue(result.value, undefined); assert.sameValue(result.done, true); assert.sameValue(callCount, 0);