jvm-abi-gen: keep InnerClass attributes for all referenced types

^KT-55233 Fixed
This commit is contained in:
pyos
2022-12-02 12:38:24 +01:00
committed by Alexander Udalov
parent 93ec8dd63d
commit 26a7ac6d92
9 changed files with 111 additions and 6 deletions
@@ -0,0 +1,3 @@
public @interface Anno {
Class<?> value();
}
@@ -0,0 +1,6 @@
public class Outer {
public static class Middle {
public static class Inner {
}
}
}
@@ -0,0 +1 @@
// IGNORE_BACKEND_LEGACY: JVM_IR
@@ -0,0 +1,14 @@
@Anno(Outer.Middle.Inner::class)
class InAnnotation {}
class InPublicMethod {
fun foo(x: Outer.Middle.Inner) {}
}
class InPrivateMethod {
private fun foo(x: Outer.Middle.Inner) {}
}
class InInlineMethod {
inline fun foo(): Class<*> = Outer.Middle.Inner::class.java
}
@@ -0,0 +1,50 @@
public annotation class Anno {
// source: 'Anno.java'
public abstract method value(): java.lang.Class
}
@Anno(value=Outer$Middle$Inner::class)
@kotlin.Metadata
public final class InAnnotation {
// source: 'innerClasses.kt'
public inner class Outer$Middle$Inner
public inner class Outer$Middle
public method <init>(): void
}
@kotlin.Metadata
public final class InInlineMethod {
// source: 'innerClasses.kt'
public inner class Outer$Middle$Inner
public inner class Outer$Middle
public method <init>(): void
public final @org.jetbrains.annotations.NotNull method foo(): java.lang.Class
}
@kotlin.Metadata
public final class InPrivateMethod {
// source: 'innerClasses.kt'
public method <init>(): void
}
@kotlin.Metadata
public final class InPublicMethod {
// source: 'innerClasses.kt'
public inner class Outer$Middle$Inner
public inner class Outer$Middle
public method <init>(): void
public final method foo(@org.jetbrains.annotations.NotNull p0: Outer$Middle$Inner): void
}
public class Outer$Middle$Inner {
// source: 'Outer.java'
public inner class Outer$Middle
public inner class Outer$Middle$Inner
public method <init>(): void
}
public class Outer$Middle {
// source: 'Outer.java'
public inner class Outer$Middle
public inner class Outer$Middle$Inner
public method <init>(): void
}
public class Outer {
// source: 'Outer.java'
public inner class Outer$Middle
public method <init>(): void
}