diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt index 7a53b2356af..ef4a0c65db9 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassMemberScope.kt @@ -447,11 +447,13 @@ class LazyJavaClassMemberScope( val propertiesFromSupertypes = getPropertiesFromSupertypes(name) if (propertiesFromSupertypes.isEmpty()) return + val handledProperties = SmartSet.create() + val propertiesOverridesFromSuperTypes = SmartSet.create() - addPropertyOverrideByMethod(propertiesFromSupertypes, result) { searchMethodsByNameWithoutBuiltinMagic(it) } + addPropertyOverrideByMethod(propertiesFromSupertypes, result, handledProperties) { searchMethodsByNameWithoutBuiltinMagic(it) } - addPropertyOverrideByMethod(propertiesFromSupertypes, propertiesOverridesFromSuperTypes) { + addPropertyOverrideByMethod(propertiesFromSupertypes - handledProperties, propertiesOverridesFromSuperTypes, null) { searchMethodsInSupertypesWithoutBuiltinMagic(it) } @@ -470,12 +472,14 @@ class LazyJavaClassMemberScope( private fun addPropertyOverrideByMethod( propertiesFromSupertypes: Set, result: MutableCollection, + handledProperties: MutableSet?, functions: (Name) -> Collection ) { for (property in propertiesFromSupertypes) { val newProperty = createPropertyDescriptorByMethods(property, functions) if (newProperty != null) { result.add(newProperty) + handledProperties?.add(property) break } }