public static FieldExpression fieldX(FieldNode fieldNode) { return new FieldExpression(fieldNode); }
public static FieldExpression fieldX(ClassNode owner, String fieldName) { return new FieldExpression(owner.getField(fieldName)); }
public FieldInitializationExpression(FieldNode field) { super(new FieldExpression(field), Token.newSymbol(Types.ASSIGN, -1, -1), field.getInitialValueExpression()); } }
protected ExpressionStatement createPrintlnStatement(Expression expression) throws NoSuchFieldException { return new ExpressionStatement( new MethodCallExpression( new FieldExpression(FieldNode.newStatic(System.class, "out")), "println", expression)); }
/** * Loads either this object or if we're inside a closure then load the top level owner */ protected void loadThisOrOwner() { if (isInnerClass()) { visitFieldExpression(new FieldExpression(controller.getClassNode().getDeclaredField("owner"))); } else { loadThis(null); } }
protected static void addFieldInit(Parameter p, FieldNode fn, BlockStatement block) { VariableExpression ve = new VariableExpression(p); FieldExpression fe = new FieldExpression(fn); block.addStatement(new ExpressionStatement( new BinaryExpression(fe, Token.newSymbol(Types.ASSIGN, -1, -1), ve) )); }
new ExpressionStatement( new BinaryExpression( new FieldExpression(field), assign, new StaticMethodCallExpression(enumBase, "$INIT", args) arrayInit.add(new FieldExpression(field)); new ExpressionStatement( new BinaryExpression( new FieldExpression(minValue), assign, new FieldExpression(tempMin) new ExpressionStatement( new BinaryExpression( new FieldExpression(maxValue), assign, new FieldExpression(tempMax) new BinaryExpression(new FieldExpression(values), assign, new ArrayExpression(enumClass, arrayInit))
Expression expression = fieldNode.getInitialExpression(); if (expression != null) { final FieldExpression fe = new FieldExpression(fieldNode); if (fieldNode.getType().equals(ClassHelper.REFERENCE_TYPE) && ((fieldNode.getModifiers() & Opcodes.ACC_SYNTHETIC) != 0)) { fe.setUseReferenceDirectly(true);
getterBlock = new ExpressionStatement(new FieldExpression(field)); setterBlock = new ExpressionStatement( new BinaryExpression( new FieldExpression(field), Token.newSymbol(Types.EQUAL, 0, 0), new VariableExpression("value")
@Override public void visitField(final FieldNode node) { final boolean osc = typeCheckingContext.isInStaticContext; try { typeCheckingContext.isInStaticContext = node.isInStaticContext(); currentField = node; super.visitField(node); Expression init = node.getInitialExpression(); if (init != null) { FieldExpression left = new FieldExpression(node); BinaryExpression bexp = binX( left, Token.newSymbol("=", node.getLineNumber(), node.getColumnNumber()), init ); bexp.setSourcePosition(init); typeCheckAssignment(bexp, left, node.getOriginType(), init, getType(init)); if (init instanceof ConstructorCallExpression) { inferDiamondType((ConstructorCallExpression) init, node.getOriginType()); } } } finally { currentField = null; typeCheckingContext.isInStaticContext = osc; } }
new BooleanExpression( new BinaryExpression( new FieldExpression( new FieldNode("bar", ACC_PRIVATE, ClassHelper.STRING_TYPE, classNode, ConstantExpression.NULL)), Token.newSymbol("==", 0, 0), new ExpressionStatement( new BinaryExpression( new FieldExpression( new FieldNode("result", ACC_PRIVATE, ClassHelper.STRING_TYPE, classNode, ConstantExpression.NULL)), Token.newSymbol("=", 0, 0),
valuesMethod.setSynthetic(true); BlockStatement code = new BlockStatement(); MethodCallExpression cloneCall = new MethodCallExpression(new FieldExpression(values), "clone", MethodCallExpression.NO_ARGUMENTS); cloneCall.setMethodTarget(values.getType().getMethod("clone", Parameter.EMPTY_ARRAY)); code.addStatement(new ReturnStatement(cloneCall)); ge, new MethodCallExpression( new FieldExpression(values), "size", MethodCallExpression.NO_ARGUMENTS code.addStatement( new ReturnStatement( new MethodCallExpression(new FieldExpression(values), "getAt", new VariableExpression("ordinal")) new MethodCallExpression( new MethodCallExpression( new FieldExpression(values), "size", MethodCallExpression.NO_ARGUMENTS code.addStatement( new ReturnStatement( new MethodCallExpression(new FieldExpression(values), "getAt", new VariableExpression("ordinal"))
if (!fn.isStatic() || !fn.isSynthetic() || !fn.getName().startsWith("$const$")) continue; if (fn.getInitialExpression() == null) continue; final FieldExpression fe = new FieldExpression(fn); if (fn.getType().equals(ClassHelper.REFERENCE_TYPE)) fe.setUseReferenceDirectly(true); ConstantExpression init = (ConstantExpression) fn.getInitialExpression();
public static void loadReference(String name, WriterController controller) { CompileStack compileStack = controller.getCompileStack(); MethodVisitor mv = controller.getMethodVisitor(); ClassNode classNode = controller.getClassNode(); AsmClassGenerator acg = controller.getAcg(); // compileStack.containsVariable(name) means to ask if the variable is already declared // compileStack.getScope().isReferencedClassVariable(name) means to ask if the variable is a field // If it is no field and is not yet declared, then it is either a closure shared variable or // an already declared variable. if (!compileStack.containsVariable(name) && compileStack.getScope().isReferencedClassVariable(name)) { acg.visitFieldExpression(new FieldExpression(classNode.getDeclaredField(name))); } else { BytecodeVariable v = compileStack.getVariable(name, !classNodeUsesReferences(controller.getClassNode())); if (v == null) { // variable is not on stack because we are // inside a nested Closure and this variable // was not used before // then load it from the Closure field FieldNode field = classNode.getDeclaredField(name); mv.visitVarInsn(ALOAD, 0); mv.visitFieldInsn(GETFIELD, controller.getInternalClassName(), name, BytecodeHelper.getTypeDescription(field.getType())); } else { mv.visitVarInsn(ALOAD, v.getIndex()); } controller.getOperandStack().push(ClassHelper.REFERENCE_TYPE); } }
FieldNode field = getDeclaredFieldOfCurrentClassOrAccessibleFieldOfSuper(classNode, classNode, name, isSuperExpression(objectExpression)); if (field != null) { FieldExpression exp = new FieldExpression(field); exp.setSourcePosition(expression); visitFieldExpression(exp);
visitFieldExpression(new FieldExpression(field)); return; visitFieldExpression(new FieldExpression(field)); return;
Expression fieldExp = new FieldExpression(paramField); answer.addMethod( "get" + methodName,
private Statement createGetterBodyArrayOrCloneable(FieldNode fNode) { final Expression fieldExpr = new FieldExpression(fNode); final Expression expression = cloneArrayOrCloneableExpr(fieldExpr); return safeExpression(fieldExpr, expression); }
public static void createGetter(ClassNode classNode, FieldNode fieldNode) { classNode.addMethod( GroovyUtils.getsetName(GroovyUtils.GetSet.GET, fieldNode.getName()) , Modifier.PUBLIC , fieldNode.getType() , new Parameter[]{} , new ClassNode[]{} , new ReturnStatement(new FieldExpression(fieldNode)) ); }
private static void createListenerSetter(ClassNode classNode, PropertyNode propertyNode) { String setterName = getSetterName(propertyNode.getName()); if (classNode.getMethods(setterName).isEmpty()) { Expression fieldExpression = new FieldExpression(propertyNode.getField()); Statement setterBlock = createBindableStatement(propertyNode, fieldExpression); // create method void <setter>(<type> fieldName) createSetterMethod(classNode, propertyNode, setterName, setterBlock); } else { wrapSetterMethod(classNode, propertyNode.getName()); } }