Generate proper flags for <clinit>
This commit is contained in:
+1
@@ -177,6 +177,7 @@ open class FunctionCodegen(
|
|||||||
) Opcodes.ACC_BRIDGE else 0
|
) Opcodes.ACC_BRIDGE else 0
|
||||||
val modalityFlag = when ((irFunction as? IrSimpleFunction)?.modality) {
|
val modalityFlag = when ((irFunction as? IrSimpleFunction)?.modality) {
|
||||||
Modality.FINAL -> when {
|
Modality.FINAL -> when {
|
||||||
|
irFunction.origin == JvmLoweredDeclarationOrigin.CLASS_STATIC_INITIALIZER -> 0
|
||||||
classCodegen.irClass.isInterface && irFunction.body != null -> 0
|
classCodegen.irClass.isInterface && irFunction.body != null -> 0
|
||||||
!classCodegen.irClass.isAnnotationClass || irFunction.isStatic -> Opcodes.ACC_FINAL
|
!classCodegen.irClass.isAnnotationClass || irFunction.isStatic -> Opcodes.ACC_FINAL
|
||||||
else -> Opcodes.ACC_ABSTRACT
|
else -> Opcodes.ACC_ABSTRACT
|
||||||
|
|||||||
+2
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.ir.declarations.IrField
|
|||||||
import org.jetbrains.kotlin.ir.expressions.IrSetField
|
import org.jetbrains.kotlin.ir.expressions.IrSetField
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.IrBlockBodyImpl
|
import org.jetbrains.kotlin.ir.expressions.impl.IrBlockBodyImpl
|
||||||
import org.jetbrains.kotlin.ir.util.patchDeclarationParents
|
import org.jetbrains.kotlin.ir.util.patchDeclarationParents
|
||||||
|
import org.jetbrains.kotlin.load.java.JavaVisibilities
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
class StaticInitializersLowering(override val context: JvmBackendContext) : InitializersLoweringBase(context) {
|
class StaticInitializersLowering(override val context: JvmBackendContext) : InitializersLoweringBase(context) {
|
||||||
@@ -41,6 +42,7 @@ class StaticInitializersLowering(override val context: JvmBackendContext) : Init
|
|||||||
// TODO: mark as synthesized
|
// TODO: mark as synthesized
|
||||||
origin = JvmLoweredDeclarationOrigin.CLASS_STATIC_INITIALIZER
|
origin = JvmLoweredDeclarationOrigin.CLASS_STATIC_INITIALIZER
|
||||||
returnType = context.irBuiltIns.unitType
|
returnType = context.irBuiltIns.unitType
|
||||||
|
visibility = JavaVisibilities.PACKAGE_VISIBILITY
|
||||||
}.apply {
|
}.apply {
|
||||||
body = IrBlockBodyImpl(irClass.startOffset, irClass.endOffset, staticInitializerStatements).patchDeclarationParents(this)
|
body = IrBlockBodyImpl(irClass.startOffset, irClass.endOffset, staticInitializerStatements).patchDeclarationParents(this)
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -377,7 +377,7 @@ public interface Sink {
|
|||||||
public final class SourceCrossinline$Factory {
|
public final class SourceCrossinline$Factory {
|
||||||
synthetic final static @org.jetbrains.annotations.NotNull field $$INSTANCE: SourceCrossinline$Factory
|
synthetic final static @org.jetbrains.annotations.NotNull field $$INSTANCE: SourceCrossinline$Factory
|
||||||
inner class SourceCrossinline$Factory
|
inner class SourceCrossinline$Factory
|
||||||
public final static method <clinit>(): void
|
static method <clinit>(): void
|
||||||
private method <init>(): void
|
private method <init>(): void
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -385,6 +385,6 @@ public final class SourceCrossinline$Factory {
|
|||||||
public interface SourceCrossinline {
|
public interface SourceCrossinline {
|
||||||
public final static @org.jetbrains.annotations.NotNull field Factory: SourceCrossinline$Factory
|
public final static @org.jetbrains.annotations.NotNull field Factory: SourceCrossinline$Factory
|
||||||
inner class SourceCrossinline$Factory
|
inner class SourceCrossinline$Factory
|
||||||
public static method <clinit>(): void
|
static method <clinit>(): void
|
||||||
public abstract @org.jetbrains.annotations.Nullable method consume(@org.jetbrains.annotations.NotNull p0: Sink, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
public abstract @org.jetbrains.annotations.Nullable method consume(@org.jetbrains.annotations.NotNull p0: Sink, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -78,7 +78,7 @@ public final class Override5Kt {
|
|||||||
private static field c: kotlin.coroutines.Continuation
|
private static field c: kotlin.coroutines.Continuation
|
||||||
inner class Override5Kt$box$1
|
inner class Override5Kt$box$1
|
||||||
inner class Override5Kt$inlineMe$1
|
inner class Override5Kt$inlineMe$1
|
||||||
public final static method <clinit>(): void
|
static method <clinit>(): void
|
||||||
public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String
|
public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String
|
||||||
public final static method builder(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function1): void
|
public final static method builder(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function1): void
|
||||||
public final static @org.jetbrains.annotations.Nullable method getC(): kotlin.coroutines.Continuation
|
public final static @org.jetbrains.annotations.Nullable method getC(): kotlin.coroutines.Continuation
|
||||||
|
|||||||
Reference in New Issue
Block a user