[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:
Dmitriy Novozhilov
2020-12-07 10:08:56 +03:00
parent 1d04fecd29
commit e6b5cb5216
1823 changed files with 3014 additions and 2662 deletions
@@ -1,14 +1,14 @@
// !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{NI}, TYPE_MISMATCH_DUE_TO_TYPE_PROJECTIONS{OI}!>mc<!>)
mc.addAll(<!NI;TYPE_MISMATCH, OI;TYPE_MISMATCH_DUE_TO_TYPE_PROJECTIONS!>arrayListOf<CharSequence>()<!>)
mc.addAll(<!TYPE_MISMATCH{NI}, TYPE_MISMATCH_DUE_TO_TYPE_PROJECTIONS{OI}!>arrayListOf<CharSequence>()<!>)
mc.addAll(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, OI;TYPE_MISMATCH_DUE_TO_TYPE_PROJECTIONS!>listOf<CharSequence>("")<!>)
mc.addAll(<!TYPE_MISMATCH{NI}, TYPE_MISMATCH_DUE_TO_TYPE_PROJECTIONS{OI}!>listOf("")<!>)
mc.addAll(<!TYPE_MISMATCH{NI}, TYPE_MISMATCH_DUE_TO_TYPE_PROJECTIONS{OI}!>listOf<String>("")<!>)
mc.addAll(<!TYPE_MISMATCH{NI}, TYPE_MISMATCH_DUE_TO_TYPE_PROJECTIONS{OI}!>listOf<CharSequence>("")<!>)
mc.addAll(emptyList())
mc.addAll(emptyList<Nothing>())
@@ -27,4 +27,4 @@ class C {
}
@JvmName("extensionFun")
fun Foo.extensionFun() {}
fun Foo.extensionFun() {}
@@ -1,4 +1,4 @@
// !WITH_NEW_INFERENCE
// See KT-15839
val x = "1".let(@Suppress("DEPRECATION") Integer::parseInt)
val x = "1".let(@Suppress("DEPRECATION") Integer::parseInt)
@@ -1,4 +1,4 @@
// !WITH_NEW_INFERENCE
// See KT-15839
val x = "1".let(@<!NI;DEBUG_INFO_MISSING_UNRESOLVED!>Suppress<!>("DEPRECATION") Integer::parseInt)
val x = "1".let(@<!DEBUG_INFO_MISSING_UNRESOLVED{NI}!>Suppress<!>("DEPRECATION") Integer::parseInt)
@@ -6,6 +6,6 @@ public @interface A {
}
// FILE: b.kt
@A(*<!NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>arrayOf(<!NI;CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!>, "b")<!>)
@A(*<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}!>arrayOf(<!CONSTANT_EXPECTED_TYPE_MISMATCH{NI}!>1<!>, "b")<!>)
fun test() {
}
@@ -2,6 +2,6 @@
annotation class B(vararg val args: String)
@B(*<!NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>arrayOf(<!NI;CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!>, "b")<!>)
@B(*<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}!>arrayOf(<!CONSTANT_EXPECTED_TYPE_MISMATCH{NI}!>1<!>, "b")<!>)
fun test() {
}
@@ -59,4 +59,4 @@ class <!JVM_DEFAULT_THROUGH_INHERITANCE!>ManySupers2<!>: Foo2(), C {
super<C>.<!USAGE_OF_JVM_DEFAULT_THROUGH_SUPER_CALL!>test<!>()
<!AMBIGUOUS_SUPER!>super<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>test<!>()
}
}
}
@@ -14,7 +14,7 @@ class MyClass1
@Ann1(arrayOf(Any::class))
class MyClass1a
@Ann1(<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>arrayOf(<!NI;TYPE_MISMATCH!>B1::class<!>)<!>)
@Ann1(<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>arrayOf(<!TYPE_MISMATCH{NI}!>B1::class<!>)<!>)
class MyClass2
annotation class Ann2(val arg: Array<KClass<in B1>>)
@@ -25,5 +25,5 @@ class MyClass3
@Ann2(arrayOf(B1::class))
class MyClass4
@Ann2(<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>arrayOf(<!NI;TYPE_MISMATCH!>B2::class<!>)<!>)
@Ann2(<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>arrayOf(<!TYPE_MISMATCH{NI}!>B2::class<!>)<!>)
class MyClass5
@@ -11,7 +11,7 @@ annotation class Ann1(val arg: Array<KClass<out A>>)
@Ann1(arrayOf(A::class))
class MyClass1
@Ann1(<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>arrayOf(<!NI;TYPE_MISMATCH!>Any::class<!>)<!>)
@Ann1(<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>arrayOf(<!TYPE_MISMATCH{NI}!>Any::class<!>)<!>)
class MyClass1a
@Ann1(arrayOf(B1::class))
@@ -19,11 +19,11 @@ class MyClass2
annotation class Ann2(val arg: Array<KClass<out B1>>)
@Ann2(<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>arrayOf(<!NI;TYPE_MISMATCH!>A::class<!>)<!>)
@Ann2(<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>arrayOf(<!TYPE_MISMATCH{NI}!>A::class<!>)<!>)
class MyClass3
@Ann2(arrayOf(B1::class))
class MyClass4
@Ann2(<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>arrayOf(<!NI;TYPE_MISMATCH!>B2::class<!>)<!>)
@Ann2(<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>arrayOf(<!TYPE_MISMATCH{NI}!>B2::class<!>)<!>)
class MyClass5
@@ -11,11 +11,11 @@ class B: A {
fun test1(a: A) {
assert((a as B).bool())
<!NI;DEBUG_INFO_SMARTCAST!>a<!>.<!OI;UNRESOLVED_REFERENCE!>bool<!>()
<!DEBUG_INFO_SMARTCAST{NI}!>a<!>.<!UNRESOLVED_REFERENCE{OI}!>bool<!>()
}
fun test2() {
val a: A? = null;
assert((a as B).bool())
<!NI;DEBUG_INFO_SMARTCAST!>a<!><!NI;UNNECESSARY_SAFE_CALL!>?.<!><!OI;UNRESOLVED_REFERENCE!>bool<!>()
<!DEBUG_INFO_SMARTCAST{NI}!>a<!><!UNNECESSARY_SAFE_CALL{NI}!>?.<!><!UNRESOLVED_REFERENCE{OI}!>bool<!>()
}
@@ -5,34 +5,34 @@
fun test1(s: String?) {
assert(s!!.isEmpty())
s<!NI;UNNECESSARY_SAFE_CALL!>?.<!>length
s<!UNNECESSARY_SAFE_CALL{NI}!>?.<!>length
}
fun test2(s: String?) {
assert(s!!.isEmpty())
s<!NI;UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.length
s<!UNNECESSARY_NOT_NULL_ASSERTION{NI}!>!!<!>.length
}
fun test3(s: String?) {
assert(s!!.isEmpty())
<!NI;DEBUG_INFO_SMARTCAST!>s<!><!OI;UNSAFE_CALL!>.<!>length
<!DEBUG_INFO_SMARTCAST{NI}!>s<!><!UNSAFE_CALL{OI}!>.<!>length
}
fun test4() {
val s: String? = null;
assert(s!!.isEmpty())
s<!NI;UNNECESSARY_SAFE_CALL!>?.<!>length
s<!UNNECESSARY_SAFE_CALL{NI}!>?.<!>length
}
fun test5() {
val s: String? = null;
assert(s!!.isEmpty())
s<!NI;UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.length
s<!UNNECESSARY_NOT_NULL_ASSERTION{NI}!>!!<!>.length
}
fun test6() {
val s: String? = null;
assert(s!!.isEmpty())
<!NI;DEBUG_INFO_SMARTCAST!>s<!><!OI;UNSAFE_CALL!>.<!>length
<!DEBUG_INFO_SMARTCAST{NI}!>s<!><!UNSAFE_CALL{OI}!>.<!>length
}
@@ -28,4 +28,4 @@ fun foo() {
hm[""]
hm.remove("")
}
}
@@ -5,7 +5,7 @@ import java.util.*
fun foo() {
val al = ArrayList<String>()
al.size
al.<!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES!>contains<!>(<!OI;CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!>)
al.<!TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>contains<!>(<!CONSTANT_EXPECTED_TYPE_MISMATCH{OI}!>1<!>)
al.contains("")
al.remove("")
@@ -13,7 +13,7 @@ fun foo() {
val hs = HashSet<String>()
hs.size
hs.<!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES!>contains<!>(<!OI;CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!>)
hs.<!TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>contains<!>(<!CONSTANT_EXPECTED_TYPE_MISMATCH{OI}!>1<!>)
hs.contains("")
hs.remove("")
@@ -21,11 +21,11 @@ fun foo() {
val hm = HashMap<String, Int>()
hm.size
hm.<!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES!>containsKey<!>(<!OI;CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!>)
hm.<!TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>containsKey<!>(<!CONSTANT_EXPECTED_TYPE_MISMATCH{OI}!>1<!>)
hm.containsKey("")
<!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES!>hm[<!OI;CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!>]<!>
<!TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>hm[<!CONSTANT_EXPECTED_TYPE_MISMATCH{OI}!>1<!>]<!>
hm[""]
hm.remove("")
}
}
@@ -44,4 +44,4 @@ fun innerTryCatchInitializes() {
}
// Here x=I because outer try-catch either exited normally (x=I) or catched exception (x=I, with reassingment, though)
x.inc()
}
}
@@ -45,4 +45,4 @@ fun catchThrowIfNotCalled() {
// x *isn't* initialized here!
println(<!UNINITIALIZED_VARIABLE!>x<!>)
}
}
@@ -35,4 +35,4 @@ fun mixedReceiver(s: String?) {
<!UNSAFE_CALL!>length<!>
}
}
}
}
@@ -35,4 +35,4 @@ fun mixedReceiver(s: String?) {
<!UNSAFE_CALL!>length<!>
}
}
}
}
@@ -6,7 +6,7 @@ import kotlin.reflect.KProperty
fun testLambdaArgumentSmartCast(foo: Int?) {
val v = run {
if (foo != null)
return@run <!NI;DEBUG_INFO_SMARTCAST!>foo<!>
return@run <!DEBUG_INFO_SMARTCAST{NI}!>foo<!>
15
}
}
@@ -42,4 +42,4 @@ fun testDeMorgan2(x: Any?) {
<!DEBUG_INFO_SMARTCAST!>x<!>.length
<!DEBUG_INFO_SMARTCAST!>x<!>.inc()
}
}
}
@@ -54,4 +54,4 @@ fun testNotNullWhenNotNull (x: Int?) {
}
x<!UNSAFE_CALL!>.<!>dec()
}
}
@@ -78,4 +78,4 @@ fun falsefalse(x: Any?) {
x.<!UNRESOLVED_REFERENCE!>length<!>
x.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>inc<!>()
}
}
}
@@ -75,4 +75,4 @@ fun falsefalse(x: Any?) {
<!DEBUG_INFO_SMARTCAST!>x<!>.length
<!DEBUG_INFO_SMARTCAST!>x<!>.inc()
}
}
}
@@ -34,4 +34,4 @@ val test3 = generate {
interface A
object B : A
object C : A
object C : A
@@ -9,21 +9,21 @@ class Controller<T> {
fun <S> generate(g: suspend Controller<S>.() -> Unit): S = TODO()
val test1 = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val test1 = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>generate<!> {
apply {
yield(4)
}
}
val test2 = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val test2 = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>generate<!> {
yield(B)
apply {
yield(C)
}
}
val test3 = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
this.<!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>let<!> {
val test3 = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>generate<!> {
this.<!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>let<!> {
yield(B)
}
@@ -34,4 +34,4 @@ val test3 = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_N
interface A
object B : A
object C : A
object C : A
@@ -19,4 +19,4 @@ fun test() {
test0(<!TYPE_MISMATCH!>::bar<!>)
test1(::bar)
}
}
@@ -59,4 +59,4 @@ val test7 = generate {
val test8 = generate {
safeExtension()
}
}
@@ -29,7 +29,7 @@ val test1 = generate {
baseExtension()
}
val test2 = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val test2 = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>generate<!> {
baseExtension()
}
@@ -38,25 +38,25 @@ val test3 = generate {
outNullableAnyExtension()
}
val test4 = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val test4 = <!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>generate<!> {
outNullableAnyExtension()
}
val test5 = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val test5 = <!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>generate<!> {
yield(42)
outAnyExtension()
}
val test6 = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val test6 = <!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>generate<!> {
yield("bar")
invNullableAnyExtension()
}
val test7 = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
yield(<!NI;TYPE_MISMATCH!>"baz"<!>)
val test7 = <!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>generate<!> {
yield(<!TYPE_MISMATCH{NI}!>"baz"<!>)
genericExtension<Int>()
}
val test8 = generate {
safeExtension()
}
}
@@ -49,4 +49,4 @@ val test5 = generateSpecific {
val test6 = generateSpecific {
stringBase()
}
}
@@ -28,11 +28,11 @@ val test1 = generate {
yield("foo")
}
val test2 = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val test2 = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>generate<!> {
starBase()
}
val test3 = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val test3 = <!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>generate<!> {
yield("bar")
stringBase()
}
@@ -47,6 +47,6 @@ val test5 = generateSpecific {
stringBase()
}
val test6 = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generateSpecific<!> {
val test6 = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>generateSpecific<!> {
stringBase()
}
}
@@ -33,4 +33,4 @@ val test3 = generate {
val test4 = generate {
yield(3)
barReturnType()
}
}
@@ -25,12 +25,12 @@ val test2 = generate {
notYield(3)
}
val test3 = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val test3 = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>generate<!> {
yield(3)
yieldBarReturnType(3)
}
val test4 = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val test4 = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>generate<!> {
yield(3)
barReturnType()
}
}
@@ -17,11 +17,11 @@ val member = build {
add(42)
}
val memberWithoutAnn = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>wrongBuild<!> {
val memberWithoutAnn = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>wrongBuild<!> {
<!ILLEGAL_SUSPEND_FUNCTION_CALL!>add<!>(42)
}
val extension = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>build<!> {
val extension = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>build<!> {
extensionAdd("foo")
}
@@ -32,4 +32,4 @@ interface Inv<T> {
fun yield(element: T)
}
fun <K> materialize(): Inv<K> = TODO()
fun <K> materialize(): Inv<K> = TODO()
@@ -17,4 +17,4 @@ fun main() {
parse { it.toInt() }
serialize { it.toString() }
}
}
}
@@ -13,8 +13,8 @@ class TypeDefinition<KotlinType : Any> {
fun <KotlinType : Any> defineType(@BuilderInference definition: TypeDefinition<KotlinType>.() -> Unit): Unit = TODO()
fun main() {
<!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>defineType<!> {
<!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>defineType<!> {
parse { it.toInt() }
serialize { <!OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>it<!>.<!OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>toString<!>() }
serialize { <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE{OI}!>it<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE{OI}!>toString<!>() }
}
}
}
@@ -4,6 +4,6 @@ fun main() {
sequence {
val list: List<String>? = null
val outputList = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.collections.List<kotlin.String>")!>list ?: listOf()<!>
yieldAll(outputList)
<!NONE_APPLICABLE!>yieldAll<!>(outputList)
}
}
@@ -21,4 +21,4 @@ val test1 = generate {
yieldGenerate {
yield(4)
}
}
}
@@ -18,7 +18,7 @@ suspend fun <S> GenericController<List<S>>.yieldGenerate(g: suspend GenericContr
val test1 = generate {
// TODO: KT-15185
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_PARAMETER_CONSTRAINT_ERROR, OI;TYPE_MISMATCH!>yieldGenerate<!> {
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_PARAMETER_CONSTRAINT_ERROR{OI}, TYPE_MISMATCH{OI}!>yieldGenerate<!> {
yield(4)
}
}
}
@@ -24,11 +24,11 @@ val member = build {
add(42)
}
val memberWithoutAnn = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>wrongBuild<!> {
val memberWithoutAnn = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>wrongBuild<!> {
add(42)
}
val extension = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>build<!> {
val extension = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>build<!> {
extensionAdd("foo")
}
@@ -21,4 +21,4 @@ val test1 = generate {
val test2: Int = generate {
yield(A())
}
}
@@ -15,10 +15,10 @@ fun <S> generate(@BuilderInference g: suspend Controller<S>.() -> Unit): S = TOD
class A
val test1 = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_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 = <!NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>generate {
yield(<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>A()<!>)
}<!>
val test2: Int = <!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}!>generate {
yield(<!TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>A()<!>)
}<!>
@@ -10,4 +10,4 @@ fun <S : Number> generate(g: suspend Controller<S>.() -> Unit): S = TODO()
val test = generate {
<!INAPPLICABLE_CANDIDATE!>yield<!>("foo")
}
}
@@ -8,6 +8,6 @@ class Controller<T : Number> {
fun <S : Number> generate(g: suspend Controller<S>.() -> Unit): S = TODO()
val test = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val test = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>generate<!> {
yield("foo")
}
}
@@ -30,4 +30,4 @@ val extension = generate {
val safeExtension = generate {
safeExtensionYield("foo")
}
}
@@ -24,10 +24,10 @@ val normal = generate {
yield(42)
}
val extension = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val extension = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>generate<!> {
extensionYield("foo")
}
val safeExtension = generate {
safeExtensionYield("foo")
}
}
@@ -8,7 +8,7 @@ class GenericController<T> {
fun <S> generate(g: suspend GenericController<S>.(S) -> Unit): S = TODO()
val test1 = <!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val test1 = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>generate<!> {
yield(4)
}
@@ -16,4 +16,4 @@ suspend fun fib(n: Long) =
n < 2 -> n
else -> fib(n - 1).<!UNRESOLVED_REFERENCE!>await<!>() <!AMBIGUITY!>+<!> fib(n - 2).<!UNRESOLVED_REFERENCE!>await<!>()
}
}
}
@@ -14,6 +14,6 @@ suspend fun fib(n: Long) =
async {
when {
n < 2 -> n
else -> <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!><!DEBUG_INFO_MISSING_UNRESOLVED!>fib<!>(<!DEBUG_INFO_MISSING_UNRESOLVED!>n<!> <!DEBUG_INFO_MISSING_UNRESOLVED!>-<!> 1)<!>.<!NI;DEBUG_INFO_MISSING_UNRESOLVED, OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>await<!>() <!NI;DEBUG_INFO_MISSING_UNRESOLVED, OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>+<!> fib(n - 2).<!NI;DEBUG_INFO_MISSING_UNRESOLVED, OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>await<!>()
else -> <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!><!DEBUG_INFO_MISSING_UNRESOLVED!>fib<!>(<!DEBUG_INFO_MISSING_UNRESOLVED!>n<!> <!DEBUG_INFO_MISSING_UNRESOLVED!>-<!> 1)<!>.<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE{OI}, DEBUG_INFO_MISSING_UNRESOLVED{NI}!>await<!>() <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE{OI}, DEBUG_INFO_MISSING_UNRESOLVED{NI}!>+<!> fib(n - 2).<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE{OI}, DEBUG_INFO_MISSING_UNRESOLVED{NI}!>await<!>()
}
}
}
@@ -21,7 +21,7 @@ fun foo() {
builder { 1 }
val x = { 1 }
builder(<!NI;UNSUPPORTED_FEATURE, OI;TYPE_MISMATCH!>x<!>)
builder(<!TYPE_MISMATCH{OI}, UNSUPPORTED_FEATURE{NI}!>x<!>)
builder({1} <!UNCHECKED_CAST!>as (suspend () -> Int)<!>)
var i: Int = 1
@@ -29,10 +29,10 @@ fun foo() {
i = genericBuilder { 1 }
genericBuilder { 1 }
genericBuilder<Int> { 1 }
genericBuilder<Int> { <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>""<!> }
genericBuilder<Int> { <!TYPE_MISMATCH{NI}, TYPE_MISMATCH!>""<!> }
val y = { 1 }
<!OI;TYPE_INFERENCE_PARAMETER_CONSTRAINT_ERROR!>genericBuilder<!>(<!NI;UNSUPPORTED_FEATURE, OI;TYPE_MISMATCH!>y<!>)
<!TYPE_INFERENCE_PARAMETER_CONSTRAINT_ERROR{OI}!>genericBuilder<!>(<!TYPE_MISMATCH{OI}, UNSUPPORTED_FEATURE{NI}!>y<!>)
unitBuilder {}
unitBuilder { <!UNUSED_EXPRESSION!>1<!> }
@@ -44,7 +44,7 @@ fun foo() {
val s: String = manyArgumentsBuilder({}, { "" }) { 1 }
manyArgumentsBuilder<String>({}, { "" }, { 1 })
manyArgumentsBuilder<String>({}, { <!CONSTANT_EXPECTED_TYPE_MISMATCH, NI;CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!> }, { 2 })
manyArgumentsBuilder<String>({}, { <!CONSTANT_EXPECTED_TYPE_MISMATCH, CONSTANT_EXPECTED_TYPE_MISMATCH{NI}!>1<!> }, { 2 })
severalParamsInLambda { <!NAME_SHADOWING!>x<!>, <!NAME_SHADOWING!>y<!> ->
x checkType { _<String>() }
@@ -19,7 +19,7 @@ class Controller {
suspend fun yieldString(value: String) = suspendCoroutineUninterceptedOrReturn<Int> {
it.resume(1)
it checkType { _<Continuation<Int>>() }
it.<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>resume<!>(<!NI;TYPE_MISMATCH!>""<!>)
it.<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>resume<!>(<!TYPE_MISMATCH{NI}!>""<!>)
// We can return anything here, 'suspendCoroutineUninterceptedOrReturn' is not very type-safe
// Also we can call resume and then return the value too, but it's still just our problem
@@ -20,7 +20,7 @@ class Controller {
suspend fun yieldString(value: String) = suspendCoroutineUninterceptedOrReturn<Int> {
it.resume(1)
it checkType { _<Continuation<Int>>() }
it.<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>resume<!>(<!NI;TYPE_MISMATCH!>""<!>)
it.<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>resume<!>(<!TYPE_MISMATCH{NI}!>""<!>)
// We can return anything here, 'suspendCoroutineUninterceptedOrReturn' is not very type-safe
// Also we can call resume and then return the value too, but it's still just our problem
@@ -36,7 +36,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;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><Unit>() }
severalParams("", 89, <!TOO_MANY_ARGUMENTS!>6.9<!>) checkType { <!TYPE_MISMATCH{OI}, UNRESOLVED_REFERENCE_WRONG_RECEIVER{NI}!>_<!><Unit>() }
"".stringReceiver(1)
Any().anyReceiver(1)
@@ -1,4 +1,4 @@
// JAVAC_SKIP
// SKIP_JAVAC
typealias Test1 = <!UNRESOLVED_REFERENCE!>SuspendFunction0<Unit><!>
typealias Test2 = <!UNRESOLVED_REFERENCE!>kotlin.SuspendFunction0<Unit><!>
typealias Test3 = kotlin.coroutines.SuspendFunction0<Unit>
typealias Test3 = kotlin.coroutines.SuspendFunction0<Unit>
@@ -1,4 +1,4 @@
// JAVAC_SKIP
// SKIP_JAVAC
typealias Test1 = <!UNRESOLVED_REFERENCE!>SuspendFunction0<!><Unit>
typealias Test2 = kotlin.<!UNRESOLVED_REFERENCE!>SuspendFunction0<!><Unit>
typealias Test3 = kotlin.coroutines.SuspendFunction0<Unit>
typealias Test3 = kotlin.coroutines.SuspendFunction0<Unit>
@@ -37,7 +37,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;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, OI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><Unit>() }
severalParams("", 89, <!TOO_MANY_ARGUMENTS!>this <!CAST_NEVER_SUCCEEDS!>as<!> Continuation<Double><!>) checkType { <!NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, OI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><Unit>() }
severalParams("", 89, <!TOO_MANY_ARGUMENTS!>6.9<!>) checkType { <!DEBUG_INFO_UNRESOLVED_WITH_TARGET{OI}, UNRESOLVED_REFERENCE_WRONG_RECEIVER{NI}!>_<!><Unit>() }
severalParams("", 89, <!TOO_MANY_ARGUMENTS!>this <!CAST_NEVER_SUCCEEDS!>as<!> Continuation<Double><!>) checkType { <!DEBUG_INFO_UNRESOLVED_WITH_TARGET{OI}, UNRESOLVED_REFERENCE_WRONG_RECEIVER{NI}!>_<!><Unit>() }
}
}
@@ -8,10 +8,10 @@ fun <T> genericBuilder(c: suspend () -> T): T = null!!
fun foo() {
var result = ""
genericBuilder<String> {
<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>try {
<!TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>try {
await("")
} catch(e: Exception) {
<!OI;EXPECTED_TYPE_MISMATCH!>result = "fail"<!>
<!EXPECTED_TYPE_MISMATCH{OI}!>result = "fail"<!>
}<!>
}
}
@@ -16,4 +16,4 @@ public class P {
fun foo(c: P): MutableList<Int> {
// Error should be here: see KT-8168 Typechecker fails for platform collection type
return c.getList() ?: listOf()
}
}
@@ -15,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 <!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>c.getList() ?: <!OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH, OI;TYPE_MISMATCH!>listOf()<!><!>
}
return <!TYPE_MISMATCH{NI}, TYPE_MISMATCH{NI}!>c.getList() ?: <!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{OI}!>listOf()<!><!>
}
@@ -12,10 +12,10 @@ package api {
}
}
// -- Module: <usage> --
package
package usage {
public fun use(): kotlin.Unit
}
@@ -12,10 +12,10 @@ package api {
}
}
// -- Module: <usage> --
package
package usage {
public fun use(): kotlin.Unit
}
@@ -20,17 +20,17 @@ fun takeString(s: String) {}
fun takeInt(s: Int) {}
fun test_1() {
val x = create { "" }
val x = <!AMBIGUITY!>create<!> { "" }
takeString(x)
}
fun test_2() {
val x = create { 1 }
val x = <!AMBIGUITY!>create<!> { 1 }
takeInt(x)
}
fun test_3() {
val x = create { 1.0 }
val x = <!AMBIGUITY!>create<!> { 1.0 }
}
@OverloadResolutionByLambdaReturnType
@@ -38,11 +38,11 @@ fun <K> create(x: K, f: (K) -> Int): Int = 1
fun <T> create(x: T, f: (T) -> String): String = ""
fun test_4() {
val x = create("") { "" }
val x = <!AMBIGUITY!>create<!>("") { "" }
takeString(x)
}
fun test_5() {
val x = create("") { 1 }
val x = <!AMBIGUITY!>create<!>("") { 1 }
takeInt(x)
}
@@ -45,4 +45,4 @@ fun test_4() {
fun test_5() {
val x = <!OVERLOAD_RESOLUTION_AMBIGUITY!>create<!>("") { 1 }
takeInt(<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>x<!>)
}
}
@@ -31,4 +31,4 @@ fun test3(word: String) =
else {
System.out?.println(word) // Unit?
}
}
}
@@ -6,20 +6,20 @@ val smallWords = hashSetOf<String>()
fun test1(word: String) =
run {
if (word.length > 4) {
<!OI;IMPLICIT_CAST_TO_ANY!>longWords++<!>
<!IMPLICIT_CAST_TO_ANY{OI}!>longWords++<!>
}
else {
<!OI;IMPLICIT_CAST_TO_ANY!>smallWords.add(word)<!>
<!IMPLICIT_CAST_TO_ANY{OI}!>smallWords.add(word)<!>
}
}
fun test2(word: String) =
run {
if (word.length > 4) {
<!INVALID_IF_AS_EXPRESSION!>if<!> (word.startsWith("a")) <!OI;IMPLICIT_CAST_TO_ANY!>longWords++<!>
<!INVALID_IF_AS_EXPRESSION!>if<!> (word.startsWith("a")) <!IMPLICIT_CAST_TO_ANY{OI}!>longWords++<!>
}
else {
<!OI;IMPLICIT_CAST_TO_ANY!>smallWords.add(word)<!>
<!IMPLICIT_CAST_TO_ANY{OI}!>smallWords.add(word)<!>
}
}
@@ -31,4 +31,4 @@ fun test3(word: String) =
else {
System.out?.println(word) // Unit?
}
}
}
@@ -9,4 +9,4 @@ fun test1(l: List<Number>) {
val i: Int = l.firstTyped()
val s: String = l.firstTyped()
}
}
@@ -8,5 +8,5 @@ fun test1(l: List<Number>) {
val i: Int = l.firstTyped()
val s: String = l.<!OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>firstTyped()<!>
}
val s: String = l.<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}!>firstTyped()<!>
}
@@ -14,4 +14,4 @@ fun test() {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Int?")!>r2<!>
map.getOrDefault_Exact("y", <!TYPE_MISMATCH, TYPE_MISMATCH!>"string"<!>)
}
}
@@ -18,6 +18,6 @@ fun <@kotlin.internal.OnlyInputTypes T : Base> fooB(a: T, b: T) {}
fun usage(x: CX, y: CY) {
<!TYPE_INFERENCE_ONLY_INPUT_TYPES!>foo<!>(x, y) // expected err, got err
<!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES!>fooA<!>(x, y) // expected err, got ok
<!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES!>fooB<!>(x, y) // expected err, got ok
}
<!TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>fooA<!>(x, y) // expected err, got ok
<!TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>fooB<!>(x, y) // expected err, got ok
}
@@ -29,4 +29,4 @@ fun test_5(map: Map<B, Int>, a: A) {
fun test_6(map: Map<A, Int>, b: B) {
map.get(b)
}
}
@@ -4,7 +4,7 @@
// ISSUE: KT-29307
fun test_1(map: Map<String, String>) {
val x = <!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES!>map[<!OI;CONSTANT_EXPECTED_TYPE_MISMATCH!>42<!>]<!> // OK
val x = <!TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>map[<!CONSTANT_EXPECTED_TYPE_MISMATCH{OI}!>42<!>]<!> // OK
}
open class A
@@ -12,7 +12,7 @@ open class A
class B : A()
fun test_2(map: Map<A, String>) {
val x = <!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES!>map[<!OI;CONSTANT_EXPECTED_TYPE_MISMATCH!>42<!>]<!>
val x = <!TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>map[<!CONSTANT_EXPECTED_TYPE_MISMATCH{OI}!>42<!>]<!>
}
fun test_3(m: Map<*, String>) {
@@ -29,4 +29,4 @@ fun test_5(map: Map<B, Int>, a: A) {
fun test_6(map: Map<A, Int>, b: B) {
map.get(b)
}
}
@@ -11,6 +11,6 @@ public fun <T> Iterable<T>.contains1(element: @kotlin.internal.NoInfer T): Boole
fun test() {
val a: Boolean = listOf(1).<!OI;TYPE_INFERENCE_INCORPORATION_ERROR!>contains1<!>(<!TYPE_MISMATCH!>""<!>)
val a: Boolean = listOf(1).<!TYPE_INFERENCE_INCORPORATION_ERROR{OI}!>contains1<!>(<!TYPE_MISMATCH!>""<!>)
val b: Boolean = listOf(1).contains1(1)
}
}
@@ -30,4 +30,4 @@ fun <T> assertEquals1(e1: T, e2: @kotlin.internal.NoInfer T): Boolean = true
fun test(s: String) {
assertEquals1(s, 11)
}
}
@@ -11,23 +11,23 @@ fun <T> @kotlin.internal.NoInfer T.test2(t1: T): T = t1
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<!>("")
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>test3<!>("")
<!TYPE_INFERENCE_INCORPORATION_ERROR{OI}!>test1<!>(1, <!TYPE_MISMATCH!>"312"<!>)
<!TYPE_MISMATCH{OI}!>1<!>.<!TYPE_INFERENCE_INCORPORATION_ERROR{OI}!>test2<!>("")
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>test3<!>("")
}
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
fun <T> List<T>.contains1(e: @kotlin.internal.NoInfer T): Boolean = true
fun test(i: Int?, a: Any, l: List<Int>) {
l.<!OI;TYPE_INFERENCE_INCORPORATION_ERROR!>contains1<!>(<!TYPE_MISMATCH!>a<!>)
l.<!OI;TYPE_INFERENCE_INCORPORATION_ERROR!>contains1<!>(<!TYPE_MISMATCH!>""<!>)
l.<!OI;TYPE_INFERENCE_INCORPORATION_ERROR!>contains1<!>(<!TYPE_MISMATCH!>i<!>)
l.<!TYPE_INFERENCE_INCORPORATION_ERROR{OI}!>contains1<!>(<!TYPE_MISMATCH!>a<!>)
l.<!TYPE_INFERENCE_INCORPORATION_ERROR{OI}!>contains1<!>(<!TYPE_MISMATCH!>""<!>)
l.<!TYPE_INFERENCE_INCORPORATION_ERROR{OI}!>contains1<!>(<!TYPE_MISMATCH!>i<!>)
}
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
fun <T> assertEquals1(e1: T, e2: @kotlin.internal.NoInfer T): Boolean = true
fun test(s: String) {
<!OI;TYPE_INFERENCE_INCORPORATION_ERROR!>assertEquals1<!>(s, <!CONSTANT_EXPECTED_TYPE_MISMATCH!>11<!>)
}
<!TYPE_INFERENCE_INCORPORATION_ERROR{OI}!>assertEquals1<!>(s, <!CONSTANT_EXPECTED_TYPE_MISMATCH!>11<!>)
}
@@ -19,9 +19,9 @@ public fun <K, V> Map<K, V>.get1(key: Any?): Int = null!!
public fun <@kotlin.internal.OnlyInputTypes K, V> Map<out K, V>.get1(key: K): V? = null!!
fun test(map: Map<Int, String>) {
val a: Int = <!NI;TYPE_MISMATCH!>listOf(1).<!NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!><!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES!>contains1<!>("")<!><!>
val a: Int = <!TYPE_MISMATCH{NI}!>listOf(1).<!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}, TYPE_MISMATCH{NI}!><!TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>contains1<!>("")<!><!>
val b: Boolean = listOf(1).contains1(1)
val c: String? = map.<!TYPE_INFERENCE_ONLY_INPUT_TYPES!>get1<!>("")
val d: String? = map.get1(1)
}
}
@@ -22,12 +22,12 @@ fun test(
invOut.onlyOut(42)
invOut.onlyOut(1L)
invOut.<!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES, OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>onlyOutUB<!>(<!NI;TYPE_MISMATCH!>"str"<!>)
invStar.<!NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_INFERENCE_UPPER_BOUND_VIOLATED!>onlyOutUB<!>(0)
invOut.<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}, TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>onlyOutUB<!>(<!TYPE_MISMATCH{NI}!>"str"<!>)
invStar.<!TYPE_INFERENCE_UPPER_BOUND_VIOLATED{OI}, UNRESOLVED_REFERENCE_WRONG_RECEIVER{NI}!>onlyOutUB<!>(0)
invOut.onlyOutUB(42)
invOut.onlyOutUB(1L)
invIn.<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>onlyIn<!>(<!NI;TYPE_MISMATCH!>"str"<!>)
invIn.<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>onlyIn<!>(<!TYPE_MISMATCH{NI}!>"str"<!>)
invIn.onlyIn(42)
invIn.onlyIn(1L)
}
@@ -67,8 +67,8 @@ class Test5 {
set(value) {
if (value != null) {
val a = a
require(a != null && <!DEBUG_INFO_SMARTCAST!>value<!> in <!OI;DEBUG_INFO_SMARTCAST!>a<!>.children)
require(a != null && <!DEBUG_INFO_SMARTCAST!>value<!> in <!DEBUG_INFO_SMARTCAST{OI}!>a<!>.children)
}
field = value
}
}
}
@@ -18,7 +18,7 @@ class Out<out T>
// -------------------------------------------------------
fun test_0(x: Inv2<in Number, out Number>, list: List<Inv2<Any, Int>>) {
list.<!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES!>foo<!>(x)
list.<!TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>foo<!>(x)
}
// ------------------------- Inv -------------------------
@@ -36,11 +36,11 @@ fun test_3(x: Inv<Number>, list: List<Inv<Any>>) {
}
fun test_4(x: Inv<in Number>, list: List<Inv<Any>>) {
list.<!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES!>contains1<!>(x)
list.<!TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>contains1<!>(x)
}
fun test_5(x: Inv<in Number>, list: List<Inv<Number>>) {
list.<!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES!>contains1<!>(x)
list.<!TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>contains1<!>(x)
}
fun test_6(x: Inv<in Number>, list: List<Inv<Int>>) {
@@ -7,7 +7,7 @@
class Inv<T>
class Out<out T>
fun <T> foo(i: Inv<in T>, o: Out<T>) {
<!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES!>bar<!>(i, o)
<!TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>bar<!>(i, o)
}
fun <@kotlin.internal.OnlyInputTypes K> bar(r: Inv<out K>, o: Out<K>): K = TODO()
@@ -23,4 +23,4 @@ public fun <@kotlin.internal.OnlyInputTypes T> expect1(expected: T, block: () ->
fun test() {
expect1(2) { byteArrayOf(1, 2, 3).indexOf(3) }
}
}
@@ -5,4 +5,4 @@ internal class Z<K> {
inline fun compute(key: String, <!UNUSED_PARAMETER!>producer<!>: () -> String): String {
return map.getOrPut(key, ::<!UNSUPPORTED, USAGE_IS_NOT_INLINABLE!>producer<!>)
}
}
}
@@ -38,4 +38,4 @@ private fun <K, V : Any, M> containsNullable(
pairs,
{ option, key -> option.withParameterObjectNullable(createGetParameterObject(plant, key)) },
assertionCreator
)
)
@@ -8,4 +8,4 @@ fun <T> materialize(): T = null as T
fun main(x: List<String>?) {
foo(x?.map { Foo(it) } ?: listOf(materialize<Foo<Nothing>>())) {}
}
}
@@ -1,4 +1,4 @@
// !WITH_NEW_INFERENCE
// NI_EXPECTED_FILE
fun foo(first: Array<Any?>, second: Array<Any?>) = Pair(first.toCollection(<!NO_VALUE_FOR_PARAMETER!>)<!>, second.toCollection(<!NO_VALUE_FOR_PARAMETER!>)<!>)
fun foo(first: Array<Any?>, second: Array<Any?>) = Pair(first.toCollection(<!NO_VALUE_FOR_PARAMETER!>)<!>, second.toCollection(<!NO_VALUE_FOR_PARAMETER!>)<!>)
@@ -6,4 +6,4 @@ fun <T> foo(resources: List<T>) {
fun <T: Any> bar(resources: List<T>) {
resources.map { runCatching { it } }.mapNotNull { it.getOrNull() }
}
}
@@ -1,9 +1,9 @@
// !WITH_NEW_INFERENCE
fun <T> foo(resources: List<T>) {
resources.map { runCatching { it } }.<!OI;TYPE_INFERENCE_UPPER_BOUND_VIOLATED!>mapNotNull<!> { it.getOrNull() }
resources.map { runCatching { it } }.<!TYPE_INFERENCE_UPPER_BOUND_VIOLATED{OI}!>mapNotNull<!> { it.getOrNull() }
}
fun <T: Any> bar(resources: List<T>) {
resources.map { runCatching { it } }.mapNotNull { it.getOrNull() }
}
}
@@ -1,4 +1,4 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER UNUSED_VARIABLE -UNUSED_EXPRESSION
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -UNUSED_EXPRESSION
import kotlin.reflect.KClass
fun <T : PsiElement> select(vararg classes: KClass<out T>): T? {
@@ -1,4 +1,4 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER UNUSED_VARIABLE -UNUSED_EXPRESSION
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -UNUSED_EXPRESSION
import kotlin.reflect.KClass
fun <T : PsiElement> select(vararg classes: KClass<out T>): T? {
@@ -29,8 +29,8 @@ fun main() {
"" in (hm as Map<String, Int>)
"" !in (hm as Map<String, Int>)
1 <!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES, OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>in<!> (hm as Map<String, Int>)
1 <!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES, OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>!in<!> (hm as Map<String, Int>)
1 <!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}, TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>in<!> (hm as Map<String, Int>)
1 <!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}, TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>!in<!> (hm as Map<String, Int>)
val a = A()
"" <!CONCURRENT_HASH_MAP_CONTAINS_OPERATOR!>in<!> a
@@ -45,8 +45,8 @@ fun main() {
"" in (a as Map<String, Int>)
"" !in (a as Map<String, Int>)
1 <!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES, OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>in<!> (a as Map<String, Int>)
1 <!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES, OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>!in<!> (a as Map<String, Int>)
1 <!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}, TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>in<!> (a as Map<String, Int>)
1 <!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}, TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>!in<!> (a as Map<String, Int>)
val b = B()
"" <!CONCURRENT_HASH_MAP_CONTAINS_OPERATOR!>in<!> b
@@ -59,8 +59,8 @@ fun main() {
"" in (b as Map<String, Int>)
"" !in (b as Map<String, Int>)
1 <!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES, OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>in<!> (b as Map<String, Int>)
1 <!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES, OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>!in<!> (b as Map<String, Int>)
1 <!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}, TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>in<!> (b as Map<String, Int>)
1 <!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}, TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>!in<!> (b as Map<String, Int>)
// Actually, we could've allow calls here because the owner explicitly declared as operator, but semantics is still weird
val c = C()
@@ -74,7 +74,7 @@ fun main() {
"" in (c as Map<String, Int>)
"" !in (c as Map<String, Int>)
1 <!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES, OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>in<!> (c as Map<String, Int>)
1 <!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES, OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>!in<!> (c as Map<String, Int>)
1 <!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}, TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>in<!> (c as Map<String, Int>)
1 <!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}, TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>!in<!> (c as Map<String, Int>)
}
@@ -29,8 +29,8 @@ fun main() {
"" in (hm as Map<String, Int>)
"" !in (hm as Map<String, Int>)
1 <!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES, OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>in<!> (hm as Map<String, Int>)
1 <!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES, OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>!in<!> (hm as Map<String, Int>)
1 <!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}, TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>in<!> (hm as Map<String, Int>)
1 <!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}, TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>!in<!> (hm as Map<String, Int>)
val a = A()
"" <!CONCURRENT_HASH_MAP_CONTAINS_OPERATOR_ERROR!>in<!> a
@@ -45,8 +45,8 @@ fun main() {
"" in (a as Map<String, Int>)
"" !in (a as Map<String, Int>)
1 <!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES, OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>in<!> (a as Map<String, Int>)
1 <!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES, OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>!in<!> (a as Map<String, Int>)
1 <!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}, TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>in<!> (a as Map<String, Int>)
1 <!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}, TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>!in<!> (a as Map<String, Int>)
val b = B()
"" <!CONCURRENT_HASH_MAP_CONTAINS_OPERATOR_ERROR!>in<!> b
@@ -59,8 +59,8 @@ fun main() {
"" in (b as Map<String, Int>)
"" !in (b as Map<String, Int>)
1 <!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES, OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>in<!> (b as Map<String, Int>)
1 <!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES, OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>!in<!> (b as Map<String, Int>)
1 <!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}, TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>in<!> (b as Map<String, Int>)
1 <!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}, TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>!in<!> (b as Map<String, Int>)
// Actually, we could've allow calls here because the owner explicitly declared as operator, but semantics is still weird
val c = C()
@@ -74,7 +74,7 @@ fun main() {
"" in (c as Map<String, Int>)
"" !in (c as Map<String, Int>)
1 <!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES, OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>in<!> (c as Map<String, Int>)
1 <!NI;TYPE_INFERENCE_ONLY_INPUT_TYPES, OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>!in<!> (c as Map<String, Int>)
1 <!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}, TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>in<!> (c as Map<String, Int>)
1 <!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}, TYPE_INFERENCE_ONLY_INPUT_TYPES{NI}!>!in<!> (c as Map<String, Int>)
}
@@ -1,17 +0,0 @@
Failures detected in FirImplicitTypeBodyResolveTransformerAdapter, file: /My.kt
Cause: java.lang.RuntimeException: While resolving call Q|Properties|.R?C|/Properties.calcVal|(<L> = calcVal@fun <implicit>.<anonymous>(): <implicit> {
lval y: <implicit> = x#.plus#(IntegerLiteral(1))
when () {
CMP(>, y#.compareTo#(IntegerLiteral(0))) -> {
MyBase#.derivedWrapper#()
}
CMP(<, x#.compareTo#(IntegerLiteral(0))) -> {
MyBase#.exoticWrapper#(x#)
}
else -> {
throw java#.lang#.NullPointerException#(String())
}
}
}
)
@@ -1,76 +0,0 @@
// !WITH_NEW_INFERENCE
// NI_EXPECTED_FILE
// JAVAC_EXPECTED_FILE
// FILE: Base.java
public interface Base {}
// FILE: Other.java
public interface Other {}
// FILE: Derived.java
public final class Derived<T> implements Base, Other {}
// FILE: Exotic.java
public final class Exotic implements Base, Other {
int x;
Exotic(int x) {
this.x = x;
}
}
// FILE: Properties.java
import kotlin.jvm.functions.Function0;
class Val<T> {
Function0<T> initializer;
Val(Function0<T> initializer) {
this.initializer = initializer;
}
T getValue(Object instance, Object metadata) {
return initializer.invoke();
}
}
class Properties {
static <T> Val<T> calcVal(Function0<T> initializer) {
return new Val<T>(initializer);
}
}
// FILE: My.kt
open class Wrapper<out T: Base>(val v: T)
class DerivedWrapper(v: Derived<*>): Wrapper<Derived<*>>(v)
class ExoticWrapper(v: Exotic): Wrapper<Exotic>(v)
object MyBase {
fun derived() = Derived<String>()
fun exotic(x: Int) = Exotic(x)
fun derivedWrapper() = DerivedWrapper(derived())
fun exoticWrapper(x: Int) = ExoticWrapper(exotic(x))
}
class My(val x: Int) {
val wrapper/*: Wrapper<*>*/ by Properties.calcVal {
val y = x + 1
when {
y > 0 -> MyBase.derivedWrapper()
x < 0 -> MyBase.exoticWrapper(x)
else -> throw java.lang.NullPointerException("")
}
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !WITH_NEW_INFERENCE
// NI_EXPECTED_FILE
// JAVAC_EXPECTED_FILE
@@ -28,7 +29,17 @@ public final class Exotic implements Base, Other {
import kotlin.jvm.functions.Function0;
class Val<T> {
public class Properties {
static <T> Val<T> calcVal(Function0<T> initializer) {
return new Val<T>(initializer);
}
}
// FILE: Val.java
import kotlin.jvm.functions.Function0;
public class Val<T> {
Function0<T> initializer;
@@ -41,12 +52,6 @@ class Val<T> {
}
}
class Properties {
static <T> Val<T> calcVal(Function0<T> initializer) {
return new Val<T>(initializer);
}
}
// FILE: My.kt
open class Wrapper<out T: Base>(val v: T)
@@ -63,8 +63,8 @@ public interface Other {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open class Properties {
public/*package*/ constructor Properties()
public open class Properties {
public constructor Properties()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
@@ -73,6 +73,15 @@ public/*package*/ open class Properties {
public/*package*/ open fun </*0*/ T : kotlin.Any!> calcVal(/*0*/ initializer: (() -> T!)!): Val<T!>!
}
public open class Val</*0*/ T : kotlin.Any!> {
public/*package*/ constructor Val</*0*/ T : kotlin.Any!>(/*0*/ initializer: (() -> T!)!)
public/*package*/ final var initializer: (() -> T!)!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public/*package*/ open operator fun getValue(/*0*/ instance: kotlin.Any!, /*1*/ metadata: kotlin.Any!): T!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class Wrapper</*0*/ out T : Base> {
public constructor Wrapper</*0*/ out T : Base>(/*0*/ v: T)
public final val v: T
@@ -80,3 +89,4 @@ public open class Wrapper</*0*/ out T : Base> {
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -3,8 +3,8 @@ package
public expect fun foo(/*0*/ x: kotlin.String, /*1*/ y: kotlin.Int = ...): kotlin.Unit
// -- Module: <m2-jvm> --
package
@kotlin.jvm.JvmOverloads public actual fun foo(/*0*/ x: kotlin.String, /*1*/ y: kotlin.Int): kotlin.Unit
@@ -15,9 +15,9 @@ fun hashMapTest() {
x.put(<!TYPE_MISMATCH!>bar()<!>, 1)
x.put("", 1)
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>x[<!NI;NULL_FOR_NONNULL_TYPE!>null<!>]<!> = 1
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>x[<!NI;TYPE_MISMATCH!>bar()<!>]<!> = 1
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>x[""]<!> = <!NI;TYPE_MISMATCH!>nullableInt<!>
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>x[<!NULL_FOR_NONNULL_TYPE{NI}!>null<!>]<!> = 1
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>x[<!TYPE_MISMATCH{NI}!>bar()<!>]<!> = 1
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>x[""]<!> = <!TYPE_MISMATCH{NI}!>nullableInt<!>
x[""] = 1
val b1: MutableMap<String, Int?> = <!TYPE_MISMATCH!>x<!>
@@ -39,9 +39,9 @@ fun treeMapTest() {
x.put(<!TYPE_MISMATCH!>bar()<!>, 1)
x.put("", 1)
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>x[<!NI;NULL_FOR_NONNULL_TYPE!>null<!>]<!> = 1
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>x[<!NI;TYPE_MISMATCH!>bar()<!>]<!> = 1
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>x[""]<!> = <!NI;TYPE_MISMATCH!>nullableInt<!>
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>x[<!NULL_FOR_NONNULL_TYPE{NI}!>null<!>]<!> = 1
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>x[<!TYPE_MISMATCH{NI}!>bar()<!>]<!> = 1
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>x[""]<!> = <!TYPE_MISMATCH{NI}!>nullableInt<!>
x[""] = 1
val b1: MutableMap<String, Int?> = <!TYPE_MISMATCH!>x<!>
@@ -63,9 +63,9 @@ fun concurrentHashMapTest() {
x.put(<!TYPE_MISMATCH!>bar()<!>, 1)
x.put("", 1)
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>x[<!NI;NULL_FOR_NONNULL_TYPE!>null<!>]<!> = 1
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>x[<!NI;TYPE_MISMATCH!>bar()<!>]<!> = 1
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>x[""]<!> = <!NI;TYPE_MISMATCH!>nullableInt<!>
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>x[<!NULL_FOR_NONNULL_TYPE{NI}!>null<!>]<!> = 1
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>x[<!TYPE_MISMATCH{NI}!>bar()<!>]<!> = 1
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>x[""]<!> = <!TYPE_MISMATCH{NI}!>nullableInt<!>
x[""] = 1
val b1: MutableMap<String, Int?> = <!TYPE_MISMATCH!>x<!>
@@ -16,7 +16,7 @@ fun hashMapTest() {
x[null] = 1
x[bar()] = 1
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>x[""]<!> = <!NI;TYPE_MISMATCH!>nullableInt<!>
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>x[""]<!> = <!TYPE_MISMATCH{NI}!>nullableInt<!>
x[""] = 1
val b1: MutableMap<String?, Int?> = <!TYPE_MISMATCH!>x<!>
@@ -41,7 +41,7 @@ fun treeMapTest() {
x[null] = 1
x[bar()] = 1
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>x[""]<!> = <!NI;TYPE_MISMATCH!>nullableInt<!>
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>x[""]<!> = <!TYPE_MISMATCH{NI}!>nullableInt<!>
x[""] = 1
val b1: MutableMap<String?, Int?> = <!TYPE_MISMATCH!>x<!>
@@ -14,8 +14,8 @@ fun hashMapTest() {
x.put(<!TYPE_MISMATCH!>bar()<!>, 1)
x.put("", 1)
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>x[<!NI;NULL_FOR_NONNULL_TYPE!>null<!>]<!> = 1
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>x[<!NI;TYPE_MISMATCH!>bar()<!>]<!> = 1
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>x[<!NULL_FOR_NONNULL_TYPE{NI}!>null<!>]<!> = 1
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>x[<!TYPE_MISMATCH{NI}!>bar()<!>]<!> = 1
x[""] = nullableInt
x[""] = 1
@@ -38,8 +38,8 @@ fun treeMapTest() {
x.put(<!TYPE_MISMATCH!>bar()<!>, 1)
x.put("", 1)
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>x[<!NI;NULL_FOR_NONNULL_TYPE!>null<!>]<!> = 1
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>x[<!NI;TYPE_MISMATCH!>bar()<!>]<!> = 1
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>x[<!NULL_FOR_NONNULL_TYPE{NI}!>null<!>]<!> = 1
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS{OI}!>x[<!TYPE_MISMATCH{NI}!>bar()<!>]<!> = 1
x[""] = nullableInt
x[""] = 1
@@ -1,5 +1,5 @@
// FIR_IDENTICAL
// FULL_JDK
// FULL_JDK
// Issue: KT-37497
import java.util.*
@@ -14,5 +14,5 @@ fun useJ(j: J) {
}
fun jj() {
useJ(<!TYPE_MISMATCH!>{<!NI;TYPE_MISMATCH!><!>}<!>)
useJ(<!TYPE_MISMATCH!>{<!TYPE_MISMATCH{NI}!><!>}<!>)
}
@@ -41,4 +41,4 @@ fun test2(a: A) {
forEach() checkType { _<String>() }
<!OVERLOAD_RESOLUTION_AMBIGUITY!>forEach<!>(1)
}
}
}
@@ -9,4 +9,4 @@ fun ff() {
val b = <!NO_COMPANION_OBJECT!>Test<!><!UNEXPECTED_SAFE_CALL!>?.<!>FOO
System.out.println(a + b)
<!NO_COMPANION_OBJECT!>System<!><!UNEXPECTED_SAFE_CALL!>?.<!>out.println(a + b)
}
}

Some files were not shown because too many files have changed in this diff Show More