public function parse(\Twig_Token $token) { if (!$this->parser->isMainScope()) { throw new \Twig_Error_Syntax('Cannot extend from a block.', $token->getLine(), $this->parser->getFilename()); } if (null !== $this->parser->getParent()) { throw new \Twig_Error_Syntax('Multiple extends tags are forbidden.', $token->getLine(), $this->parser->getFilename()); } $this->parser->setParent($this->parser->getExpressionParser()->parseExpression()); $this->parser->getStream()->expect(\Twig_Token::BLOCK_END_TYPE); if (Helper::hasBuffer($this->parser->getFilename())) { $parentName = $this->parser->getParent()->getAttribute('value'); $name = $this->parser->getFilename(); // If the parent has no buffer values, transfer them from the child template if (is_null(Helper::getBuffer($parentName))) { Helper::setBuffer($parentName, Helper::getBuffer($name)); } } }