jvm-abi-gen: sort inner classes

This commit is contained in:
pyos
2022-12-06 11:00:04 +01:00
committed by Alexander Udalov
parent 26a7ac6d92
commit d6fdd6734e
3 changed files with 13 additions and 8 deletions
@@ -150,10 +150,15 @@ class JvmAbiOutputExtension(
override fun visitEnd() {}
}, 0)
innerClassesToKeep.retainAll(innerClassInfos.keys)
for (name in innerClassesToKeep.toList()) {
val info = innerClassInfos[name] ?: continue
generateSequence(info) { it.outerName?.takeIf(innerClassesToKeep::add)?.let(innerClassInfos::get) }
.forEach { writer.visitInnerClass(it.name, it.outerName, it.innerName, it.access) }
var info = innerClassInfos[name]
while (info != null) {
info = info.outerName?.takeIf(innerClassesToKeep::add)?.let(innerClassInfos::get)
}
}
for (name in innerClassesToKeep.sorted()) {
innerClassInfos[name]?.let { writer.visitInnerClass(it.name, it.outerName, it.innerName, it.access) }
}
writer.visitEnd()
+2 -2
View File
@@ -21,15 +21,15 @@ public class test/BaseClass {
@kotlin.Metadata
public final class test/Class$NestedInnerClass$NestedNestedInnerClass {
// source: 'classes.kt'
public final inner class test/Class$NestedInnerClass$NestedNestedInnerClass
private final inner class test/Class$NestedInnerClass
public final inner class test/Class$NestedInnerClass$NestedNestedInnerClass
public method <init>(): void
}
@kotlin.Metadata
final class test/Class$NestedInnerClass {
// source: 'classes.kt'
public final inner class test/Class$NestedInnerClass$NestedNestedInnerClass
private final inner class test/Class$NestedInnerClass
public final inner class test/Class$NestedInnerClass$NestedNestedInnerClass
public method <init>(): void
}
@kotlin.Metadata
@@ -6,15 +6,15 @@ public annotation class Anno {
@kotlin.Metadata
public final class InAnnotation {
// source: 'innerClasses.kt'
public inner class Outer$Middle$Inner
public inner class Outer$Middle
public inner class Outer$Middle$Inner
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 inner class Outer$Middle$Inner
public method <init>(): void
public final @org.jetbrains.annotations.NotNull method foo(): java.lang.Class
}
@@ -26,8 +26,8 @@ public final class InPrivateMethod {
@kotlin.Metadata
public final class InPublicMethod {
// source: 'innerClasses.kt'
public inner class Outer$Middle$Inner
public inner class Outer$Middle
public inner class Outer$Middle$Inner
public method <init>(): void
public final method foo(@org.jetbrains.annotations.NotNull p0: Outer$Middle$Inner): void
}