diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Synthetics.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Synthetics.kt index 005defe31d8..eb73a895323 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Synthetics.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Synthetics.kt @@ -85,7 +85,7 @@ class FirSyntheticPropertiesScope( private fun FirFunctionSymbol<*>.hasJavaOverridden(): Boolean { var result = false baseScope.processOverriddenFunctionsAndSelf(this) { - if (it.unwrapOverridden().fir.origin == FirDeclarationOrigin.Enhancement) { + if (it.unwrapSubstitutionOverrides().fir.origin == FirDeclarationOrigin.Enhancement) { result = true ProcessorAction.STOP } else { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt index c7afd44e6aa..f9524b3ba9d 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt @@ -69,7 +69,7 @@ class FirClassSubstitutionScope( functionSymbol: FirFunctionSymbol<*>, processor: (FirFunctionSymbol<*>) -> ProcessorAction ): ProcessorAction { - val unwrapped = functionSymbol.unwrapOverriddenOnce() + val unwrapped = functionSymbol.overriddenSymbol as FirFunctionSymbol<*>? ?: functionSymbol return useSiteMemberScope.processOverriddenFunctions(unwrapped, processor) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirCallableSymbol.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirCallableSymbol.kt index 486193222c8..59db65d5274 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirCallableSymbol.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirCallableSymbol.kt @@ -16,13 +16,7 @@ abstract class FirCallableSymbol> : AbstractFirBas get() = null } -inline fun > E.unwrapOverriddenOnce(): E { - overriddenSymbol?.let { return it as E } - - return this -} - -inline fun > E.unwrapOverridden(): E { +inline fun > E.unwrapSubstitutionOverrides(): E { var current = this while (current.overriddenSymbol != null) { current = current.overriddenSymbol as E