setAttribute('with_loop', false); $this->assertEquals($keyTarget, $node->getNode('key_target')); $this->assertEquals($valueTarget, $node->getNode('value_target')); $this->assertEquals($seq, $node->getNode('seq')); $this->assertEquals($body, $node->getNode('body')); $this->assertFalse($node->hasNode('else')); $else = new PrintNode(new NameExpression('foo', 1), 1); $node = new ForNode($keyTarget, $valueTarget, $seq, null, $body, $else, 1); $node->setAttribute('with_loop', false); $this->assertEquals($else, $node->getNode('else')); } public function getTests() { $tests = []; $keyTarget = new AssignNameExpression('key', 1); $valueTarget = new AssignNameExpression('item', 1); $seq = new NameExpression('items', 1); $body = new Node([new PrintNode(new NameExpression('foo', 1), 1)], [], 1); $else = null; $node = new ForNode($keyTarget, $valueTarget, $seq, null, $body, $else, 1); $node->setAttribute('with_loop', false); $tests[] = [$node, <<getVariableGetter('items')}); foreach (\$__internal_compile_0 as \$context["key"] => \$context["item"]) { yield {$this->getVariableGetter('foo')}; } \$_parent = \$context['_parent']; unset(\$context['key'], \$context['item'], \$context['_parent'], \$context['loop']); \$context = array_intersect_key(\$context, \$_parent) + \$_parent; EOF ]; $keyTarget = new AssignNameExpression('k', 1); $valueTarget = new AssignNameExpression('v', 1); $seq = new NameExpression('values', 1); $body = new Node([new PrintNode(new NameExpression('foo', 1), 1)], [], 1); $else = null; $node = new ForNode($keyTarget, $valueTarget, $seq, null, $body, $else, 1); $node->setAttribute('with_loop', true); $tests[] = [$node, <<getVariableGetter('values')}); \$context['loop'] = new \Twig\Runtime\LoopContext(\$__internal_compile_0, \$context['_parent']); foreach (\$__internal_compile_0 as \$context["k"] => \$context["v"]) { yield {$this->getVariableGetter('foo')}; } \$_parent = \$context['_parent']; unset(\$context['k'], \$context['v'], \$context['_parent'], \$context['loop']); \$context = array_intersect_key(\$context, \$_parent) + \$_parent; EOF ]; $keyTarget = new AssignNameExpression('k', 1); $valueTarget = new AssignNameExpression('v', 1); $seq = new NameExpression('values', 1); $body = new Node([new PrintNode(new NameExpression('foo', 1), 1)], [], 1); $else = null; $node = new ForNode($keyTarget, $valueTarget, $seq, null, $body, $else, 1); $node->setAttribute('with_loop', true); $tests[] = [$node, <<getVariableGetter('values')}); \$context['loop'] = new \Twig\Runtime\LoopContext(\$__internal_compile_0, \$context['_parent']); foreach (\$__internal_compile_0 as \$context["k"] => \$context["v"]) { yield {$this->getVariableGetter('foo')}; } \$_parent = \$context['_parent']; unset(\$context['k'], \$context['v'], \$context['_parent'], \$context['loop']); \$context = array_intersect_key(\$context, \$_parent) + \$_parent; EOF ]; $keyTarget = new AssignNameExpression('k', 1); $valueTarget = new AssignNameExpression('v', 1); $seq = new NameExpression('values', 1); $body = new Node([new PrintNode(new NameExpression('foo', 1), 1)], [], 1); $else = new PrintNode(new NameExpression('foo', 1), 1); $node = new ForNode($keyTarget, $valueTarget, $seq, null, $body, $else, 1); $node->setAttribute('with_loop', true); $tests[] = [$node, <<getVariableGetter('values')}); \$context['loop'] = new \Twig\Runtime\LoopContext(\$__internal_compile_0, \$context['_parent']); foreach (\$__internal_compile_0 as \$context["k"] => \$context["v"]) { yield {$this->getVariableGetter('foo')}; } if (!\$__internal_compile_0->iterated()) { yield {$this->getVariableGetter('foo')}; } \$_parent = \$context['_parent']; unset(\$context['k'], \$context['v'], \$context['_parent'], \$context['loop']); \$context = array_intersect_key(\$context, \$_parent) + \$_parent; EOF ]; return $tests; } }