FIR Java: fix too strict cast in use-site scope
This commit is contained in:
committed by
Mikhail Glukhikh
parent
539fcf82ef
commit
98f4fa1f6c
@@ -10,8 +10,8 @@ import org.jetbrains.kotlin.descriptors.Modality
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirNamedFunction
|
import org.jetbrains.kotlin.fir.declarations.FirNamedFunction
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||||
import org.jetbrains.kotlin.fir.java.declarations.FirJavaMethod
|
|
||||||
import org.jetbrains.kotlin.fir.java.toNotNullConeKotlinType
|
import org.jetbrains.kotlin.fir.java.toNotNullConeKotlinType
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.transformers.firUnsafe
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.FirAbstractProviderBasedScope
|
import org.jetbrains.kotlin.fir.scopes.impl.FirAbstractProviderBasedScope
|
||||||
@@ -54,7 +54,7 @@ class JavaClassUseSiteScope(
|
|||||||
private fun isEqualTypes(a: FirTypeRef, b: FirTypeRef) =
|
private fun isEqualTypes(a: FirTypeRef, b: FirTypeRef) =
|
||||||
isEqualTypes(a.toNotNullConeKotlinType(session), b.toNotNullConeKotlinType(session))
|
isEqualTypes(a.toNotNullConeKotlinType(session), b.toNotNullConeKotlinType(session))
|
||||||
|
|
||||||
private fun isOverriddenFunCheck(overriddenInJava: FirJavaMethod, base: FirNamedFunction): Boolean {
|
private fun isOverriddenFunCheck(overriddenInJava: FirNamedFunction, base: FirNamedFunction): Boolean {
|
||||||
val receiverTypeRef = base.receiverTypeRef
|
val receiverTypeRef = base.receiverTypeRef
|
||||||
if (receiverTypeRef == null) {
|
if (receiverTypeRef == null) {
|
||||||
return overriddenInJava.valueParameters.size == base.valueParameters.size &&
|
return overriddenInJava.valueParameters.size == base.valueParameters.size &&
|
||||||
@@ -76,7 +76,7 @@ class JavaClassUseSiteScope(
|
|||||||
|
|
||||||
val self = (this as FirFunctionSymbol).fir as FirNamedFunction
|
val self = (this as FirFunctionSymbol).fir as FirNamedFunction
|
||||||
val overriding = candidates.firstOrNull {
|
val overriding = candidates.firstOrNull {
|
||||||
val member = (it as FirFunctionSymbol).fir as FirJavaMethod
|
val member = (it as FirFunctionSymbol).firUnsafe<FirNamedFunction>()
|
||||||
self.modality != Modality.FINAL && isOverriddenFunCheck(member, self)
|
self.modality != Modality.FINAL && isOverriddenFunCheck(member, self)
|
||||||
} // TODO: two or more overrides for one fun?
|
} // TODO: two or more overrides for one fun?
|
||||||
overriddenByBase[this] = overriding
|
overriddenByBase[this] = overriding
|
||||||
|
|||||||
Reference in New Issue
Block a user