[FIR] Fix handling fake overrides in override visibility check
^KT-65432
This commit is contained in:
committed by
Space Team
parent
61f14374b9
commit
24f8da471f
@@ -163,6 +163,17 @@ abstract class FirVisibilityChecker : FirSessionComponent {
|
||||
derivedClassModuleData: FirModuleData,
|
||||
packageNameOfDerivedClass: FqName,
|
||||
candidateInBaseClass: FirMemberDeclaration,
|
||||
): 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,
|
||||
)
|
||||
|
||||
private fun isSpecificDeclarationVisibleForOverriding(
|
||||
derivedClassModuleData: FirModuleData,
|
||||
packageNameOfDerivedClass: FqName,
|
||||
candidateInBaseClass: FirMemberDeclaration,
|
||||
): Boolean = when (candidateInBaseClass.visibility) {
|
||||
Visibilities.Internal -> {
|
||||
candidateInBaseClass.moduleData == derivedClassModuleData ||
|
||||
|
||||
Reference in New Issue
Block a user