Top Inners Fields Constructors Methods
org.codehaus.groovy.classgen.asm

public Class ClosureWriter

extends Object
Class Inheritance
Known Direct Subclasses
org.codehaus.groovy.classgen.asm.LambdaWriter, org.codehaus.groovy.classgen.asm.sc.StaticTypesClosureWriter
Imports
org.codehaus.groovy.GroovyBugError, org.codehaus.groovy.ast.ClassHelper, .ClassNode, .CodeVisitorSupport, .ConstructorNode, .FieldNode, .InnerClassNode, .MethodNode, .Parameter, .Variable, .VariableScope, org.codehaus.groovy.ast.expr.ClassExpression, .ClosureExpression, .ConstructorCallExpression, .Expression, .FieldExpression, .TupleExpression, .VariableExpression, org.codehaus.groovy.ast.stmt.BlockStatement, org.codehaus.groovy.ast.tools.GenericsUtils, org.codehaus.groovy.classgen.AsmClassGenerator, org.objectweb.asm.MethodVisitor, java.util.HashMap, .Iterator, .List, .Map

Nested and Inner Type Summary

Modifier and TypeClass and Description
protected static class
protected static interface

Field Summary

Modifier and TypeField and Description
private final Map<Expression, ClassNode>
protected final WriterController
public static final String
public static final String

Constructor Summary

AccessConstructor and Description
public
ClosureWriter(final WriterController controller)

Method Summary

Modifier and TypeMethod and Description
protected ConstructorNode
addConstructor(final ClosureExpression expression, final Parameter[] localVariableParams, final InnerClassNode answer, final BlockStatement block)

protected void
addFieldsAndGettersForLocalVariables(final InnerClassNode closureClass, final Parameter[] localVariableParams)

public boolean
private static boolean
private static void
protected BlockStatement
createBlockStatementForConstructor(final ClosureExpression expression, final ClassNode outerClass, final ClassNode thisClassNode)

protected ClassNode
createClosureClass(final ClosureExpression expression, final int modifiers)

protected Parameter[]
public ClassNode
getOrAddClosureClass(final ClosureExpression expression, final int modifiers)

public static void
loadReference(final String name, final WriterController controller)

protected void
protected static void
public void
writeClosure(final ClosureExpression expression)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

closureClassesback to summary
private final Map<Expression, ClassNode> closureClasses
controllerback to summary
protected final WriterController controller
OUTER_INSTANCEback to summary
public static final String OUTER_INSTANCE
THIS_OBJECTback to summary
public static final String THIS_OBJECT

Constructor Detail

ClosureWriterback to summary
public ClosureWriter(final WriterController controller)

Method Detail

addConstructorback to summary
protected ConstructorNode addConstructor(final ClosureExpression expression, final Parameter[] localVariableParams, final InnerClassNode answer, final BlockStatement block)
addFieldsAndGettersForLocalVariablesback to summary
protected void addFieldsAndGettersForLocalVariables(final InnerClassNode closureClass, final Parameter[] localVariableParams)
addGeneratedClosureConstructorCallback to summary
public boolean addGeneratedClosureConstructorCall(final ConstructorCallExpression call)
classNodeUsesReferencesback to summary
private static boolean classNodeUsesReferences(final ClassNode classNode)
correctAccessedVariableback to summary
private static void correctAccessedVariable(final InnerClassNode closureClass, final ClosureExpression ce)
createBlockStatementForConstructorback to summary
protected BlockStatement createBlockStatementForConstructor(final ClosureExpression expression, final ClassNode outerClass, final ClassNode thisClassNode)
createClosureClassback to summary
protected ClassNode createClosureClass(final ClosureExpression expression, final int modifiers)
getClosureSharedVariablesback to summary
protected Parameter[] getClosureSharedVariables(final ClosureExpression expression)
getOrAddClosureClassback to summary
public ClassNode getOrAddClosureClass(final ClosureExpression expression, final int modifiers)
loadReferenceback to summary
public static void loadReference(final String name, final WriterController controller)
loadThisback to summary
protected void loadThis()
removeInitialValuesback to summary
protected static void removeInitialValues(final Parameter[] params)
writeClosureback to summary
public void writeClosure(final ClosureExpression expression)
org.codehaus.groovy.classgen.asm back to summary

protected Class ClosureWriter.CorrectAccessedVariableVisitor

extends CodeVisitorSupport
Class Inheritance

Field Summary

Modifier and TypeField and Description
private InnerClassNode

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public void
Inherited from org.codehaus.groovy.ast.CodeVisitorSupport:
afterSwitchConditionExpressionVisitedvisitArgumentlistExpressionvisitArrayExpressionvisitAssertStatementvisitAttributeExpressionvisitBinaryExpressionvisitBitwiseNegationExpressionvisitBlockStatementvisitBooleanExpressionvisitBreakStatementvisitBytecodeExpressionvisitCaseStatementvisitCastExpressionvisitCatchStatementvisitClassExpressionvisitClosureExpressionvisitClosureListExpressionvisitConstantExpressionvisitConstructorCallExpressionvisitContinueStatementvisitDeclarationExpressionvisitDoWhileLoopvisitEmptyStatementvisitExpressionStatementvisitFieldExpressionvisitForLoopvisitGStringExpressionvisitIfElsevisitLambdaExpressionvisitListExpressionvisitMapEntryExpressionvisitMapExpressionvisitMethodCallExpressionvisitMethodPointerExpressionvisitMethodReferenceExpressionvisitNotExpressionvisitPostfixExpressionvisitPrefixExpressionvisitPropertyExpressionvisitRangeExpressionvisitReturnStatementvisitShortTernaryExpressionvisitSpreadExpressionvisitSpreadMapExpressionvisitStaticMethodCallExpressionvisitSwitchvisitSynchronizedStatementvisitTernaryExpressionvisitThrowStatementvisitTryCatchFinallyvisitTupleExpressionvisitUnaryMinusExpressionvisitUnaryPlusExpressionvisitWhileLoop

Field Detail

icnback to summary
private InnerClassNode icn

Constructor Detail

CorrectAccessedVariableVisitorback to summary
public CorrectAccessedVariableVisitor(final InnerClassNode icn)

Method Detail

visitVariableExpressionback to summary
public void visitVariableExpression(final VariableExpression expression)

Overrides org.codehaus.groovy.ast.CodeVisitorSupport.visitVariableExpression.

Implements org.codehaus.groovy.ast.GroovyCodeVisitor.visitVariableExpression.

Annotations
@Override
org.codehaus.groovy.classgen.asm back to summary

protected Interface ClosureWriter.UseExistingReference