FIR: always use class-based dispatch receiver type in class member helpers
This commit is contained in:
committed by
Space Team
parent
d4fc2248ff
commit
53f37a3893
+2
-2
@@ -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.isFinal
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.isInterface
|
import org.jetbrains.kotlin.fir.declarations.utils.isInterface
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.isJavaOrEnhancement
|
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.originalOrSelf
|
||||||
import org.jetbrains.kotlin.fir.resolve.toFirRegularClassSymbol
|
import org.jetbrains.kotlin.fir.resolve.toFirRegularClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.scopes.getDirectOverriddenFunctions
|
import org.jetbrains.kotlin.fir.scopes.getDirectOverriddenFunctions
|
||||||
@@ -85,7 +85,7 @@ object FirJvmOverridesBackwardCompatibilityHelper : FirOverridesBackwardCompatib
|
|||||||
}
|
}
|
||||||
|
|
||||||
val scope =
|
val scope =
|
||||||
symbol.dispatchReceiverTypeOrNull()?.toRegularClassSymbol(context.session)?.unsubstitutedScope(context) ?: return false
|
symbol.dispatchReceiverClassTypeOrNull()?.toRegularClassSymbol(context.session)?.unsubstitutedScope(context) ?: return false
|
||||||
val overriddenSymbols = when (originalMember) {
|
val overriddenSymbols = when (originalMember) {
|
||||||
is FirSimpleFunction -> scope.getDirectOverriddenFunctions(originalMember.symbol)
|
is FirSimpleFunction -> scope.getDirectOverriddenFunctions(originalMember.symbol)
|
||||||
is FirProperty -> scope.getDirectOverriddenProperties(originalMember.symbol)
|
is FirProperty -> scope.getDirectOverriddenProperties(originalMember.symbol)
|
||||||
|
|||||||
+2
-2
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.getChildren
|
|||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
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.FirFunctionCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment
|
import org.jetbrains.kotlin.fir.expressions.FirVariableAssignment
|
||||||
import org.jetbrains.kotlin.fir.expressions.toResolvedCallableSymbol
|
import org.jetbrains.kotlin.fir.expressions.toResolvedCallableSymbol
|
||||||
@@ -40,7 +40,7 @@ object CanBeReplacedWithOperatorAssignmentChecker : FirVariableAssignmentChecker
|
|||||||
|
|
||||||
if (rValue.explicitReceiver?.typeRef?.coneType?.isPrimitive != true) return
|
if (rValue.explicitReceiver?.typeRef?.coneType?.isPrimitive != true) return
|
||||||
val rValueResolvedSymbol = rValue.toResolvedCallableSymbol() ?: return
|
val rValueResolvedSymbol = rValue.toResolvedCallableSymbol() ?: return
|
||||||
if (rValueResolvedSymbol.dispatchReceiverTypeOrNull()?.isPrimitive != true) return
|
if (rValueResolvedSymbol.dispatchReceiverClassTypeOrNull()?.isPrimitive != true) return
|
||||||
|
|
||||||
var needToReport = false
|
var needToReport = false
|
||||||
val assignmentSource = expression.source
|
val assignmentSource = expression.source
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
|||||||
import org.jetbrains.kotlin.fir.types.ConeIntersectionType
|
import org.jetbrains.kotlin.fir.types.ConeIntersectionType
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||||
|
|
||||||
fun FirCallableSymbol<*>.dispatchReceiverTypeOrNull(): ConeKotlinType? =
|
fun FirCallableSymbol<*>.dispatchReceiverClassTypeOrNull(): ConeClassLikeType? =
|
||||||
fir.dispatchReceiverType
|
fir.dispatchReceiverClassTypeOrNull()
|
||||||
|
|
||||||
fun FirCallableDeclaration.dispatchReceiverClassTypeOrNull(): ConeClassLikeType? =
|
fun FirCallableDeclaration.dispatchReceiverClassTypeOrNull(): ConeClassLikeType? =
|
||||||
if (dispatchReceiverType is ConeIntersectionType && isIntersectionOverride)
|
if (dispatchReceiverType is ConeIntersectionType && isIntersectionOverride)
|
||||||
|
|||||||
Reference in New Issue
Block a user