@Override
public DirectCompilerResult visit(UnaryTestListNode n) {
MethodCallExpr expr = Expressions.list();
HashSet<FieldDeclaration> fds = new HashSet<>();
for (BaseNode e : n.getElements()) {
DirectCompilerResult r = e.accept(this);
fds.addAll(r.getFieldDeclarations());
expr.addArgument(r.getExpression());
}
if (n.isNegated()) {
Expressions.NamedLambda negated =
Expressions.namedUnaryLambda(
Expressions.notExists(expr), n.getText());
fds.add(negated.field());
return DirectCompilerResult.of(
Expressions.list(negated.name()),
BuiltInType.LIST, fds);
} else {
return DirectCompilerResult.of(
expr, BuiltInType.LIST, fds);
}
}