FIR visibility checker: remove redundant session from isVisibleForOverriding
This commit is contained in:
@@ -371,7 +371,7 @@ internal fun FirSimpleFunction.processOverriddenFunctionSymbols(
|
||||
scope.processFunctionsByName(name) {}
|
||||
scope.processOverriddenFunctionsFromSuperClasses(symbol, containingClass) { overriddenSymbol ->
|
||||
if (!session.visibilityChecker.isVisibleForOverriding(
|
||||
session, candidateInDerivedClass = symbol.fir, candidateInBaseClass = overriddenSymbol.fir
|
||||
candidateInDerivedClass = symbol.fir, candidateInBaseClass = overriddenSymbol.fir
|
||||
)
|
||||
) {
|
||||
return@processOverriddenFunctionsFromSuperClasses ProcessorAction.NEXT
|
||||
@@ -446,7 +446,7 @@ internal fun FirProperty.processOverriddenPropertySymbols(
|
||||
val overriddenSet = mutableSetOf<IrPropertySymbol>()
|
||||
scope.processOverriddenPropertiesFromSuperClasses(symbol, containingClass) { overriddenSymbol ->
|
||||
if (!session.visibilityChecker.isVisibleForOverriding(
|
||||
session, candidateInDerivedClass = symbol.fir, candidateInBaseClass = overriddenSymbol.fir
|
||||
candidateInDerivedClass = symbol.fir, candidateInBaseClass = overriddenSymbol.fir
|
||||
)
|
||||
) {
|
||||
return@processOverriddenPropertiesFromSuperClasses ProcessorAction.NEXT
|
||||
@@ -482,7 +482,7 @@ internal fun FirProperty.generateOverriddenAccessorSymbols(containingClass: FirC
|
||||
|
||||
scope.processOverriddenPropertiesFromSuperClasses(symbol, containingClass) { overriddenSymbol ->
|
||||
if (!session.visibilityChecker.isVisibleForOverriding(
|
||||
session, candidateInDerivedClass = symbol.fir, candidateInBaseClass = overriddenSymbol.fir
|
||||
candidateInDerivedClass = symbol.fir, candidateInBaseClass = overriddenSymbol.fir
|
||||
)
|
||||
) {
|
||||
return@processOverriddenPropertiesFromSuperClasses ProcessorAction.NEXT
|
||||
|
||||
+1
-1
@@ -203,7 +203,7 @@ class FakeOverrideGenerator(
|
||||
// But they are treated differently in IR (real declarations have already been declared before) and such methods are present among realDeclarationSymbols
|
||||
if (originalSymbol in realDeclarationSymbols) return
|
||||
|
||||
if (!session.visibilityChecker.isVisibleForOverriding(session, klass.moduleData, klass.symbol, originalDeclaration)) return
|
||||
if (!session.visibilityChecker.isVisibleForOverriding(klass.moduleData, klass.symbol, originalDeclaration)) return
|
||||
|
||||
val origin = IrDeclarationOrigin.FAKE_OVERRIDE
|
||||
val baseSymbol = originalSymbol.unwrapSubstitutionAndIntersectionOverrides() as S
|
||||
|
||||
@@ -57,7 +57,6 @@ object FirJavaVisibilityChecker : FirVisibilityChecker() {
|
||||
}
|
||||
|
||||
override fun platformOverrideVisibilityCheck(
|
||||
session: FirSession,
|
||||
candidateInDerivedClass: FirBasedSymbol<*>,
|
||||
symbolInBaseClass: FirBasedSymbol<*>,
|
||||
visibilityInBaseClass: Visibility,
|
||||
|
||||
@@ -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,
|
||||
|
||||
+2
-2
@@ -95,7 +95,7 @@ class FirStatusResolver(
|
||||
scope.processPropertiesByName(property.name) {}
|
||||
scope.processDirectOverriddenPropertiesWithBaseScope(property.symbol) { overriddenSymbol, _ ->
|
||||
if (session.visibilityChecker.isVisibleForOverriding(
|
||||
session, candidateInDerivedClass = property, candidateInBaseClass = overriddenSymbol.fir
|
||||
candidateInDerivedClass = property, candidateInBaseClass = overriddenSymbol.fir
|
||||
)
|
||||
) {
|
||||
this += overriddenSymbol.fir
|
||||
@@ -135,7 +135,7 @@ class FirStatusResolver(
|
||||
scope.processFunctionsByName(function.name) {}
|
||||
scope.processDirectOverriddenFunctionsWithBaseScope(symbol) { overriddenSymbol, _ ->
|
||||
if (session.visibilityChecker.isVisibleForOverriding(
|
||||
session, candidateInDerivedClass = function, candidateInBaseClass = overriddenSymbol.fir
|
||||
candidateInDerivedClass = function, candidateInBaseClass = overriddenSymbol.fir
|
||||
)
|
||||
) {
|
||||
this += overriddenSymbol.fir
|
||||
|
||||
Reference in New Issue
Block a user