K2: simplify visibility check for static qualifiers

This commit is contained in:
Mikhail Glukhikh
2022-11-09 09:58:47 +01:00
committed by Space Team
parent 104fd4c14d
commit e46978f7b3
@@ -121,6 +121,17 @@ abstract class FirVisibilityChecker : FirSessionComponent {
if (skipCheckForContainingClassVisibility) return true if (skipCheckForContainingClassVisibility) return true
if (staticQualifierClassForCallable != null) {
return isSpecificDeclarationVisible(
staticQualifierClassForCallable,
session,
useSiteFile,
containingDeclarations,
dispatchReceiver = null,
isCallToPropertySetter,
supertypeSupplier
)
}
val parentClass = declaration.containingNonLocalClass( val parentClass = declaration.containingNonLocalClass(
session, session,
dispatchReceiver, dispatchReceiver,
@@ -128,14 +139,8 @@ abstract class FirVisibilityChecker : FirSessionComponent {
supertypeSupplier supertypeSupplier
) ?: return true ) ?: return true
return generateSequence(parentClass) { it.containingNonLocalClass(session) }.all { parent -> return generateSequence(parentClass) { it.containingNonLocalClass(session) }.all { parent ->
val classLikeToCheck =
if (staticQualifierClassForCallable?.isSubClass(parent.symbol.toLookupTag(), session, supertypeSupplier) == true) {
staticQualifierClassForCallable
} else {
parent
}
isSpecificDeclarationVisible( isSpecificDeclarationVisible(
classLikeToCheck, parent,
session, session,
useSiteFile, useSiteFile,
containingDeclarations, containingDeclarations,