From 08a37b3accac54d47183974277b7b5ef8f2b8572 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Wed, 27 Apr 2016 23:45:16 +0300 Subject: [PATCH] Extracted methods --- .../jetbrains/kotlin/j2k/propertyDetection.kt | 44 ++++++++++++------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/j2k/src/org/jetbrains/kotlin/j2k/propertyDetection.kt b/j2k/src/org/jetbrains/kotlin/j2k/propertyDetection.kt index e7a2c1c02f0..76c1ba9f0ca 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/propertyDetection.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/propertyDetection.kt @@ -118,6 +118,29 @@ private class PropertyDetector( private val isOpenClass = converter.needOpenModifier(psiClass) fun detectProperties(): Map { + val propertyInfos = detectPropertyCandidates() + + val memberToPropertyInfo = buildMemberToPropertyInfoMap(propertyInfos) + + dropPropertiesWithConflictingAccessors(memberToPropertyInfo) + + dropPropertiesConflictingWithFields(memberToPropertyInfo) + + val mappedFields = memberToPropertyInfo.values + .mapNotNull { it.field } + .toSet() + + // map all other fields + for (field in psiClass.fields) { + if (field !in mappedFields) { + memberToPropertyInfo[field] = PropertyInfo.fromFieldWithNoAccessors(field, converter) + } + } + + return memberToPropertyInfo + } + + private fun detectPropertyCandidates(): List { val methodsToCheck = ArrayList>() for (method in psiClass.methods) { val name = method.name @@ -209,7 +232,10 @@ private class PropertyDetector( superProperty) propertyInfos.add(propertyInfo) } + return propertyInfos + } + private fun buildMemberToPropertyInfoMap(propertyInfos: List): MutableMap { val memberToPropertyInfo = HashMap() for (propertyInfo in propertyInfos) { val field = propertyInfo.field @@ -225,22 +251,6 @@ private class PropertyDetector( propertyInfo.getMethod?.let { memberToPropertyInfo[it] = propertyInfo } propertyInfo.setMethod?.let { memberToPropertyInfo[it] = propertyInfo } } - - dropPropertiesWithConflictingAccessors(memberToPropertyInfo) - - dropPropertiesConflictingWithFields(memberToPropertyInfo) - - val mappedFields = memberToPropertyInfo.values - .mapNotNull { it.field } - .toSet() - - // map all other fields - for (field in psiClass.fields) { - if (field !in mappedFields) { - memberToPropertyInfo[field] = PropertyInfo.fromFieldWithNoAccessors(field, converter) - } - } - return memberToPropertyInfo } @@ -316,7 +326,7 @@ private class PropertyDetector( } } - private fun dropPropertiesConflictingWithFields(memberToPropertyInfo: HashMap) { + private fun dropPropertiesConflictingWithFields(memberToPropertyInfo: MutableMap) { val fieldsByName = psiClass.fields.associateBy { it.name } //TODO: fields from base fun isPropertyNameProhibited(name: String): Boolean {