private void makeCall( Expression receiver, Expression message, Expression arguments, MethodCallerMultiAdapter adapter, boolean safe, boolean spreadSafe, boolean implicitThis ) { ClassNode cn = classNode; if (isInClosure() && !implicitThis) { cn = getOutermostClass(); } makeCall(new ClassExpression(cn), receiver, message, arguments, adapter, safe, spreadSafe, implicitThis); }
private void makeCall( Expression receiver, Expression message, Expression arguments, MethodCallerMultiAdapter adapter, boolean safe, boolean spreadSafe, boolean implicitThis ) { ClassNode cn = classNode; if (isInClosure() && !implicitThis) { cn = getOutermostClass(); } makeCall(new ClassExpression(cn), receiver, message, arguments, adapter, safe, spreadSafe, implicitThis); }
private void makeCall( Expression receiver, Expression message, Expression arguments, MethodCallerMultiAdapter adapter, boolean safe, boolean spreadSafe, boolean implicitThis ) { ClassNode cn = classNode; if (isInClosure() && !implicitThis) { cn = getOutermostClass(); } makeCall(new ClassExpression(cn), receiver, message, arguments, adapter, safe, spreadSafe, implicitThis); }
if ((isStaticMethod() || specialCallWithinConstructor) && !classNode.declaresInterface(ClassHelper.GENERATED_CLOSURE_Type)) { visitClassExpression(new ClassExpression(classNode)); visitClassExpression(new ClassExpression(getOutermostClass())); } else { mv.visitVarInsn(ALOAD, 0);
if (isStaticMethod() && !classNode.declaresInterface(ClassHelper.GENERATED_CLOSURE_Type)) { visitClassExpression(new ClassExpression(classNode)); visitClassExpression(new ClassExpression(getOutermostClass())); } else { mv.visitVarInsn(ALOAD, 0);
if (isInClosure()) classNode = getOutermostClass();
if (isInClosure()) classNode = getOutermostClass();
if (isInClosure()) classNode = getOutermostClass();
private void makeInvokeMethodCall(MethodCallExpression call, boolean useSuper, MethodCallerMultiAdapter adapter) { // receiver // we operate on GroovyObject if possible Expression objectExpression = call.getObjectExpression(); if (!isStaticMethod() && !isStaticContext() && isThisExpression(call.getObjectExpression())) { objectExpression = new CastExpression(classNode, objectExpression); } // message name Expression messageName = new CastExpression(ClassHelper.STRING_TYPE, call.getMethod()); if (useSuper) { makeCall(new ClassExpression(getOutermostClass().getSuperClass()), objectExpression, messageName, call.getArguments(), adapter, call.isSafe(), call.isSpreadSafe(), false ); } else { makeCall(objectExpression, messageName, call.getArguments(), adapter, call.isSafe(), call.isSpreadSafe(), call.isImplicitThis() ); } }
private void makeInvokeMethodCall(MethodCallExpression call, boolean useSuper, MethodCallerMultiAdapter adapter) { // receiver // we operate on GroovyObject if possible Expression objectExpression = call.getObjectExpression(); if (!isStaticMethod() && !isStaticContext() && isThisExpression(call.getObjectExpression())) { objectExpression = new CastExpression(classNode, objectExpression); } // message name Expression messageName = new CastExpression(ClassHelper.STRING_TYPE, call.getMethod()); if (useSuper) { makeCall(new ClassExpression(getOutermostClass().getSuperClass()), objectExpression, messageName, call.getArguments(), adapter, call.isSafe(), call.isSpreadSafe(), false ); } else { makeCall(objectExpression, messageName, call.getArguments(), adapter, call.isSafe(), call.isSpreadSafe(), call.isImplicitThis() ); } }
private void makeInvokeMethodCall(MethodCallExpression call, boolean useSuper, MethodCallerMultiAdapter adapter) { // receiver // we operate on GroovyObject if possible Expression objectExpression = call.getObjectExpression(); if (!isStaticMethod() && !isStaticContext() && isThisExpression(call.getObjectExpression())) { objectExpression = new CastExpression(ClassHelper.make(GroovyObject.class), objectExpression); } // message name Expression messageName = new CastExpression(ClassHelper.STRING_TYPE, call.getMethod()); if (useSuper) { makeCall(new ClassExpression(getOutermostClass().getSuperClass()), objectExpression, messageName, call.getArguments(), adapter, call.isSafe(), call.isSpreadSafe(), false ); } else { makeCall(objectExpression, messageName, call.getArguments(), adapter, call.isSafe(), call.isSpreadSafe(), call.isImplicitThis() ); } }
if (isStaticMethod() && !classNode.declaresInterface(ClassHelper.GENERATED_CLOSURE_Type)) { visitClassExpression(new ClassExpression(classNode)); visitClassExpression(new ClassExpression(getOutermostClass())); } else { mv.visitVarInsn(ALOAD, 0);
protected ClassNode createClosureClass(ClosureExpression expression) { ClassNode outerClass = getOutermostClass(); String name = outerClass.getName() + "$"
protected ClassNode createClosureClass(ClosureExpression expression) { ClassNode outerClass = getOutermostClass(); String name = outerClass.getName() + "$"
protected ClassNode createClosureClass(ClosureExpression expression) { ClassNode outerClass = getOutermostClass(); String name = outerClass.getName() + "$"