From 9acae3b0df4f234b0df181c2c00302a311c9265c Mon Sep 17 00:00:00 2001 From: "Anastasia.Nekrasova" Date: Fri, 20 Oct 2023 20:35:19 +0300 Subject: [PATCH] [K2] Disappeared ITERATOR_MISSING ^KT-59986 --- .../analysis/checkers/expression/FirForLoopChecker.kt | 9 +++++---- .../typeInferenceFailedOnIteratorCall.fir.kt | 8 -------- .../typeInferenceFailedOnIteratorCall.kt | 1 + 3 files changed, 6 insertions(+), 12 deletions(-) delete mode 100644 compiler/testData/diagnostics/tests/inference/reportingImprovements/typeInferenceFailedOnIteratorCall.fir.kt diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirForLoopChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirForLoopChecker.kt index b98dedfd30d..6b14f54ef11 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirForLoopChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirForLoopChecker.kt @@ -32,10 +32,7 @@ import org.jetbrains.kotlin.fir.expressions.FirWhileLoop import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference import org.jetbrains.kotlin.fir.references.isError import org.jetbrains.kotlin.fir.resolve.calls.UnsafeCall -import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeAmbiguityError -import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeInapplicableCandidateError -import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeInapplicableWrongReceiver -import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnresolvedNameError +import org.jetbrains.kotlin.fir.resolve.diagnostics.* import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol import org.jetbrains.kotlin.resolve.calls.tower.isSuccess @@ -127,6 +124,10 @@ object FirForLoopChecker : FirBlockChecker() { error("ConeInapplicableWrongReceiver, but no diagnostic reported") } } + is ConeConstraintSystemHasContradiction -> { + if (calleeReference.name == OperatorNameConventions.ITERATOR) + reporter.reportOn(reportSource, missingFactory, context) + } is ConeInapplicableCandidateError -> { if (unsafeCallFactory != null || noneApplicableFactory != null) { diagnostic.candidate.diagnostics.filter { it.applicability == diagnostic.applicability }.forEach { diff --git a/compiler/testData/diagnostics/tests/inference/reportingImprovements/typeInferenceFailedOnIteratorCall.fir.kt b/compiler/testData/diagnostics/tests/inference/reportingImprovements/typeInferenceFailedOnIteratorCall.fir.kt deleted file mode 100644 index 99b9cab228b..00000000000 --- a/compiler/testData/diagnostics/tests/inference/reportingImprovements/typeInferenceFailedOnIteratorCall.fir.kt +++ /dev/null @@ -1,8 +0,0 @@ -class X - -operator fun X.iterator(): Iterable = TODO() - -fun test() { - for (i in X()) { - } -} diff --git a/compiler/testData/diagnostics/tests/inference/reportingImprovements/typeInferenceFailedOnIteratorCall.kt b/compiler/testData/diagnostics/tests/inference/reportingImprovements/typeInferenceFailedOnIteratorCall.kt index 88c7785527a..29644488ebd 100644 --- a/compiler/testData/diagnostics/tests/inference/reportingImprovements/typeInferenceFailedOnIteratorCall.kt +++ b/compiler/testData/diagnostics/tests/inference/reportingImprovements/typeInferenceFailedOnIteratorCall.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL class X operator fun X.iterator(): Iterable = TODO()