vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php line 25
<?php/** This file is part of Twig.** (c) Fabien Potencier* (c) Armin Ronacher** For the full copyright and license information, please view the LICENSE* file that was distributed with this source code.*/namespace Twig\Node\Expression;use Twig\Compiler;use Twig\Node\Node;/*** Represents a block call node.** @author Fabien Potencier <fabien@symfony.com>*/class BlockReferenceExpression extends AbstractExpression{public function __construct(Node $name, ?Node $template, int $lineno, string $tag = null){$nodes = ['name' => $name];if (null !== $template) {$nodes['template'] = $template;}parent::__construct($nodes, ['is_defined_test' => false, 'output' => false], $lineno, $tag);}public function compile(Compiler $compiler): void{if ($this->getAttribute('is_defined_test')) {$this->compileTemplateCall($compiler, 'hasBlock');} else {if ($this->getAttribute('output')) {$compiler->addDebugInfo($this);$this->compileTemplateCall($compiler, 'displayBlock')->raw(";\n");} else {$this->compileTemplateCall($compiler, 'renderBlock');}}}private function compileTemplateCall(Compiler $compiler, string $method): Compiler{if (!$this->hasNode('template')) {$compiler->write('$this');} else {$compiler->write('$this->loadTemplate(')->subcompile($this->getNode('template'))->raw(', ')->repr($this->getTemplateName())->raw(', ')->repr($this->getTemplateLine())->raw(')');}$compiler->raw(sprintf('->%s', $method));return $this->compileBlockArguments($compiler);}private function compileBlockArguments(Compiler $compiler): Compiler{$compiler->raw('(')->subcompile($this->getNode('name'))->raw(', $context');if (!$this->hasNode('template')) {$compiler->raw(', $blocks');}return $compiler->raw(')');}}