fixed inheritance bug (closes #81)
authorFabien Potencier <fabien.potencier@gmail.com>
Tue, 6 Jul 2010 11:48:59 +0000 (13:48 +0200)
committerFabien Potencier <fabien.potencier@gmail.com>
Tue, 6 Jul 2010 11:48:59 +0000 (13:48 +0200)
lib/Twig/Template.php
test/Twig/Tests/Fixtures/tags/inheritance/nested_inheritance.test [new file with mode: 0644]

index 389bd91..cdea823 100644 (file)
@@ -22,6 +22,15 @@ abstract class Twig_Template implements Twig_TemplateInterface
         $this->blocks = array();
     }
 
+    public function __clone()
+    {
+        foreach ($this->blocks as $name => $calls) {
+            foreach ($calls as $i => $call) {
+                $this->blocks[$name][$i][0] = $this;
+            }
+        }
+    }
+
     public function getEnvironment()
     {
         return $this->env;
diff --git a/test/Twig/Tests/Fixtures/tags/inheritance/nested_inheritance.test b/test/Twig/Tests/Fixtures/tags/inheritance/nested_inheritance.test
new file mode 100644 (file)
index 0000000..71e3cdf
--- /dev/null
@@ -0,0 +1,16 @@
+--TEST--
+"extends" tag
+--TEMPLATE--
+{% extends "layout.twig" %}
+{% block inside %}INSIDE{% endblock inside %}
+--TEMPLATE(layout.twig)--
+{% extends "base.twig" %}
+{% block body %}
+    {% block inside '' %}
+{% endblock body %}
+--TEMPLATE(base.twig)--
+{% block body '' %}
+--DATA--
+return array()
+--EXPECT--
+INSIDE