Fix for EA-64905 - assert: TypeUtils.intersect
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
fun main(args: Array<String>) {
|
||||||
|
args is Array<<!SYNTAX!><!>>
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
package
|
||||||
|
|
||||||
|
internal fun main(/*0*/ args: kotlin.Array<kotlin.String>): kotlin.Unit
|
||||||
@@ -9372,6 +9372,12 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
|
|||||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/tests/recovery"), Pattern.compile("^(.+)\\.kt$"), true);
|
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/tests/recovery"), Pattern.compile("^(.+)\\.kt$"), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("emptyTypeArgs.kt")
|
||||||
|
public void testEmptyTypeArgs() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/recovery/emptyTypeArgs.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("namelessInJava.kt")
|
@TestMetadata("namelessInJava.kt")
|
||||||
public void testNamelessInJava() throws Exception {
|
public void testNamelessInJava() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/recovery/namelessInJava.kt");
|
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/recovery/namelessInJava.kt");
|
||||||
|
|||||||
@@ -28,6 +28,13 @@ public class JetTypeChecker {
|
|||||||
|
|
||||||
public static final JetTypeChecker DEFAULT = new JetTypeChecker(new TypeCheckingProcedure(new TypeCheckerProcedureCallbacksImpl()));
|
public static final JetTypeChecker DEFAULT = new JetTypeChecker(new TypeCheckingProcedure(new TypeCheckerProcedureCallbacksImpl()));
|
||||||
|
|
||||||
|
public static final JetTypeChecker ERROR_TYPES_ARE_EQUAL_TO_ANYTHING = new JetTypeChecker(new TypeCheckingProcedure(new TypeCheckerProcedureCallbacksImpl() {
|
||||||
|
@Override
|
||||||
|
public boolean assertEqualTypes(@NotNull JetType a, @NotNull JetType b, @NotNull TypeCheckingProcedure typeCheckingProcedure) {
|
||||||
|
return a.isError() || b.isError() || super.assertEqualTypes(a, b, typeCheckingProcedure);
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
public static final JetTypeChecker FLEXIBLE_UNEQUAL_TO_INFLEXIBLE = new JetTypeChecker(new TypeCheckingProcedure(new TypeCheckerProcedureCallbacksImpl()) {
|
public static final JetTypeChecker FLEXIBLE_UNEQUAL_TO_INFLEXIBLE = new JetTypeChecker(new TypeCheckingProcedure(new TypeCheckerProcedureCallbacksImpl()) {
|
||||||
@Override
|
@Override
|
||||||
protected boolean heterogeneousEquivalence(JetType inflexibleType, JetType flexibleType) {
|
protected boolean heterogeneousEquivalence(JetType inflexibleType, JetType flexibleType) {
|
||||||
|
|||||||
@@ -79,7 +79,9 @@ fun Collection<JetType>.singleBestRepresentative(): JetType? {
|
|||||||
candidate ->
|
candidate ->
|
||||||
this.all {
|
this.all {
|
||||||
other ->
|
other ->
|
||||||
candidate == other || JetTypeChecker.DEFAULT.equalTypes(candidate, other)
|
// We consider error types equal to anything here, so that intersections like
|
||||||
|
// {Array<String>, Array<[ERROR]>} work correctly
|
||||||
|
candidate == other || JetTypeChecker.ERROR_TYPES_ARE_EQUAL_TO_ANYTHING.equalTypes(candidate, other)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user