public static UnaryTestListNode newUnaryTestListNode(ParserRuleContext ctx, List<BaseNode> exprs, UnaryTestListNode.State state) { return new UnaryTestListNode( ctx, exprs, state ); }
@Override public UnaryTestSubexpr visit(UnaryTestListNode n) { List<BaseNode> collect = new ArrayList<>(); for (BaseNode e : n.getElements()) { UnaryTestSubexpr accept = e.accept(this); if (accept.isWildcard()) { collect.add(rewriteToUnaryTestExpr(accept.node)); } else if (!accept.isUnaryTest()) { collect.add(rewriteToUnaryEqInExpr(accept.node)); } else { collect.add(accept.node); } } return new TopLevel( ASTBuilderFactory.newUnaryTestListNode(n.getParserRuleContext(), collect, n.getState())); }
@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); } }
public UnaryTestListNode(ParserRuleContext ctx, List<BaseNode> elements, State state) { super(ctx); this.elements = elements; this.state = state; if (isNegated()) { notNode = ASTBuilderFactory.newUnaryTestNode(ctx, "not", ASTBuilderFactory.newListNode(ctx, elements)); } }