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

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

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


Field Summary
protected  BindingContext bindingContext
           
protected  ExpressionCodegen clInit
           
protected  FieldOwnerContext context
           
protected  T element
           
protected  JvmFileClassesProvider fileClassesProvider
           
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, T declaration, FieldOwnerContext codegenContext)
           
 
Method Summary
protected  ClassDescriptor classForInnerClassRecord()
           
protected  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, kotlin.jvm.functions.Function1<org.jetbrains.org.objectweb.asm.commons.InstructionAdapter,kotlin.Unit> initialization)
           
protected abstract  void generateDeclaration()
           
protected  void generateInitializers(kotlin.jvm.functions.Function0<ExpressionCodegen> createCodegen)
           
protected abstract  void generateKotlinAnnotation()
           
static void generateModuleNameField(GenerationState state, ClassBuilder classBuilder)
           
protected  void generatePropertyMetadataArrayFieldIfNeeded(org.jetbrains.org.objectweb.asm.Type thisAsmType)
           
protected  void generateSyntheticAccessors()
           
protected  void generateSyntheticParts()
           
 void genFunctionOrProperty(KtDeclaration functionOrProperty)
           
 java.lang.String getClassName()
           
 FieldOwnerContext<?> getContext()
           
 NameGenerator getInlineNameGenerator()
           
 SourceMapper getOrCreateSourceMapper()
           
 MemberCodegen<?> getParentCodegen()
           
 ReifiedTypeParametersUsages getReifiedTypeParametersUsages()
           
static void markLineNumberForSyntheticFunction(ClassDescriptor declarationDescriptor, org.jetbrains.org.objectweb.asm.commons.InstructionAdapter v)
           
static void markLineNumberForSyntheticFunction(com.intellij.psi.PsiElement element, org.jetbrains.org.objectweb.asm.commons.InstructionAdapter v)
           
 java.lang.String toString()
           
protected  void writeOuterClassAndEnclosingMethod()
           
 
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 KtElement 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

fileClassesProvider

protected final JvmFileClassesProvider fileClassesProvider

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,
                        T declaration,
                        FieldOwnerContext codegenContext)
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()

markLineNumberForSyntheticFunction

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

markLineNumberForSyntheticFunction

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

done

protected void done()

genFunctionOrProperty

public void genFunctionOrProperty(@NotNull
                                  KtDeclaration functionOrProperty)

genClassOrObject

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

genClassOrObject

public void genClassOrObject(KtClassOrObject aClass)

writeOuterClassAndEnclosingMethod

protected void writeOuterClassAndEnclosingMethod()

getInlineNameGenerator

@NotNull
public NameGenerator getInlineNameGenerator()

createOrGetClInitCodegen

@NotNull
protected ExpressionCodegen createOrGetClInitCodegen()

generateInitializers

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

generateModuleNameField

public static void generateModuleNameField(@NotNull
                                           GenerationState state,
                                           @NotNull
                                           ClassBuilder classBuilder)

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 SourceMapper getOrCreateSourceMapper()

generateConstInstance

protected void generateConstInstance(@NotNull
                                     org.jetbrains.org.objectweb.asm.Type thisAsmType,
                                     @NotNull
                                     org.jetbrains.org.objectweb.asm.Type fieldAsmType,
                                     @NotNull
                                     kotlin.jvm.functions.Function1<org.jetbrains.org.objectweb.asm.commons.InstructionAdapter,kotlin.Unit> initialization)

generateSyntheticAccessors

protected void generateSyntheticAccessors()