private static Expression findConstant(FieldNode fn) { if (fn != null && !fn.isEnum() && fn.isStatic() && fn.isFinal()) { if (fn.getInitialValueExpression() instanceof ConstantExpression) { return fn.getInitialValueExpression(); } } return null; }
public FieldInitializationExpression(FieldNode field) { super(new FieldExpression(field), Token.newSymbol(Types.ASSIGN, -1, -1), field.getInitialValueExpression()); } }
private void handleNonSharedField(Field field) { if (field.getAst().getInitialValueExpression() != null) moveInitializer(field, getInitializerMethod(), fieldInitializerCount++); }
private void moveSharedFieldInitializer(Field field) { if (field.getAst().getInitialValueExpression() != null) moveInitializer(field, getSharedInitializerMethod(), sharedFieldInitializerCount++); }
if (isInterface || (fieldNode.getModifiers() & Opcodes.ACC_FINAL) != 0) { out.print(" = "); Expression valueExpr = fieldNode.getInitialValueExpression(); if (valueExpr instanceof ConstantExpression) { valueExpr = Verifier.transformToPrimitiveConstantIfPossible((ConstantExpression) valueExpr);
private static Expression getInitExpr(ErrorCollecting xform, FieldNode fieldNode) { Expression initExpr = fieldNode.getInitialValueExpression(); fieldNode.setInitialValueExpression(null); if (initExpr == null || initExpr instanceof EmptyExpression) { if (fieldNode.getType().isAbstract()) { xform.addError("You cannot lazily initialize '" + fieldNode.getName() + "' from the abstract class '" + fieldNode.getType().getName() + "'", fieldNode); } initExpr = ctorX(fieldNode.getType()); } return initExpr; } }
FieldNode fn = type.redirect().getField(pe.getPropertyAsString()); if (fn != null && fn.isStatic() && fn.isFinal()) { Expression ce2 = transformInlineConstants(fn.getInitialValueExpression(), attrType); if (ce2 != null) { return ce2; FieldNode fn = (FieldNode) ve.getAccessedVariable(); if (fn.isStatic() && fn.isFinal()) { Expression ce = transformInlineConstants(fn.getInitialValueExpression(), attrType); if (ce != null) { return ce;
private static Statement createConstructorStatementGuarded(ClassNode cNode, FieldNode fNode, boolean namedArgs, List<String> knownImmutables, List<String> knownImmutableClasses) { final Expression fieldExpr = propX(varX("this"), fNode.getName()); Expression initExpr = fNode.getInitialValueExpression(); final Statement assignInit; if (initExpr == null || (initExpr instanceof ConstantExpression && ((ConstantExpression) initExpr).isNullExpression())) { assignInit = assignS(fieldExpr, ConstantExpression.EMPTY_EXPRESSION); } else { assignInit = assignS(fieldExpr, checkUnresolved(fNode, initExpr, knownImmutables, knownImmutableClasses)); } Expression param = getParam(fNode, namedArgs); Statement assignStmt = assignS(fieldExpr, checkUnresolved(fNode, param, knownImmutables, knownImmutableClasses)); return assignWithDefault(namedArgs, assignInit, param, assignStmt); }
private static Statement createConstructorStatementDate(FieldNode fNode, boolean namedArgs) { final Expression fieldExpr = propX(varX("this"), fNode.getName()); Expression initExpr = fNode.getInitialValueExpression(); final Statement assignInit; if (initExpr == null || (initExpr instanceof ConstantExpression && ((ConstantExpression) initExpr).isNullExpression())) { assignInit = assignS(fieldExpr, ConstantExpression.EMPTY_EXPRESSION); } else { assignInit = assignS(fieldExpr, cloneDateExpr(initExpr)); } final Expression param = getParam(fNode, namedArgs); Statement assignStmt = assignS(fieldExpr, cloneDateExpr(param)); return assignWithDefault(namedArgs, assignInit, param, assignStmt); }
private static Statement createConstructorStatementArrayOrCloneable(FieldNode fNode, boolean namedArgs) { final Expression fieldExpr = propX(varX("this"), fNode.getName()); final Expression initExpr = fNode.getInitialValueExpression(); final ClassNode fieldType = fNode.getType(); final Expression param = getParam(fNode, namedArgs); final Statement assignInit; if (initExpr == null || (initExpr instanceof ConstantExpression && ((ConstantExpression) initExpr).isNullExpression())) { assignInit = assignS(fieldExpr, ConstantExpression.EMPTY_EXPRESSION); } else { assignInit = assignS(fieldExpr, cloneArrayOrCloneableExpr(initExpr, fieldType)); } Statement assignStmt = assignS(fieldExpr, cloneArrayOrCloneableExpr(param, fieldType)); return assignWithDefault(namedArgs, assignInit, param, assignStmt); }
Expression initialValueExpression = fieldNode.getInitialValueExpression(); Expression transformed = transformInlineConstants(initialValueExpression, fieldNode.getType()); if (transformed instanceof ConstantExpression) {
private static Statement createConstructorStatementDefault(FieldNode fNode, boolean namedArgs) { final ClassNode fType = fNode.getType(); final Expression fieldExpr = propX(varX("this"), fNode.getName()); Expression initExpr = fNode.getInitialValueExpression(); Statement assignInit; if (initExpr == null || (initExpr instanceof ConstantExpression && ((ConstantExpression)initExpr).isNullExpression())) { if (ClassHelper.isPrimitiveType(fType)) { assignInit = EmptyStatement.INSTANCE; } else { assignInit = assignS(fieldExpr, ConstantExpression.EMPTY_EXPRESSION); } } else { assignInit = assignS(fieldExpr, initExpr); } fNode.setInitialValueExpression(null); Expression param = getParam(fNode, namedArgs); Statement assignStmt = assignS(fieldExpr, castX(fType, param)); return assignWithDefault(namedArgs, assignInit, param, assignStmt); }
public static Statement createConstructorStatementDefault(FieldNode fNode) { final String name = fNode.getName(); final ClassNode fType = fNode.getType(); final Expression fieldExpr = propX(varX("this"), name); Expression initExpr = fNode.getInitialValueExpression(); Statement assignInit; if (initExpr == null || (initExpr instanceof ConstantExpression && ((ConstantExpression)initExpr).isNullExpression())) { if (ClassHelper.isPrimitiveType(fType)) { assignInit = EmptyStatement.INSTANCE; } else { assignInit = assignS(fieldExpr, ConstantExpression.EMPTY_EXPRESSION); } } else { assignInit = assignS(fieldExpr, initExpr); } fNode.setInitialValueExpression(null); Expression value = findArg(name); return ifElseS(equalsNullX(value), assignInit, assignS(fieldExpr, castX(fType, value))); }
String signature = BytecodeHelper.getGenericsBounds(t); Expression initialValueExpression = fieldNode.getInitialValueExpression(); ConstantExpression cexp = initialValueExpression instanceof ConstantExpression? (ConstantExpression) initialValueExpression :null; if (cexp!=null) {
private Statement createConstructorStatementCollection(FieldNode fNode, boolean namedArgs) { final Expression fieldExpr = propX(varX("this"), fNode.getName()); ClassNode fieldType = fieldExpr.getType(); Expression initExpr = fNode.getInitialValueExpression(); final Statement assignInit; if (initExpr == null || (initExpr instanceof ConstantExpression && ((ConstantExpression) initExpr).isNullExpression())) { assignInit = assignS(fieldExpr, ConstantExpression.EMPTY_EXPRESSION); } else { assignInit = assignS(fieldExpr, cloneCollectionExpr(initExpr, fieldType)); } Expression param = getParam(fNode, namedArgs); Statement assignStmt = ifElseS( isInstanceOfX(param, CLONEABLE_TYPE), assignS(fieldExpr, cloneCollectionExpr(cloneArrayOrCloneableExpr(param, fieldType), fieldType)), assignS(fieldExpr, cloneCollectionExpr(param, fieldType))); return assignWithDefault(namedArgs, assignInit, param, assignStmt); }
private Statement createLegacyConstructorStatementMapSpecial(FieldNode fNode) { final Expression fieldExpr = varX(fNode); final ClassNode fieldType = fieldExpr.getType(); final Expression initExpr = fNode.getInitialValueExpression(); final Statement assignInit; if (initExpr == null || (initExpr instanceof ConstantExpression && ((ConstantExpression) initExpr).isNullExpression())) { assignInit = assignS(fieldExpr, ConstantExpression.EMPTY_EXPRESSION); } else { assignInit = assignS(fieldExpr, cloneCollectionExpr(initExpr, fieldType)); } Expression namedArgs = findArg(fNode.getName()); Expression baseArgs = varX("args"); Statement assignStmt = ifElseS( equalsNullX(namedArgs), ifElseS( isTrueX(callX(baseArgs, "containsKey", constX(fNode.getName()))), assignS(fieldExpr, namedArgs), assignS(fieldExpr, cloneCollectionExpr(baseArgs, fieldType))), ifElseS( isOneX(callX(baseArgs, "size")), assignS(fieldExpr, cloneCollectionExpr(namedArgs, fieldType)), assignS(fieldExpr, cloneCollectionExpr(baseArgs, fieldType))) ); return ifElseS(equalsNullX(baseArgs), assignInit, assignStmt); }
if (node.getInitialValueExpression() != null) { node.getInitialValueExpression().visit(transformer);
private Expression getInitExpr(FieldNode fieldNode) { Expression initExpr = fieldNode.getInitialValueExpression(); fieldNode.setInitialValueExpression(null); if (initExpr == null) initExpr = new ConstructorCallExpression(fieldNode.getType(), new ArgumentListExpression()); return initExpr; } }
private Statement createConstructorStatementArrayOrCloneable(FieldNode fNode) { final FieldExpression fieldExpr = new FieldExpression(fNode); Expression initExpr = fNode.getInitialValueExpression(); if (initExpr == null) initExpr = ConstantExpression.NULL; final Expression array = findArg(fNode.getName()); return new IfStatement( equalsNullExpr(array), new IfStatement( equalsNullExpr(initExpr), assignStatement(fieldExpr, ConstantExpression.NULL), assignStatement(fieldExpr, cloneArrayOrCloneableExpr(initExpr))), assignStatement(fieldExpr, cloneArrayOrCloneableExpr(array))); }
private Statement createConstructorStatementCollection(FieldNode fNode) { final FieldExpression fieldExpr = new FieldExpression(fNode); Expression initExpr = fNode.getInitialValueExpression(); if (initExpr == null) initExpr = ConstantExpression.NULL; Expression collection = findArg(fNode.getName()); return new IfStatement( equalsNullExpr(collection), new IfStatement( equalsNullExpr(initExpr), new EmptyStatement(), assignStatement(fieldExpr, cloneCollectionExpr(initExpr))), assignStatement(fieldExpr, cloneCollectionExpr(collection))); }