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

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

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


Field Summary
 BindingContext bindingContext
           
protected  FieldOwnerContext context
           
protected  T element
           
 FunctionCodegen functionCodegen
           
 PropertyCodegen propertyCodegen
           
 GenerationState state
           
 KotlinTypeMapper typeMapper
           
 ClassBuilder v
           
 
Constructor Summary
  MemberCodegen(GenerationState state, MemberCodegen<?> parentCodegen, FieldOwnerContext context, T element, ClassBuilder builder)
           
protected MemberCodegen(MemberCodegen<T> wrapped, T declaration, FieldOwnerContext codegenContext)
           
 
Method Summary
 void addInnerClassInfoFromAnnotation(ClassDescriptor classDescriptor)
           
static void badDescriptor(ClassDescriptor descriptor, ClassBuilderMode mode)
           
 void beforeMethodBody(org.jetbrains.org.objectweb.asm.MethodVisitor mv)
           
protected  ClassDescriptor classForInnerClassRecord()
           
 org.jetbrains.org.objectweb.asm.MethodVisitor createClInitMethodVisitor(DeclarationDescriptor contextDescriptor)
           
 ExpressionCodegen createOrGetClInitCodegen()
           
protected  void done()
           
static void genClassOrObject(CodegenContext parentContext, KtClassOrObject aClass, GenerationState state, MemberCodegen<?> parentCodegen)
           
 void genClassOrObject(KtClassOrObject aClass)
           
 void generate()
           
protected abstract  void generateBody()
           
protected  void generateConstInstance(org.jetbrains.org.objectweb.asm.Type thisAsmType, org.jetbrains.org.objectweb.asm.Type fieldAsmType)
           
protected abstract  void generateDeclaration()
           
protected  void generateInitializers(kotlin.jvm.functions.Function0<ExpressionCodegen> createCodegen)
           
protected  void generateKotlinClassMetadataAnnotation(ClassDescriptor descriptor, boolean isScript)
           
protected abstract  void generateKotlinMetadataAnnotation()
           
protected  StackValue generateMethodCallTo(FunctionDescriptor functionDescriptor, FunctionDescriptor accessorDescriptor, org.jetbrains.org.objectweb.asm.commons.InstructionAdapter iv)
           
protected  void generatePropertyMetadataArrayFieldIfNeeded(org.jetbrains.org.objectweb.asm.Type thisAsmType)
           
protected  void generateSyntheticAccessors()
           
protected  void generateSyntheticParts()
           
 void genSimpleMember(KtDeclaration declaration)
           
 void genSyntheticClassOrObject(SyntheticClassOrObjectDescriptor descriptor)
           
 java.lang.String getClassName()
           
 FieldOwnerContext<?> getContext()
           
 NameGenerator getInlineNameGenerator()
           
 DefaultSourceMapper getOrCreateSourceMapper()
           
 MemberCodegen<?> getParentCodegen()
           
 ReifiedTypeParametersUsages getReifiedTypeParametersUsages()
           
static void markLineNumberForDescriptor(ClassDescriptor declarationDescriptor, org.jetbrains.org.objectweb.asm.commons.InstructionAdapter v)
           
static void markLineNumberForElement(com.intellij.psi.PsiElement element, org.jetbrains.org.objectweb.asm.commons.InstructionAdapter v)
           
protected  boolean shouldInitializeProperty(KtProperty property)
           
 java.lang.String toString()
           
static void writeInnerClass(ClassDescriptor innerClass, KotlinTypeMapper typeMapper, ClassBuilder v)
           
protected  void writeOuterClassAndEnclosingMethod()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

state

public final GenerationState state

element

protected final T extends KtPureElement element

context

protected final FieldOwnerContext context

v

public final ClassBuilder v

functionCodegen

public final FunctionCodegen functionCodegen

propertyCodegen

public final PropertyCodegen propertyCodegen

typeMapper

public final KotlinTypeMapper typeMapper

bindingContext

public final BindingContext bindingContext
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,
                        T declaration,
                        FieldOwnerContext codegenContext)
Method Detail

generate

public void generate()

generateDeclaration

protected abstract void generateDeclaration()

generateBody

protected abstract void generateBody()

generateSyntheticParts

protected void generateSyntheticParts()

generateKotlinMetadataAnnotation

protected abstract void generateKotlinMetadataAnnotation()

classForInnerClassRecord

@Nullable
protected ClassDescriptor classForInnerClassRecord()

markLineNumberForDescriptor

public static void markLineNumberForDescriptor(@Nullable
                                               ClassDescriptor declarationDescriptor,
                                               @NotNull
                                               org.jetbrains.org.objectweb.asm.commons.InstructionAdapter v)

markLineNumberForElement

public static void markLineNumberForElement(@NotNull
                                            com.intellij.psi.PsiElement element,
                                            @NotNull
                                            org.jetbrains.org.objectweb.asm.commons.InstructionAdapter v)

done

protected void done()

genSimpleMember

public void genSimpleMember(@NotNull
                            KtDeclaration declaration)

genClassOrObject

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

badDescriptor

public static void badDescriptor(ClassDescriptor descriptor,
                                 ClassBuilderMode mode)

genClassOrObject

public void genClassOrObject(KtClassOrObject aClass)

genSyntheticClassOrObject

public void genSyntheticClassOrObject(SyntheticClassOrObjectDescriptor descriptor)

addInnerClassInfoFromAnnotation

public void addInnerClassInfoFromAnnotation(@NotNull
                                            ClassDescriptor classDescriptor)

writeInnerClass

public static void writeInnerClass(@NotNull
                                   ClassDescriptor innerClass,
                                   @NotNull
                                   KotlinTypeMapper typeMapper,
                                   @NotNull
                                   ClassBuilder v)

writeOuterClassAndEnclosingMethod

protected void writeOuterClassAndEnclosingMethod()

getInlineNameGenerator

@NotNull
public NameGenerator getInlineNameGenerator()

createOrGetClInitCodegen

@NotNull
public final ExpressionCodegen createOrGetClInitCodegen()

createClInitMethodVisitor

@NotNull
public org.jetbrains.org.objectweb.asm.MethodVisitor createClInitMethodVisitor(@NotNull
                                                                                       DeclarationDescriptor contextDescriptor)

generateInitializers

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

beforeMethodBody

public void beforeMethodBody(@NotNull
                             org.jetbrains.org.objectweb.asm.MethodVisitor mv)

shouldInitializeProperty

protected boolean shouldInitializeProperty(@NotNull
                                           KtProperty property)

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

getOrCreateSourceMapper

@NotNull
public DefaultSourceMapper getOrCreateSourceMapper()

generateConstInstance

protected void generateConstInstance(@NotNull
                                     org.jetbrains.org.objectweb.asm.Type thisAsmType,
                                     @NotNull
                                     org.jetbrains.org.objectweb.asm.Type fieldAsmType)

generateSyntheticAccessors

protected void generateSyntheticAccessors()

generateMethodCallTo

protected StackValue generateMethodCallTo(@NotNull
                                          FunctionDescriptor functionDescriptor,
                                          @Nullable
                                          FunctionDescriptor accessorDescriptor,
                                          @NotNull
                                          org.jetbrains.org.objectweb.asm.commons.InstructionAdapter iv)

generateKotlinClassMetadataAnnotation

protected void generateKotlinClassMetadataAnnotation(@NotNull
                                                     ClassDescriptor descriptor,
                                                     boolean isScript)