org.jetbrains.kotlin.codegen
Class MemberCodegen<T extends JetElement>

java.lang.Object
  extended by org.jetbrains.kotlin.codegen.MemberCodegen<T>
Direct Known Subclasses:
ClassBodyCodegen, ClosureCodegen, PackagePartCodegen, ScriptCodegen

public abstract class MemberCodegen<T extends JetElement>
extends java.lang.Object


Field Summary
protected  BindingContext bindingContext
           
protected  ExpressionCodegen clInit
           
protected  FieldOwnerContext context
           
protected  T element
           
protected  FunctionCodegen functionCodegen
           
protected  java.util.Collection<ClassDescriptor> innerClasses
           
protected  PropertyCodegen propertyCodegen
           
protected  GenerationState state
           
protected  JetTypeMapper typeMapper
           
protected  ClassBuilder v
           
 
Constructor Summary
  MemberCodegen(GenerationState state, MemberCodegen<?> parentCodegen, FieldOwnerContext context, T element, ClassBuilder builder)
           
protected MemberCodegen(MemberCodegen<T> wrapped)
           
 
Method Summary
protected  ClassDescriptor classForInnerClassRecord()
           
protected  ExpressionCodegen createOrGetClInitCodegen()
           
protected  void done()
           
static void genClassOrObject(CodegenContext parentContext, JetClassOrObject aClass, GenerationState state, MemberCodegen<?> parentCodegen)
           
 void genClassOrObject(JetClassOrObject aClass)
           
 void generate()
           
protected abstract  void generateBody()
           
protected abstract  void generateDeclaration()
           
protected  void generateInitializers(kotlin.Function0<ExpressionCodegen> createCodegen)
           
protected abstract  void generateKotlinAnnotation()
           
protected  void generatePropertyMetadataArrayFieldIfNeeded(org.jetbrains.org.objectweb.asm.Type thisAsmType)
           
static void generateReflectionObjectField(GenerationState state, org.jetbrains.org.objectweb.asm.Type thisAsmType, ClassBuilder classBuilder, org.jetbrains.org.objectweb.asm.commons.Method factory, java.lang.String fieldName, org.jetbrains.org.objectweb.asm.commons.InstructionAdapter v)
           
protected  void generateSyntheticParts()
           
 void genFunctionOrProperty(JetDeclaration functionOrProperty)
           
 java.lang.String getClassName()
           
 FieldOwnerContext<?> getContext()
           
 NameGenerator getInlineNameGenerator()
           
 MemberCodegen<?> getParentCodegen()
           
 ReifiedTypeParametersUsages getReifiedTypeParametersUsages()
           
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

state

protected final GenerationState state

element

protected final T extends JetElement element

context

protected final FieldOwnerContext context

v

protected final ClassBuilder v

functionCodegen

protected final FunctionCodegen functionCodegen

propertyCodegen

protected final PropertyCodegen propertyCodegen

typeMapper

protected final JetTypeMapper typeMapper

bindingContext

protected final BindingContext bindingContext

innerClasses

protected final java.util.Collection<ClassDescriptor> innerClasses

clInit

protected ExpressionCodegen clInit
Constructor Detail

MemberCodegen

public MemberCodegen(@NotNull
                     GenerationState state,
                     @Nullable
                     MemberCodegen<?> parentCodegen,
                     @NotNull
                     FieldOwnerContext context,
                     T element,
                     @NotNull
                     ClassBuilder builder)

MemberCodegen

protected MemberCodegen(@NotNull
                        MemberCodegen<T> wrapped)
Method Detail

generate

public void generate()

generateDeclaration

protected abstract void generateDeclaration()

generateBody

protected abstract void generateBody()

generateSyntheticParts

protected void generateSyntheticParts()

generateKotlinAnnotation

protected abstract void generateKotlinAnnotation()

classForInnerClassRecord

@Nullable
protected ClassDescriptor classForInnerClassRecord()

done

protected void done()

genFunctionOrProperty

public void genFunctionOrProperty(@NotNull
                                  JetDeclaration functionOrProperty)

genClassOrObject

public static void genClassOrObject(@NotNull
                                    CodegenContext parentContext,
                                    @NotNull
                                    JetClassOrObject aClass,
                                    @NotNull
                                    GenerationState state,
                                    @Nullable
                                    MemberCodegen<?> parentCodegen)

genClassOrObject

public void genClassOrObject(JetClassOrObject aClass)

getInlineNameGenerator

@NotNull
public NameGenerator getInlineNameGenerator()

createOrGetClInitCodegen

@NotNull
protected ExpressionCodegen createOrGetClInitCodegen()

generateInitializers

protected void generateInitializers(@NotNull
                                    kotlin.Function0<ExpressionCodegen> createCodegen)

generateReflectionObjectField

public static void generateReflectionObjectField(@NotNull
                                                 GenerationState state,
                                                 @NotNull
                                                 org.jetbrains.org.objectweb.asm.Type thisAsmType,
                                                 @NotNull
                                                 ClassBuilder classBuilder,
                                                 @NotNull
                                                 org.jetbrains.org.objectweb.asm.commons.Method factory,
                                                 @NotNull
                                                 java.lang.String fieldName,
                                                 @NotNull
                                                 org.jetbrains.org.objectweb.asm.commons.InstructionAdapter v)

generatePropertyMetadataArrayFieldIfNeeded

protected void generatePropertyMetadataArrayFieldIfNeeded(@NotNull
                                                          org.jetbrains.org.objectweb.asm.Type thisAsmType)

getClassName

public java.lang.String getClassName()

getContext

@NotNull
public FieldOwnerContext<?> getContext()

getReifiedTypeParametersUsages

@NotNull
public ReifiedTypeParametersUsages getReifiedTypeParametersUsages()

getParentCodegen

public MemberCodegen<?> getParentCodegen()

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object