fixed a regression when a template only extends another one without defining any...
authorFabien Potencier <fabien.potencier@gmail.com>
Tue, 3 Apr 2012 17:12:14 +0000 (19:12 +0200)
committerFabien Potencier <fabien.potencier@gmail.com>
Tue, 3 Apr 2012 17:13:30 +0000 (19:13 +0200)
CHANGELOG
lib/Twig/Node/Module.php
test/Twig/Tests/Fixtures/tags/inheritance/empty.test [new file with mode: 0644]
test/Twig/Tests/Node/ModuleTest.php
test/Twig/Tests/Node/SandboxedModuleTest.php

index 4d8b7f7..b0e96ec 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,6 @@
 * 1.7.0 (2012-XX-XX)
 
+ * fixed a regression when a template only extends another one without defining any blocks
  * added compilation checks to avoid misuses of the sandbox tag
  * fixed filesystem loader freshness logic for high traffic websites
 
index c67bc9a..65428f9 100644 (file)
@@ -37,7 +37,7 @@ class Twig_Node_Module extends Twig_Node
     {
         $this->compileClassHeader($compiler);
 
-        if (count($this->getNode('blocks')) || count($this->getNode('traits'))) {
+        if (count($this->getNode('blocks')) || count($this->getNode('traits')) || null === $this->getNode('parent') || $this->getNode('parent') instanceof Twig_Node_Expression_Constant) {
             $this->compileConstructor($compiler);
         }
 
diff --git a/test/Twig/Tests/Fixtures/tags/inheritance/empty.test b/test/Twig/Tests/Fixtures/tags/inheritance/empty.test
new file mode 100644 (file)
index 0000000..784f357
--- /dev/null
@@ -0,0 +1,10 @@
+--TEST--
+"extends" tag
+--TEMPLATE--
+{% extends "foo.twig" %}
+--TEMPLATE(foo.twig)--
+{% block content %}FOO{% endblock %}
+--DATA--
+return array()
+--EXPECT--
+FOO
index 4b2b2e9..f60f105 100644 (file)
@@ -69,6 +69,16 @@ class Twig_Tests_Node_ModuleTest extends Twig_Tests_Node_TestCase
 /* foo.twig */
 class __TwigTemplate_be925a7b06dda0dfdbd18a1509f7eb34 extends Twig_Template
 {
+    public function __construct(Twig_Environment \$env)
+    {
+        parent::__construct(\$env);
+
+        \$this->parent = false;
+
+        \$this->blocks = array(
+        );
+    }
+
     protected function doDisplay(array \$context, array \$blocks = array())
     {
         echo "foo";
@@ -99,6 +109,16 @@ EOF
 /* foo.twig */
 class __TwigTemplate_be925a7b06dda0dfdbd18a1509f7eb34 extends Twig_Template
 {
+    public function __construct(Twig_Environment \$env)
+    {
+        parent::__construct(\$env);
+
+        \$this->parent = \$this->env->loadTemplate("layout.twig");
+
+        \$this->blocks = array(
+        );
+    }
+
     protected function doGetParent(array \$context)
     {
         return "layout.twig";
index f86442b..db1bd89 100644 (file)
@@ -67,6 +67,16 @@ class Twig_Tests_Node_SandboxedModuleTest extends Twig_Tests_Node_TestCase
 /* foo.twig */
 class __TwigTemplate_be925a7b06dda0dfdbd18a1509f7eb34 extends Twig_Template
 {
+    public function __construct(Twig_Environment \$env)
+    {
+        parent::__construct(\$env);
+
+        \$this->parent = false;
+
+        \$this->blocks = array(
+        );
+    }
+
     protected function doDisplay(array \$context, array \$blocks = array())
     {
         \$this->checkSecurity();
@@ -110,6 +120,16 @@ EOF
 /* foo.twig */
 class __TwigTemplate_be925a7b06dda0dfdbd18a1509f7eb34 extends Twig_Template
 {
+    public function __construct(Twig_Environment \$env)
+    {
+        parent::__construct(\$env);
+
+        \$this->parent = \$this->env->loadTemplate("layout.twig");
+
+        \$this->blocks = array(
+        );
+    }
+
     protected function doGetParent(array \$context)
     {
         return "layout.twig";