From 2b82726f1d897834fdc48feffbb8654a96b4dd0b Mon Sep 17 00:00:00 2001 From: Nikita Bobko Date: Tue, 7 Nov 2023 16:34:31 +0100 Subject: [PATCH] Cleanup: rename getSingleExpectForActualOrNull w.r.t. KT-62590 New name makes slightly more sense after KT-6259 is fixed --- .../checkers/declaration/FirOverloadsChecker.kt | 2 +- ...ntsInExpectActualizedByFakeOverrideChecker.kt | 4 ++-- ...rgumentsInExpectWithActualTypealiasChecker.kt | 4 ++-- .../FirExpectActualDeclarationChecker.kt | 2 +- .../FirSuperCallWithDefaultsChecker.kt | 4 ++-- .../kotlin/fir/declarations/declarationUtils.kt | 2 +- .../calls/ConeOverloadConflictResolver.kt | 4 ++-- .../fir/declarations/ExpectActualAttributes.kt | 16 +++++++++++----- 8 files changed, 22 insertions(+), 16 deletions(-) diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirOverloadsChecker.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirOverloadsChecker.kt index 54b6d60c350..9ab75a25f86 100644 --- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirOverloadsChecker.kt +++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirOverloadsChecker.kt @@ -28,7 +28,7 @@ object FirOverloadsChecker : FirFunctionChecker() { val annotation = declaration.getAnnotationByClassId(JVM_OVERLOADS_CLASS_ID, session) ?: return val ownerOfParametersWithDefaultValues = declaration.symbol.takeIf { !it.isActual } - ?: declaration.symbol.getSingleExpectForActualOrNull() + ?: declaration.symbol.getSingleMatchedExpectForActualOrNull() ?: return val containingDeclaration = declaration.getContainingClassSymbol(session) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDefaultArgumentsInExpectActualizedByFakeOverrideChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDefaultArgumentsInExpectActualizedByFakeOverrideChecker.kt index 8296c4aa937..59b9e9f021d 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDefaultArgumentsInExpectActualizedByFakeOverrideChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDefaultArgumentsInExpectActualizedByFakeOverrideChecker.kt @@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.FirExpectActualMatchingContext import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.declarations.FirRegularClass -import org.jetbrains.kotlin.fir.declarations.getSingleExpectForActualOrNull +import org.jetbrains.kotlin.fir.declarations.getSingleMatchedExpectForActualOrNull import org.jetbrains.kotlin.fir.declarations.utils.isActual import org.jetbrains.kotlin.fir.expectActualMatchingContextFactory import org.jetbrains.kotlin.fir.isDelegated @@ -37,7 +37,7 @@ internal object FirDefaultArgumentsInExpectActualizedByFakeOverrideChecker : Fir } val actualClassSymbol = declaration.symbol // We want to report errors even if a candidate is incompatible, but it's single - val expectedSingleCandidate = actualClassSymbol.getSingleExpectForActualOrNull() ?: return + val expectedSingleCandidate = actualClassSymbol.getSingleMatchedExpectForActualOrNull() ?: return val expectClassSymbol = expectedSingleCandidate as FirRegularClassSymbol val expectActualMatchingContext = context.session.expectActualMatchingContextFactory.create( diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDefaultArgumentsInExpectWithActualTypealiasChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDefaultArgumentsInExpectWithActualTypealiasChecker.kt index a1e3ba39375..e6a7a18c8df 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDefaultArgumentsInExpectWithActualTypealiasChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirDefaultArgumentsInExpectWithActualTypealiasChecker.kt @@ -12,7 +12,7 @@ import org.jetbrains.kotlin.diagnostics.reportOn import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.declarations.FirTypeAlias -import org.jetbrains.kotlin.fir.declarations.getSingleExpectForActualOrNull +import org.jetbrains.kotlin.fir.declarations.getSingleMatchedExpectForActualOrNull import org.jetbrains.kotlin.fir.declarations.utils.isActual import org.jetbrains.kotlin.fir.scopes.collectAllFunctions import org.jetbrains.kotlin.fir.scopes.getDeclaredConstructors @@ -32,7 +32,7 @@ internal object FirDefaultArgumentsInExpectWithActualTypealiasChecker : FirTypeA } val actualTypealiasSymbol = declaration.symbol // We want to report errors even if a candidate is incompatible, but it's single - val expectedSingleCandidate = actualTypealiasSymbol.getSingleExpectForActualOrNull() ?: return + val expectedSingleCandidate = actualTypealiasSymbol.getSingleMatchedExpectForActualOrNull() ?: return val expectClassSymbol = expectedSingleCandidate as FirRegularClassSymbol val membersWithDefaultValueParameters = getMembersWithDefaultValueParametersUnlessAnnotation(expectClassSymbol) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectActualDeclarationChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectActualDeclarationChecker.kt index 43d36e3b405..5b29d9ca081 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectActualDeclarationChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectActualDeclarationChecker.kt @@ -131,7 +131,7 @@ object FirExpectActualDeclarationChecker : FirBasicDeclarationChecker() { allowedWritingMemberExpectForActualMapping = true, ) val actualContainingClass = context.containingDeclarations.lastOrNull()?.symbol as? FirRegularClassSymbol - val expectContainingClass = actualContainingClass?.getSingleExpectForActualOrNull() as? FirRegularClassSymbol + val expectContainingClass = actualContainingClass?.getSingleMatchedExpectForActualOrNull() as? FirRegularClassSymbol getCheckingCompatibility( symbol, expectedSingleCandidate, diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirSuperCallWithDefaultsChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirSuperCallWithDefaultsChecker.kt index 3434bcf101f..3cb669da078 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirSuperCallWithDefaultsChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirSuperCallWithDefaultsChecker.kt @@ -10,7 +10,7 @@ import org.jetbrains.kotlin.diagnostics.reportOn import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext import org.jetbrains.kotlin.fir.analysis.checkers.explicitReceiverIsNotSuperReference import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors -import org.jetbrains.kotlin.fir.declarations.getSingleExpectForActualOrNull +import org.jetbrains.kotlin.fir.declarations.getSingleMatchedExpectForActualOrNull import org.jetbrains.kotlin.fir.expressions.FirFunctionCall import org.jetbrains.kotlin.fir.expressions.impl.FirResolvedArgumentList import org.jetbrains.kotlin.fir.references.toResolvedNamedFunctionSymbol @@ -20,7 +20,7 @@ object FirSuperCallWithDefaultsChecker : FirFunctionCallChecker() { if (expression.explicitReceiverIsNotSuperReference()) return val functionSymbol = expression.calleeReference.toResolvedNamedFunctionSymbol() ?: return - val relevantFunctionSymbol = functionSymbol.getSingleExpectForActualOrNull() ?: functionSymbol + val relevantFunctionSymbol = functionSymbol.getSingleMatchedExpectForActualOrNull() ?: functionSymbol if (!relevantFunctionSymbol.valueParameterSymbols.any { it.hasDefaultValue }) return val arguments = expression.argumentList as? FirResolvedArgumentList ?: return if (arguments.arguments.size < functionSymbol.valueParameterSymbols.size) { diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/declarations/declarationUtils.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/declarations/declarationUtils.kt index 51418721e36..b7b5973f939 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/declarations/declarationUtils.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/declarations/declarationUtils.kt @@ -116,7 +116,7 @@ private fun FirFunction.containsDefaultValue(index: Int): Boolean = valueParamet * for this actual. */ fun FirFunction.itOrExpectHasDefaultParameterValue(index: Int): Boolean = - containsDefaultValue(index) || symbol.getSingleExpectForActualOrNull()?.fir?.containsDefaultValue(index) == true + containsDefaultValue(index) || symbol.getSingleMatchedExpectForActualOrNull()?.fir?.containsDefaultValue(index) == true fun FirSimpleFunction.isEquals(session: FirSession): Boolean { if (name != OperatorNameConventions.EQUALS) return false diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeOverloadConflictResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeOverloadConflictResolver.kt index 8360f7ae75d..7f11a7752dc 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeOverloadConflictResolver.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeOverloadConflictResolver.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.resolve.calls import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration -import org.jetbrains.kotlin.fir.declarations.getSingleExpectForActualOrNull +import org.jetbrains.kotlin.fir.declarations.getSingleMatchedExpectForActualOrNull import org.jetbrains.kotlin.fir.declarations.utils.isActual import org.jetbrains.kotlin.fir.declarations.utils.isExpect import org.jetbrains.kotlin.fir.declarations.utils.modality @@ -297,7 +297,7 @@ class ConeOverloadConflictResolver( val expectForActualSymbols = candidates .mapNotNullTo(mutableSetOf()) { val callableSymbol = it.symbol as? FirCallableSymbol<*> ?: return@mapNotNullTo null - runIf(callableSymbol.isActual) { callableSymbol.getSingleExpectForActualOrNull() } + runIf(callableSymbol.isActual) { callableSymbol.getSingleMatchedExpectForActualOrNull() } } return if (expectForActualSymbols.isEmpty()) { diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/ExpectActualAttributes.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/ExpectActualAttributes.kt index 9c4246fe527..9c73c46b2e7 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/ExpectActualAttributes.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/ExpectActualAttributes.kt @@ -28,16 +28,22 @@ typealias ExpectForActualMatchingData = Map.getSingleExpectForActualOrNull(): FirFunctionSymbol<*>? = - (this as FirBasedSymbol<*>).getSingleExpectForActualOrNull() as? FirFunctionSymbol<*> + getSingleMatchedExpectForActualOrNull() /** * @see expectForActual */ -fun FirBasedSymbol<*>.getSingleExpectForActualOrNull(): FirBasedSymbol<*>? = +fun FirFunctionSymbol<*>.getSingleMatchedExpectForActualOrNull(): FirFunctionSymbol<*>? = + (this as FirBasedSymbol<*>).getSingleMatchedExpectForActualOrNull() as? FirFunctionSymbol<*> + +/** + * @see expectForActual + */ +fun FirBasedSymbol<*>.getSingleMatchedExpectForActualOrNull(): FirBasedSymbol<*>? = expectForActual?.get(ExpectActualMatchingCompatibility.MatchedSuccessfully)?.singleOrNull() /**