diff --git a/lib/Twig/ExpressionParser.php b/lib/Twig/ExpressionParser.php index dc49c4924..bc8a8fdbe 100644 --- a/lib/Twig/ExpressionParser.php +++ b/lib/Twig/ExpressionParser.php @@ -365,6 +365,17 @@ class Twig_ExpressionParser } else { throw new Twig_Error_Syntax('Expected name or number', $lineno, $this->parser->getFilename()); } + + if ($node instanceof Twig_Node_Expression_Name && null !== $alias = $this->parser->getImportedSymbol('template', $node->getAttribute('name'))) { + if (!$arg instanceof Twig_Node_Expression_Constant) { + throw new Twig_Error_Syntax(sprintf('Dynamic macro names are not supported (called on "%s")', $node->getAttribute('name')), $token->getLine(), $this->parser->getFilename()); + } + + $node = new Twig_Node_Expression_MethodCall($node, 'get'.$arg->getAttribute('value'), $arguments, $lineno); + $node->setAttribute('safe', true); + + return $node; + } } else { $type = Twig_TemplateInterface::ARRAY_CALL; @@ -392,17 +403,6 @@ class Twig_ExpressionParser $stream->expect(Twig_Token::PUNCTUATION_TYPE, ']'); } - if ($node instanceof Twig_Node_Expression_Name && null !== $alias = $this->parser->getImportedSymbol('template', $node->getAttribute('name'))) { - if (!$arg instanceof Twig_Node_Expression_Constant) { - throw new Twig_Error_Syntax(sprintf('Dynamic macro names are not supported (called on "%s")', $node->getAttribute('name')), $token->getLine(), $this->parser->getFilename()); - } - - $node = new Twig_Node_Expression_MethodCall($node, 'get'.$arg->getAttribute('value'), $arguments, $lineno); - $node->setAttribute('safe', true); - - return $node; - } - return new Twig_Node_Expression_GetAttr($node, $arg, $arguments, $type, $lineno); }