From 53f37a389391ab7cf2c0a99b1bc7978c2ef9da55 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 26 Oct 2022 14:28:12 +0200 Subject: [PATCH] FIR: always use class-based dispatch receiver type in class member helpers --- .../jvm/FirJvmOverridesBackwardCompatibilityHelper.kt | 4 ++-- .../extended/CanBeReplacedWithOperatorAssignmentChecker.kt | 4 ++-- .../fir/tree/src/org/jetbrains/kotlin/fir/ClassMembers.kt | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/FirJvmOverridesBackwardCompatibilityHelper.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/FirJvmOverridesBackwardCompatibilityHelper.kt index 6d93463e016..60368091fc4 100644 --- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/FirJvmOverridesBackwardCompatibilityHelper.kt +++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/FirJvmOverridesBackwardCompatibilityHelper.kt @@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.declarations.utils.isAbstract import org.jetbrains.kotlin.fir.declarations.utils.isFinal import org.jetbrains.kotlin.fir.declarations.utils.isInterface import org.jetbrains.kotlin.fir.declarations.utils.isJavaOrEnhancement -import org.jetbrains.kotlin.fir.dispatchReceiverTypeOrNull +import org.jetbrains.kotlin.fir.dispatchReceiverClassTypeOrNull import org.jetbrains.kotlin.fir.originalOrSelf import org.jetbrains.kotlin.fir.resolve.toFirRegularClassSymbol import org.jetbrains.kotlin.fir.scopes.getDirectOverriddenFunctions @@ -85,7 +85,7 @@ object FirJvmOverridesBackwardCompatibilityHelper : FirOverridesBackwardCompatib } val scope = - symbol.dispatchReceiverTypeOrNull()?.toRegularClassSymbol(context.session)?.unsubstitutedScope(context) ?: return false + symbol.dispatchReceiverClassTypeOrNull()?.toRegularClassSymbol(context.session)?.unsubstitutedScope(context) ?: return false val overriddenSymbols = when (originalMember) { is FirSimpleFunction -> scope.getDirectOverriddenFunctions(originalMember.symbol) is FirProperty -> scope.getDirectOverriddenProperties(originalMember.symbol) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/CanBeReplacedWithOperatorAssignmentChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/CanBeReplacedWithOperatorAssignmentChecker.kt index 5e7999b7380..97e5950984a 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/CanBeReplacedWithOperatorAssignmentChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/CanBeReplacedWithOperatorAssignmentChecker.kt @@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.getChildren import org.jetbrains.kotlin.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.diagnostics.reportOn -import org.jetbrains.kotlin.fir.dispatchReceiverTypeOrNull +import org.jetbrains.kotlin.fir.dispatchReceiverClassTypeOrNull import org.jetbrains.kotlin.fir.expressions.FirFunctionCall import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment import org.jetbrains.kotlin.fir.expressions.toResolvedCallableSymbol @@ -40,7 +40,7 @@ object CanBeReplacedWithOperatorAssignmentChecker : FirVariableAssignmentChecker if (rValue.explicitReceiver?.typeRef?.coneType?.isPrimitive != true) return val rValueResolvedSymbol = rValue.toResolvedCallableSymbol() ?: return - if (rValueResolvedSymbol.dispatchReceiverTypeOrNull()?.isPrimitive != true) return + if (rValueResolvedSymbol.dispatchReceiverClassTypeOrNull()?.isPrimitive != true) return var needToReport = false val assignmentSource = expression.source diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/ClassMembers.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/ClassMembers.kt index bac2629fdeb..844a8d615f9 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/ClassMembers.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/ClassMembers.kt @@ -13,8 +13,8 @@ import org.jetbrains.kotlin.fir.types.ConeClassLikeType import org.jetbrains.kotlin.fir.types.ConeIntersectionType import org.jetbrains.kotlin.fir.types.ConeKotlinType -fun FirCallableSymbol<*>.dispatchReceiverTypeOrNull(): ConeKotlinType? = - fir.dispatchReceiverType +fun FirCallableSymbol<*>.dispatchReceiverClassTypeOrNull(): ConeClassLikeType? = + fir.dispatchReceiverClassTypeOrNull() fun FirCallableDeclaration.dispatchReceiverClassTypeOrNull(): ConeClassLikeType? = if (dispatchReceiverType is ConeIntersectionType && isIntersectionOverride)