Kotlin Facet: Fix element ordering in compiler arguments XML

Do not rely on method list as it's ordered differently

Original commit: cf3615d279
This commit is contained in:
Alexey Sedunov
2017-08-08 20:01:27 +03:00
parent cfc6aef1d0
commit 25757d134a
@@ -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++
} }