K2: reproduce KT-60581
This commit is contained in:
committed by
Space Team
parent
1add296388
commit
610a9d9c6a
+6
@@ -15276,6 +15276,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia
|
|||||||
runTest("compiler/testData/diagnostics/tests/inference/annotatedUnderscoredTypeArgument.kt");
|
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
|
@Test
|
||||||
@TestMetadata("cannotCompleteResolveAmbiguity.kt")
|
@TestMetadata("cannotCompleteResolveAmbiguity.kt")
|
||||||
public void testCannotCompleteResolveAmbiguity() throws Exception {
|
public void testCannotCompleteResolveAmbiguity() throws Exception {
|
||||||
|
|||||||
+6
@@ -15276,6 +15276,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated
|
|||||||
runTest("compiler/testData/diagnostics/tests/inference/annotatedUnderscoredTypeArgument.kt");
|
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
|
@Test
|
||||||
@TestMetadata("cannotCompleteResolveAmbiguity.kt")
|
@TestMetadata("cannotCompleteResolveAmbiguity.kt")
|
||||||
public void testCannotCompleteResolveAmbiguity() throws Exception {
|
public void testCannotCompleteResolveAmbiguity() throws Exception {
|
||||||
|
|||||||
+6
@@ -15276,6 +15276,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir
|
|||||||
runTest("compiler/testData/diagnostics/tests/inference/annotatedUnderscoredTypeArgument.kt");
|
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
|
@Test
|
||||||
@TestMetadata("cannotCompleteResolveAmbiguity.kt")
|
@TestMetadata("cannotCompleteResolveAmbiguity.kt")
|
||||||
public void testCannotCompleteResolveAmbiguity() throws Exception {
|
public void testCannotCompleteResolveAmbiguity() throws Exception {
|
||||||
|
|||||||
+6
@@ -15282,6 +15282,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia
|
|||||||
runTest("compiler/testData/diagnostics/tests/inference/annotatedUnderscoredTypeArgument.kt");
|
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
|
@Test
|
||||||
@TestMetadata("cannotCompleteResolveAmbiguity.kt")
|
@TestMetadata("cannotCompleteResolveAmbiguity.kt")
|
||||||
public void testCannotCompleteResolveAmbiguity() throws Exception {
|
public void testCannotCompleteResolveAmbiguity() throws Exception {
|
||||||
|
|||||||
@@ -0,0 +1,85 @@
|
|||||||
|
// ISSUE: KT-60581
|
||||||
|
// WITH_STDLIB
|
||||||
|
|
||||||
|
// ---------------------- AssertJ declarations --------------------------
|
||||||
|
// FILE: AbstractAssert.java
|
||||||
|
public abstract class AbstractAssert<SELF extends AbstractAssert<SELF, ACTUAL>, ACTUAL> {}
|
||||||
|
|
||||||
|
// FILE: EnumerableAssert.java
|
||||||
|
public interface EnumerableAssert<SELF extends EnumerableAssert<SELF, ELEMENT>, ELEMENT> {}
|
||||||
|
|
||||||
|
// FILE: ObjectEnumerableAssert.java
|
||||||
|
public interface ObjectEnumerableAssert<SELF extends ObjectEnumerableAssert<SELF, ELEMENT>, ELEMENT>
|
||||||
|
extends EnumerableAssert<SELF, ELEMENT> {}
|
||||||
|
|
||||||
|
// FILE: IndexedObjectEnumerableAssert.java
|
||||||
|
public interface IndexedObjectEnumerableAssert<SELF extends IndexedObjectEnumerableAssert<SELF, ELEMENT>, ELEMENT>
|
||||||
|
extends ObjectEnumerableAssert<SELF, ELEMENT> {}
|
||||||
|
|
||||||
|
// FILE: AbstractIterableAssert.java
|
||||||
|
public abstract class AbstractIterableAssert<
|
||||||
|
SELF extends AbstractIterableAssert<SELF, ACTUAL, ELEMENT, ELEMENT_ASSERT>,
|
||||||
|
ACTUAL extends Iterable<? extends ELEMENT>,
|
||||||
|
ELEMENT,
|
||||||
|
ELEMENT_ASSERT extends AbstractAssert<ELEMENT_ASSERT, ELEMENT>>
|
||||||
|
extends AbstractAssert<SELF, ACTUAL> implements ObjectEnumerableAssert<SELF, ELEMENT> {}
|
||||||
|
|
||||||
|
// FILE: AbstractListAssert.java
|
||||||
|
public abstract class AbstractListAssert<
|
||||||
|
SELF extends AbstractListAssert<SELF, ACTUAL, ELEMENT, ELEMENT_ASSERT>,
|
||||||
|
ACTUAL extends List<? extends ELEMENT>,
|
||||||
|
ELEMENT,
|
||||||
|
ELEMENT_ASSERT extends AbstractAssert<ELEMENT_ASSERT, ELEMENT>>
|
||||||
|
extends AbstractIterableAssert<SELF, ACTUAL, ELEMENT, ELEMENT_ASSERT>
|
||||||
|
implements IndexedObjectEnumerableAssert<SELF, ELEMENT> {
|
||||||
|
SELF isNotEmpty() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: ListAssert.java
|
||||||
|
public class ListAssert<ELEMENT> extends AbstractListAssert<ListAssert<ELEMENT>, List<? extends ELEMENT>, ELEMENT, ObjectAssert<ELEMENT>> {}
|
||||||
|
|
||||||
|
// FILE: AbstractCharSequenceAssert.java
|
||||||
|
public abstract class AbstractCharSequenceAssert<SELF extends AbstractCharSequenceAssert<SELF, ACTUAL>, ACTUAL extends CharSequence>
|
||||||
|
extends AbstractAssert<SELF, ACTUAL> implements EnumerableAssert<SELF, Character> {}
|
||||||
|
|
||||||
|
// FILE: AbstractStringAssert.java
|
||||||
|
public class AbstractStringAssert<SELF extends AbstractStringAssert<SELF>> extends AbstractCharSequenceAssert<SELF, String> {
|
||||||
|
public SELF isEqualTo(String expected) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: StringAssert.java
|
||||||
|
public class StringAssert extends AbstractStringAssert<StringAssert> {}
|
||||||
|
|
||||||
|
// FILE: test/Assertions.java
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class Assertions {
|
||||||
|
public static <ELEMENT> ListAssert<ELEMENT> assertThat(java.util.List<? extends ELEMENT> actual) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static AbstractStringAssert<?> assertThat(String actual) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: foo.kt
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
val sessionIds = listOf("")
|
||||||
|
val directSessionIds = listOf("")
|
||||||
|
<!NEW_INFERENCE_ERROR!>if (true) {
|
||||||
|
if (true) {
|
||||||
|
Assertions.assertThat(sessionIds[0])
|
||||||
|
} else {
|
||||||
|
Assertions.assertThat(directSessionIds)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Assertions.assertThat(sessionIds)
|
||||||
|
}<!>
|
||||||
|
}
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
// ISSUE: KT-60581
|
||||||
|
// WITH_STDLIB
|
||||||
|
|
||||||
|
// ---------------------- AssertJ declarations --------------------------
|
||||||
|
// FILE: AbstractAssert.java
|
||||||
|
public abstract class AbstractAssert<SELF extends AbstractAssert<SELF, ACTUAL>, ACTUAL> {}
|
||||||
|
|
||||||
|
// FILE: EnumerableAssert.java
|
||||||
|
public interface EnumerableAssert<SELF extends EnumerableAssert<SELF, ELEMENT>, ELEMENT> {}
|
||||||
|
|
||||||
|
// FILE: ObjectEnumerableAssert.java
|
||||||
|
public interface ObjectEnumerableAssert<SELF extends ObjectEnumerableAssert<SELF, ELEMENT>, ELEMENT>
|
||||||
|
extends EnumerableAssert<SELF, ELEMENT> {}
|
||||||
|
|
||||||
|
// FILE: IndexedObjectEnumerableAssert.java
|
||||||
|
public interface IndexedObjectEnumerableAssert<SELF extends IndexedObjectEnumerableAssert<SELF, ELEMENT>, ELEMENT>
|
||||||
|
extends ObjectEnumerableAssert<SELF, ELEMENT> {}
|
||||||
|
|
||||||
|
// FILE: AbstractIterableAssert.java
|
||||||
|
public abstract class AbstractIterableAssert<
|
||||||
|
SELF extends AbstractIterableAssert<SELF, ACTUAL, ELEMENT, ELEMENT_ASSERT>,
|
||||||
|
ACTUAL extends Iterable<? extends ELEMENT>,
|
||||||
|
ELEMENT,
|
||||||
|
ELEMENT_ASSERT extends AbstractAssert<ELEMENT_ASSERT, ELEMENT>>
|
||||||
|
extends AbstractAssert<SELF, ACTUAL> implements ObjectEnumerableAssert<SELF, ELEMENT> {}
|
||||||
|
|
||||||
|
// FILE: AbstractListAssert.java
|
||||||
|
public abstract class AbstractListAssert<
|
||||||
|
SELF extends AbstractListAssert<SELF, ACTUAL, ELEMENT, ELEMENT_ASSERT>,
|
||||||
|
ACTUAL extends List<? extends ELEMENT>,
|
||||||
|
ELEMENT,
|
||||||
|
ELEMENT_ASSERT extends AbstractAssert<ELEMENT_ASSERT, ELEMENT>>
|
||||||
|
extends AbstractIterableAssert<SELF, ACTUAL, ELEMENT, ELEMENT_ASSERT>
|
||||||
|
implements IndexedObjectEnumerableAssert<SELF, ELEMENT> {
|
||||||
|
SELF isNotEmpty() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: ListAssert.java
|
||||||
|
public class ListAssert<ELEMENT> extends AbstractListAssert<ListAssert<ELEMENT>, List<? extends ELEMENT>, ELEMENT, ObjectAssert<ELEMENT>> {}
|
||||||
|
|
||||||
|
// FILE: AbstractCharSequenceAssert.java
|
||||||
|
public abstract class AbstractCharSequenceAssert<SELF extends AbstractCharSequenceAssert<SELF, ACTUAL>, ACTUAL extends CharSequence>
|
||||||
|
extends AbstractAssert<SELF, ACTUAL> implements EnumerableAssert<SELF, Character> {}
|
||||||
|
|
||||||
|
// FILE: AbstractStringAssert.java
|
||||||
|
public class AbstractStringAssert<SELF extends AbstractStringAssert<SELF>> extends AbstractCharSequenceAssert<SELF, String> {
|
||||||
|
public SELF isEqualTo(String expected) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: StringAssert.java
|
||||||
|
public class StringAssert extends AbstractStringAssert<StringAssert> {}
|
||||||
|
|
||||||
|
// FILE: test/Assertions.java
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class Assertions {
|
||||||
|
public static <ELEMENT> ListAssert<ELEMENT> assertThat(java.util.List<? extends ELEMENT> 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)
|
||||||
|
}
|
||||||
|
}
|
||||||
Generated
+6
@@ -15282,6 +15282,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
|
|||||||
runTest("compiler/testData/diagnostics/tests/inference/annotatedUnderscoredTypeArgument.kt");
|
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
|
@Test
|
||||||
@TestMetadata("cannotCompleteResolveAmbiguity.kt")
|
@TestMetadata("cannotCompleteResolveAmbiguity.kt")
|
||||||
public void testCannotCompleteResolveAmbiguity() throws Exception {
|
public void testCannotCompleteResolveAmbiguity() throws Exception {
|
||||||
|
|||||||
Reference in New Issue
Block a user