[FIR] Prohibit calling functions with dynamic receiver over non-dynamics
^KT-63071 Fixed
This commit is contained in:
committed by
Space Team
parent
c69c34ff8b
commit
875e2b0cd6
+4
@@ -93,6 +93,10 @@ class InapplicableWrongReceiver(
|
||||
val actualType: ConeKotlinType? = null,
|
||||
) : ResolutionDiagnostic(INAPPLICABLE_WRONG_RECEIVER)
|
||||
|
||||
class DynamicReceiverExpectedButWasNonDynamic(
|
||||
val actualType: ConeKotlinType,
|
||||
) : ResolutionDiagnostic(INAPPLICABLE_WRONG_RECEIVER)
|
||||
|
||||
object NoCompanionObject : ResolutionDiagnostic(K2_NO_COMPANION_OBJECT)
|
||||
|
||||
class UnsafeCall(val actualType: ConeKotlinType) : ResolutionDiagnostic(UNSAFE_CALL)
|
||||
|
||||
+6
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.fir.expressions.FirOperation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirThisReceiverExpression
|
||||
import org.jetbrains.kotlin.fir.render
|
||||
import org.jetbrains.kotlin.fir.resolve.calls.AbstractCandidate
|
||||
import org.jetbrains.kotlin.fir.resolve.calls.ResolutionDiagnostic
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
@@ -120,6 +121,11 @@ class ConeInapplicableWrongReceiver(override val candidates: Collection<Abstract
|
||||
get() = "None of the following candidates is applicable because of receiver type mismatch: ${
|
||||
candidateSymbols.map { describeSymbol(it) }
|
||||
}"
|
||||
|
||||
val primaryDiagnostic: ResolutionDiagnostic?
|
||||
get() = candidates.singleOrNull()
|
||||
?.diagnostics
|
||||
?.singleOrNull { it.applicability == CandidateApplicability.INAPPLICABLE_WRONG_RECEIVER }
|
||||
}
|
||||
|
||||
class ConeInapplicableCandidateError(
|
||||
|
||||
Reference in New Issue
Block a user