[NI] Automatically squash equal diagnostics in OI and NI in testdata

This commit is contained in:
Dmitriy Novozhilov
2019-04-18 13:54:47 +03:00
parent 642f8ecaf8
commit e70bdb51c5
30 changed files with 82 additions and 80 deletions
@@ -1,15 +1,15 @@
// !WITH_NEW_INFERENCE
fun test(mc: MutableCollection<out CharSequence>) {
mc.addAll(<!NI;TYPE_MISMATCH, OI;TYPE_MISMATCH_DUE_TO_TYPE_PROJECTIONS!>mc<!>)
mc.addAll(<!TYPE_MISMATCH_DUE_TO_TYPE_PROJECTIONS!>mc<!>)
mc.addAll(<!NI;TYPE_MISMATCH, OI;TYPE_MISMATCH_DUE_TO_TYPE_PROJECTIONS!>arrayListOf<CharSequence>()<!>)
mc.addAll(<!OI;IMPLICIT_NOTHING_AS_TYPE_PARAMETER!>arrayListOf<!>())
mc.addAll(<!TYPE_MISMATCH_DUE_TO_TYPE_PROJECTIONS!>arrayListOf<CharSequence>()<!>)
mc.addAll(<!NI;IMPLICIT_NOTHING_AS_TYPE_PARAMETER, IMPLICIT_NOTHING_AS_TYPE_PARAMETER!>arrayListOf<!>())
mc.addAll(<!NI;TYPE_MISMATCH, OI;TYPE_MISMATCH_DUE_TO_TYPE_PROJECTIONS!>listOf("")<!>)
mc.addAll(<!NI;TYPE_MISMATCH, OI;TYPE_MISMATCH_DUE_TO_TYPE_PROJECTIONS!>listOf<String>("")<!>)
mc.addAll(<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, OI;TYPE_MISMATCH_DUE_TO_TYPE_PROJECTIONS!>listOf<CharSequence>("")<!>)
mc.addAll(<!TYPE_MISMATCH_DUE_TO_TYPE_PROJECTIONS!>listOf("")<!>)
mc.addAll(<!TYPE_MISMATCH_DUE_TO_TYPE_PROJECTIONS!>listOf<String>("")<!>)
mc.addAll(<!NI;TYPE_MISMATCH, TYPE_MISMATCH_DUE_TO_TYPE_PROJECTIONS!>listOf<CharSequence>("")<!>)
mc.addAll(<!OI;IMPLICIT_NOTHING_AS_TYPE_PARAMETER!>emptyList<!>())
mc.addAll(<!NI;IMPLICIT_NOTHING_AS_TYPE_PARAMETER, IMPLICIT_NOTHING_AS_TYPE_PARAMETER!>emptyList<!>())
mc.addAll(emptyList<Nothing>())
}
@@ -6,6 +6,6 @@ public @interface A {
}
// FILE: b.kt
@A(*<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH("Array<out String>", "IGNORE")!>arrayOf(1, "b")<!>)
@A(*<!NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>arrayOf(<!NI;CONSTANT_EXPECTED_TYPE_MISMATCH, NI;CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!>, "b")<!>)
fun test() {
}
@@ -2,6 +2,6 @@
annotation class B(vararg val args: String)
@B(*<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH("Array<out String>", "IGNORE")!>arrayOf(1, "b")<!>)
@B(*<!NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>arrayOf(<!NI;CONSTANT_EXPECTED_TYPE_MISMATCH, NI;CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!>, "b")<!>)
fun test() {
}
@@ -38,7 +38,7 @@ fun test() {
severalParams("", 89) checkType { _<Double>() }
// TODO: should we allow somehow to call with passing continuation explicitly?
severalParams("", 89, <!TOO_MANY_ARGUMENTS!>6.9<!>) checkType { <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><Unit>() }
severalParams("", 89, <!TOO_MANY_ARGUMENTS!>this <!CAST_NEVER_SUCCEEDS!>as<!> Continuation<Double><!>) checkType { <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><Unit>() }
severalParams("", 89, <!TOO_MANY_ARGUMENTS!>6.9<!>) checkType { <!TYPE_MISMATCH!>_<!><Unit>() }
severalParams("", 89, <!TOO_MANY_ARGUMENTS!>this <!CAST_NEVER_SUCCEEDS!>as<!> Continuation<Double><!>) checkType { <!TYPE_MISMATCH!>_<!><Unit>() }
}
}
@@ -13,7 +13,7 @@ fun <T> test3(t1: @kotlin.internal.NoInfer T): T = t1
fun usage() {
<!OI;TYPE_INFERENCE_INCORPORATION_ERROR!>test1<!>(1, <!TYPE_MISMATCH!>"312"<!>)
<!OI;TYPE_MISMATCH!>1<!>.<!OI;TYPE_INFERENCE_INCORPORATION_ERROR!>test2<!>("")
<!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>test3<!>("")
<!NI;IMPLICIT_NOTHING_AS_TYPE_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>test3<!>("")
}
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
@@ -14,10 +14,10 @@ fun foo() {
x[0] = <!TYPE_MISMATCH!>bar()<!>
x[0] = ""
val b1: MutableList<String?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b1: MutableList<String?> = <!TYPE_MISMATCH!>x<!>
val b2: MutableList<String> = x
val b3: List<String?> = x
val b4: Collection<String?> = x
val b6: MutableCollection<String?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b6: MutableCollection<String?> = <!TYPE_MISMATCH!>x<!>
}
@@ -15,7 +15,7 @@ fun foo() {
x[0] = ""
val b1: MutableList<String?> = x
val b2: MutableList<String> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b2: MutableList<String> = <!TYPE_MISMATCH!>x<!>
val b3: List<String?> = x
val b4: Collection<String?> = x
@@ -29,5 +29,5 @@ fun foo() {
x.add("")
val b1: Collection<String?> = x
val b2: MutableCollection<String?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b2: MutableCollection<String?> = <!TYPE_MISMATCH!>x<!>
}
@@ -32,10 +32,10 @@ fun foo() {
x[0] = <!TYPE_MISMATCH!>bar()<!>
x[0] = ""
val b1: MutableList<String?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b1: MutableList<String?> = <!TYPE_MISMATCH!>x<!>
val b2: MutableList<String> = x
val b3: List<String?> = x
val b4: Collection<String?> = x
val b6: MutableCollection<String?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b6: MutableCollection<String?> = <!TYPE_MISMATCH!>x<!>
}
@@ -18,14 +18,14 @@ fun hashMapTest() {
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>x[""]<!> = <!NI;TYPE_MISMATCH!>nullableInt<!>
x[""] = 1
val b1: MutableMap<String, Int?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b1: MutableMap<String, Int?> = <!TYPE_MISMATCH!>x<!>
val b2: MutableMap<String, Int> = x
val b3: Map<String?, Int> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b4: Map<String?, Int?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b3: Map<String?, Int> = <!TYPE_MISMATCH!>x<!>
val b4: Map<String?, Int?> = <!TYPE_MISMATCH!>x<!>
val b5: Map<String, Int?> = x
val b6: Int = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x[""]<!>
val b7: Int = <!TYPE_MISMATCH!>x.<!NI;TYPE_MISMATCH!>get("")<!><!>
val b6: Int = <!TYPE_MISMATCH!>x[""]<!>
val b7: Int = <!TYPE_MISMATCH!>x.get("")<!>
val b8: Int? = x.get("")
}
@@ -42,14 +42,14 @@ fun treeMapTest() {
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>x[""]<!> = <!NI;TYPE_MISMATCH!>nullableInt<!>
x[""] = 1
val b1: MutableMap<String, Int?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b1: MutableMap<String, Int?> = <!TYPE_MISMATCH!>x<!>
val b2: MutableMap<String, Int> = x
val b3: Map<String?, Int> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b4: Map<String?, Int?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b3: Map<String?, Int> = <!TYPE_MISMATCH!>x<!>
val b4: Map<String?, Int?> = <!TYPE_MISMATCH!>x<!>
val b5: Map<String, Int?> = x
val b6: Int = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x[""]<!>
val b7: Int = <!TYPE_MISMATCH!>x.<!NI;TYPE_MISMATCH!>get("")<!><!>
val b6: Int = <!TYPE_MISMATCH!>x[""]<!>
val b7: Int = <!TYPE_MISMATCH!>x.get("")<!>
val b8: Int? = x.get("")
}
@@ -66,14 +66,14 @@ fun concurrentHashMapTest() {
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>x[""]<!> = <!NI;TYPE_MISMATCH!>nullableInt<!>
x[""] = 1
val b1: MutableMap<String, Int?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b1: MutableMap<String, Int?> = <!TYPE_MISMATCH!>x<!>
val b2: MutableMap<String, Int> = x
val b3: Map<String?, Int> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b4: Map<String?, Int?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b3: Map<String?, Int> = <!TYPE_MISMATCH!>x<!>
val b4: Map<String?, Int?> = <!TYPE_MISMATCH!>x<!>
val b5: Map<String, Int?> = x
val b6: Int = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x[""]<!>
val b7: Int = <!TYPE_MISMATCH!>x.<!NI;TYPE_MISMATCH!>get("")<!><!>
val b6: Int = <!TYPE_MISMATCH!>x[""]<!>
val b7: Int = <!TYPE_MISMATCH!>x.get("")<!>
val b8: Int? = x.get("")
}
@@ -17,15 +17,15 @@ fun hashMapTest() {
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>x[""]<!> = <!NI;TYPE_MISMATCH!>nullableInt<!>
x[""] = 1
val b1: MutableMap<String?, Int?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b1: MutableMap<String?, Int?> = <!TYPE_MISMATCH!>x<!>
val b2: MutableMap<String?, Int> = x
val b3: Map<String?, Int> = x
val b4: Map<String?, Int?> = x
val b5: Map<String, Int?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b5: Map<String, Int?> = <!TYPE_MISMATCH!>x<!>
val b6: Int = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x[""]<!>
val b7: Int = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x[null]<!>
val b8: Int = <!TYPE_MISMATCH!>x.<!NI;TYPE_MISMATCH!>get("")<!><!>
val b6: Int = <!TYPE_MISMATCH!>x[""]<!>
val b7: Int = <!TYPE_MISMATCH!>x[null]<!>
val b8: Int = <!TYPE_MISMATCH!>x.get("")<!>
val b9: Int? = x.get("")
}
@@ -42,14 +42,14 @@ fun treeMapTest() {
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>x[""]<!> = <!NI;TYPE_MISMATCH!>nullableInt<!>
x[""] = 1
val b1: MutableMap<String?, Int?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b1: MutableMap<String?, Int?> = <!TYPE_MISMATCH!>x<!>
val b2: MutableMap<String?, Int> = x
val b3: Map<String?, Int> = x
val b4: Map<String?, Int?> = x
val b5: Map<String, Int?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b5: Map<String, Int?> = <!TYPE_MISMATCH!>x<!>
val b6: Int = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x[""]<!>
val b7: Int = <!TYPE_MISMATCH!>x.<!NI;TYPE_MISMATCH!>get("")<!><!>
val b6: Int = <!TYPE_MISMATCH!>x[""]<!>
val b7: Int = <!TYPE_MISMATCH!>x.get("")<!>
val b8: Int? = x.get("")
}
@@ -17,14 +17,14 @@ fun hashMapTest() {
x[""] = nullableInt
x[""] = 1
val b1: MutableMap<String, Int> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b1: MutableMap<String, Int> = <!TYPE_MISMATCH!>x<!>
val b2: MutableMap<String, Int?> = x
val b3: Map<String, Int> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b3: Map<String, Int> = <!TYPE_MISMATCH!>x<!>
val b4: Map<String, Int?> = x
val b5: Map<String?, Int?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b5: Map<String?, Int?> = <!TYPE_MISMATCH!>x<!>
val b6: Int = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x[""]<!>
val b7: Int = <!TYPE_MISMATCH!>x.<!NI;TYPE_MISMATCH!>get("")<!><!>
val b6: Int = <!TYPE_MISMATCH!>x[""]<!>
val b7: Int = <!TYPE_MISMATCH!>x.get("")<!>
val b8: Int? = x.get("")
}
@@ -41,14 +41,14 @@ fun treeMapTest() {
x[""] = nullableInt
x[""] = 1
val b1: MutableMap<String, Int> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b1: MutableMap<String, Int> = <!TYPE_MISMATCH!>x<!>
val b2: MutableMap<String, Int?> = x
val b3: Map<String, Int> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b3: Map<String, Int> = <!TYPE_MISMATCH!>x<!>
val b4: Map<String, Int?> = x
val b5: Map<String?, Int?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b5: Map<String?, Int?> = <!TYPE_MISMATCH!>x<!>
val b6: Int = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x[""]<!>
val b7: Int = <!TYPE_MISMATCH!>x.<!NI;TYPE_MISMATCH!>get("")<!><!>
val b6: Int = <!TYPE_MISMATCH!>x[""]<!>
val b7: Int = <!TYPE_MISMATCH!>x.get("")<!>
val b8: Int? = x.get("")
}
@@ -10,12 +10,12 @@ fun fooHashSet() {
x.add(<!TYPE_MISMATCH!>bar()<!>)
x.add("")
val b1: MutableSet<String?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b1: MutableSet<String?> = <!TYPE_MISMATCH!>x<!>
val b2: MutableSet<String> = x
val b3: Set<String?> = x
val b4: Collection<String?> = x
val b6: MutableCollection<String?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b6: MutableCollection<String?> = <!TYPE_MISMATCH!>x<!>
}
fun fooTreeSet() {
@@ -24,12 +24,12 @@ fun fooTreeSet() {
x.add(<!TYPE_MISMATCH!>bar()<!>)
x.add("")
val b1: MutableSet<String?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b1: MutableSet<String?> = <!TYPE_MISMATCH!>x<!>
val b2: MutableSet<String> = x
val b3: Set<String?> = x
val b4: Collection<String?> = x
val b6: MutableCollection<String?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b6: MutableCollection<String?> = <!TYPE_MISMATCH!>x<!>
}
fun fooLinkedHashSet() {
@@ -38,10 +38,10 @@ fun fooLinkedHashSet() {
x.add(<!TYPE_MISMATCH!>bar()<!>)
x.add("")
val b1: MutableSet<String?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b1: MutableSet<String?> = <!TYPE_MISMATCH!>x<!>
val b2: MutableSet<String> = x
val b3: Set<String?> = x
val b4: Collection<String?> = x
val b6: MutableCollection<String?> = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>
val b6: MutableCollection<String?> = <!TYPE_MISMATCH!>x<!>
}
@@ -6,11 +6,11 @@ inline fun<reified T> foo(block: () -> T): String = block().toString()
inline fun <reified T: Any> javaClass(): Class<T> = T::class.java
fun box() {
val a = <!OI;IMPLICIT_NOTHING_AS_TYPE_PARAMETER, REIFIED_TYPE_FORBIDDEN_SUBSTITUTION, UNSUPPORTED!>arrayOf<!>(null!!)
val a = <!IMPLICIT_NOTHING_AS_TYPE_PARAMETER, REIFIED_TYPE_FORBIDDEN_SUBSTITUTION, UNSUPPORTED!>arrayOf<!>(null!!)
val b = <!UNSUPPORTED!>Array<!><<!REIFIED_TYPE_FORBIDDEN_SUBSTITUTION!>Nothing?<!>>(5) { null!! }
val c = <!OI;REIFIED_TYPE_FORBIDDEN_SUBSTITUTION!>foo<!>() { null!! }
val c = <!REIFIED_TYPE_FORBIDDEN_SUBSTITUTION!>foo<!>() { null!! }
val d = foo<Any> { null!! }
val e = <!OI;REIFIED_TYPE_FORBIDDEN_SUBSTITUTION!>foo<!> { "1" <!CAST_NEVER_SUCCEEDS!>as<!> Nothing }
val e = <!REIFIED_TYPE_FORBIDDEN_SUBSTITUTION!>foo<!> { "1" <!CAST_NEVER_SUCCEEDS!>as<!> Nothing }
val e1 = <!REIFIED_TYPE_FORBIDDEN_SUBSTITUTION!>foo<!> { "1" <!CAST_NEVER_SUCCEEDS!>as<!> Nothing? }
val f = javaClass<<!REIFIED_TYPE_FORBIDDEN_SUBSTITUTION!>Nothing<!>>()
@@ -10,7 +10,7 @@ fun main() {
val pi = 4.0.toDouble() * delta <!OI;OVERLOAD_RESOLUTION_AMBIGUITY!>*<!> (1..n).<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>reduce<!>(
{t, i ->
val x = (i - 0.5) * delta
<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>t + 1.0 / (1.0 + x * x)<!>
<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>t + 1.0 / (1.0 + x * x)<!>
})
// !!! pi has error type here