Kotlin Facet: Fix element ordering in compiler arguments XML
Do not rely on method list as it's ordered differently
This commit is contained in:
@@ -24,8 +24,6 @@ import org.jdom.DataConversionException
|
|||||||
import org.jdom.Element
|
import org.jdom.Element
|
||||||
import org.jetbrains.kotlin.cli.common.arguments.*
|
import org.jetbrains.kotlin.cli.common.arguments.*
|
||||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||||
import org.jetbrains.kotlin.load.java.propertyNameByGetMethodName
|
|
||||||
import org.jetbrains.kotlin.name.Name
|
|
||||||
import java.lang.reflect.Modifier
|
import java.lang.reflect.Modifier
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
import kotlin.reflect.full.superclasses
|
import kotlin.reflect.full.superclasses
|
||||||
@@ -179,13 +177,13 @@ private fun Class<*>.computeNormalPropertyOrdering(): Map<String, Int> {
|
|||||||
val result = LinkedHashMap<String, Int>()
|
val result = LinkedHashMap<String, Int>()
|
||||||
var count = 0
|
var count = 0
|
||||||
generateSequence(this) { it.superclass }.forEach { clazz ->
|
generateSequence(this) { it.superclass }.forEach { clazz ->
|
||||||
for (method in clazz.declaredMethods) {
|
for (field in clazz.declaredFields) {
|
||||||
if (method.modifiers and Modifier.STATIC != 0) continue
|
if (field.modifiers and Modifier.STATIC != 0) continue
|
||||||
|
|
||||||
val name = method.name
|
var propertyName = field.name
|
||||||
if (!JvmAbi.isGetterName(name)) continue
|
if (propertyName.endsWith(JvmAbi.DELEGATED_PROPERTY_NAME_SUFFIX)) {
|
||||||
|
propertyName = propertyName.dropLast(JvmAbi.DELEGATED_PROPERTY_NAME_SUFFIX.length)
|
||||||
val propertyName = propertyNameByGetMethodName(Name.identifier(name))?.asString() ?: continue
|
}
|
||||||
|
|
||||||
result[propertyName] = count++
|
result[propertyName] = count++
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user