IR: move enum value array initialization out of <clinit>

#KT-44192 Fixed
This commit is contained in:
Jinseong Jeon
2021-01-06 21:56:29 -08:00
committed by Alexander Udalov
parent f8f08e8134
commit 7cc06489dd
7 changed files with 255 additions and 11 deletions
@@ -0,0 +1,13 @@
@kotlin.Metadata
public final enum class Test {
// source: 'deprecatedEnumEntryFields.kt'
private synthetic final static field $VALUES: Test[]
public deprecated final enum static @kotlin.Deprecated field ENTRY1: Test
public final enum static field ENTRY2: Test
public deprecated final enum static @kotlin.Deprecated field ENTRY3: Test
private synthetic final static method $values(): Test[]
static method <clinit>(): void
private method <init>(p0: java.lang.String, p1: int): void
public static method valueOf(p0: java.lang.String): Test
public static method values(): Test[]
}
+71
View File
@@ -0,0 +1,71 @@
@java.lang.annotation.Retention
@kotlin.Metadata
public annotation class Ann {
// source: 'enum.kt'
}
@kotlin.Metadata
public final enum class SimpleEnum {
// source: 'enum.kt'
private synthetic final static field $VALUES: SimpleEnum[]
public final enum static field A: SimpleEnum
public final enum static field B: SimpleEnum
public final enum static field C: SimpleEnum
private synthetic final static method $values(): SimpleEnum[]
static method <clinit>(): void
private method <init>(p0: java.lang.String, p1: int): void
public static method valueOf(p0: java.lang.String): SimpleEnum
public static method values(): SimpleEnum[]
}
@kotlin.Metadata
public final enum class WithAnnotations {
// source: 'enum.kt'
private synthetic final static field $VALUES: WithAnnotations[]
public final enum static @Ann field A: WithAnnotations
public final enum static @Ann field B: WithAnnotations
private synthetic final static method $values(): WithAnnotations[]
static method <clinit>(): void
private method <init>(p0: java.lang.String, p1: int): void
public static method valueOf(p0: java.lang.String): WithAnnotations
public static method values(): WithAnnotations[]
}
@kotlin.Metadata
public final enum class WithConstructor {
// source: 'enum.kt'
private synthetic final static field $VALUES: WithConstructor[]
public final enum static field A: WithConstructor
public final enum static field B: WithConstructor
public final enum static field C: WithConstructor
private final @org.jetbrains.annotations.NotNull field x: java.lang.String
private synthetic final static method $values(): WithConstructor[]
static method <clinit>(): void
private method <init>(p0: java.lang.String, p1: int, p2: java.lang.String): void
public final @org.jetbrains.annotations.NotNull method getX(): java.lang.String
public static method valueOf(p0: java.lang.String): WithConstructor
public static method values(): WithConstructor[]
}
@kotlin.Metadata
final class WithEntryClass$A {
// source: 'enum.kt'
final inner class WithEntryClass$A
method <init>(p0: java.lang.String, p1: int): void
public method foo(): void
}
@kotlin.Metadata
public abstract enum class WithEntryClass {
// source: 'enum.kt'
private synthetic final static field $VALUES: WithEntryClass[]
public final enum static field A: WithEntryClass
final inner class WithEntryClass$A
private synthetic final static method $values(): WithEntryClass[]
static method <clinit>(): void
private method <init>(p0: java.lang.String, p1: int): void
public synthetic method <init>(p0: java.lang.String, p1: int, p2: kotlin.jvm.internal.DefaultConstructorMarker): void
public abstract method foo(): void
public static method valueOf(p0: java.lang.String): WithEntryClass
public static method values(): WithEntryClass[]
}
@@ -0,0 +1,97 @@
@kotlin.Metadata
public interface PrivateMarker {
// source: 'inlineClassTypeParametersInConstructor.kt'
}
@kotlin.Metadata
public interface ProtectedMarker {
// source: 'inlineClassTypeParametersInConstructor.kt'
}
@kotlin.Metadata
public interface PublicMarker {
// source: 'inlineClassTypeParametersInConstructor.kt'
}
@kotlin.Metadata
public class TestBasic {
// source: 'inlineClassTypeParametersInConstructor.kt'
private final field z: int
private method <init>(p0: int): void
private method <init>(p0: int, p1: PrivateMarker): void
private method <init>(p0: int, p1: ProtectedMarker): void
public synthetic method <init>(p0: int, p1: ProtectedMarker, p2: kotlin.jvm.internal.DefaultConstructorMarker): void
private method <init>(p0: int, p1: PublicMarker): void
public synthetic method <init>(p0: int, p1: PublicMarker, p2: kotlin.jvm.internal.DefaultConstructorMarker): void
public synthetic method <init>(p0: int, p1: kotlin.jvm.internal.DefaultConstructorMarker): void
public final method getZ-a_XrcN0(): int
}
@kotlin.Metadata
public final enum class TestEnum {
// source: 'inlineClassTypeParametersInConstructor.kt'
private synthetic final static field $VALUES: TestEnum[]
public final enum static field ANSWER: TestEnum
private final field z: int
private synthetic final static method $values(): TestEnum[]
static method <clinit>(): void
private method <init>(p0: java.lang.String, p1: int, p2: int): void
public final method getZ-a_XrcN0(): int
public static method valueOf(p0: java.lang.String): TestEnum
public static method values(): TestEnum[]
}
@kotlin.Metadata
public final class TestInner$Inner {
// source: 'inlineClassTypeParametersInConstructor.kt'
synthetic final field this$0: TestInner
private final field z: int
private method <init>(p0: TestInner, p1: int): void
public synthetic method <init>(p0: TestInner, p1: int, p2: kotlin.jvm.internal.DefaultConstructorMarker): void
public final method getZ-a_XrcN0(): int
public final inner class TestInner$Inner
}
@kotlin.Metadata
public final class TestInner {
// source: 'inlineClassTypeParametersInConstructor.kt'
public method <init>(): void
public final inner class TestInner$Inner
}
@kotlin.Metadata
public final class TestSealed$Case {
// source: 'inlineClassTypeParametersInConstructor.kt'
private method <init>(p0: int): void
public synthetic method <init>(p0: int, p1: kotlin.jvm.internal.DefaultConstructorMarker): void
public final inner class TestSealed$Case
}
@kotlin.Metadata
public abstract class TestSealed {
// source: 'inlineClassTypeParametersInConstructor.kt'
private final field z: int
private method <init>(p0: int): void
public synthetic method <init>(p0: int, p1: kotlin.jvm.internal.DefaultConstructorMarker): void
public final method getZ-a_XrcN0(): int
public final inner class TestSealed$Case
}
@kotlin.jvm.JvmInline
@kotlin.Metadata
public final class Z {
// source: 'inlineClassTypeParametersInConstructor.kt'
private final field x: int
private synthetic method <init>(p0: int): void
public synthetic final static method box-impl(p0: int): Z
public static method constructor-impl(p0: int): int
public method equals(p0: java.lang.Object): boolean
public static method equals-impl(p0: int, p1: java.lang.Object): boolean
public final static method equals-impl0(p0: int, p1: int): boolean
public final method getX(): int
public method hashCode(): int
public static method hashCode-impl(p0: int): int
public method toString(): java.lang.String
public static method toString-impl(p0: int): java.lang.String
public synthetic final method unbox-impl(): int
}