I get the following message when nesting expression in a doctrine query builder : PhanTypeMismatchArgument Argument 1 (x) is \Doctrine\ORM\Query\Expr\Base|\Doctrine\ORM\Query\Expr\Composite|\Doctrine\ORM\Query\Expr\Orx|string but \Doctrine\ORM\Query\Expr::andX() takes \Doctrine\ORM\Query\Expr\Comparison defined at vendor/doctrine/orm/lib/Doctrine/ORM/Query/Expr.php:51
This is most likely related to @param spanning over several lines in https://github.com/doctrine/doctrine2/blob/2.6/lib/Doctrine/ORM/Query/Expr.php
Doctrine 3 seems to change this behavior, however it is not stable yet.