Don't report the same diagnsotics several times
This commit is contained in:
+4
-2
@@ -1,3 +1,5 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
open class A
|
||||
@@ -12,7 +14,7 @@ class MyClass1
|
||||
@Ann1(arrayOf(Any::class))
|
||||
class MyClass1a
|
||||
|
||||
@Ann1(<!TYPE_MISMATCH, TYPE_MISMATCH!>arrayOf(<!TYPE_MISMATCH!>B1::class<!>)<!>)
|
||||
@Ann1(<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}!>arrayOf(<!TYPE_MISMATCH{NI}!>B1::class<!>)<!>)
|
||||
class MyClass2
|
||||
|
||||
annotation class Ann2(val arg: Array<KClass<in B1>>)
|
||||
@@ -23,5 +25,5 @@ class MyClass3
|
||||
@Ann2(arrayOf(B1::class))
|
||||
class MyClass4
|
||||
|
||||
@Ann2(<!TYPE_MISMATCH, TYPE_MISMATCH!>arrayOf(<!TYPE_MISMATCH!>B2::class<!>)<!>)
|
||||
@Ann2(<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}!>arrayOf(<!TYPE_MISMATCH{NI}!>B2::class<!>)<!>)
|
||||
class MyClass5
|
||||
|
||||
+4
-3
@@ -1,3 +1,4 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
@@ -10,7 +11,7 @@ annotation class Ann1(val arg: Array<KClass<out A>>)
|
||||
@Ann1(arrayOf(A::class))
|
||||
class MyClass1
|
||||
|
||||
@Ann1(<!TYPE_MISMATCH, TYPE_MISMATCH!>arrayOf(<!TYPE_MISMATCH!>Any::class<!>)<!>)
|
||||
@Ann1(<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}!>arrayOf(<!TYPE_MISMATCH{NI}!>Any::class<!>)<!>)
|
||||
class MyClass1a
|
||||
|
||||
@Ann1(arrayOf(B1::class))
|
||||
@@ -18,11 +19,11 @@ class MyClass2
|
||||
|
||||
annotation class Ann2(val arg: Array<KClass<out B1>>)
|
||||
|
||||
@Ann2(<!TYPE_MISMATCH, TYPE_MISMATCH!>arrayOf(<!TYPE_MISMATCH!>A::class<!>)<!>)
|
||||
@Ann2(<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}!>arrayOf(<!TYPE_MISMATCH{NI}!>A::class<!>)<!>)
|
||||
class MyClass3
|
||||
|
||||
@Ann2(arrayOf(B1::class))
|
||||
class MyClass4
|
||||
|
||||
@Ann2(<!TYPE_MISMATCH, TYPE_MISMATCH!>arrayOf(<!TYPE_MISMATCH!>B2::class<!>)<!>)
|
||||
@Ann2(<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}!>arrayOf(<!TYPE_MISMATCH{NI}!>B2::class<!>)<!>)
|
||||
class MyClass5
|
||||
|
||||
+1
-1
@@ -37,6 +37,6 @@ class B {
|
||||
}
|
||||
|
||||
fun foo3(x: B) = {
|
||||
x += { <!TYPE_MISMATCH, TYPE_MISMATCH, TYPE_MISMATCH!>""<!> }
|
||||
x += { <!TYPE_MISMATCH, TYPE_MISMATCH!>""<!> }
|
||||
x += id { <!TYPE_MISMATCH, TYPE_MISMATCH!>""<!> }
|
||||
}
|
||||
|
||||
Vendored
+4
-3
@@ -1,5 +1,6 @@
|
||||
// !USE_EXPERIMENTAL: kotlin.RequiresOptIn
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// !WITH_NEW_INFERENCE
|
||||
// NI_EXPECTED_FILE
|
||||
|
||||
@file:OptIn(ExperimentalTypeInference::class)
|
||||
@@ -14,10 +15,10 @@ fun <S> generate(@BuilderInference g: suspend Controller<S>.() -> Unit): S = TOD
|
||||
|
||||
class A
|
||||
|
||||
val test1 = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
|
||||
val test1 = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>generate<!> {
|
||||
yield(<!NO_COMPANION_OBJECT!>A<!>)
|
||||
}
|
||||
|
||||
val test2: Int = <!TYPE_MISMATCH!>generate {
|
||||
yield(<!TYPE_MISMATCH, TYPE_MISMATCH!>A()<!>)
|
||||
val test2: Int = <!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}!>generate {
|
||||
yield(<!TYPE_MISMATCH{NI}!>A()<!>)
|
||||
}<!>
|
||||
|
||||
+2
-2
@@ -28,7 +28,7 @@ fun foo() {
|
||||
i = genericBuilder { 1 }
|
||||
genericBuilder { 1 }
|
||||
genericBuilder<Int> { 1 }
|
||||
genericBuilder<Int> { <!TYPE_MISMATCH, TYPE_MISMATCH!>""<!> }
|
||||
genericBuilder<Int> { <!TYPE_MISMATCH!>""<!> }
|
||||
|
||||
val y = { 1 }
|
||||
genericBuilder(<!UNSUPPORTED_FEATURE!>y<!>)
|
||||
@@ -43,7 +43,7 @@ fun foo() {
|
||||
val s: String = manyArgumentsBuilder({}, { "" }) { 1 }
|
||||
|
||||
manyArgumentsBuilder<String>({}, { "" }, { 1 })
|
||||
manyArgumentsBuilder<String>({}, { <!CONSTANT_EXPECTED_TYPE_MISMATCH, CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!> }, { 2 })
|
||||
manyArgumentsBuilder<String>({}, { <!CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!> }, { 2 })
|
||||
|
||||
severalParamsInLambda { <!NAME_SHADOWING!>x<!>, <!NAME_SHADOWING!>y<!> ->
|
||||
x checkType { _<String>() }
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_VARIABLE
|
||||
// !WITH_NEW_INFERENCE
|
||||
|
||||
suspend fun <V> await(f: V): V = f
|
||||
|
||||
@@ -7,10 +8,10 @@ fun <T> genericBuilder(c: suspend () -> T): T = null!!
|
||||
fun foo() {
|
||||
var result = ""
|
||||
genericBuilder<String> {
|
||||
<!TYPE_MISMATCH, TYPE_MISMATCH!>try {
|
||||
<!TYPE_MISMATCH{NI}!>try {
|
||||
await("")
|
||||
} catch(e: Exception) {
|
||||
result = "fail"
|
||||
<!EXPECTED_TYPE_MISMATCH{OI}!>result = "fail"<!>
|
||||
}<!>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
|
||||
// FILE: P.java
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -13,5 +15,5 @@ public class P {
|
||||
|
||||
fun foo(c: P): MutableList<Int> {
|
||||
// Error should be here: see KT-8168 Typechecker fails for platform collection type
|
||||
return <!TYPE_MISMATCH, TYPE_MISMATCH!>c.getList() ?: listOf()<!>
|
||||
return <!TYPE_MISMATCH{NI}!>c.getList() ?: <!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{OI}!>listOf()<!><!>
|
||||
}
|
||||
|
||||
+3
-3
@@ -19,7 +19,7 @@ fun main() {
|
||||
val x1: suspend (Int) -> Unit = takeSuspend(<!DEBUG_INFO_EXPRESSION_TYPE("suspend (kotlin.Int) -> kotlin.Unit")!>id { it }<!>, <!DEBUG_INFO_EXPRESSION_TYPE("suspend (kotlin.Int) -> kotlin.Unit")!>{ x -> x }<!>)
|
||||
|
||||
// Here, the error should be
|
||||
val x2: (Int) -> Unit = <!TYPE_MISMATCH!>takeSuspend(<!DEBUG_INFO_EXPRESSION_TYPE("suspend (kotlin.Int) -> kotlin.Unit")!>id <!TYPE_MISMATCH, TYPE_MISMATCH, TYPE_MISMATCH, TYPE_MISMATCH!>{ it }<!><!>, <!DEBUG_INFO_EXPRESSION_TYPE("suspend (kotlin.Int) -> kotlin.Unit"), TYPE_MISMATCH, TYPE_MISMATCH, TYPE_MISMATCH!>{ x -> x }<!>)<!>
|
||||
val x3: suspend (Int) -> Unit = takeSimpleFunction(<!DEBUG_INFO_EXPRESSION_TYPE("suspend (kotlin.Int) -> kotlin.Unit")!>id <!TYPE_MISMATCH, TYPE_MISMATCH, TYPE_MISMATCH, TYPE_MISMATCH!>{ it }<!><!>, <!DEBUG_INFO_EXPRESSION_TYPE("suspend (kotlin.Int) -> kotlin.Unit"), TYPE_MISMATCH, TYPE_MISMATCH, TYPE_MISMATCH!>{ x -> x }<!>)
|
||||
val x4: (Int) -> Unit = <!TYPE_MISMATCH, TYPE_MISMATCH!>takeSimpleFunction(<!TYPE_MISMATCH!>id<suspend (Int) -> Unit> {}<!>, <!DEBUG_INFO_EXPRESSION_TYPE("suspend (kotlin.Int) -> kotlin.Unit"), TYPE_MISMATCH, TYPE_MISMATCH, TYPE_MISMATCH, TYPE_MISMATCH, TYPE_MISMATCH, TYPE_MISMATCH!>{}<!>)<!>
|
||||
val x2: (Int) -> Unit = <!TYPE_MISMATCH!>takeSuspend(<!DEBUG_INFO_EXPRESSION_TYPE("suspend (kotlin.Int) -> kotlin.Unit")!>id <!TYPE_MISMATCH!>{ it }<!><!>, <!DEBUG_INFO_EXPRESSION_TYPE("suspend (kotlin.Int) -> kotlin.Unit"), TYPE_MISMATCH!>{ x -> x }<!>)<!>
|
||||
val x3: suspend (Int) -> Unit = takeSimpleFunction(<!DEBUG_INFO_EXPRESSION_TYPE("suspend (kotlin.Int) -> kotlin.Unit")!>id <!TYPE_MISMATCH!>{ it }<!><!>, <!DEBUG_INFO_EXPRESSION_TYPE("suspend (kotlin.Int) -> kotlin.Unit"), TYPE_MISMATCH!>{ x -> x }<!>)
|
||||
val x4: (Int) -> Unit = <!TYPE_MISMATCH, TYPE_MISMATCH!>takeSimpleFunction(<!TYPE_MISMATCH!>id<suspend (Int) -> Unit> {}<!>, <!DEBUG_INFO_EXPRESSION_TYPE("suspend (kotlin.Int) -> kotlin.Unit"), TYPE_MISMATCH!>{}<!>)<!>
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
//KT-4711 Error type with no error reported from type inference
|
||||
|
||||
fun main() {
|
||||
@@ -6,15 +7,15 @@ fun main() {
|
||||
val startTimeNanos = System.nanoTime()
|
||||
|
||||
// the problem sits on the next line:
|
||||
val pi = 4.0.toDouble() * delta * (1..n).reduce(
|
||||
val pi = 4.0.toDouble() * delta <!OVERLOAD_RESOLUTION_AMBIGUITY{OI}!>*<!> (1..n).<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>reduce<!>(
|
||||
{t, i ->
|
||||
val x = (i - 0.5) * delta
|
||||
<!TYPE_MISMATCH, TYPE_MISMATCH, TYPE_MISMATCH!>t + 1.0 / (1.0 + x * x)<!>
|
||||
<!TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>t + 1.0 / (1.0 + x * x)<!>
|
||||
|
||||
})
|
||||
// !!! pi has error type here
|
||||
|
||||
val elapseTime = (System.nanoTime() - startTimeNanos) / 1e9
|
||||
|
||||
println("pi_sequential_reduce $pi $n $elapseTime")
|
||||
println("pi_sequential_reduce $<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE{OI}!>pi<!> $n $elapseTime")
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
fun indexOfMax(a: IntArray): Int? {
|
||||
var maxI: Int? = null
|
||||
a.forEachIndexed { i, value ->
|
||||
if (maxI == null || value >= a[<!SMARTCAST_IMPOSSIBLE, SMARTCAST_IMPOSSIBLE!>maxI<!>]) {
|
||||
if (maxI == null || value >= a[<!SMARTCAST_IMPOSSIBLE!>maxI<!>]) {
|
||||
maxI = i
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
// SKIP_TXT
|
||||
|
||||
class ExcA : Exception()
|
||||
@@ -26,9 +27,9 @@ fun test1(): Map<Int, Int> = run {
|
||||
}
|
||||
|
||||
fun test2(): Map<Int, Int> = run {
|
||||
<!TYPE_MISMATCH, TYPE_MISMATCH, TYPE_MISMATCH!>try {
|
||||
<!TYPE_MISMATCH{NI}!>try {
|
||||
emptyMap()
|
||||
} catch (e: ExcA) {
|
||||
<!TYPE_MISMATCH!>mapOf(<!TYPE_MISMATCH!>"" to ""<!>)<!>
|
||||
<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}!>mapOf(<!TYPE_MISMATCH{NI}!>"" to ""<!>)<!>
|
||||
}<!>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user