added an exception for unclosed tags
authorFabien Potencier <fabien.potencier@gmail.com>
Tue, 6 Sep 2011 11:42:02 +0000 (13:42 +0200)
committerFabien Potencier <fabien.potencier@gmail.com>
Tue, 6 Sep 2011 11:45:10 +0000 (13:45 +0200)
CHANGELOG
lib/Twig/Parser.php
test/Twig/Tests/Fixtures/exceptions/unclosed_tag.test [new file with mode: 0644]

index e2e8468..dbb09db 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,6 @@
 * 1.2.0
 
+ * enhanced the exception when a tag remains unclosed
  * added support for empty Countable objects for the "empty" test
  * fixed algorithm that determines if a template using inheritance is valid (no output between block definitions)
  * added better support for encoding problems when escaping a string (available as of PHP 5.4)
index 0a4ae3e..8c98288 100644 (file)
@@ -140,6 +140,10 @@ class Twig_Parser implements Twig_ParserInterface
 
                     $subparser = $this->handlers->getTokenParser($token->getValue());
                     if (null === $subparser) {
+                        if (null !== $test) {
+                            throw new Twig_Error_Syntax(sprintf('Unexpected tag name "%s" (expecting closing tag for the "%s" tag defined near line %s)', $token->getValue(), $test[0]->getTag(), $lineno), $token->getLine(), $this->stream->getFilename());
+                        }
+
                         throw new Twig_Error_Syntax(sprintf('Unknown tag name "%s"', $token->getValue()), $token->getLine(), $this->stream->getFilename());
                     }
 
diff --git a/test/Twig/Tests/Fixtures/exceptions/unclosed_tag.test b/test/Twig/Tests/Fixtures/exceptions/unclosed_tag.test
new file mode 100644 (file)
index 0000000..02245e9
--- /dev/null
@@ -0,0 +1,20 @@
+--TEST--
+Exception for an unclosed tag
+--TEMPLATE--
+{% block foo %}
+     {% if foo %}
+
+
+
+
+         {% for i in fo %}
+
+
+
+         {% endfor %}
+
+
+
+{% endblock %}
+--EXCEPTION--
+Twig_Error_Syntax: Unexpected tag name "endblock" (expecting closing tag for the "if" tag defined near line 4) in "index.twig" at line 16