JVM JVM_IR hide sealed class constructors

This commit is contained in:
Dmitry Petrov
2021-01-22 15:31:56 +03:00
parent ca3bb02897
commit 708e6914bd
27 changed files with 555 additions and 97 deletions
@@ -0,0 +1,13 @@
inline class Z(val x: Int)
class Test1(val z: Z)
class Test2(val x: String) {
constructor(z: Z) : this(z.toString())
}
class Test3(val z: Z = Z(0))
class Test4(val x: String) {
constructor(z: Z = Z(0)) : this(z.toString())
}
@@ -0,0 +1,58 @@
@kotlin.Metadata
public final class Test1 {
// source: 'hiddenConstructor.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
}
@kotlin.Metadata
public final class Test2 {
// source: 'hiddenConstructor.kt'
private final @org.jetbrains.annotations.NotNull field x: java.lang.String
public method <init>(@org.jetbrains.annotations.NotNull p0: java.lang.String): void
private method <init>(p0: int): void
public synthetic method <init>(p0: int, p1: kotlin.jvm.internal.DefaultConstructorMarker): void
public final @org.jetbrains.annotations.NotNull method getX(): java.lang.String
}
@kotlin.Metadata
public final class Test3 {
// source: 'hiddenConstructor.kt'
private final field z: int
private method <init>(p0: int): void
public synthetic method <init>(p0: int, p1: int, 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 class Test4 {
// source: 'hiddenConstructor.kt'
private final @org.jetbrains.annotations.NotNull field x: java.lang.String
public method <init>(@org.jetbrains.annotations.NotNull p0: java.lang.String): void
private method <init>(p0: int): void
public synthetic method <init>(p0: int, p1: int, p2: kotlin.jvm.internal.DefaultConstructorMarker): void
public synthetic method <init>(p0: int, p1: kotlin.jvm.internal.DefaultConstructorMarker): void
public final @org.jetbrains.annotations.NotNull method getX(): java.lang.String
}
@kotlin.jvm.JvmInline
@kotlin.Metadata
public final class Z {
// source: 'hiddenConstructor.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
}
@@ -0,0 +1,3 @@
annotation class Ann
sealed class Sealed @Ann constructor(@Ann val x: String)
@@ -0,0 +1,14 @@
@java.lang.annotation.Retention
@kotlin.Metadata
public annotation class Ann {
// source: 'annotationsOnSealedConstructor.kt'
}
@kotlin.Metadata
public abstract class Sealed {
// source: 'annotationsOnSealedConstructor.kt'
private final @org.jetbrains.annotations.NotNull field x: java.lang.String
private @Ann method <init>(@Ann p0: java.lang.String): void
public synthetic method <init>(p0: java.lang.String, p1: kotlin.jvm.internal.DefaultConstructorMarker): void
public final @org.jetbrains.annotations.NotNull method getX(): java.lang.String
}
@@ -0,0 +1,14 @@
// !LANGUAGE: -AllowSealedInheritorsInDifferentFilesOfSamePackage
sealed class TestNoSubclasses(val x: Int)
sealed class TestSubclassAfter(val x: Int)
class X1 : TestSubclassAfter(42)
sealed class TestNoSubclassesAllDefaults(val x: Int = 0)
sealed class TestSubclassAfterAllDefaults(val x: Int = 0)
class X3 : TestSubclassAfterAllDefaults()
class X4: TestSubclassBefore(1)
sealed class TestSubclassBefore(val x: Int)
@@ -0,0 +1,64 @@
@kotlin.Metadata
public abstract class TestNoSubclasses {
// source: 'sealedClassConstructor_1_4.kt'
private final field x: int
private method <init>(p0: int): void
public synthetic method <init>(p0: int, p1: kotlin.jvm.internal.DefaultConstructorMarker): void
public final method getX(): int
}
@kotlin.Metadata
public abstract class TestNoSubclassesAllDefaults {
// source: 'sealedClassConstructor_1_4.kt'
private final field x: int
private method <init>(p0: int): void
synthetic method <init>(p0: int, p1: int, p2: kotlin.jvm.internal.DefaultConstructorMarker): void
public synthetic method <init>(p0: int, p1: kotlin.jvm.internal.DefaultConstructorMarker): void
public final method getX(): int
}
@kotlin.Metadata
public abstract class TestSubclassAfter {
// source: 'sealedClassConstructor_1_4.kt'
private final field x: int
private method <init>(p0: int): void
public synthetic method <init>(p0: int, p1: kotlin.jvm.internal.DefaultConstructorMarker): void
public final method getX(): int
}
@kotlin.Metadata
public abstract class TestSubclassAfterAllDefaults {
// source: 'sealedClassConstructor_1_4.kt'
private final field x: int
private method <init>(p0: int): void
synthetic method <init>(p0: int, p1: int, p2: kotlin.jvm.internal.DefaultConstructorMarker): void
public synthetic method <init>(p0: int, p1: kotlin.jvm.internal.DefaultConstructorMarker): void
public final method getX(): int
}
@kotlin.Metadata
public abstract class TestSubclassBefore {
// source: 'sealedClassConstructor_1_4.kt'
private final field x: int
private method <init>(p0: int): void
public synthetic method <init>(p0: int, p1: kotlin.jvm.internal.DefaultConstructorMarker): void
public final method getX(): int
}
@kotlin.Metadata
public final class X1 {
// source: 'sealedClassConstructor_1_4.kt'
public method <init>(): void
}
@kotlin.Metadata
public final class X3 {
// source: 'sealedClassConstructor_1_4.kt'
public method <init>(): void
}
@kotlin.Metadata
public final class X4 {
// source: 'sealedClassConstructor_1_4.kt'
public method <init>(): void
}
@@ -0,0 +1,14 @@
// !LANGUAGE: +AllowSealedInheritorsInDifferentFilesOfSamePackage
sealed class TestNoSubclasses(val x: Int)
sealed class TestSubclassAfter(val x: Int)
class X1 : TestSubclassAfter(42)
sealed class TestNoSubclassesAllDefaults(val x: Int = 0)
sealed class TestSubclassAfterAllDefaults(val x: Int = 0)
class X3 : TestSubclassAfterAllDefaults()
class X4: TestSubclassBefore(1)
sealed class TestSubclassBefore(val x: Int)
@@ -0,0 +1,64 @@
@kotlin.Metadata
public abstract class TestNoSubclasses {
// source: 'sealedClassConstructor_1_5.kt'
private final field x: int
private method <init>(p0: int): void
public synthetic method <init>(p0: int, p1: kotlin.jvm.internal.DefaultConstructorMarker): void
public final method getX(): int
}
@kotlin.Metadata
public abstract class TestNoSubclassesAllDefaults {
// source: 'sealedClassConstructor_1_5.kt'
private final field x: int
private method <init>(p0: int): void
public synthetic method <init>(p0: int, p1: int, p2: kotlin.jvm.internal.DefaultConstructorMarker): void
public synthetic method <init>(p0: int, p1: kotlin.jvm.internal.DefaultConstructorMarker): void
public final method getX(): int
}
@kotlin.Metadata
public abstract class TestSubclassAfter {
// source: 'sealedClassConstructor_1_5.kt'
private final field x: int
private method <init>(p0: int): void
public synthetic method <init>(p0: int, p1: kotlin.jvm.internal.DefaultConstructorMarker): void
public final method getX(): int
}
@kotlin.Metadata
public abstract class TestSubclassAfterAllDefaults {
// source: 'sealedClassConstructor_1_5.kt'
private final field x: int
private method <init>(p0: int): void
public synthetic method <init>(p0: int, p1: int, p2: kotlin.jvm.internal.DefaultConstructorMarker): void
public synthetic method <init>(p0: int, p1: kotlin.jvm.internal.DefaultConstructorMarker): void
public final method getX(): int
}
@kotlin.Metadata
public abstract class TestSubclassBefore {
// source: 'sealedClassConstructor_1_5.kt'
private final field x: int
private method <init>(p0: int): void
public synthetic method <init>(p0: int, p1: kotlin.jvm.internal.DefaultConstructorMarker): void
public final method getX(): int
}
@kotlin.Metadata
public final class X1 {
// source: 'sealedClassConstructor_1_5.kt'
public method <init>(): void
}
@kotlin.Metadata
public final class X3 {
// source: 'sealedClassConstructor_1_5.kt'
public method <init>(): void
}
@kotlin.Metadata
public final class X4 {
// source: 'sealedClassConstructor_1_5.kt'
public method <init>(): void
}
@@ -1,3 +0,0 @@
// !LANGUAGE: +AllowSealedInheritorsInDifferentFilesOfSamePackage
sealed class Test(val x: Int = 0)
@@ -1,8 +0,0 @@
@kotlin.Metadata
public abstract class Test {
// source: 'sealedClassConstructorWithDefaultParams.kt'
private final field x: int
public method <init>(p0: int): void
public synthetic method <init>(p0: int, p1: int, p2: kotlin.jvm.internal.DefaultConstructorMarker): void
public final method getX(): int
}