/** * Adds a statement to the object initializer. * * @param statements the statement to be added */ public void addObjectInitializerStatements(Statement statements) { getObjectInitializerStatements().add(statements); }
protected void visitObjectInitializerStatements(ClassNode node) { for (Statement element : node.getObjectInitializerStatements()) { element.visit(this); } }
@Override public void visitClass(final ClassNode node) { List<Statement> savedStatements = new ArrayList<Statement>(node.getObjectInitializerStatements()); super.visitClass(node); node.getObjectInitializerStatements().addAll(savedStatements); for (ClassNode inode : node.getAllInterfaces()) { if (Traits.isTrait(inode)) { List<PropertyNode> traitProps = inode.getProperties(); for (PropertyNode pn : traitProps) { super.visitProperty(pn); } } } }
/** * If we are in a constructor, that is static compiled, but in a class, that * is not, it may happen that init code from object initializers, fields * or properties is added into the constructor code. The backend assumes * a purely static constructor, so it may fail if it encounters dynamic * code here. Thus we make this kind of code fail */ private void checkForConstructorWithCSButClassWithout(MethodNode node) { if (!(node instanceof ConstructorNode)) return; Object meta = node.getNodeMetaData(STATIC_COMPILE_NODE); if (!Boolean.TRUE.equals(meta)) return; ClassNode clz = typeCheckingContext.getEnclosingClassNode(); meta = clz.getNodeMetaData(STATIC_COMPILE_NODE); if (Boolean.TRUE.equals(meta)) return; if ( clz.getObjectInitializerStatements().isEmpty() && clz.getFields().isEmpty() && clz.getProperties().isEmpty()) { return; } addStaticTypeError("Cannot statically compile constructor implicitly including non static elements from object initializers, properties or fields.",node); }
statements.addAll(node.getObjectInitializerStatements());
checkReturnInObjectInitializer(node.getObjectInitializerStatements()); node.getObjectInitializerStatements().clear(); node.visitContents(this); checkForDuplicateMethods(node);
List<Statement> initStatements = cNode.getObjectInitializerStatements(); Statement toCode = initializer.getCode(); BlockStatement toBlock = getBlockStatement(initializer, toCode);
if (classNode.getObjectInitializerStatements() != null) { for (Statement node : classNode.getObjectInitializerStatements()) { if (node != null) { node.visit(transformer);
/** * Adds a statement to the object initializer. * * @param statements the statement to be added */ public void addObjectInitializerStatements(Statement statements) { getObjectInitializerStatements().add(statements); }
protected void visitObjectInitializerStatements(ClassNode node) { for (Statement element : node.getObjectInitializerStatements()) { element.visit(this); } }
public void visitClass(ClassNode node) { visitAnnotations(node); node.visitContents(this); List list = node.getObjectInitializerStatements(); for (Iterator iter = list.iterator(); iter.hasNext();) { Statement element = (Statement) iter.next(); element.visit(this); } }
public void visitClass(ClassNode node) { visitAnnotations(node); node.visitContents(this); List list = node.getObjectInitializerStatements(); for (Iterator iter = list.iterator(); iter.hasNext();) { Statement element = (Statement) iter.next(); element.visit(this); } }
public void visitClass(ClassNode node) { visitAnnotations(node); node.visitContents(this); List list = node.getObjectInitializerStatements(); for (Iterator iter = list.iterator(); iter.hasNext();) { Statement element = (Statement) iter.next(); element.visit(this); } }
initStmtsAfterEnumValuesInit, explicitStaticPropsInEnum); statements.addAll(node.getObjectInitializerStatements()); if (!statements.isEmpty()) { Statement code = constructorNode.getCode();
initStmtsAfterEnumValuesInit, explicitStaticPropsInEnum); statements.addAll(node.getObjectInitializerStatements()); if (!statements.isEmpty()) { Statement code = constructorNode.getCode();
initStmtsAfterEnumValuesInit, explicitStaticPropsInEnum); statements.addAll(node.getObjectInitializerStatements()); if (!statements.isEmpty()) { Statement code = constructorNode.getCode();
statements.addAll(node.getObjectInitializerStatements());
for (Statement statement : new ArrayList<>(classNode.getObjectInitializerStatements())) { visitNontransformedStatement(statement);
checkReturnInObjectInitializer(node.getObjectInitializerStatements()); node.getObjectInitializerStatements().clear(); node.visitContents(this); addCovariantMethods(node);
@Override public void call(final SourceUnit source, GeneratorContext context, ClassNode classNode) { if (classNode == null) { // TODO is this even possible? CpsTransformer implies it is not. return; } ClassCodeExpressionTransformer visitor = createVisitor(source, classNode); processConstructors(visitor, classNode); for (MethodNode m : classNode.getMethods()) { forbidIfFinalizer(m); visitor.visitMethod(m); } for (Statement s : classNode.getObjectInitializerStatements()) { s.visit(visitor); } for (FieldNode f : classNode.getFields()) { visitor.visitField(f); } }