From 338595703cf618443e6d742a01443dc9308cd241 Mon Sep 17 00:00:00 2001 From: Jinseong Jeon Date: Tue, 16 Feb 2021 14:14:10 -0800 Subject: [PATCH] FIR: delegate to abstract override members of Any --- .../kotlin/fir/scopes/impl/FirDelegatedMemberScope.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirDelegatedMemberScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirDelegatedMemberScope.kt index 6dc9c3586f6..25d5c849157 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirDelegatedMemberScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirDelegatedMemberScope.kt @@ -35,12 +35,17 @@ class FirDelegatedMemberScope( override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { useSiteScope.processFunctionsByName(name) processor@{ functionSymbol -> - if (functionSymbol.fir.isPublicInAny()) { + val original = functionSymbol.fir + // KT-6014: If the original is abstract, we still need a delegation + // For example, + // interface IBase { override fun toString(): String } + // object BaseImpl : IBase { override fun toString(): String = ... } + // class Test : IBase by BaseImpl + if (original.isPublicInAny() && original.modality != Modality.ABSTRACT) { processor(functionSymbol) return@processor } - val original = functionSymbol.fir if (original.modality == Modality.FINAL || original.visibility == Visibilities.Private) { processor(functionSymbol) return@processor