list
($variables,
$only,
$ignoreMissing) =
$this->
parseArguments();
$parentToken =
$fakeParentToken =
new Token(/* Token::STRING_TYPE */ 7, '__parent__',
$token->
getLine());
if ($parent instanceof ConstantExpression
) { $parentToken =
new Token(/* Token::STRING_TYPE */ 7,
$parent->
getAttribute('value'
),
$token->
getLine());
} elseif ($parent instanceof NameExpression
) { $parentToken =
new Token(/* Token::NAME_TYPE */ 5,
$parent->
getAttribute('name'
),
$token->
getLine());
} // inject a fake parent to make the parent() function work
$stream->
injectTokens([ new Token(/* Token::BLOCK_START_TYPE */ 1, '',
$token->
getLine()),
new Token(/* Token::NAME_TYPE */ 5, 'extends',
$token->
getLine()),
$parentToken,
new Token(/* Token::BLOCK_END_TYPE */ 3, '',
$token->
getLine()),
]);
$module =
$this->parser->
parse($stream,
[$this, 'decideBlockEnd'
], true
);
// override the parent with the correct one
if ($fakeParentToken ===
$parentToken) { $module->
setNode('parent',
$parent);
}