From 788566cf70752584e804185b0f39dc4446aabbc6 Mon Sep 17 00:00:00 2001 From: uwetews Date: Thu, 8 Oct 2015 19:53:25 +0200 Subject: [PATCH] - bugfix {if $foo instanceof $bar} failed to compile if 2nd value is a variable https://github.com/smarty-php/smarty/issues/92 (reverted from commit 428e6674533ac13f28234f974e8b8d5f4d2d9e73) --- lexer/smarty_internal_templateparser.y | 40 ++++++-------------------- 1 file changed, 8 insertions(+), 32 deletions(-) diff --git a/lexer/smarty_internal_templateparser.y b/lexer/smarty_internal_templateparser.y index f0b262b8..f693592a 100644 --- a/lexer/smarty_internal_templateparser.y +++ b/lexer/smarty_internal_templateparser.y @@ -31,68 +31,58 @@ class Smarty_Internal_Templateparser * @var bool */ public $successful = true; - /** * return value * * @var mixed */ public $retvalue = 0; - /** * counter for prefix code * * @var int */ public static $prefix_number = 0; - /** * @var */ public $yymajor; - /** * last index of array variable * * @var mixed */ public $last_index; - /** * last variable name * * @var string */ public $last_variable; - /** * root parse tree buffer * * @var Smarty_Internal_ParseTree */ public $root_buffer; - /** * current parse tree object * * @var Smarty_Internal_ParseTree */ public $current_buffer; - /** * lexer object * * @var Smarty_Internal_Templatelexer */ public $lex; - /** * internal error flag * * @var bool */ private $internalError = false; - /** * {strip} status * @@ -105,21 +95,18 @@ class Smarty_Internal_Templateparser * @var Smarty_Internal_TemplateCompilerBase */ public $compiler = null; - /** * smarty object * * @var Smarty */ public $smarty = null; - /** * template object * * @var Smarty_Internal_Template */ public $template = null; - /** * block nesting level * @@ -134,20 +121,6 @@ class Smarty_Internal_Templateparser */ public $security = null; - /** - * template prefix array - * - * @var \Smarty_Internal_ParseTree[] - */ - public $template_prefix = array(); - - /** - * security object - * - * @var \Smarty_Internal_ParseTree[] - */ - public $template_postfix = array(); - /** * constructor * @@ -223,8 +196,7 @@ class Smarty_Internal_Templateparser // complete template // start(res) ::= template. { - $this->root_buffer->prepend_array($this, $this->template_prefix); - $this->root_buffer->append_array($this, $this->template_postfix); + $this->compiler->processInheritance($this); res = $this->root_buffer->to_smarty_php($this); } @@ -822,7 +794,7 @@ value(res) ::= varindexed(vi) DOUBLECOLON static_class_access(r). { self::$prefix_number++; if (vi['var'] == '\'smarty\'') { $this->compiler->prefix_code[] = 'compiler->compileTag('private_special_variable',array(),vi['smarty_internal_index']).';?>'; - } else { + } else { $this->compiler->prefix_code[] = 'compiler->compileVariable(vi['var']).vi['smarty_internal_index'].';?>'; } res = '$_tmp'.self::$prefix_number.'::'.r[0].r[1]; @@ -830,7 +802,7 @@ value(res) ::= varindexed(vi) DOUBLECOLON static_class_access(r). { // Smarty tag value(res) ::= smartytag(st). { - self::$prefix_number++; + self::$prefix_number++; $tmp = $this->compiler->appendCode('', st); $this->compiler->prefix_code[] = $this->compiler->appendCode($tmp, ''); res = '$_tmp'.self::$prefix_number; @@ -867,7 +839,11 @@ ns1(res) ::= ID(i). { ns1(res) ::= NAMESPACE(i). { res = i; - } +} + +//ns1(res) ::= variable(v). { +// res = v; +//}