FIR: support DefinitelyNotNull types
#KT-49465 Fixed
This commit is contained in:
+2
-2
@@ -4,11 +4,11 @@ fun <T> foo(x: T, y: T & Any) = x!!
|
||||
|
||||
fun main() {
|
||||
foo<String>("", "").length
|
||||
foo<String>("", null).length
|
||||
foo<String>("", <!NULL_FOR_NONNULL_TYPE!>null<!>).length
|
||||
foo<String?>(null, "").length
|
||||
foo<String?>(null, null).length
|
||||
|
||||
foo("", "").length
|
||||
foo("", null).length
|
||||
foo(null, "").<!UNRESOLVED_REFERENCE!>length<!>
|
||||
foo(null, "").length
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -3,5 +3,5 @@
|
||||
fun main(x: Collection<String>) {
|
||||
if (x is List<!SYNTAX!><!> <!SYNTAX!><!SYNTAX!><!>& Any)<!> {}
|
||||
|
||||
val w: List & Any = null!!
|
||||
val w: <!UNSUPPORTED!><!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>List<!> & Any<!> = null!!
|
||||
}
|
||||
|
||||
Vendored
+2
-2
@@ -28,6 +28,6 @@ fun <F> main(x: F, y: F, z: F, w: F, m: F) {
|
||||
w1.foo()
|
||||
w2.foo()
|
||||
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>expectNN<!>(m)
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>expectNN<!>(m!!)
|
||||
expectNN(m)
|
||||
expectNN(m!!)
|
||||
}
|
||||
|
||||
+7
-7
@@ -1,18 +1,18 @@
|
||||
// !LANGUAGE: +DefinitelyNonNullableTypes
|
||||
|
||||
fun <T : Any> foo(x: T & Any, y: List<String & Any> & Any) {}
|
||||
fun <T : Any> foo(x: T & Any, y: <!UNSUPPORTED!>List<<!UNSUPPORTED!>String & Any<!>> & Any<!>) {}
|
||||
|
||||
fun <F> bar1(x: F? & Any) {}
|
||||
fun <F> bar2(x: F & Any?) {}
|
||||
fun <F> bar2(x: <!UNSUPPORTED!>F & Any?<!>) {}
|
||||
fun <F> bar3(x: (F?) & Any) {}
|
||||
fun <F> bar4(x: (F & Any)?) {}
|
||||
|
||||
fun <F> bar5(x: F & String) {}
|
||||
fun <F> bar5(x: <!UNSUPPORTED!>F & String<!>) {}
|
||||
|
||||
fun <F> bar6(x: F & (F & Any)) {}
|
||||
fun <F> bar7(x: (F & Any) & Any) {}
|
||||
fun <F> bar6(x: <!UNSUPPORTED!>F & (F & Any)<!>) {}
|
||||
fun <F> bar7(x: <!UNSUPPORTED!>(F & Any) & Any<!>) {}
|
||||
fun <F> bar8(x: (F & Any).() -> Unit) {}
|
||||
fun <F> (F & Any).bar9(x: () -> Unit) {}
|
||||
|
||||
fun <F> bar10(x: F & Any & String) {}
|
||||
fun <F> bar11(x: Double & Any & String) {}
|
||||
fun <F> bar10(x: <!UNSUPPORTED!>F & <!UNSUPPORTED!>Any & String<!><!>) {}
|
||||
fun <F> bar11(x: <!UNSUPPORTED!>Double & <!UNSUPPORTED!>Any & String<!><!>) {}
|
||||
|
||||
Vendored
-36
@@ -1,36 +0,0 @@
|
||||
// !LANGUAGE: +DefinitelyNonNullableTypes
|
||||
|
||||
interface A<T> {
|
||||
fun foo(x: T): T
|
||||
fun bar(x: T & Any): T & Any
|
||||
}
|
||||
|
||||
interface B<T1> : A<T1> {
|
||||
override fun foo(x: T1): T1
|
||||
<!NOTHING_TO_OVERRIDE!>override<!> fun bar(x: T1 & Any): T1 & Any
|
||||
}
|
||||
|
||||
interface C<T2> : A<T2> {
|
||||
<!NOTHING_TO_OVERRIDE!>override<!> fun foo(x: T2 & Any): T2 & Any
|
||||
<!NOTHING_TO_OVERRIDE!>override<!> fun bar(x: T2): T2
|
||||
}
|
||||
|
||||
interface D : A<String?> {
|
||||
override fun foo(x: String?): String?
|
||||
<!NOTHING_TO_OVERRIDE!>override<!> fun bar(x: String): String
|
||||
}
|
||||
|
||||
interface E : A<String> {
|
||||
override fun foo(x: String): String
|
||||
<!NOTHING_TO_OVERRIDE!>override<!> fun bar(x: String): String
|
||||
}
|
||||
|
||||
interface F : A<String?> {
|
||||
<!NOTHING_TO_OVERRIDE!>override<!> fun foo(x: String): String
|
||||
<!NOTHING_TO_OVERRIDE!>override<!> fun bar(x: String?): String?
|
||||
}
|
||||
|
||||
interface G<T3 : Any> : A<T3> {
|
||||
override fun foo(x: T3): T3
|
||||
<!NOTHING_TO_OVERRIDE!>override<!> fun bar(x: T3): T3
|
||||
}
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !LANGUAGE: +DefinitelyNonNullableTypes
|
||||
|
||||
interface A<T> {
|
||||
|
||||
-42
@@ -1,42 +0,0 @@
|
||||
// !LANGUAGE: +DefinitelyNonNullableTypes +ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated
|
||||
|
||||
// FILE: A.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
public interface A<T> {
|
||||
public T foo(T x) { return x; }
|
||||
@NotNull
|
||||
public T bar(@NotNull T x) {}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
interface B<T1> : A<T1> {
|
||||
override fun foo(x: T1): T1
|
||||
<!NOTHING_TO_OVERRIDE!>override<!> fun bar(x: T1 & Any): T1 & Any
|
||||
}
|
||||
|
||||
interface C<T2> : A<T2> {
|
||||
override fun foo(x: T2 & Any): T2 & Any
|
||||
<!NOTHING_TO_OVERRIDE!>override<!> fun bar(x: T2): T2
|
||||
}
|
||||
|
||||
interface D : A<String?> {
|
||||
override fun foo(x: String?): String?
|
||||
override fun bar(x: String): String
|
||||
}
|
||||
|
||||
interface E : A<String> {
|
||||
override fun foo(x: String): String
|
||||
override fun bar(x: String): String
|
||||
}
|
||||
|
||||
interface F : A<String?> {
|
||||
<!NOTHING_TO_OVERRIDE!>override<!> fun foo(x: String): String
|
||||
<!NOTHING_TO_OVERRIDE!>override<!> fun bar(x: String?): String?
|
||||
}
|
||||
|
||||
interface G<T3 : Any> : A<T3> {
|
||||
override fun foo(x: T3): T3
|
||||
override fun bar(x: T3): T3
|
||||
}
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !LANGUAGE: +DefinitelyNonNullableTypes +ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated
|
||||
|
||||
// FILE: A.java
|
||||
|
||||
Vendored
+7
-7
@@ -3,12 +3,12 @@
|
||||
fun <T> foo(x: T, y: T & Any): T & Any = x ?: y
|
||||
|
||||
fun main() {
|
||||
foo<String>("", "").<!UNRESOLVED_REFERENCE!>length<!>
|
||||
foo<String>("", null).<!UNRESOLVED_REFERENCE!>length<!>
|
||||
foo<String?>(null, "").<!UNRESOLVED_REFERENCE!>length<!>
|
||||
foo<String?>(null, null).<!UNRESOLVED_REFERENCE!>length<!>
|
||||
foo<String>("", "").length
|
||||
foo<String>("", <!NULL_FOR_NONNULL_TYPE!>null<!>).length
|
||||
foo<String?>(null, "").length
|
||||
foo<String?>(null, null).length
|
||||
|
||||
foo("", "").<!UNRESOLVED_REFERENCE!>length<!>
|
||||
foo("", null).<!UNRESOLVED_REFERENCE!>length<!>
|
||||
foo(null, "").<!UNRESOLVED_REFERENCE!>length<!>
|
||||
foo("", "").length
|
||||
foo("", null).length
|
||||
foo(null, "").length
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user