FIR visibility checker: remove redundant session from isVisibleForOverriding

This commit is contained in:
Mikhail Glukhikh
2022-09-28 17:59:43 +02:00
committed by Space
parent de43877161
commit f68f06a93f
5 changed files with 9 additions and 17 deletions
@@ -64,7 +64,6 @@ abstract class FirVisibilityChecker : FirSessionComponent {
}
override fun platformOverrideVisibilityCheck(
session: FirSession,
candidateInDerivedClass: FirBasedSymbol<*>,
symbolInBaseClass: FirBasedSymbol<*>,
visibilityInBaseClass: Visibility,
@@ -117,28 +116,23 @@ abstract class FirVisibilityChecker : FirSessionComponent {
}
fun isVisibleForOverriding(
session: FirSession,
candidateInDerivedClass: FirMemberDeclaration,
candidateInBaseClass: FirMemberDeclaration
): Boolean = isVisibleForOverriding(session, candidateInDerivedClass.moduleData, candidateInDerivedClass.symbol, candidateInBaseClass)
): Boolean = isVisibleForOverriding(candidateInDerivedClass.moduleData, candidateInDerivedClass.symbol, candidateInBaseClass)
fun isVisibleForOverriding(
session: FirSession,
derivedClassModuleData: FirModuleData,
symbolFromDerivedClass: FirBasedSymbol<*>,
candidateInBaseClass: FirMemberDeclaration,
): Boolean = when (candidateInBaseClass.visibility) {
Visibilities.Internal -> {
candidateInBaseClass.moduleData == derivedClassModuleData ||
(derivedClassModuleData == session.moduleData &&
session.moduleVisibilityChecker?.isInFriendModule(candidateInBaseClass) == true)
derivedClassModuleData.session.moduleVisibilityChecker?.isInFriendModule(candidateInBaseClass) == true
}
Visibilities.Private, Visibilities.PrivateToThis -> false
Visibilities.Protected -> true
else -> platformOverrideVisibilityCheck(
session, symbolFromDerivedClass, candidateInBaseClass.symbol, candidateInBaseClass.visibility
)
else -> platformOverrideVisibilityCheck(symbolFromDerivedClass, candidateInBaseClass.symbol, candidateInBaseClass.visibility)
}
private fun FirMemberDeclaration.containingNonLocalClass(
@@ -261,7 +255,6 @@ abstract class FirVisibilityChecker : FirSessionComponent {
): Boolean
protected abstract fun platformOverrideVisibilityCheck(
session: FirSession,
candidateInDerivedClass: FirBasedSymbol<*>,
symbolInBaseClass: FirBasedSymbol<*>,
visibilityInBaseClass: Visibility,