use Twig\Compiler;
use Twig\Node\Expression\Binary\AndBinary;
use Twig\Node\Expression\Test\DefinedTest;
use Twig\Node\Expression\Test\NullTest;
use Twig\Node\Expression\Unary\NotUnary;
use Twig\Node\Node;
class NullCoalesceExpression extends ConditionalExpression
{ public function __construct(Node
$left, Node
$right, int
$lineno) { $test =
new DefinedTest(clone $left, 'defined',
new Node(),
$left->
getTemplateLine());
// for "block()", we don't need the null test as the return value is always a string
if (!
$left instanceof BlockReferenceExpression
) { $test =
new AndBinary( $test,
new NotUnary(new NullTest($left, 'null',
new Node(),
$left->
getTemplateLine()),
$left->
getTemplateLine()),
$left->
getTemplateLine() );
} parent::
__construct($test,
$left,
$right,
$lineno);
}