Resolve constant parent templates once instead of on every lookup

This commit is contained in:
Fabien Potencier
2026-09-11 06:10:11 -07:00
parent 4de6bc3b06
commit c53b6468c9
4 changed files with 25 additions and 10 deletions
+10 -9
View File
@@ -143,17 +143,18 @@ final class ModuleNode extends Node implements CoercesChildrenToStringInterface
;
if ($parent instanceof ConstantExpression) {
$compiler->subcompile($parent);
} else {
$compiler
->raw('$this->load(')
->subcompile($parent)
->raw(', ')
->repr($parent->getTemplateLine())
->raw(')')
;
// a constant parent never depends on the context, so resolve it once
$compiler->raw('$this->parent ??= ');
}
$compiler
->raw('$this->load(')
->subcompile($parent)
->raw(', ')
->repr($parent->getTemplateLine())
->raw(')')
;
$compiler
->raw(";\n")
->outdent()