[FIR] Relax intersection overrides visibility requirements for Java
Allow multiple bases with default implementations as long as there's a non-abstract symbol from a class. Our rules for Kotlin are stricter than those in Java.
This commit is contained in:
committed by
Space Team
parent
76ed5453b3
commit
da6006b7d0
+9
@@ -5,13 +5,17 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.backend.native
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.backend.native.interop.decodeObjCMethodAnnotation
|
||||
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||
import org.jetbrains.kotlin.fir.scopes.FirOverrideChecker
|
||||
import org.jetbrains.kotlin.fir.scopes.MemberWithBaseScope
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.FirStandardOverrideChecker
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||
|
||||
/**
|
||||
* The same code, as in this class also exists in [org.jetbrains.kotlin.ir.objcinterop.ObjCOverridabilityCondition]
|
||||
@@ -30,6 +34,11 @@ class FirNativeOverrideChecker(private val session: FirSession) : FirOverrideChe
|
||||
// KT-57640: There's no necessity to implement platform-dependent overridability check for properties
|
||||
standardOverrideChecker.isOverriddenProperty(overrideCandidate, baseDeclaration)
|
||||
|
||||
override fun <D : FirCallableSymbol<*>> chooseIntersectionVisibility(
|
||||
extractedOverrides: Collection<MemberWithBaseScope<D>>,
|
||||
dispatchClassSymbol: FirRegularClassSymbol?,
|
||||
): Visibility = standardOverrideChecker.chooseIntersectionVisibility(extractedOverrides, dispatchClassSymbol)
|
||||
|
||||
/**
|
||||
* mimics ObjCOverridabilityCondition.isOverridable
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user