diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassUtil.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassUtil.kt index 7203f792fed..b3893e12244 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassUtil.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassUtil.kt @@ -127,10 +127,10 @@ object LightClassUtil { return getPsiMethodWrappers(declaration).firstOrNull() } - private fun getPsiMethodWrappers(declaration: KtDeclaration): Sequence { - return getWrappingClasses(declaration).flatMap { it.methods.asSequence() } - .filter { method -> method is KtLightMethod && method.kotlinOrigin === declaration } - } + private fun getPsiMethodWrappers(declaration: KtDeclaration): Sequence = + getWrappingClasses(declaration).flatMap { it.methods.asSequence() } + .filterIsInstance() + .filter { it.kotlinOrigin === declaration } private fun getWrappingClass(declaration: KtDeclaration): PsiClass? { var declaration = declaration @@ -191,33 +191,19 @@ object LightClassUtil { private fun extractPropertyAccessors( ktDeclaration: KtDeclaration, specialGetter: PsiMethod?, specialSetter: PsiMethod?): PropertyAccessorsPsiMethods { - var getterWrapper = specialGetter - var setterWrapper = specialSetter - val additionalAccessors = arrayListOf() - for (wrapper in getPsiMethodWrappers(ktDeclaration)) { - if (wrapper !is KtLightMethod) continue - - if (wrapper.isSetter) { - if (setterWrapper == null || setterWrapper === specialSetter) { - setterWrapper = wrapper - } - else { - additionalAccessors.add(wrapper) - } - } - else { - if (getterWrapper == null || getterWrapper === specialGetter) { - getterWrapper = wrapper - } - else { - additionalAccessors.add(wrapper) - } - } - } + val (setters, getters) = getPsiMethodWrappers(ktDeclaration).partition { it.isSetter } + val allGetters = listOfNotNull(specialGetter) + getters.filterNot { it == specialGetter } + val allSetters = listOfNotNull(specialSetter) + setters.filterNot { it == specialSetter } val backingField = getLightClassBackingField(ktDeclaration) - return PropertyAccessorsPsiMethods(getterWrapper, setterWrapper, backingField, additionalAccessors) + val additionalAccessors = allGetters.drop(1) + allSetters.drop(1) + return PropertyAccessorsPsiMethods( + allGetters.firstOrNull(), + allSetters.firstOrNull(), + backingField, + additionalAccessors + ) } fun buildLightTypeParameterList(