[FIR] Properly check for visibility in FirTypeIntersectionScopeContext
This fixes a false positive OVERRIDING_FINAL_MEMBER caused by a package-private member in a different package being added to the list of overridden symbols. However, in Java, package-private members from different packages are effectively like private members in that they cannot be overridden. #KT-61696 Fixed
This commit is contained in:
committed by
Space Team
parent
d16f33cf5b
commit
2bc25d4f6e
@@ -18,7 +18,6 @@ import org.jetbrains.kotlin.fir.declarations.utils.visibility
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.resolve.SupertypeSupplier
|
||||
import org.jetbrains.kotlin.fir.resolve.calls.FirSimpleSyntheticPropertySymbol
|
||||
import org.jetbrains.kotlin.fir.resolve.calls.ReceiverValue
|
||||
import org.jetbrains.kotlin.fir.resolve.isSubclassOf
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
@@ -76,12 +75,12 @@ object FirJavaVisibilityChecker : FirVisibilityChecker() {
|
||||
}
|
||||
|
||||
override fun platformOverrideVisibilityCheck(
|
||||
candidateInDerivedClass: FirBasedSymbol<*>,
|
||||
packageNameOfDerivedClass: FqName,
|
||||
symbolInBaseClass: FirBasedSymbol<*>,
|
||||
visibilityInBaseClass: Visibility,
|
||||
): Boolean = when (visibilityInBaseClass) {
|
||||
JavaVisibilities.ProtectedAndPackage, JavaVisibilities.ProtectedStaticVisibility -> true
|
||||
JavaVisibilities.PackageVisibility -> symbolInBaseClass.isInPackage(candidateInDerivedClass.packageFqName())
|
||||
JavaVisibilities.PackageVisibility -> symbolInBaseClass.isInPackage(packageNameOfDerivedClass)
|
||||
else -> true
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user