Top Description Fields Constructors Methods
org.codehaus.groovy.classgen.asm.sc

public Class StaticTypesLambdaWriter

extends LambdaWriter
implements AbstractFunctionalInterfaceWriter
Class Inheritance
All Implemented Interfaces
org.codehaus.groovy.classgen.asm.sc.AbstractFunctionalInterfaceWriter
Imports
org.codehaus.groovy.GroovyBugError, org.codehaus.groovy.ast.ClassNode, .CodeVisitorSupport, .ConstructorNode, .InnerClassNode, .MethodNode, .Parameter, org.codehaus.groovy.ast.builder.AstStringCompiler, org.codehaus.groovy.ast.expr.ClosureExpression, .Expression, .LambdaExpression, .VariableExpression, org.codehaus.groovy.ast.stmt.BlockStatement, .Statement, org.codehaus.groovy.classgen.BytecodeInstruction, .BytecodeSequence, org.codehaus.groovy.classgen.asm.BytecodeHelper, .CompileStack, .LambdaWriter, .OperandStack, .WriterController, .WriterControllerFactory, org.codehaus.groovy.transform.sc.StaticCompilationMetadataKeys, org.codehaus.groovy.transform.stc.StaticTypesMarker, org.objectweb.asm.MethodVisitor, java.util.HashMap, .LinkedList, .List, .Map, .Optional

Writer responsible for generating lambda classes in statically compiled mode.

Field Summary

Modifier and TypeField and Description
private static final String
private static final String
private final Map<Expression, ClassNode>
private final StaticTypesClosureWriter

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
private void
private void
private static void
private MethodNode
addSyntheticLambdaMethodNode(final LambdaExpression expression, final ClassNode lambdaClass, final MethodNode abstractMethod)

private String
createAbstractMethodDesc(final ClassNode functionalInterface, final ClassNode lambdaClass)

protected ClassNode
private static String
private static Parameter[]
protected ClassNode
createLambdaClass(final LambdaExpression expression, final int modifiers, final MethodNode abstractMethod)

private Parameter[]
createParametersWithExactType(final LambdaExpression expression, final MethodNode abstractMethod)

private ClassNode
getOrAddLambdaClass(final LambdaExpression expression, final int modifiers, final MethodNode abstractMethod)

private static boolean
private void
private void
newGroovyLambdaWrapperAndLoad(final ClassNode lambdaClass, final LambdaExpression expression, final boolean accessingInstanceMembers)

private String
public void
Inherited from org.codehaus.groovy.classgen.asm.LambdaWriter:
getLambdaSharedVariables

Field Detail

IS_GENERATED_CONSTRUCTORback to summary
private static final String IS_GENERATED_CONSTRUCTOR
LAMBDA_SHARED_VARIABLESback to summary
private static final String LAMBDA_SHARED_VARIABLES
lambdaClassNodesback to summary
private final Map<Expression, ClassNode> lambdaClassNodes
staticTypesClosureWriterback to summary
private final StaticTypesClosureWriter staticTypesClosureWriter

Constructor Detail

StaticTypesLambdaWriterback to summary
public StaticTypesLambdaWriter(final WriterController controller)

Method Detail

addDeserializeLambdaMethodback to summary
private void addDeserializeLambdaMethod()
addDeserializeLambdaMethodForEachLambdaExpressionback to summary
private void addDeserializeLambdaMethodForEachLambdaExpression(final LambdaExpression expression, final ClassNode lambdaClass)
addSerialVersionUIDFieldback to summary
private static void addSerialVersionUIDField(final ClassNode lambdaClass)
addSyntheticLambdaMethodNodeback to summary
private MethodNode addSyntheticLambdaMethodNode(final LambdaExpression expression, final ClassNode lambdaClass, final MethodNode abstractMethod)
createAbstractMethodDescback to summary
private String createAbstractMethodDesc(final ClassNode functionalInterface, final ClassNode lambdaClass)
createClosureClassback to summary
protected ClassNode createClosureClass(final ClosureExpression expression, final int modifiers)

Overrides org.codehaus.groovy.classgen.asm.ClosureWriter.createClosureClass.

Annotations
@Override
createDeserializeLambdaMethodNameback to summary
private static String createDeserializeLambdaMethodName(final ClassNode lambdaClass)
createDeserializeLambdaMethodParamsback to summary
private static Parameter[] createDeserializeLambdaMethodParams()
createLambdaClassback to summary
protected ClassNode createLambdaClass(final LambdaExpression expression, final int modifiers, final MethodNode abstractMethod)
createParametersWithExactTypeback to summary
private Parameter[] createParametersWithExactType(final LambdaExpression expression, final MethodNode abstractMethod)
getOrAddLambdaClassback to summary
private ClassNode getOrAddLambdaClass(final LambdaExpression expression, final int modifiers, final MethodNode abstractMethod)
isAccessingInstanceMembersOfEnclosingClassback to summary
private static boolean isAccessingInstanceMembersOfEnclosingClass(final MethodNode lambdaMethod)
loadSharedVariablesback to summary
private void loadSharedVariables(final LambdaExpression expression)
newGroovyLambdaWrapperAndLoadback to summary
private void newGroovyLambdaWrapperAndLoad(final ClassNode lambdaClass, final LambdaExpression expression, final boolean accessingInstanceMembers)
nextLambdaClassNameback to summary
private String nextLambdaClassName()
writeLambdaback to summary
public void writeLambda(final LambdaExpression expression)

Overrides org.codehaus.groovy.classgen.asm.LambdaWriter.writeLambda.

Annotations
@Override