// 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 es6id: 14.4 description: YieldExpression may be followed by a TemplateMiddle construct info: | The syntactic context immediately following yield requires use of the InputElementRegExpOrTemplateTail lexical goal. features: [generators] ---*/ var complete = false; var iter, iterResult, str; function* g() { str = `1${ yield }3${ 4 }5`; complete = true; } iter = g(); assert.sameValue(complete, false, 'generator initially paused'); assert.sameValue(str, undefined, 'first statement not executed'); iterResult = iter.next(); assert.sameValue(complete, false, 'generator paused following expression'); assert.sameValue(str, undefined, 'first statement not executed'); assert.sameValue(iterResult.done, false, 'iteration not complete'); assert.sameValue(iterResult.value, undefined, 'first iterated value'); iterResult = iter.next(2); assert.sameValue(str, '12345', 'YieldExpression value'); assert.sameValue(complete, true, 'generator correctly re-started'); assert.sameValue(iterResult.done, true, 'iteration complete'); assert.sameValue(iterResult.value, undefined, 'second iterated value');