KT-55308, KT-55769 Sort InnerClasses entries. Add DONT_SORT_DECLARATIONS directive

This commit is contained in:
Pavel Mikhailovskii
2023-01-13 01:07:10 +00:00
committed by Space Team
parent 63a0660cc3
commit 38a56ba8e8
14 changed files with 432 additions and 57 deletions
@@ -80,10 +80,7 @@ class ClassCodegen private constructor(
private val state get() = context.state
// TODO: the order of entries in this set depends on the order in which methods are generated; this means it is unstable
// under incremental compilation, as calls to `inline fun`s declared in this class cause them to be generated out of order.
private val innerClasses = linkedSetOf<IrClass>()
private val innerClasses = mutableSetOf<IrClass>()
val typeMapper =
if (context.state.oldInnerClassesLogic)
context.defaultTypeMapper
@@ -476,7 +473,7 @@ class ClassCodegen private constructor(
}
}
for (klass in innerClasses) {
for (klass in innerClasses.sortedBy { it.fqNameWhenAvailable?.asString() }) {
val innerJavaClassId = klass.mapToJava()
val innerClass = innerJavaClassId?.internalName ?: typeMapper.classInternalName(klass)
val outerClass =