diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java index e4bb17f14ba..89e5ac41730 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java @@ -15276,6 +15276,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/inference/annotatedUnderscoredTypeArgument.kt"); } + @Test + @TestMetadata("assertThatInNumerousIf.kt") + public void testAssertThatInNumerousIf() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/assertThatInNumerousIf.kt"); + } + @Test @TestMetadata("cannotCompleteResolveAmbiguity.kt") public void testCannotCompleteResolveAmbiguity() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java index 015a005828a..7f483f470a4 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java @@ -15276,6 +15276,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/inference/annotatedUnderscoredTypeArgument.kt"); } + @Test + @TestMetadata("assertThatInNumerousIf.kt") + public void testAssertThatInNumerousIf() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/assertThatInNumerousIf.kt"); + } + @Test @TestMetadata("cannotCompleteResolveAmbiguity.kt") public void testCannotCompleteResolveAmbiguity() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java index 58a1ad3b391..2a2c5a9f626 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java @@ -15276,6 +15276,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/inference/annotatedUnderscoredTypeArgument.kt"); } + @Test + @TestMetadata("assertThatInNumerousIf.kt") + public void testAssertThatInNumerousIf() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/assertThatInNumerousIf.kt"); + } + @Test @TestMetadata("cannotCompleteResolveAmbiguity.kt") public void testCannotCompleteResolveAmbiguity() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java index 09e06b617b6..9663262c530 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java @@ -15282,6 +15282,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/inference/annotatedUnderscoredTypeArgument.kt"); } + @Test + @TestMetadata("assertThatInNumerousIf.kt") + public void testAssertThatInNumerousIf() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/assertThatInNumerousIf.kt"); + } + @Test @TestMetadata("cannotCompleteResolveAmbiguity.kt") public void testCannotCompleteResolveAmbiguity() throws Exception { diff --git a/compiler/testData/diagnostics/tests/inference/assertThatInNumerousIf.fir.kt b/compiler/testData/diagnostics/tests/inference/assertThatInNumerousIf.fir.kt new file mode 100644 index 00000000000..515b892f341 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/assertThatInNumerousIf.fir.kt @@ -0,0 +1,85 @@ +// ISSUE: KT-60581 +// WITH_STDLIB + +// ---------------------- AssertJ declarations -------------------------- +// FILE: AbstractAssert.java +public abstract class AbstractAssert, ACTUAL> {} + +// FILE: EnumerableAssert.java +public interface EnumerableAssert, ELEMENT> {} + +// FILE: ObjectEnumerableAssert.java +public interface ObjectEnumerableAssert, ELEMENT> +extends EnumerableAssert {} + +// FILE: IndexedObjectEnumerableAssert.java +public interface IndexedObjectEnumerableAssert, ELEMENT> +extends ObjectEnumerableAssert {} + +// FILE: AbstractIterableAssert.java +public abstract class AbstractIterableAssert< + SELF extends AbstractIterableAssert, +ACTUAL extends Iterable, +ELEMENT, +ELEMENT_ASSERT extends AbstractAssert> +extends AbstractAssert implements ObjectEnumerableAssert {} + +// FILE: AbstractListAssert.java +public abstract class AbstractListAssert< + SELF extends AbstractListAssert, +ACTUAL extends List, +ELEMENT, +ELEMENT_ASSERT extends AbstractAssert> +extends AbstractIterableAssert +implements IndexedObjectEnumerableAssert { + SELF isNotEmpty() { + return null; + } +} + +// FILE: ListAssert.java +public class ListAssert extends AbstractListAssert, List, ELEMENT, ObjectAssert> {} + +// FILE: AbstractCharSequenceAssert.java +public abstract class AbstractCharSequenceAssert, ACTUAL extends CharSequence> +extends AbstractAssert implements EnumerableAssert {} + +// FILE: AbstractStringAssert.java +public class AbstractStringAssert> extends AbstractCharSequenceAssert { + public SELF isEqualTo(String expected) { + return null; + } +} + +// FILE: StringAssert.java +public class StringAssert extends AbstractStringAssert {} + +// FILE: test/Assertions.java + +import java.util.List; + +public class Assertions { + public static ListAssert assertThat(java.util.List actual) { + return null; + } + + public static AbstractStringAssert assertThat(String actual) { + return null; + } +} + +// FILE: foo.kt + +fun test() { + val sessionIds = listOf("") + val directSessionIds = listOf("") + if (true) { + if (true) { + Assertions.assertThat(sessionIds[0]) + } else { + Assertions.assertThat(directSessionIds) + } + } else { + Assertions.assertThat(sessionIds) + } +} diff --git a/compiler/testData/diagnostics/tests/inference/assertThatInNumerousIf.kt b/compiler/testData/diagnostics/tests/inference/assertThatInNumerousIf.kt new file mode 100644 index 00000000000..aec55a1794b --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/assertThatInNumerousIf.kt @@ -0,0 +1,85 @@ +// ISSUE: KT-60581 +// WITH_STDLIB + +// ---------------------- AssertJ declarations -------------------------- +// FILE: AbstractAssert.java +public abstract class AbstractAssert, ACTUAL> {} + +// FILE: EnumerableAssert.java +public interface EnumerableAssert, ELEMENT> {} + +// FILE: ObjectEnumerableAssert.java +public interface ObjectEnumerableAssert, ELEMENT> +extends EnumerableAssert {} + +// FILE: IndexedObjectEnumerableAssert.java +public interface IndexedObjectEnumerableAssert, ELEMENT> +extends ObjectEnumerableAssert {} + +// FILE: AbstractIterableAssert.java +public abstract class AbstractIterableAssert< + SELF extends AbstractIterableAssert, +ACTUAL extends Iterable, +ELEMENT, +ELEMENT_ASSERT extends AbstractAssert> +extends AbstractAssert implements ObjectEnumerableAssert {} + +// FILE: AbstractListAssert.java +public abstract class AbstractListAssert< + SELF extends AbstractListAssert, +ACTUAL extends List, +ELEMENT, +ELEMENT_ASSERT extends AbstractAssert> +extends AbstractIterableAssert +implements IndexedObjectEnumerableAssert { + SELF isNotEmpty() { + return null; + } +} + +// FILE: ListAssert.java +public class ListAssert extends AbstractListAssert, List, ELEMENT, ObjectAssert> {} + +// FILE: AbstractCharSequenceAssert.java +public abstract class AbstractCharSequenceAssert, ACTUAL extends CharSequence> +extends AbstractAssert implements EnumerableAssert {} + +// FILE: AbstractStringAssert.java +public class AbstractStringAssert> extends AbstractCharSequenceAssert { + public SELF isEqualTo(String expected) { + return null; + } +} + +// FILE: StringAssert.java +public class StringAssert extends AbstractStringAssert {} + +// FILE: test/Assertions.java + +import java.util.List; + +public class Assertions { + public static ListAssert assertThat(java.util.List actual) { + return null; + } + + public static AbstractStringAssert assertThat(String actual) { + return null; + } +} + +// FILE: foo.kt + +fun test() { + val sessionIds = listOf("") + val directSessionIds = listOf("") + if (true) { + if (true) { + Assertions.assertThat(sessionIds[0]) + } else { + Assertions.assertThat(directSessionIds) + } + } else { + Assertions.assertThat(sessionIds) + } +} diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java index 4175a382d7b..b1b2fb4b8e1 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java @@ -15282,6 +15282,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/inference/annotatedUnderscoredTypeArgument.kt"); } + @Test + @TestMetadata("assertThatInNumerousIf.kt") + public void testAssertThatInNumerousIf() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/assertThatInNumerousIf.kt"); + } + @Test @TestMetadata("cannotCompleteResolveAmbiguity.kt") public void testCannotCompleteResolveAmbiguity() throws Exception {