[NI] Add check for non-null argument type in arguments check

#KT-31461 Fixed
This commit is contained in:
Dmitriy Novozhilov
2019-05-20 11:47:36 +03:00
parent b323298b0e
commit b4c8c79931
11 changed files with 53 additions and 10 deletions
@@ -7,7 +7,7 @@ interface A<T>
fun <T> infer(<!UNUSED_PARAMETER!>a<!>: A<T>) : T {<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
fun test(nothing: Nothing?) {
val <!UNUSED_VARIABLE!>i<!> = <!OI;TYPE_INFERENCE_INCORPORATION_ERROR!>infer<!>(<!DEBUG_INFO_CONSTANT, TYPE_MISMATCH!>nothing<!>)
val <!UNUSED_VARIABLE!>i<!> = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_INCORPORATION_ERROR!>infer<!>(<!DEBUG_INFO_CONSTANT, TYPE_MISMATCH!>nothing<!>)
}
fun sum(<!UNUSED_PARAMETER!>a<!> : IntArray) : Int {
@@ -15,6 +15,6 @@ fun <S> test1(a: ParameterizedChild<S>?, b: Child): Base<S> = myRun {
elvis(a, b)
}
fun <S> test2(a: S?, b: S): S = <!TYPE_MISMATCH!>myRun {
<!TYPE_MISMATCH!>select(a, b)<!>
}<!>
fun <S> test2(a: S?, b: S): S = myRun {
<!TYPE_MISMATCH, TYPE_MISMATCH!>select(a, b)<!>
}
@@ -13,6 +13,6 @@ public class J {
fun test(j: J, nullStr: String?, nullByte: Byte?, nullDouble: Double?) {
j.foo(nullStr)
j.<!NI;NONE_APPLICABLE!>foo<!>(<!OI;TYPE_MISMATCH!>nullDouble<!>)
j.foo(<!TYPE_MISMATCH!>nullDouble<!>)
j.foo(nullByte)
}
@@ -6,7 +6,7 @@ fun foo(x: Int) {}
fun foo(x: Int, y: String) {}
fun bar(nullX: Int?, nullY: String?, notNullY: String) {
<!NI;NONE_APPLICABLE!>foo<!>(<!OI;TYPE_MISMATCH!>nullX<!>)
foo(<!TYPE_MISMATCH!>nullX<!>)
foo(<!TYPE_MISMATCH!>nullX<!>, notNullY)
foo(<!TYPE_MISMATCH!>nullX<!>, <!TYPE_MISMATCH!>nullY<!>)
<!NONE_APPLICABLE!>foo<!>()
@@ -34,7 +34,7 @@ fun test() {
platformJ++
1 + platformNN
1 <!NI;NONE_APPLICABLE!>+<!> <!OI;TYPE_MISMATCH!>platformN<!>
1 + <!TYPE_MISMATCH!>platformN<!>
1 + platformJ
platformNN + 1
@@ -42,7 +42,7 @@ fun test() {
platformJ + 1
1 <!INFIX_MODIFIER_REQUIRED!>plus<!> platformNN
1 <!NI;NONE_APPLICABLE, OI;INFIX_MODIFIER_REQUIRED!>plus<!> <!OI;TYPE_MISMATCH!>platformN<!>
1 <!INFIX_MODIFIER_REQUIRED!>plus<!> <!TYPE_MISMATCH!>platformN<!>
1 <!INFIX_MODIFIER_REQUIRED!>plus<!> platformJ
platformNN <!INFIX_MODIFIER_REQUIRED!>plus<!> 1
@@ -15,7 +15,7 @@ fun bar(arg: Long?): Long {
return i<!UNSAFE_CALL!>--<!> <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>+<!> i
}
if (i++ == 7L) {
return i++ <!NI;NONE_APPLICABLE, OI;UNSAFE_OPERATOR_CALL!>+<!> <!OI;TYPE_MISMATCH!>i<!>
return i++ <!UNSAFE_OPERATOR_CALL!>+<!> <!TYPE_MISMATCH!>i<!>
}
return 0L
}