From badd09e4fd60c98d6a6ff46e4c8c36e3c6db99bc Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Wed, 29 Mar 2023 13:17:27 +0200 Subject: [PATCH] [FIR] TowerLevels: add missing lazy resolve ^KT-56543 --- .../jetbrains/kotlin/fir/resolve/calls/tower/TowerLevels.kt | 6 +++++- .../diagnostics/testsWithStdLib/resolve/hidesMembers.fir.kt | 1 - .../diagnostics/testsWithStdLib/resolve/hidesMembers.kt | 1 - 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/TowerLevels.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/TowerLevels.kt index 07552ce1f59..2d3b79e0c38 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/TowerLevels.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/TowerLevels.kt @@ -23,6 +23,7 @@ import org.jetbrains.kotlin.fir.scopes.impl.FirDefaultStarImportingScope import org.jetbrains.kotlin.fir.scopes.impl.importedFromObjectOrStaticData import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.symbols.impl.* +import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.name.StandardClassIds.Annotations.HidesMembers import org.jetbrains.kotlin.types.AbstractTypeChecker @@ -400,12 +401,15 @@ class ScopeTowerLevel( callInfo: CallInfo, processor: TowerScopeLevelProcessor ) { - val candidateReceiverTypeRef = candidate.fir.receiverParameter?.typeRef + candidate.lazyResolveToPhase(FirResolvePhase.TYPES) if (withHideMembersOnly && candidate.getAnnotationByClassId(HidesMembers, session) == null) { return } + val receiverExpected = withHideMembersOnly || areThereExtensionReceiverOptions() + val candidateReceiverTypeRef = candidate.fir.receiverParameter?.typeRef if (candidateReceiverTypeRef == null == receiverExpected) return + val dispatchReceiverValue = dispatchReceiverValue(candidate, callInfo) if (dispatchReceiverValue == null && shouldSkipCandidateWithInconsistentExtensionReceiver(candidate)) { return diff --git a/compiler/testData/diagnostics/testsWithStdLib/resolve/hidesMembers.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/resolve/hidesMembers.fir.kt index 6b2cb977742..aadc9fb1e0f 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/resolve/hidesMembers.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/resolve/hidesMembers.fir.kt @@ -1,4 +1,3 @@ -// IGNORE_REVERSED_RESOLVE // !CHECK_TYPE // !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE diff --git a/compiler/testData/diagnostics/testsWithStdLib/resolve/hidesMembers.kt b/compiler/testData/diagnostics/testsWithStdLib/resolve/hidesMembers.kt index 59fbf1bfe81..59b728e2021 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/resolve/hidesMembers.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/resolve/hidesMembers.kt @@ -1,4 +1,3 @@ -// IGNORE_REVERSED_RESOLVE // !CHECK_TYPE // !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE