diff --git a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/NewCommonSuperTypeCalculator.kt b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/NewCommonSuperTypeCalculator.kt index 17b63553b94..033d86ddd77 100644 --- a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/NewCommonSuperTypeCalculator.kt +++ b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/NewCommonSuperTypeCalculator.kt @@ -421,10 +421,10 @@ object NewCommonSuperTypeCalculator { } private fun TypeSystemCommonSuperTypesContext.isCapturedStarProjection(type: SimpleTypeMarker): Boolean = - type.asCapturedType()?.typeConstructor()?.projection()?.isStarProjection() == true + type.originalIfDefinitelyNotNullable().asCapturedType()?.typeConstructor()?.projection()?.isStarProjection() == true private fun TypeSystemCommonSuperTypesContext.supertypesIfCapturedStarProjection(type: SimpleTypeMarker): Collection? { - val constructor = type.asCapturedType()?.typeConstructor() ?: return null + val constructor = type.originalIfDefinitelyNotNullable().asCapturedType()?.typeConstructor() ?: return null return if (constructor.projection().isStarProjection()) constructor.supertypes() else null diff --git a/compiler/testData/diagnostics/tests/inference/assertThatInNumerousIf.fir.kt b/compiler/testData/diagnostics/tests/inference/assertThatInNumerousIf.fir.kt deleted file mode 100644 index 515b892f341..00000000000 --- a/compiler/testData/diagnostics/tests/inference/assertThatInNumerousIf.fir.kt +++ /dev/null @@ -1,85 +0,0 @@ -// 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 index aec55a1794b..d9c2236c549 100644 --- a/compiler/testData/diagnostics/tests/inference/assertThatInNumerousIf.kt +++ b/compiler/testData/diagnostics/tests/inference/assertThatInNumerousIf.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // ISSUE: KT-60581 // WITH_STDLIB diff --git a/compiler/testData/diagnostics/testsWithStdLib/inference/recursiveFlexibleAssertions.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/inference/recursiveFlexibleAssertions.fir.kt index a1cb4747fc2..1d131f62761 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/inference/recursiveFlexibleAssertions.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/inference/recursiveFlexibleAssertions.fir.kt @@ -72,7 +72,5 @@ fun test() { true -> Assertions.assertThat(listOf("foo")).isNotEmpty else -> Assertions.assertThat("bar").isEqualTo("bar") } - // TODO: FIR - // {AbstractAssert<*, out Any!>! & EnumerableAssert<*, {Comparable<*> & java.io.Serializable!}>!} with unfolded flexible nullability - & EnumerableAssert<*, out kotlin.Comparable & java.io.Serializable..kotlin.Comparable? & java.io.Serializable?>..AbstractAssert & EnumerableAssert<*, out kotlin.Comparable<*> & java.io.Serializable..kotlin.Comparable<*>? & java.io.Serializable?>..AbstractAssert & EnumerableAssert<*, *>..AbstractAssert<*, *>? & EnumerableAssert<*, *>?, out kotlin.Any..kotlin.Any?!>? & EnumerableAssert & EnumerableAssert<*, *>..AbstractAssert<*, *>? & EnumerableAssert<*, *>?, out kotlin.Comparable<*> & java.io.Serializable..kotlin.Comparable<*>? & java.io.Serializable?>?, out kotlin.Any..kotlin.Any?!>? & EnumerableAssert & EnumerableAssert<*, out kotlin.Comparable<*> & java.io.Serializable..kotlin.Comparable<*>? & java.io.Serializable?>..AbstractAssert & EnumerableAssert<*, *>..AbstractAssert<*, *>? & EnumerableAssert<*, *>?, out kotlin.Any..kotlin.Any?!>? & EnumerableAssert & EnumerableAssert<*, *>..AbstractAssert<*, *>? & EnumerableAssert<*, *>?, out kotlin.Comparable<*> & java.io.Serializable..kotlin.Comparable<*>? & java.io.Serializable?>?, out kotlin.Comparable & java.io.Serializable..kotlin.Comparable? & java.io.Serializable?>?, out kotlin.Any..kotlin.Any?!> & EnumerableAssert & EnumerableAssert<*, out kotlin.Comparable & java.io.Serializable..kotlin.Comparable? & java.io.Serializable?>..AbstractAssert & EnumerableAssert<*, out kotlin.Comparable<*> & java.io.Serializable..kotlin.Comparable<*>? & java.io.Serializable?>..AbstractAssert & EnumerableAssert<*, *>..AbstractAssert<*, *>? & EnumerableAssert<*, *>?, out kotlin.Any..kotlin.Any?!>? & EnumerableAssert & EnumerableAssert<*, *>..AbstractAssert<*, *>? & EnumerableAssert<*, *>?, out kotlin.Comparable<*> & java.io.Serializable..kotlin.Comparable<*>? & java.io.Serializable?>?, out kotlin.Any..kotlin.Any?!>? & EnumerableAssert & EnumerableAssert<*, out kotlin.Comparable<*> & java.io.Serializable..kotlin.Comparable<*>? & java.io.Serializable?>..AbstractAssert & EnumerableAssert<*, *>..AbstractAssert<*, *>? & EnumerableAssert<*, *>?, out kotlin.Any..kotlin.Any?!>? & EnumerableAssert & EnumerableAssert<*, *>..AbstractAssert<*, *>? & EnumerableAssert<*, *>?, out kotlin.Comparable<*> & java.io.Serializable..kotlin.Comparable<*>? & java.io.Serializable?>?, out kotlin.Comparable & java.io.Serializable..kotlin.Comparable? & java.io.Serializable?>?, out kotlin.Comparable & java.io.Serializable..kotlin.Comparable? & java.io.Serializable?>..AbstractAssert & EnumerableAssert<*, out kotlin.Comparable & java.io.Serializable..kotlin.Comparable? & java.io.Serializable?>..AbstractAssert & EnumerableAssert<*, out kotlin.Comparable<*> & java.io.Serializable..kotlin.Comparable<*>? & java.io.Serializable?>..AbstractAssert & EnumerableAssert<*, *>..AbstractAssert<*, *>? & EnumerableAssert<*, *>?, out kotlin.Any..kotlin.Any?!>? & EnumerableAssert & EnumerableAssert<*, *>..AbstractAssert<*, *>? & EnumerableAssert<*, *>?, out kotlin.Comparable<*> & java.io.Serializable..kotlin.Comparable<*>? & java.io.Serializable?>?, out kotlin.Any..kotlin.Any?!>? & EnumerableAssert & EnumerableAssert<*, out kotlin.Comparable<*> & java.io.Serializable..kotlin.Comparable<*>? & java.io.Serializable?>..AbstractAssert & EnumerableAssert<*, *>..AbstractAssert<*, *>? & EnumerableAssert<*, *>?, out kotlin.Any..kotlin.Any?!>? & EnumerableAssert & EnumerableAssert<*, *>..AbstractAssert<*, *>? & EnumerableAssert<*, *>?, out kotlin.Comparable<*> & java.io.Serializable..kotlin.Comparable<*>? & java.io.Serializable?>?, out kotlin.Comparable & java.io.Serializable..kotlin.Comparable? & java.io.Serializable?>?, out kotlin.Any..kotlin.Any?!>? & EnumerableAssert & EnumerableAssert<*, out kotlin.Comparable & java.io.Serializable..kotlin.Comparable? & java.io.Serializable?>..AbstractAssert & EnumerableAssert<*, out kotlin.Comparable<*> & java.io.Serializable..kotlin.Comparable<*>? & java.io.Serializable?>..AbstractAssert & EnumerableAssert<*, *>..AbstractAssert<*, *>? & EnumerableAssert<*, *>?, out kotlin.Any..kotlin.Any?!>? & EnumerableAssert & EnumerableAssert<*, *>..AbstractAssert<*, *>? & EnumerableAssert<*, *>?, out kotlin.Comparable<*> & java.io.Serializable..kotlin.Comparable<*>? & java.io.Serializable?>?, out kotlin.Any..kotlin.Any?!>? & EnumerableAssert & EnumerableAssert<*, out kotlin.Comparable<*> & java.io.Serializable..kotlin.Comparable<*>? & java.io.Serializable?>..AbstractAssert & EnumerableAssert<*, *>..AbstractAssert<*, *>? & EnumerableAssert<*, *>?, out kotlin.Any..kotlin.Any?!>? & EnumerableAssert & EnumerableAssert<*, *>..AbstractAssert<*, *>? & EnumerableAssert<*, *>?, out kotlin.Comparable<*> & java.io.Serializable..kotlin.Comparable<*>? & java.io.Serializable?>?, out kotlin.Comparable & java.io.Serializable..kotlin.Comparable? & java.io.Serializable?>?, out kotlin.Comparable & java.io.Serializable..kotlin.Comparable? & java.io.Serializable?>?")!>assertion + & EnumerableAssert<*, out kotlin.Comparable & java.io.Serializable..kotlin.Comparable? & java.io.Serializable?>..AbstractAssert<*, out kotlin.Any..kotlin.Any?!>? & EnumerableAssert<*, out kotlin.Comparable & java.io.Serializable..kotlin.Comparable? & java.io.Serializable?>?")!>assertion } diff --git a/compiler/testData/diagnostics/testsWithStdLib/inference/recursiveFlexibleAssertions.kt b/compiler/testData/diagnostics/testsWithStdLib/inference/recursiveFlexibleAssertions.kt index 428955d6579..6b4b60934ce 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/inference/recursiveFlexibleAssertions.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/inference/recursiveFlexibleAssertions.kt @@ -72,7 +72,5 @@ fun test() { true -> Assertions.assertThat(listOf("foo")).isNotEmpty else -> Assertions.assertThat("bar").isEqualTo("bar") } - // TODO: FIR - // {AbstractAssert<*, out Any!>! & EnumerableAssert<*, {Comparable<*> & java.io.Serializable!}>!} with unfolded flexible nullability & EnumerableAssert<*, out ({Comparable<*> & java.io.Serializable}..{Comparable<*>? & java.io.Serializable?})>}..{AbstractAssert<*, out (Any..Any?)>? & EnumerableAssert<*, out ({Comparable<*> & java.io.Serializable}..{Comparable<*>? & java.io.Serializable?})>?})")!>assertion }