[TD] Update diagnostics test data due to new test runners
Update includes:
- Changing syntax of `OI/`NI` tags from `<!NI;TAG!>` to `<!TAG{NI}!>`
- Fix some incorrect directives
- Change order of diagnostics in some places
- Remove ignored diagnostics from FIR test data (previously `DIAGNOSTICS` didn't work)
- Update FIR dumps in some places and add `FIR_IDENTICAL` if needed
- Replace all JAVAC_SKIP with SKIP_JAVAC directive
This commit is contained in:
+1
-1
@@ -4,7 +4,7 @@ fun <T: Any> fooT22() : T? {
|
||||
}
|
||||
|
||||
fun foo1() {
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>fooT22<!>()
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>fooT22<!>()
|
||||
}
|
||||
|
||||
val n : Nothing = null.sure()
|
||||
|
||||
+1
-1
@@ -5,5 +5,5 @@ fun <T> g(<!UNUSED_PARAMETER!>i<!>: Int, <!UNUSED_PARAMETER!>a<!>: Any): List<T>
|
||||
fun <T> g(<!UNUSED_PARAMETER!>a<!>: Any, <!UNUSED_PARAMETER!>i<!>: Int): Collection<T> {throw Exception()}
|
||||
|
||||
fun <T> test() {
|
||||
val <!UNUSED_VARIABLE!>c<!>: List<T> = <!NI;OVERLOAD_RESOLUTION_AMBIGUITY, OI;CANNOT_COMPLETE_RESOLVE!>g<!>(1, 1)
|
||||
val <!UNUSED_VARIABLE!>c<!>: List<T> = <!CANNOT_COMPLETE_RESOLVE{OI}, OVERLOAD_RESOLUTION_AMBIGUITY{NI}!>g<!>(1, 1)
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -4,4 +4,4 @@ package f
|
||||
fun <R> h(<!UNUSED_PARAMETER!>i<!>: Int, <!UNUSED_PARAMETER!>a<!>: Any, <!UNUSED_PARAMETER!>r<!>: R, <!UNUSED_PARAMETER!>f<!>: (Boolean) -> Int) = 1
|
||||
fun <R> h(<!UNUSED_PARAMETER!>a<!>: Any, <!UNUSED_PARAMETER!>i<!>: Int, <!UNUSED_PARAMETER!>r<!>: R, <!UNUSED_PARAMETER!>f<!>: (Boolean) -> Int) = 1
|
||||
|
||||
fun test() = <!NI;OVERLOAD_RESOLUTION_AMBIGUITY, OI;CANNOT_COMPLETE_RESOLVE!>h<!>(1, 1, 1, { <!OI;CANNOT_INFER_PARAMETER_TYPE, UNUSED_ANONYMOUS_PARAMETER!>b<!> -> 42 })
|
||||
fun test() = <!CANNOT_COMPLETE_RESOLVE{OI}, OVERLOAD_RESOLUTION_AMBIGUITY{NI}!>h<!>(1, 1, 1, { <!CANNOT_INFER_PARAMETER_TYPE{OI}, UNUSED_ANONYMOUS_PARAMETER!>b<!> -> 42 })
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ fun <T> f(<!UNUSED_PARAMETER!>i<!>: Int, <!UNUSED_PARAMETER!>c<!>: Collection<T>
|
||||
fun <T> f(<!UNUSED_PARAMETER!>a<!>: Any, <!UNUSED_PARAMETER!>l<!>: List<T>): Collection<T> {throw Exception()}
|
||||
|
||||
fun <T> test(<!UNUSED_PARAMETER!>l<!>: List<T>) {
|
||||
<!NI;OVERLOAD_RESOLUTION_AMBIGUITY, OI;CANNOT_COMPLETE_RESOLVE!>f<!>(1, <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>emptyList<!>())
|
||||
<!CANNOT_COMPLETE_RESOLVE{OI}, OVERLOAD_RESOLUTION_AMBIGUITY{NI}!>f<!>(1, <!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>emptyList<!>())
|
||||
}
|
||||
|
||||
fun <T> emptyList(): List<T> {throw Exception()}
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ package f
|
||||
fun <R> h(<!UNUSED_PARAMETER!>f<!>: (Boolean) -> R) = 1
|
||||
fun <R> h(<!UNUSED_PARAMETER!>f<!>: (String) -> R) = 2
|
||||
|
||||
fun test() = <!NI;OVERLOAD_RESOLUTION_AMBIGUITY, OI;CANNOT_COMPLETE_RESOLVE!>h<!>{ <!OI;CANNOT_INFER_PARAMETER_TYPE, UNUSED_ANONYMOUS_PARAMETER!>i<!> -> getAnswer() }
|
||||
fun test() = <!CANNOT_COMPLETE_RESOLVE{OI}, OVERLOAD_RESOLUTION_AMBIGUITY{NI}!>h<!>{ <!CANNOT_INFER_PARAMETER_TYPE{OI}, UNUSED_ANONYMOUS_PARAMETER!>i<!> -> getAnswer() }
|
||||
|
||||
fun getAnswer() = 42
|
||||
|
||||
|
||||
Vendored
+2
-2
@@ -1192,7 +1192,7 @@ object Entities {
|
||||
// "↮" to 8622,
|
||||
// "⇎" to 8654,
|
||||
// "⫲" to 10994,
|
||||
// "∋" to 8715,
|
||||
// "&" to 8715{NI},
|
||||
// "⋼" to 8956,
|
||||
// "⋺" to 8954,
|
||||
// "∋" to 8715,
|
||||
@@ -1260,7 +1260,7 @@ object Entities {
|
||||
// "≴" to 8820,
|
||||
// "⪢̸" to 10914,
|
||||
// "⪡̸" to 10913,
|
||||
// "∌" to 8716,
|
||||
// "¬" to 8716{NI},
|
||||
// "∌" to 8716,
|
||||
// "⋾" to 8958,
|
||||
// "⋽" to 8957,
|
||||
|
||||
Vendored
+1
-1
@@ -14,4 +14,4 @@ fun <T: Any> foo(l: Array<T>): Array<Array<T?>> = null!!
|
||||
fun test2(a: Array<in Int>) {
|
||||
val r: Array<out Array<in Int?>> = <!INAPPLICABLE_CANDIDATE!>foo<!>(a)
|
||||
<!INAPPLICABLE_CANDIDATE!>foo<!>(a)
|
||||
}
|
||||
}
|
||||
|
||||
+5
-5
@@ -5,13 +5,13 @@
|
||||
fun <T: Any> bar(a: Array<T>): Array<T?> = null!!
|
||||
|
||||
fun test1(a: Array<in Int>) {
|
||||
val r: Array<in Int?> = <!OI;TYPE_INFERENCE_CANNOT_CAPTURE_TYPES!>bar<!>(<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>a<!>)
|
||||
<!OI;TYPE_INFERENCE_CANNOT_CAPTURE_TYPES!>bar<!>(<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>a<!>)
|
||||
val r: Array<in Int?> = <!TYPE_INFERENCE_CANNOT_CAPTURE_TYPES{OI}!>bar<!>(<!TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>a<!>)
|
||||
<!TYPE_INFERENCE_CANNOT_CAPTURE_TYPES{OI}!>bar<!>(<!TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>a<!>)
|
||||
}
|
||||
|
||||
fun <T: Any> foo(l: Array<T>): Array<Array<T?>> = null!!
|
||||
|
||||
fun test2(a: Array<in Int>) {
|
||||
val r: Array<out Array<in Int?>> = <!OI;TYPE_INFERENCE_CANNOT_CAPTURE_TYPES!>foo<!>(<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>a<!>)
|
||||
<!OI;TYPE_INFERENCE_CANNOT_CAPTURE_TYPES!>foo<!>(<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>a<!>)
|
||||
}
|
||||
val r: Array<out Array<in Int?>> = <!TYPE_INFERENCE_CANNOT_CAPTURE_TYPES{OI}!>foo<!>(<!TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>a<!>)
|
||||
<!TYPE_INFERENCE_CANNOT_CAPTURE_TYPES{OI}!>foo<!>(<!TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>a<!>)
|
||||
}
|
||||
|
||||
+7
-7
@@ -5,15 +5,15 @@
|
||||
fun <T: Any> bar(a: Array<T>): Array<T?> = null!!
|
||||
|
||||
fun test1(a: Array<out Int>) {
|
||||
val r: Array<out Int?> = <!NI;TYPE_MISMATCH!><!NI;UNSUPPORTED!>bar<!>(a)<!>
|
||||
val t = <!NI;UNSUPPORTED!>bar<!>(a)
|
||||
<!NI;UNSUPPORTED!>t<!> checkType { <!NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><Array<out Int?>>() }
|
||||
val r: Array<out Int?> = <!TYPE_MISMATCH{NI}!><!UNSUPPORTED{NI}!>bar<!>(a)<!>
|
||||
val t = <!UNSUPPORTED{NI}!>bar<!>(a)
|
||||
<!UNSUPPORTED{NI}!>t<!> checkType { <!UNRESOLVED_REFERENCE_WRONG_RECEIVER{NI}!>_<!><Array<out Int?>>() }
|
||||
}
|
||||
|
||||
fun <T: Any> foo(l: Array<T>): Array<Array<T?>> = null!!
|
||||
|
||||
fun test2(a: Array<out Int>) {
|
||||
val r: Array<out Array<out Int?>> = <!NI;TYPE_MISMATCH!><!NI;UNSUPPORTED!>foo<!>(a)<!>
|
||||
val t = <!NI;UNSUPPORTED!>foo<!>(a)
|
||||
<!NI;UNSUPPORTED!>t<!> checkType { <!NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><Array<out Array<out Int?>>>() }
|
||||
}
|
||||
val r: Array<out Array<out Int?>> = <!TYPE_MISMATCH{NI}!><!UNSUPPORTED{NI}!>foo<!>(a)<!>
|
||||
val t = <!UNSUPPORTED{NI}!>foo<!>(a)
|
||||
<!UNSUPPORTED{NI}!>t<!> checkType { <!UNRESOLVED_REFERENCE_WRONG_RECEIVER{NI}!>_<!><Array<out Array<out Int?>>>() }
|
||||
}
|
||||
|
||||
Vendored
+5
-5
@@ -4,11 +4,11 @@
|
||||
fun <T : Any> Array<T?>.filterNotNull(): List<T> = throw Exception()
|
||||
|
||||
fun test1(a: Array<out Int?>) {
|
||||
val list = a.<!NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>filterNotNull<!>()
|
||||
<!NI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>list<!> <!NI;DEBUG_INFO_MISSING_UNRESOLVED!>checkType<!> { <!NI;UNRESOLVED_REFERENCE!>_<!><List<Int>>() }
|
||||
val list = a.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER{NI}!>filterNotNull<!>()
|
||||
<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE{NI}!>list<!> <!DEBUG_INFO_MISSING_UNRESOLVED{NI}!>checkType<!> { <!UNRESOLVED_REFERENCE{NI}!>_<!><List<Int>>() }
|
||||
}
|
||||
|
||||
fun test2(vararg a: Int?) {
|
||||
val list = a.<!NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>filterNotNull<!>()
|
||||
<!NI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>list<!> <!NI;DEBUG_INFO_MISSING_UNRESOLVED!>checkType<!> { <!NI;UNRESOLVED_REFERENCE!>_<!><List<Int>>() }
|
||||
}
|
||||
val list = a.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER{NI}!>filterNotNull<!>()
|
||||
<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE{NI}!>list<!> <!DEBUG_INFO_MISSING_UNRESOLVED{NI}!>checkType<!> { <!UNRESOLVED_REFERENCE{NI}!>_<!><List<Int>>() }
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -8,4 +8,4 @@ fun <Y: X, X : Inv<out String>> foo(x: X, y: Y) {
|
||||
rY.length
|
||||
}
|
||||
|
||||
fun <Y> bar(<!UNUSED_PARAMETER!>l<!>: Inv<Y>): Y = TODO()
|
||||
fun <Y> bar(<!UNUSED_PARAMETER!>l<!>: Inv<Y>): Y = TODO()
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@
|
||||
fun <T> foo(array: Array<Array<T>>): Array<Array<T>> = array
|
||||
|
||||
fun test(array: Array<Array<out Int>>) {
|
||||
<!OI;TYPE_INFERENCE_PARAMETER_CONSTRAINT_ERROR!>foo<!>(<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>array<!>)
|
||||
<!TYPE_INFERENCE_PARAMETER_CONSTRAINT_ERROR{OI}!>foo<!>(<!TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>array<!>)
|
||||
|
||||
val f: Array<out Array<out Int>> = <!OI;TYPE_INFERENCE_PARAMETER_CONSTRAINT_ERROR!>foo<!>(<!NI;TYPE_MISMATCH, TYPE_MISMATCH!>array<!>)
|
||||
val f: Array<out Array<out Int>> = <!TYPE_INFERENCE_PARAMETER_CONSTRAINT_ERROR{OI}!>foo<!>(<!TYPE_MISMATCH{NI}, TYPE_MISMATCH!>array<!>)
|
||||
}
|
||||
|
||||
+1
-1
@@ -14,5 +14,5 @@ fun <T> id(x: T) = null as T
|
||||
|
||||
fun test() {
|
||||
Test.getFoo()
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Foo<out kotlin.Number..kotlin.Number?!>")!>id(Test.getFoo())<!>
|
||||
id(Test.getFoo())
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -5,6 +5,6 @@ fun <T> foo(a1: Array<T>, a2: Array<out T>): T = null!!
|
||||
|
||||
fun test(a1: Array<in Int>, a2: Array<Int>) {
|
||||
|
||||
val c: Int = <!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>foo(a1, a2)<!>
|
||||
val c: Int = <!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>foo(a1, a2)<!>
|
||||
|
||||
}
|
||||
|
||||
@@ -3,5 +3,5 @@ fun <T> Array<T>.foo() {}
|
||||
|
||||
fun test(array: Array<out Int>) {
|
||||
array.foo()
|
||||
<!OI;TYPE_MISMATCH!>array<!>.<!NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>foo<!><<!PROJECTION_ON_NON_CLASS_TYPE_ARGUMENT!>out<!> Int>()
|
||||
}
|
||||
<!TYPE_MISMATCH{OI}!>array<!>.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER{NI}!>foo<!><<!PROJECTION_ON_NON_CLASS_TYPE_ARGUMENT!>out<!> Int>()
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -11,7 +11,7 @@ fun bar(b: B<in A<out Number>>, bOut: B<out A<out Number>>, bOut2: B<out A<Numbe
|
||||
foo(b)
|
||||
foo<Number>(b)
|
||||
|
||||
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>baz<!>(<!NI;TYPE_MISMATCH!>bOut<!>)
|
||||
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>baz<!>(<!TYPE_MISMATCH{NI}!>bOut<!>)
|
||||
baz<Number>(<!TYPE_MISMATCH!>bOut<!>)
|
||||
|
||||
baz(bOut2)
|
||||
|
||||
Vendored
+1
-1
@@ -50,4 +50,4 @@ fun test(i: Inv<Nothing>, iUnit: Inv<Unit>) {
|
||||
run(A.flexible(iUnit)) { <!UNUSED_EXPRESSION!>42<!> }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
compiler/testData/diagnostics/tests/inference/coercionToUnit/coercionWithExpectedTypeAndBound.fir.kt
Vendored
+1
-1
@@ -10,4 +10,4 @@ fun b(): Unit = run {
|
||||
run {
|
||||
materializeNumber()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+3
-3
@@ -3,11 +3,11 @@
|
||||
fun <T : Number> materializeNumber(): T = TODO()
|
||||
|
||||
fun a(): Unit = run {
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>materializeNumber<!>()
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>materializeNumber<!>()
|
||||
}
|
||||
|
||||
fun b(): Unit = run {
|
||||
run {
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>materializeNumber<!>()
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>materializeNumber<!>()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -16,4 +16,4 @@ fun implicitCoercion() {
|
||||
// Error: block doesn't have an expected type, so call can't be inferred!
|
||||
return@l materialize()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+2
-2
@@ -14,6 +14,6 @@ fun implicitCoercion() {
|
||||
|
||||
val <!UNUSED_VARIABLE!>c<!> = l@{
|
||||
// Error: block doesn't have an expected type, so call can't be inferred!
|
||||
return@l <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>materialize<!>()
|
||||
return@l <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>materialize<!>()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -54,7 +54,7 @@ fun testParameter() {
|
||||
takeFnToParameter { Unit }
|
||||
takeFnToParameter { <!UNRESOLVED_REFERENCE!>unresolved<!>() }
|
||||
takeFnToParameter { if (true) <!UNRESOLVED_REFERENCE!>unresolved<!>() }
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>takeFnToParameter<!> {
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>takeFnToParameter<!> {
|
||||
if (true) <!UNRESOLVED_REFERENCE!>unresolved<!>() else <!UNRESOLVED_REFERENCE!>unresolved<!>()
|
||||
}
|
||||
takeFnToParameter(fun() = Unit)
|
||||
|
||||
compiler/testData/diagnostics/tests/inference/coercionToUnit/indirectCoercionWithExpectedType.fir.kt
Vendored
+1
-1
@@ -33,4 +33,4 @@ fun e(): Unit = run outer@{
|
||||
run inner@{
|
||||
return@outer materialize()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+4
-4
@@ -5,7 +5,7 @@ fun <T> materialize(): T = TODO()
|
||||
fun a(): Unit = run {
|
||||
run {
|
||||
// Ok, block is coerced, because it has (indirectly) Unit-expected type
|
||||
<!NI;UNUSED_EXPRESSION!>"hello"<!>
|
||||
<!UNUSED_EXPRESSION{NI}!>"hello"<!>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,13 +19,13 @@ fun c(): Unit = run {
|
||||
// Attention!
|
||||
// In OI expected type 'Unit' isn't applied here because of implementation quirks (note that OI still applies Unit in case 'e')
|
||||
// In NI, it is applied and call is correctly inferred, which is consistent with the previous case
|
||||
<!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>materialize<!>()
|
||||
<!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>materialize<!>()
|
||||
}
|
||||
}
|
||||
|
||||
fun d(): Unit = run outer@{
|
||||
run inner@{
|
||||
return@inner <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>materialize<!>()
|
||||
return@inner <!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>materialize<!>()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,4 +33,4 @@ fun e(): Unit = run outer@{
|
||||
run inner@{
|
||||
return@outer materialize()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -61,4 +61,4 @@ fun test_6(b: Boolean) {
|
||||
}
|
||||
if (b) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ fun bar(block: () -> String) {}
|
||||
|
||||
fun test_5(b: Boolean) {
|
||||
bar {
|
||||
<!NI;TYPE_MISMATCH, TYPE_MISMATCH!>if (b) {
|
||||
<!TYPE_MISMATCH{NI}, TYPE_MISMATCH!>if (b) {
|
||||
println("meh")
|
||||
}<!>
|
||||
}
|
||||
@@ -61,4 +61,4 @@ fun test_6(b: Boolean) {
|
||||
}
|
||||
if (b) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,4 +5,4 @@ fun <T : Any> nullable(): T? = null
|
||||
|
||||
fun test() {
|
||||
val value = nullable<Int>() ?: nullable()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,5 +4,5 @@
|
||||
fun <T : Any> nullable(): T? = null
|
||||
|
||||
fun test() {
|
||||
val value = nullable<Int>() ?: <!OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>nullable()<!>
|
||||
}
|
||||
val value = nullable<Int>() ?: <!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}!>nullable()<!>
|
||||
}
|
||||
|
||||
+1
-1
@@ -14,6 +14,6 @@ fun <T: Any> joinT(<!UNUSED_PARAMETER!>x<!>: Comparable<*>, <!UNUSED_PARAMETER!>
|
||||
}
|
||||
|
||||
fun test() {
|
||||
val x2 = <!OI;TYPE_INFERENCE_PARAMETER_CONSTRAINT_ERROR!>joinT<!>(<!TYPE_MISMATCH!>Unit<!>, "2")
|
||||
val x2 = <!TYPE_INFERENCE_PARAMETER_CONSTRAINT_ERROR{OI}!>joinT<!>(<!TYPE_MISMATCH!>Unit<!>, "2")
|
||||
checkSubtype<String?>(x2)
|
||||
}
|
||||
|
||||
@@ -8,9 +8,9 @@ fun <R> elemAndList(r: R, <!UNUSED_PARAMETER!>t<!>: MutableList<R>): R = r
|
||||
fun <R> R.elemAndListWithReceiver(r: R, <!UNUSED_PARAMETER!>t<!>: MutableList<R>): R = r
|
||||
|
||||
fun test() {
|
||||
val <!UNUSED_VARIABLE!>s<!> = <!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>elemAndList<!>(11, list("72"))
|
||||
val <!UNUSED_VARIABLE!>s<!> = <!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>elemAndList<!>(11, list("72"))
|
||||
|
||||
val <!UNUSED_VARIABLE!>u<!> = 11.<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>elemAndListWithReceiver<!>(4, list("7"))
|
||||
val <!UNUSED_VARIABLE!>u<!> = 11.<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>elemAndListWithReceiver<!>(4, list("7"))
|
||||
}
|
||||
|
||||
fun <T> list(value: T) : ArrayList<T> {
|
||||
|
||||
+1
-1
@@ -13,4 +13,4 @@ fun f(o: Out<Out<*>>, i: In<In<*>>, inv: Inv<Inv<*>>) {
|
||||
choose1(o)
|
||||
choose2(i)
|
||||
<!INAPPLICABLE_CANDIDATE!>choose3<!>(inv)
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -11,6 +11,6 @@ fun <R> choose3(c: Inv<Inv<R>>) {}
|
||||
|
||||
fun f(o: Out<Out<*>>, i: In<In<*>>, inv: Inv<Inv<*>>) {
|
||||
choose1(o)
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>choose2<!>(i)
|
||||
<!OI;TYPE_INFERENCE_PARAMETER_CONSTRAINT_ERROR!>choose3<!>(<!NI;TYPE_MISMATCH!>inv<!>)
|
||||
}
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>choose2<!>(i)
|
||||
<!TYPE_INFERENCE_PARAMETER_CONSTRAINT_ERROR{OI}!>choose3<!>(<!TYPE_MISMATCH{NI}!>inv<!>)
|
||||
}
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ package c
|
||||
|
||||
import java.util.ArrayList
|
||||
|
||||
fun Array<Int>.toIntArray(): IntArray = this.<!NI;TYPE_MISMATCH!><!OI;TYPE_INFERENCE_UPPER_BOUND_VIOLATED!>mapTo<!>(<!NI;TYPE_MISMATCH!>IntArray(size)<!>, {it})<!>
|
||||
fun Array<Int>.toIntArray(): IntArray = this.<!TYPE_MISMATCH{NI}!><!TYPE_INFERENCE_UPPER_BOUND_VIOLATED{OI}!>mapTo<!>(<!TYPE_MISMATCH{NI}!>IntArray(size)<!>, {it})<!>
|
||||
|
||||
fun Array<Int>.toArrayList(): ArrayList<Int> = this.mapTo(ArrayList<Int>(size), {it})
|
||||
|
||||
|
||||
Vendored
+2
-2
@@ -262,8 +262,8 @@ class Main<L>(x: L?, y: L) {
|
||||
val x471 = <!DEBUG_INFO_EXPRESSION_TYPE("OutBar<OutBar<OutBar<L!!>>>")!>foo47(y)<!>
|
||||
|
||||
fun <R> takeLambda(block: () -> R): R = materialize()
|
||||
val x480 = <!DEBUG_INFO_EXPRESSION_TYPE("Bar<L>")!><!DEBUG_INFO_LEAKING_THIS!>takeLambda<!> { foo48 { <!TYPE_MISMATCH("Any", "L"), TYPE_MISMATCH("Any", "L")!>x<!> } }<!>
|
||||
val x481 = <!DEBUG_INFO_EXPRESSION_TYPE("Bar<L>")!><!DEBUG_INFO_LEAKING_THIS!>takeLambda<!> { foo48 { <!TYPE_MISMATCH("Any", "L"), TYPE_MISMATCH("Any", "L")!>y<!> } }<!>
|
||||
val x480 = <!DEBUG_INFO_EXPRESSION_TYPE("Bar<L>")!><!DEBUG_INFO_LEAKING_THIS!>takeLambda<!> { foo48 { <!TYPE_MISMATCH("Any; L"), TYPE_MISMATCH("Any; L")!>x<!> } }<!>
|
||||
val x481 = <!DEBUG_INFO_EXPRESSION_TYPE("Bar<L>")!><!DEBUG_INFO_LEAKING_THIS!>takeLambda<!> { foo48 { <!TYPE_MISMATCH("Any; L"), TYPE_MISMATCH("Any; L")!>y<!> } }<!>
|
||||
val x482 = <!DEBUG_INFO_EXPRESSION_TYPE("Bar<kotlin.Nothing>")!><!DEBUG_INFO_LEAKING_THIS!>takeLambda<!> { foo48 { null } }<!>
|
||||
}
|
||||
|
||||
|
||||
@@ -18,4 +18,4 @@ class D<X, Z, Y : X>(foo: C<X, Z, Y>) {
|
||||
fun test(a: C<Y, Y, Y>) {
|
||||
val d: D<X, Y, Y> = D(a)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,6 @@ class C<X, Z, Y : X>
|
||||
|
||||
class D<X, Z, Y : X>(<!UNUSED_PARAMETER!>foo<!>: C<X, Z, Y>) {
|
||||
fun test(a: C<Y, Y, Y>) {
|
||||
val d: D<X, Y, Y> = <!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>D(a)<!>
|
||||
val d: D<X, Y, Y> = <!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>D(a)<!>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,4 +10,4 @@ fun <X> bar(): Inv<X> = null!!
|
||||
|
||||
fun test() {
|
||||
foo(bar())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,5 +9,5 @@ fun <T: Inv2<T>> foo(klass: Inv<T>): String? = null
|
||||
fun <X> bar(): Inv<X> = null!!
|
||||
|
||||
fun test() {
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>foo<!>(<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>bar<!>())
|
||||
}
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>foo<!>(<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>bar<!>())
|
||||
}
|
||||
|
||||
+1
-1
@@ -29,4 +29,4 @@ fun test() {
|
||||
val a = MySettings.getSettings()
|
||||
a.getLinkedProjectsSettings()
|
||||
a.linkedProjectsSettings
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+2
-2
@@ -28,5 +28,5 @@ abstract class MySettingsListener<S extends MyComparableSettings> {}
|
||||
fun test() {
|
||||
val a = MySettings.getSettings()
|
||||
a.getLinkedProjectsSettings()
|
||||
a.<!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, OI;TYPE_INFERENCE_UPPER_BOUND_VIOLATED!>linkedProjectsSettings<!>
|
||||
}
|
||||
a.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE{OI}, TYPE_INFERENCE_UPPER_BOUND_VIOLATED{OI}!>linkedProjectsSettings<!>
|
||||
}
|
||||
|
||||
+1
-1
@@ -29,4 +29,4 @@ fun test() {
|
||||
val a = MySettings.getSettings()
|
||||
a.getLinkedProjectsSettings()
|
||||
a.linkedProjectsSettings
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -28,5 +28,5 @@ abstract class MySettingsListener<S extends MyComparableSettings> {}
|
||||
fun test() {
|
||||
val a = MySettings.getSettings()
|
||||
a.getLinkedProjectsSettings()
|
||||
a.<!OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, OI;TYPE_INFERENCE_UPPER_BOUND_VIOLATED!>linkedProjectsSettings<!>
|
||||
}
|
||||
a.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE{OI}, TYPE_INFERENCE_UPPER_BOUND_VIOLATED{OI}!>linkedProjectsSettings<!>
|
||||
}
|
||||
|
||||
Vendored
+2
-2
@@ -18,8 +18,8 @@ fun test(out: Out<Int>, i: In<Int>, inv: A<Int>) {
|
||||
r checkType { _<Int>() }
|
||||
|
||||
// T? <: Int => error
|
||||
<!OI;TYPE_INFERENCE_INCORPORATION_ERROR!>doIn<!>(<!TYPE_MISMATCH!>i<!>)
|
||||
<!TYPE_INFERENCE_INCORPORATION_ERROR{OI}!>doIn<!>(<!TYPE_MISMATCH!>i<!>)
|
||||
|
||||
// T? >: Int => error
|
||||
<!OI;TYPE_INFERENCE_INCORPORATION_ERROR!>doA<!>(<!TYPE_MISMATCH!>inv<!>)
|
||||
<!TYPE_INFERENCE_INCORPORATION_ERROR{OI}!>doA<!>(<!TYPE_MISMATCH!>inv<!>)
|
||||
}
|
||||
|
||||
@@ -66,4 +66,4 @@ fun test1(int: Int, any: Any) {
|
||||
use(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
|
||||
}
|
||||
|
||||
fun use(vararg a: Any) = a
|
||||
fun use(vararg a: Any) = a
|
||||
|
||||
@@ -14,7 +14,7 @@ fun <T> readFromMyList(<!UNUSED_PARAMETER!>l<!>: MyList<out T>, <!UNUSED_PARAMET
|
||||
fun test1(int: Int, any: Any) {
|
||||
val a0 : MyList<Any> = getMyList(int)
|
||||
|
||||
val a1 : MyList<Int> = <!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>getMyList(any)<!>
|
||||
val a1 : MyList<Int> = <!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>getMyList(any)<!>
|
||||
|
||||
val a2 : MyList<out Any> = getMyList(int)
|
||||
|
||||
@@ -25,27 +25,27 @@ fun test1(int: Int, any: Any) {
|
||||
val a5 : MyList<in Int> = getMyListToWriteTo(any)
|
||||
|
||||
|
||||
val a6 : MyList<in Any> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>getMyList<Int>(int)<!>
|
||||
val a6 : MyList<in Any> = <!TYPE_MISMATCH{NI}, TYPE_MISMATCH!>getMyList<Int>(int)<!>
|
||||
val a7 : MyList<in Any> = getMyList(int)
|
||||
|
||||
val a8 : MyList<in Any> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>getMyListToReadFrom<Int>(int)<!>
|
||||
val a9 : MyList<in Any> = <!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>getMyListToReadFrom(int)<!>
|
||||
val a8 : MyList<in Any> = <!TYPE_MISMATCH{NI}, TYPE_MISMATCH!>getMyListToReadFrom<Int>(int)<!>
|
||||
val a9 : MyList<in Any> = <!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>getMyListToReadFrom(int)<!>
|
||||
|
||||
val a10 : MyList<out Int> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>getMyList<Any>(any)<!>
|
||||
val a11 : MyList<out Int> = <!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>getMyList(any)<!>
|
||||
val a10 : MyList<out Int> = <!TYPE_MISMATCH{NI}, TYPE_MISMATCH!>getMyList<Any>(any)<!>
|
||||
val a11 : MyList<out Int> = <!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>getMyList(any)<!>
|
||||
|
||||
val a12 : MyList<out Int> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>getMyListToWriteTo<Any>(any)<!>
|
||||
val a13 : MyList<out Int> = <!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>getMyListToWriteTo(any)<!>
|
||||
val a12 : MyList<out Int> = <!TYPE_MISMATCH{NI}, TYPE_MISMATCH!>getMyListToWriteTo<Any>(any)<!>
|
||||
val a13 : MyList<out Int> = <!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>getMyListToWriteTo(any)<!>
|
||||
|
||||
useMyList(getMyList(int), int)
|
||||
useMyList(getMyList(any), int)
|
||||
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>useMyList<!>(getMyList(int), any)
|
||||
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>useMyList<!>(getMyList(int), any)
|
||||
|
||||
readFromMyList(getMyList(int), any)
|
||||
readFromMyList(getMyList(any), int)
|
||||
readFromMyList<Int>(<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>getMyList(any)<!>, int)
|
||||
readFromMyList<Int>(<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>getMyList(any)<!>, int)
|
||||
|
||||
readFromMyList<Int>(<!NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>getMyListToReadFrom(any)<!>, int)
|
||||
readFromMyList<Int>(<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}!>getMyListToReadFrom(any)<!>, int)
|
||||
readFromMyList(getMyListToReadFrom(any), int)
|
||||
|
||||
readFromMyList(getMyListToReadFrom(int), any)
|
||||
@@ -54,16 +54,16 @@ fun test1(int: Int, any: Any) {
|
||||
writeToMyList(getMyList(any), int)
|
||||
writeToMyList<Any>(getMyList(int), any)
|
||||
writeToMyList(getMyList<Any>(int), any)
|
||||
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>writeToMyList<!>(getMyList(int), any)
|
||||
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>writeToMyList<!>(getMyList(int), any)
|
||||
|
||||
writeToMyList(getMyListToWriteTo(any), int)
|
||||
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>writeToMyList<!>(getMyListToWriteTo(int), any)
|
||||
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>writeToMyList<!>(getMyListToWriteTo(int), any)
|
||||
|
||||
readFromMyList(getMyListToWriteTo(any), any)
|
||||
|
||||
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>writeToMyList<!>(getMyListToReadFrom(any), <!NI;TYPE_MISMATCH!>any<!>)
|
||||
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>writeToMyList<!>(getMyListToReadFrom(any), <!TYPE_MISMATCH{NI}!>any<!>)
|
||||
|
||||
use(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
|
||||
}
|
||||
|
||||
fun use(vararg a: Any) = a
|
||||
fun use(vararg a: Any) = a
|
||||
|
||||
+1
-1
@@ -10,4 +10,4 @@ fun <T> foo2(): T = TODO()
|
||||
val test = foo2().plus("") as String
|
||||
|
||||
fun <T> T.bar() = this
|
||||
val barTest = "".bar() as Number
|
||||
val barTest = "".bar() as Number
|
||||
|
||||
+2
-2
@@ -7,7 +7,7 @@ fun <T> foo() = foo() <!UNCHECKED_CAST!>as T<!>
|
||||
|
||||
fun <T> foo2(): T = TODO()
|
||||
|
||||
val test = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>foo2<!>().<!NI;DEBUG_INFO_MISSING_UNRESOLVED, OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>plus<!>("") as String
|
||||
val test = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>foo2<!>().<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE{OI}, DEBUG_INFO_MISSING_UNRESOLVED{NI}!>plus<!>("") as String
|
||||
|
||||
fun <T> T.bar() = this
|
||||
val barTest = "".bar() <!CAST_NEVER_SUCCEEDS!>as<!> Number
|
||||
val barTest = "".bar() <!CAST_NEVER_SUCCEEDS!>as<!> Number
|
||||
|
||||
+3
-3
@@ -9,10 +9,10 @@ class A {
|
||||
|
||||
fun <V> id(value: V) = value
|
||||
|
||||
val asA = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>foo<!>().<!NI;DEBUG_INFO_MISSING_UNRESOLVED, OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>fooA<!>() as A
|
||||
val asA = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>foo<!>().<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE{OI}, DEBUG_INFO_MISSING_UNRESOLVED{NI}!>fooA<!>() as A
|
||||
|
||||
val receiverParenthesized = (<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>foo<!>()).<!NI;DEBUG_INFO_MISSING_UNRESOLVED, OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>fooA<!>() as A
|
||||
val no2A = A().<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>fooA<!>().<!NI;DEBUG_INFO_MISSING_UNRESOLVED, OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>fooA<!>() as A
|
||||
val receiverParenthesized = (<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>foo<!>()).<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE{OI}, DEBUG_INFO_MISSING_UNRESOLVED{NI}!>fooA<!>() as A
|
||||
val no2A = A().<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>fooA<!>().<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE{OI}, DEBUG_INFO_MISSING_UNRESOLVED{NI}!>fooA<!>() as A
|
||||
|
||||
val correct1 = A().fooA() as A
|
||||
val correct2 = foo<A>().fooA() as A
|
||||
|
||||
@@ -7,7 +7,7 @@ fun <V> id(value: V) = value
|
||||
|
||||
val asString = foo() as String
|
||||
|
||||
val viaId = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>id<!>(<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>foo<!>()) as String
|
||||
val viaId = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>id<!>(<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>foo<!>()) as String
|
||||
|
||||
val insideId = id(foo() as String)
|
||||
|
||||
@@ -17,5 +17,5 @@ val asStarList = foo() as List<*>
|
||||
|
||||
val safeAs = foo() as? String
|
||||
|
||||
val fromIs = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>foo<!>() is String
|
||||
val fromNoIs = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>foo<!>() !is String
|
||||
val fromIs = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>foo<!>() is String
|
||||
val fromNoIs = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>foo<!>() !is String
|
||||
|
||||
+1
-1
@@ -15,4 +15,4 @@ fun <S, D: S> g() {
|
||||
val y = foo() as Int
|
||||
|
||||
val y2 = foo() as D
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ fun test(x: X<Number>) {
|
||||
fun <S, D: S> g() {
|
||||
fun <T : S> foo(): T = TODO()
|
||||
|
||||
val <!UNUSED_VARIABLE!>y<!> = <!OI;TYPE_INFERENCE_UPPER_BOUND_VIOLATED!>foo<!>() as Int
|
||||
val <!UNUSED_VARIABLE!>y<!> = <!TYPE_INFERENCE_UPPER_BOUND_VIOLATED{OI}!>foo<!>() as Int
|
||||
|
||||
val <!UNUSED_VARIABLE!>y2<!> = foo() as D
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -4,4 +4,4 @@ fun <X, Y, Z> foo(f: (Y) -> Z, g: (X) -> Y, x: X): Z = f(g(x))
|
||||
|
||||
// TODO: Actually, this is a bug and will work when new inference is enabled
|
||||
// see ([NI] Select variable with proper non-trivial constraint first) for more details
|
||||
fun test() = foo({ it + 1 }, { it.length }, "")
|
||||
fun test() = foo({ it + 1 }, { it.length }, "")
|
||||
|
||||
+1
-1
@@ -4,4 +4,4 @@ fun <X, Y, Z> foo(f: (Y) -> Z, g: (X) -> Y, x: X): Z = f(g(x))
|
||||
|
||||
// TODO: Actually, this is a bug and will work when new inference is enabled
|
||||
// see ([NI] Select variable with proper non-trivial constraint first) for more details
|
||||
fun test() = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>foo<!>({ it + 1 }, { it.length }, "")
|
||||
fun test() = <!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>foo<!>({ it + 1 }, { it.length }, "")
|
||||
|
||||
@@ -13,5 +13,5 @@ fun test() {
|
||||
val q = foo(fun Int.() {}, emptyList()) //type inference no information for parameter error
|
||||
checkSubtype<Int>(q)
|
||||
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>foo<!>({}, <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>emptyList<!>())
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>foo<!>({}, <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>emptyList<!>())
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -26,4 +26,4 @@ fun test(s: SelectorFor<State>): Double {
|
||||
e checkType { _<AbstractSelector<State, Nothing>>() }
|
||||
|
||||
return null!!
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+2
-2
@@ -25,5 +25,5 @@ fun test(s: SelectorFor<State>): Double {
|
||||
val e = s { return p1 }
|
||||
e checkType { _<AbstractSelector<State, Nothing>>() }
|
||||
|
||||
<!OI;UNREACHABLE_CODE!>return<!> null!!
|
||||
}
|
||||
<!UNREACHABLE_CODE{OI}!>return<!> null!!
|
||||
}
|
||||
|
||||
+1
-1
@@ -14,4 +14,4 @@ fun test(s: String): String {
|
||||
|
||||
<!UNREACHABLE_CODE!>val b =<!> TestClass { return s }
|
||||
<!UNREACHABLE_CODE!>b checkType { _<Nothing>() }<!>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,4 +82,4 @@ fun case_3(a: MutableList<MutableList<MutableList<MutableList<MutableList<Mutabl
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
fun case_1(a: MutableList<out MutableList<MutableList<MutableList<MutableList<MutableList<MutableList<Int?>?>?>?>?>?>?>?) {
|
||||
if (a != null) {
|
||||
val b = <!OI;DEBUG_INFO_SMARTCAST!>a<!>[0] // no SMARTCAST diagnostic
|
||||
val b = <!DEBUG_INFO_SMARTCAST{OI}!>a<!>[0] // no SMARTCAST diagnostic
|
||||
if (b != null) {
|
||||
val c = <!DEBUG_INFO_SMARTCAST!>b<!>[0]
|
||||
if (c != null) {
|
||||
@@ -31,19 +31,19 @@ fun case_1(a: MutableList<out MutableList<MutableList<MutableList<MutableList<Mu
|
||||
|
||||
fun case_2(a: MutableList<out MutableList<MutableList<MutableList<out MutableList<MutableList<MutableList<out Int?>?>?>?>?>?>?>?) {
|
||||
if (a != null) {
|
||||
val b = <!OI;DEBUG_INFO_SMARTCAST!>a<!>[0] // no SMARTCAST diagnostic
|
||||
val b = <!DEBUG_INFO_SMARTCAST{OI}!>a<!>[0] // no SMARTCAST diagnostic
|
||||
if (b != null) {
|
||||
val c = <!DEBUG_INFO_SMARTCAST!>b<!>[0]
|
||||
if (c != null) {
|
||||
val d = <!DEBUG_INFO_SMARTCAST!>c<!>[0]
|
||||
if (d != null) {
|
||||
val e = <!OI;DEBUG_INFO_SMARTCAST!>d<!>[0] // no SMARTCAST diagnostic
|
||||
val e = <!DEBUG_INFO_SMARTCAST{OI}!>d<!>[0] // no SMARTCAST diagnostic
|
||||
if (e != null) {
|
||||
val f = <!DEBUG_INFO_SMARTCAST!>e<!>[0]
|
||||
if (f != null) {
|
||||
val g = <!DEBUG_INFO_SMARTCAST!>f<!>[0]
|
||||
if (g != null) {
|
||||
val h = <!OI;DEBUG_INFO_SMARTCAST!>g<!>[0] // no SMARTCAST diagnostic
|
||||
val h = <!DEBUG_INFO_SMARTCAST{OI}!>g<!>[0] // no SMARTCAST diagnostic
|
||||
if (h != null) {
|
||||
<!DEBUG_INFO_SMARTCAST!>h<!>.inc()
|
||||
}
|
||||
@@ -82,4 +82,4 @@ fun case_3(a: MutableList<MutableList<MutableList<MutableList<MutableList<Mutabl
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,4 +7,4 @@ fun <K> select(): K = run { }
|
||||
fun test() {
|
||||
val x: Int = select()
|
||||
val t = select()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
||||
// Related issue: KT-28654
|
||||
|
||||
fun <K> select(): K = <!NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>run <!NI;TYPE_MISMATCH!>{ <!OI;TYPE_MISMATCH!><!>}<!><!>
|
||||
fun <K> select(): K = <!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}!>run <!TYPE_MISMATCH{NI}!>{ <!TYPE_MISMATCH{OI}!><!>}<!><!>
|
||||
|
||||
fun test() {
|
||||
val x: Int = select()
|
||||
val t = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>select<!>()
|
||||
}
|
||||
val t = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>select<!>()
|
||||
}
|
||||
|
||||
@@ -46,4 +46,4 @@ fun test4() {
|
||||
}
|
||||
}
|
||||
|
||||
fun fail(): Nothing = throw Exception()
|
||||
fun fail(): Nothing = throw Exception()
|
||||
|
||||
+9
-9
@@ -4,10 +4,10 @@
|
||||
fun <T, R : Any> foo(body: (R?) -> T): T = fail()
|
||||
|
||||
fun test1() {
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>foo<!> {
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>foo<!> {
|
||||
true
|
||||
}
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>foo<!> { <!CANNOT_INFER_PARAMETER_TYPE!>x<!> ->
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>foo<!> { <!CANNOT_INFER_PARAMETER_TYPE!>x<!> ->
|
||||
true
|
||||
}
|
||||
}
|
||||
@@ -16,10 +16,10 @@ fun test1() {
|
||||
fun <T, R> bar(body: (R) -> T): T = fail()
|
||||
|
||||
fun test2() {
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>bar<!> {
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>bar<!> {
|
||||
true
|
||||
}
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>bar<!> { <!CANNOT_INFER_PARAMETER_TYPE!>x<!> ->
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>bar<!> { <!CANNOT_INFER_PARAMETER_TYPE!>x<!> ->
|
||||
true
|
||||
}
|
||||
}
|
||||
@@ -27,10 +27,10 @@ fun test2() {
|
||||
fun <T, R> baz(body: (List<R>) -> T): T = fail()
|
||||
|
||||
fun test3() {
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>baz<!> {
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>baz<!> {
|
||||
true
|
||||
}
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>baz<!> { <!CANNOT_INFER_PARAMETER_TYPE!>x<!> ->
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>baz<!> { <!CANNOT_INFER_PARAMETER_TYPE!>x<!> ->
|
||||
true
|
||||
}
|
||||
}
|
||||
@@ -38,12 +38,12 @@ fun test3() {
|
||||
fun <T, R : Any> brr(body: (List<R?>) -> T): T = fail()
|
||||
|
||||
fun test4() {
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>brr<!> {
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>brr<!> {
|
||||
true
|
||||
}
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>brr<!> { <!CANNOT_INFER_PARAMETER_TYPE!>x<!> ->
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>brr<!> { <!CANNOT_INFER_PARAMETER_TYPE!>x<!> ->
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
fun fail(): Nothing = throw Exception()
|
||||
fun fail(): Nothing = throw Exception()
|
||||
|
||||
+1
-1
@@ -69,4 +69,4 @@ fun test5() {
|
||||
}
|
||||
|
||||
//use
|
||||
fun use(vararg a: Any?) = a
|
||||
fun use(vararg a: Any?) = a
|
||||
|
||||
+9
-9
@@ -14,7 +14,7 @@ fun <T> id(t: T): T = t
|
||||
infix fun <T> Z.foo(a: A<T>): A<T> = a
|
||||
|
||||
fun test(z: Z) {
|
||||
z <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>foo<!> <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>newA<!>()
|
||||
z <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>foo<!> <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>newA<!>()
|
||||
val a: A<Int> = id(z foo newA())
|
||||
val b: A<Int> = id(z.foo(newA()))
|
||||
use(a, b)
|
||||
@@ -24,7 +24,7 @@ fun test(z: Z) {
|
||||
operator fun <T> Z.plus(a: A<T>): A<T> = a
|
||||
|
||||
fun test1(z: Z) {
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>id<!>(z <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>+<!> <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>newA<!>())
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}!>id<!>(z <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>+<!> <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>newA<!>())
|
||||
val a: A<Z> = z + newA()
|
||||
val b: A<Z> = z.plus(newA())
|
||||
val c: A<Z> = id(z + newA())
|
||||
@@ -36,7 +36,7 @@ fun test1(z: Z) {
|
||||
operator fun <T> Z.compareTo(a: A<T>): Int { use(a); return 1 }
|
||||
|
||||
fun test2(z: Z) {
|
||||
val a: Boolean = id(z <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!><<!> <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>newA<!>())
|
||||
val a: Boolean = id(z <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!><<!> <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>newA<!>())
|
||||
val b: Boolean = id(z < newA<Z>())
|
||||
use(a, b)
|
||||
}
|
||||
@@ -45,18 +45,18 @@ fun test2(z: Z) {
|
||||
fun Z.<!EXTENSION_SHADOWED_BY_MEMBER!>equals<!>(any: Any): Int { use(any); return 1 }
|
||||
|
||||
fun test3(z: Z) {
|
||||
z <!NI;EQUALS_MISSING!>==<!> <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>newA<!>()
|
||||
z <!EQUALS_MISSING{NI}!>==<!> <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>newA<!>()
|
||||
z == newA<Z>()
|
||||
id(z <!NI;EQUALS_MISSING!>==<!> <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>newA<!>())
|
||||
id(z <!EQUALS_MISSING{NI}!>==<!> <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>newA<!>())
|
||||
id(z == newA<Z>())
|
||||
|
||||
id(z === <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>newA<!>())
|
||||
id(z === <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>newA<!>())
|
||||
id(z === newA<Z>())
|
||||
}
|
||||
|
||||
//'in' operation
|
||||
fun test4(collection: Collection<A<*>>) {
|
||||
id(<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>newA<!>() in collection)
|
||||
id(<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>newA<!>() in collection)
|
||||
id(newA<Int>() in collection)
|
||||
}
|
||||
|
||||
@@ -64,9 +64,9 @@ fun test4(collection: Collection<A<*>>) {
|
||||
fun <T> toBeOrNot(): Boolean = throw Exception()
|
||||
|
||||
fun test5() {
|
||||
if (<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>toBeOrNot<!>() && <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>toBeOrNot<!>()) {}
|
||||
if (<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>toBeOrNot<!>() && <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>toBeOrNot<!>()) {}
|
||||
if (toBeOrNot<Int>() && toBeOrNot<Int>()) {}
|
||||
}
|
||||
|
||||
//use
|
||||
fun use(vararg a: Any?) = a
|
||||
fun use(vararg a: Any?) = a
|
||||
|
||||
+1
-1
@@ -12,4 +12,4 @@ fun test() {
|
||||
|
||||
fun <S> newList() : ArrayList<S> {
|
||||
return ArrayList<S>()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,11 +5,11 @@ package noInformationForParameter
|
||||
import java.util.*
|
||||
|
||||
fun test() {
|
||||
val <!UNUSED_VARIABLE!>n<!> = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>newList<!>()
|
||||
val <!UNUSED_VARIABLE!>n<!> = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>newList<!>()
|
||||
|
||||
val <!UNUSED_VARIABLE!>n1<!> : List<String> = newList()
|
||||
}
|
||||
|
||||
fun <S> newList() : ArrayList<S> {
|
||||
return ArrayList<S>()
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+4
-4
@@ -15,19 +15,19 @@ fun testAny() {
|
||||
|
||||
fun testAnyCall() {
|
||||
callAny {
|
||||
<!CANNOT_INFER_PARAMETER_TYPE, NI;UNUSED_ANONYMOUS_PARAMETER!>error<!> -> <!OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!><!NI;DEBUG_INFO_MISSING_UNRESOLVED!>error<!>()<!>
|
||||
<!CANNOT_INFER_PARAMETER_TYPE, UNUSED_ANONYMOUS_PARAMETER{NI}!>error<!> -> <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE{OI}!><!DEBUG_INFO_MISSING_UNRESOLVED{NI}!>error<!>()<!>
|
||||
}
|
||||
}
|
||||
|
||||
fun testParam() {
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>callParam<!> {
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>callParam<!> {
|
||||
<!CANNOT_INFER_PARAMETER_TYPE!>param<!> -> <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>param<!>
|
||||
}
|
||||
}
|
||||
|
||||
fun testParamCall() {
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>callParam<!> {
|
||||
<!CANNOT_INFER_PARAMETER_TYPE, NI;UNUSED_ANONYMOUS_PARAMETER!>param<!> -> <!OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!><!NI;DEBUG_INFO_MISSING_UNRESOLVED!>param<!>()<!>
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>callParam<!> {
|
||||
<!CANNOT_INFER_PARAMETER_TYPE, UNUSED_ANONYMOUS_PARAMETER{NI}!>param<!> -> <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE{OI}!><!DEBUG_INFO_MISSING_UNRESOLVED{NI}!>param<!>()<!>
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -11,9 +11,9 @@ fun foo(action: (Int) -> Unit) {
|
||||
}
|
||||
|
||||
fun test1() {
|
||||
call({ <!NI;CANNOT_INFER_PARAMETER_TYPE!>x<!> -> println(<!NI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>x<!>::class) }) // x inside the lambda is inferred to `Nothing`, the lambda is `(Nothing) -> Unit`.
|
||||
call({ <!CANNOT_INFER_PARAMETER_TYPE{NI}!>x<!> -> println(<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE{NI}!>x<!>::class) }) // x inside the lambda is inferred to `Nothing`, the lambda is `(Nothing) -> Unit`.
|
||||
}
|
||||
|
||||
fun test2() {
|
||||
::foo.<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>call<!>({ <!NI;CANNOT_INFER_PARAMETER_TYPE!>x<!> -> println(<!NI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>x<!>::class) })
|
||||
::foo.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}!>call<!>({ <!CANNOT_INFER_PARAMETER_TYPE{NI}!>x<!> -> println(<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE{NI}!>x<!>::class) })
|
||||
}
|
||||
|
||||
+2
-2
@@ -5,8 +5,8 @@ fun <K> select2(x: K, y: K): K = TODO()
|
||||
fun <K> select3(x: K, y: K, z: K): K = TODO()
|
||||
|
||||
fun test2(f: ((String) -> Int)?) {
|
||||
val a0: ((Int) -> Int)? = select2(<!OI;TYPE_MISMATCH!>{ <!OI;CANNOT_INFER_PARAMETER_TYPE!>it<!> -> <!OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>it<!> }<!>, null)
|
||||
val b0: ((Nothing) -> Unit)? = select2(<!OI;TYPE_MISMATCH!>{ <!OI;CANNOT_INFER_PARAMETER_TYPE!>it<!> -> <!NI;UNUSED_EXPRESSION, OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>it<!> }<!>, null)
|
||||
val a0: ((Int) -> Int)? = select2(<!TYPE_MISMATCH{OI}!>{ <!CANNOT_INFER_PARAMETER_TYPE{OI}!>it<!> -> <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE{OI}!>it<!> }<!>, null)
|
||||
val b0: ((Nothing) -> Unit)? = select2(<!TYPE_MISMATCH{OI}!>{ <!CANNOT_INFER_PARAMETER_TYPE{OI}!>it<!> -> <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE{OI}, UNUSED_EXPRESSION{NI}!>it<!> }<!>, null)
|
||||
|
||||
select3({ it.length }, f, null)
|
||||
}
|
||||
|
||||
+3
-3
@@ -6,11 +6,11 @@ fun <I> id(arg: I): I = arg
|
||||
fun <S> select(vararg args: S): S = TODO()
|
||||
|
||||
fun test() {
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>id<!>(
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>make<!>()
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>id<!>(
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>make<!>()
|
||||
)
|
||||
|
||||
select(make(), null)
|
||||
|
||||
<!OI;TYPE_INFERENCE_FAILED_ON_SPECIAL_CONSTRUCT!>if<!> (true) <!OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>make()<!> else TODO()
|
||||
<!TYPE_INFERENCE_FAILED_ON_SPECIAL_CONSTRUCT{OI}!>if<!> (true) <!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}!>make()<!> else TODO()
|
||||
}
|
||||
|
||||
+1
-1
@@ -11,4 +11,4 @@ fun test() {
|
||||
|
||||
val y = g<Int> { Collections.emptyList() }
|
||||
val z : List<Int> = g { Collections.emptyList() }
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -7,8 +7,8 @@ fun <T> g (<!UNUSED_PARAMETER!>f<!>: () -> List<T>) : T {<!NO_RETURN_IN_FUNCTION
|
||||
|
||||
fun test() {
|
||||
//here possibly can be a cycle on constraints
|
||||
val <!UNUSED_VARIABLE!>x<!> = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>g<!> { Collections.<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>emptyList<!>() }
|
||||
val <!UNUSED_VARIABLE!>x<!> = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}!>g<!> { Collections.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>emptyList<!>() }
|
||||
|
||||
val <!UNUSED_VARIABLE!>y<!> = g<Int> { Collections.emptyList() }
|
||||
val <!UNUSED_VARIABLE!>z<!> : List<Int> = g { Collections.<!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>emptyList<!>() }
|
||||
}
|
||||
val <!UNUSED_VARIABLE!>z<!> : List<Int> = g { Collections.<!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>emptyList<!>() }
|
||||
}
|
||||
|
||||
+2
-2
@@ -29,6 +29,6 @@ fun chained2(arg: First) = run {
|
||||
}
|
||||
|
||||
fun test(arg: First) {
|
||||
chained1(arg).<!NI;UNRESOLVED_REFERENCE!>first<!>()
|
||||
chained2(arg).<!NI;UNRESOLVED_REFERENCE!>first<!>()
|
||||
chained1(arg).<!UNRESOLVED_REFERENCE{NI}!>first<!>()
|
||||
chained2(arg).<!UNRESOLVED_REFERENCE{NI}!>first<!>()
|
||||
}
|
||||
|
||||
+4
-4
@@ -17,11 +17,11 @@ fun <S> intersect(vararg elements: S): S = TODO()
|
||||
fun intersectAfterSmartCast(arg: Base, arg2: Base) = intersect(
|
||||
run {
|
||||
if (arg !is One) throw Exception()
|
||||
<!NI;DEBUG_INFO_SMARTCAST!>arg<!>
|
||||
<!DEBUG_INFO_SMARTCAST{NI}!>arg<!>
|
||||
},
|
||||
run {
|
||||
if (arg2 !is Two) throw Exception()
|
||||
<!NI;DEBUG_INFO_SMARTCAST!>arg2<!>
|
||||
<!DEBUG_INFO_SMARTCAST{NI}!>arg2<!>
|
||||
}
|
||||
)
|
||||
|
||||
@@ -33,6 +33,6 @@ fun intersectArgWithSmartCastFromLambda(arg: One, arg2: Base) = argOrFn(arg) {
|
||||
}
|
||||
|
||||
fun test() {
|
||||
intersectAfterSmartCast(O1, O2).<!NI;UNRESOLVED_REFERENCE!>base<!>()
|
||||
intersectArgWithSmartCastFromLambda(O1, O2).<!NI;UNRESOLVED_REFERENCE!>base<!>()
|
||||
intersectAfterSmartCast(O1, O2).<!UNRESOLVED_REFERENCE{NI}!>base<!>()
|
||||
intersectArgWithSmartCastFromLambda(O1, O2).<!UNRESOLVED_REFERENCE{NI}!>base<!>()
|
||||
}
|
||||
|
||||
+1
-1
@@ -18,5 +18,5 @@ fun smartCastAfterIntersection(a: One, b: Two) = run {
|
||||
}
|
||||
|
||||
fun test(one: One, two: Two) {
|
||||
smartCastAfterIntersection(one, two)<!NI;UNNECESSARY_SAFE_CALL!>?.<!><!NI;UNRESOLVED_REFERENCE!>base<!>()
|
||||
smartCastAfterIntersection(one, two)<!UNNECESSARY_SAFE_CALL{NI}!>?.<!><!UNRESOLVED_REFERENCE{NI}!>base<!>()
|
||||
}
|
||||
|
||||
+1
-1
@@ -21,5 +21,5 @@ fun <S> intersectNoBound(vararg elements: S): S = TODO()
|
||||
fun some(a: One, b: Two, c: Three) = intersectNoBound(intersect(a, b), c)
|
||||
|
||||
fun test(arg: Base, arg2: Base) {
|
||||
some(O1, O2, O3).<!NI;UNRESOLVED_REFERENCE!>base<!>()
|
||||
some(O1, O2, O3).<!UNRESOLVED_REFERENCE{NI}!>base<!>()
|
||||
}
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
fun foo() {
|
||||
fun fact(n: Int) = {
|
||||
if (n > 0) {
|
||||
<!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!><!DEBUG_INFO_MISSING_UNRESOLVED!>fact<!>(<!DEBUG_INFO_MISSING_UNRESOLVED!>n<!> <!DEBUG_INFO_MISSING_UNRESOLVED!>-<!> 1)<!> <!NI;DEBUG_INFO_MISSING_UNRESOLVED, OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>*<!> n
|
||||
<!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!><!DEBUG_INFO_MISSING_UNRESOLVED!>fact<!>(<!DEBUG_INFO_MISSING_UNRESOLVED!>n<!> <!DEBUG_INFO_MISSING_UNRESOLVED!>-<!> 1)<!> <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE{OI}, DEBUG_INFO_MISSING_UNRESOLVED{NI}!>*<!> n
|
||||
}
|
||||
else {
|
||||
1
|
||||
|
||||
+2
-2
@@ -2,8 +2,8 @@
|
||||
fun foo() {
|
||||
fun bar1() = <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!><!DEBUG_INFO_MISSING_UNRESOLVED!>bar1<!>()<!>
|
||||
|
||||
fun bar2() = 1 + <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!><!NI;DEBUG_INFO_MISSING_UNRESOLVED!>bar2<!>()<!>
|
||||
fun bar3() = id(<!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!><!NI;DEBUG_INFO_MISSING_UNRESOLVED!>bar3<!>()<!>)
|
||||
fun bar2() = 1 + <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!><!DEBUG_INFO_MISSING_UNRESOLVED{NI}!>bar2<!>()<!>
|
||||
fun bar3() = id(<!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!><!DEBUG_INFO_MISSING_UNRESOLVED{NI}!>bar3<!>()<!>)
|
||||
}
|
||||
|
||||
fun <T> id(x: T) = x
|
||||
|
||||
@@ -7,4 +7,4 @@ fun <T> asList(t: T) : List<T>? {}
|
||||
|
||||
fun main() {
|
||||
val list : List<String> = asList("")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,5 +6,5 @@ package d
|
||||
fun <T> asList(<!UNUSED_PARAMETER!>t<!>: T) : List<T>? {<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
|
||||
|
||||
fun main() {
|
||||
val <!UNUSED_VARIABLE!>list<!> : List<String> = <!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>asList("")<!>
|
||||
}
|
||||
val <!UNUSED_VARIABLE!>list<!> : List<String> = <!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>asList("")<!>
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ package n
|
||||
import checkSubtype
|
||||
|
||||
fun main() {
|
||||
val <!UNUSED_VARIABLE!>a<!> = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>array<!>(<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>array<!>())
|
||||
val <!UNUSED_VARIABLE!>a<!> = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>array<!>(<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>array<!>())
|
||||
val <!UNUSED_VARIABLE!>a0<!> : Array<Array<Int>> = array(array())
|
||||
val a1 = array(array<Int>())
|
||||
checkSubtype<Array<Array<Int>>>(a1)
|
||||
|
||||
@@ -10,5 +10,5 @@ fun <A, B> Foo<A>.map(<!UNUSED_PARAMETER!>f<!>: (A) -> B): Foo<B> = object : Foo
|
||||
|
||||
fun foo() {
|
||||
val l: Foo<String> = object : Foo<String> {}
|
||||
val <!UNUSED_VARIABLE!>m<!>: Foo<String> = l.<!OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>map { <!UNUSED_ANONYMOUS_PARAMETER!>ppp<!> -> <!NI;CONSTANT_EXPECTED_TYPE_MISMATCH, NI;CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!> }<!>
|
||||
val <!UNUSED_VARIABLE!>m<!>: Foo<String> = l.<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}!>map { <!UNUSED_ANONYMOUS_PARAMETER!>ppp<!> -> <!CONSTANT_EXPECTED_TYPE_MISMATCH{NI}, CONSTANT_EXPECTED_TYPE_MISMATCH{NI}!>1<!> }<!>
|
||||
}
|
||||
|
||||
@@ -25,4 +25,4 @@ abstract class Buggy {
|
||||
}
|
||||
|
||||
//from library
|
||||
fun <T: Any> Iterable<T>.find(predicate: (T) -> Boolean) : T? {}
|
||||
fun <T: Any> Iterable<T>.find(predicate: (T) -> Boolean) : T? {}
|
||||
|
||||
@@ -12,17 +12,17 @@ abstract class Buggy {
|
||||
}
|
||||
|
||||
val anotherThree : Int
|
||||
get() = <!NI;TYPE_MISMATCH!>coll.<!NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>find{ it > 3 }<!><!> // does not work here
|
||||
get() = <!TYPE_MISMATCH{NI}!>coll.<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}!>find{ it > 3 }<!><!> // does not work here
|
||||
|
||||
val yetAnotherThree : Int
|
||||
get() = <!NI;TYPE_MISMATCH!>coll.<!NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>find({ v:Int -> v > 3 })<!><!> // neither here
|
||||
get() = <!TYPE_MISMATCH{NI}!>coll.<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}!>find({ v:Int -> v > 3 })<!><!> // neither here
|
||||
|
||||
val extendedGetter : Int
|
||||
get() {
|
||||
return <!NI;TYPE_MISMATCH!>coll.<!NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>find{ it > 3 }<!><!> // not even here!
|
||||
return <!TYPE_MISMATCH{NI}!>coll.<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}!>find{ it > 3 }<!><!> // not even here!
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//from library
|
||||
fun <T: Any> Iterable<T>.find(<!UNUSED_PARAMETER!>predicate<!>: (T) -> Boolean) : T? {<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
|
||||
fun <T: Any> Iterable<T>.find(<!UNUSED_PARAMETER!>predicate<!>: (T) -> Boolean) : T? {<!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>}<!>
|
||||
|
||||
@@ -9,4 +9,4 @@ fun main() {
|
||||
}
|
||||
}
|
||||
|
||||
fun <R> test(callback: (R) -> Unit):Unit = callback(null!!)
|
||||
fun <R> test(callback: (R) -> Unit):Unit = callback(null!!)
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
package a
|
||||
|
||||
fun main() {
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>test<!> {
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>test<!> {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
fun <R> test(callback: (R) -> Unit):Unit = callback(null!!)
|
||||
fun <R> test(callback: (R) -> Unit):Unit = callback(null!!)
|
||||
|
||||
@@ -9,5 +9,5 @@ fun <T> _arrayList(vararg <!UNUSED_PARAMETER!>values<!>: T) : List<T> = throw Ex
|
||||
class _Pair<A>(val a: A)
|
||||
|
||||
fun test() {
|
||||
_arrayList(_Pair(1))._sortBy <!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>{ <!UNUSED_ANONYMOUS_PARAMETER!>it<!> -> <!UNRESOLVED_REFERENCE!>xxx<!> }<!>
|
||||
_arrayList(_Pair(1))._sortBy <!TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>{ <!UNUSED_ANONYMOUS_PARAMETER!>it<!> -> <!UNRESOLVED_REFERENCE!>xxx<!> }<!>
|
||||
}
|
||||
|
||||
@@ -16,4 +16,4 @@ fun test1(a: Int) {
|
||||
|
||||
fun test2(a: Int) {
|
||||
bar(a, throw Exception())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ fun <T> bar(a: T, b: Map<T, String>) = b.get(a)
|
||||
|
||||
fun test(a: Int) {
|
||||
foo(a, null)
|
||||
<!OI;TYPE_INFERENCE_INCORPORATION_ERROR!>bar<!>(a, <!NULL_FOR_NONNULL_TYPE!>null<!>)
|
||||
<!TYPE_INFERENCE_INCORPORATION_ERROR{OI}!>bar<!>(a, <!NULL_FOR_NONNULL_TYPE!>null<!>)
|
||||
}
|
||||
fun test1(a: Int) {
|
||||
foo(a, throw Exception())
|
||||
@@ -16,4 +16,4 @@ fun test1(a: Int) {
|
||||
|
||||
fun test2(a: Int) {
|
||||
bar(a, throw Exception())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,4 +30,4 @@ fun testWithoutInference(col: MutableCollection<Int>) {
|
||||
doAction { col.add(2) }
|
||||
|
||||
val u: Unit = col.add(2)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ fun test() {
|
||||
|
||||
doAction { bar(12) }
|
||||
|
||||
val <!UNUSED_VARIABLE!>u<!>: Unit = <!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>bar(11)<!>
|
||||
val <!UNUSED_VARIABLE!>u<!>: Unit = <!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>bar(11)<!>
|
||||
}
|
||||
|
||||
fun testWithoutInference(col: MutableCollection<Int>) {
|
||||
@@ -30,4 +30,4 @@ fun testWithoutInference(col: MutableCollection<Int>) {
|
||||
doAction { col.add(2) }
|
||||
|
||||
val <!UNUSED_VARIABLE!>u<!>: Unit = <!TYPE_MISMATCH!>col.add(2)<!>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,5 +12,5 @@ fun <V, T : V?> G<T>.foo(vararg values: V2<V?>) = build()
|
||||
fun forReference(ref: Any?) {}
|
||||
|
||||
fun test() {
|
||||
forReference(G<Int?>::<!NI;CALLABLE_REFERENCE_RESOLUTION_AMBIGUITY, OI;CANNOT_COMPLETE_RESOLVE!>foo<!>)
|
||||
forReference(G<Int?>::<!CALLABLE_REFERENCE_RESOLUTION_AMBIGUITY{NI}, CANNOT_COMPLETE_RESOLVE{OI}!>foo<!>)
|
||||
}
|
||||
|
||||
@@ -7,5 +7,5 @@ fun foo(i: Long) {}
|
||||
fun bar(f: (Boolean) -> Unit) {}
|
||||
|
||||
fun test() {
|
||||
bar(::<!NI;CALLABLE_REFERENCE_RESOLUTION_AMBIGUITY, OI;NONE_APPLICABLE!>foo<!>)
|
||||
bar(::<!CALLABLE_REFERENCE_RESOLUTION_AMBIGUITY{NI}, NONE_APPLICABLE{OI}!>foo<!>)
|
||||
}
|
||||
|
||||
@@ -17,5 +17,5 @@ fun acquireIntervals(): List<Interval> = TODO()
|
||||
|
||||
fun main() {
|
||||
buildTree(acquireIntervals())
|
||||
?: <!OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!><!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>emptyList<!>()<!>
|
||||
?: <!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}!><!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}!>emptyList<!>()<!>
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ fun <K> id(arg: K): K = arg
|
||||
|
||||
fun test() {
|
||||
id(<!UNRESOLVED_REFERENCE!>unresolved<!>)<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
<!UNRESOLVED_REFERENCE!>unresolved<!>!!<!NI;UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
<!UNRESOLVED_REFERENCE!>unresolved<!>!!<!UNNECESSARY_NOT_NULL_ASSERTION{NI}!>!!<!>
|
||||
try {
|
||||
id(<!UNRESOLVED_REFERENCE!>unresolved<!>)
|
||||
} catch (e: Exception) {
|
||||
|
||||
@@ -4,11 +4,11 @@ fun <K> id(arg: K): K = arg
|
||||
fun <M> materialize(): M = TODO()
|
||||
|
||||
fun test(b: Boolean) {
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>id<!>(if (b) {
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>id<!>(if (b) {
|
||||
id(<!UNRESOLVED_REFERENCE!>unresolved<!>)
|
||||
} else {
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>id<!>(
|
||||
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>materialize<!>()
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>id<!>(
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>materialize<!>()
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_ANONYMOUS_PARAMETER
|
||||
// !LANGUAGE: +InferenceCompatibility
|
||||
|
||||
fun <T, VR : T> foo(x: T, fn: (VR?, T) -> Unit) {}
|
||||
|
||||
fun takeInt(x: Int) {}
|
||||
|
||||
fun main(x: Int) {
|
||||
foo(x) { prev: Int?, new -> <!INAPPLICABLE_CANDIDATE!>takeInt<!>(new) } // `new` is `Int` in OI, `Int?` in NI
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_ANONYMOUS_PARAMETER
|
||||
// !LANGUAGE: +InferenceCompatibility
|
||||
|
||||
@@ -7,4 +8,4 @@ fun takeInt(x: Int) {}
|
||||
|
||||
fun main(x: Int) {
|
||||
foo(x) { prev: Int?, new -> takeInt(new) } // `new` is `Int` in OI, `Int?` in NI
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,4 +17,4 @@ public class Throwables() {
|
||||
propagateIfInstanceOf(throwable, getJavaClass<RuntimeException?>()) // Type inference failed: Mismatch while expanding constraints
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user