Fix regression in defined test for GetAttr. Fixes #319
authornikic <+@ni-po.com>
Tue, 3 May 2011 16:56:57 +0000 (18:56 +0200)
committerFabien Potencier <fabien.potencier@gmail.com>
Wed, 18 May 2011 06:08:32 +0000 (08:08 +0200)
lib/Twig/Node/Expression/Test.php
test/Twig/Tests/Fixtures/tests/defined.test

index 2a69e8c..3025209 100644 (file)
@@ -33,8 +33,9 @@ class Twig_Node_Expression_Test extends Twig_Node_Expression
             } elseif ($this->getNode('node') instanceof Twig_Node_Expression_GetAttr) {
                 $this->getNode('node')->setAttribute('is_defined_test', true);
                 $compiler
-                    ->raw('null !== ')
+                    ->raw('(null !== ')
                     ->subcompile($this->getNode('node'))
+                    ->raw(')')
                 ;
             } else {
                 throw new Twig_Error_Syntax('The "defined" test only works with simple variables', $this->getLine());
index b6119c0..2a8ae01 100644 (file)
@@ -6,6 +6,7 @@
 {{ foobar is not defined ? 'ok' : 'ko' }}
 {{ zero is defined ? 'ok' : 'ko' }}
 {{ nested.foo is defined ? 'ok' : 'ko' }}
+{{ nested.foo is not defined ? 'ok' : 'ko' }}
 {{ nested.bar is not defined ? 'ok' : 'ko' }}
 {{ nested.zero is defined ? 'ok' : 'ko' }}
 --DATA--
@@ -16,5 +17,6 @@ ok
 ok
 ok
 ok
+ko
 ok
 ok