org.jetbrains.kotlin.codegen
Class MemberCodegen<T extends KtPureElement>
java.lang.Object
org.jetbrains.kotlin.codegen.MemberCodegen<T>
- Direct Known Subclasses:
- ClassBodyCodegen, ClosureCodegen, PackagePartCodegen, ScriptCodegen
public abstract class MemberCodegen<T extends KtPureElement>
- extends java.lang.Object
|
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 |
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
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)
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)