diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt index 971331e197c..f4b41dc3135 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt @@ -235,7 +235,7 @@ class Fir2IrLazyClass( fir is FirConstructor -> isObject || isEnumClass || !Visibilities.isPrivate(fir.visibility) // This special case seams to be not needed anymore - KT-65172 fir is FirCallableDeclaration && fir.isFakeOverride(this.fir) -> session.visibilityChecker.isVisibleForOverriding( this.fir.moduleData, - this.fir.classId.packageFqName, + this.fir.symbol, fir ) else -> !Visibilities.isPrivate(fir.visibility) diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt index 8d7ad3ee08c..50bfce6956b 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.fir import org.jetbrains.kotlin.config.LanguageFeature -import org.jetbrains.kotlin.container.topologicalSort import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.fir.declarations.* @@ -148,32 +147,33 @@ abstract class FirVisibilityChecker : FirSessionComponent { } fun isVisibleForOverriding( - candidateInDerivedClass: FirMemberDeclaration, - candidateInBaseClass: FirMemberDeclaration, - ): Boolean = - isVisibleForOverriding(candidateInDerivedClass.moduleData, candidateInDerivedClass.symbol.packageFqName(), candidateInBaseClass) + candidateInDerivedClass: FirCallableDeclaration, + candidateInBaseClass: FirCallableDeclaration, + ): Boolean = isVisibleForOverriding( + candidateInDerivedClass.moduleData, candidateInDerivedClass.symbol.callableId.packageName, candidateInBaseClass + ) fun isVisibleForOverriding( derivedClassModuleData: FirModuleData, - symbolFromDerivedClass: FirBasedSymbol<*>, - candidateInBaseClass: FirMemberDeclaration, - ): Boolean = isVisibleForOverriding(derivedClassModuleData, symbolFromDerivedClass.packageFqName(), candidateInBaseClass) + symbolFromDerivedClass: FirClassSymbol<*>, + candidateInBaseClass: FirCallableDeclaration, + ): Boolean = isVisibleForOverriding(derivedClassModuleData, symbolFromDerivedClass.classId.packageFqName, candidateInBaseClass) - fun isVisibleForOverriding( + private fun isVisibleForOverriding( derivedClassModuleData: FirModuleData, packageNameOfDerivedClass: FqName, - candidateInBaseClass: FirMemberDeclaration, + candidateInBaseClass: FirCallableDeclaration, ): Boolean = isSpecificDeclarationVisibleForOverriding( derivedClassModuleData, packageNameOfDerivedClass, - // It is important for package-private visiblity as fake override can be in another package - if (candidateInBaseClass is FirCallableDeclaration) candidateInBaseClass.originalOrSelf() else candidateInBaseClass, + // It is important for package-private visibility as fake override can be in another package + candidateInBaseClass.originalOrSelf(), ) private fun isSpecificDeclarationVisibleForOverriding( derivedClassModuleData: FirModuleData, packageNameOfDerivedClass: FqName, - candidateInBaseClass: FirMemberDeclaration, + candidateInBaseClass: FirCallableDeclaration, ): Boolean = when (candidateInBaseClass.visibility) { Visibilities.Internal -> { candidateInBaseClass.moduleData == derivedClassModuleData || diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScopeContext.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScopeContext.kt index 808d18d5063..ba91e0f3314 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScopeContext.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScopeContext.kt @@ -204,7 +204,7 @@ class FirTypeIntersectionScopeContext( return session.visibilityChecker.isVisibleForOverriding( dispatchClassSymbol.moduleData, - dispatchClassSymbol.classId.packageFqName, + dispatchClassSymbol, member.fir ) }