Fix builder inference tests

This commit is contained in:
Victor Petukhov
2021-05-24 15:02:08 +03:00
parent be22078bd1
commit 758eb8f851
46 changed files with 1233 additions and 326 deletions
@@ -1,5 +1,6 @@
// !LANGUAGE: +UnrestrictedBuilderInference
// WITH_RUNTIME
// DONT_TARGET_EXACT_BACKEND: WASM
// FILE: main.kt
import kotlin.experimental.ExperimentalTypeInference
@@ -1,6 +1,8 @@
// !LANGUAGE: +UnrestrictedBuilderInference
// !DIAGNOSTICS: -UNUSED_PARAMETER -DEPRECATION -EXPERIMENTAL_IS_NOT_ENABLED -UNUSED_VARIABLE
// WITH_RUNTIME
// TARGET_BACKEND: JVM
// IGNORE_BACKEND_FIR: JVM_IR
// FILE: Test.java
@@ -1,5 +1,6 @@
// !LANGUAGE: +UnrestrictedBuilderInference
// WITH_RUNTIME
// DONT_TARGET_EXACT_BACKEND: WASM
// FILE: Test.java
@@ -1,6 +1,9 @@
// !LANGUAGE: +UnrestrictedBuilderInference
// !DIAGNOSTICS: -UNUSED_PARAMETER -DEPRECATION -EXPERIMENTAL_IS_NOT_ENABLED -UNUSED_VARIABLE
// WITH_RUNTIME
// TARGET_BACKEND: JVM
// IGNORE_BACKEND_FIR: JVM_IR
// DONT_TARGET_EXACT_BACKEND: WASM
// FILE: Test.java
@@ -1,6 +1,7 @@
// !LANGUAGE: +UnrestrictedBuilderInference
// !DIAGNOSTICS: -UNUSED_PARAMETER -DEPRECATION -EXPERIMENTAL_IS_NOT_ENABLED -UNUSED_VARIABLE
// WITH_RUNTIME
// DONT_TARGET_EXACT_BACKEND: WASM
// FILE: Test.java
@@ -1,6 +1,9 @@
// !LANGUAGE: +UnrestrictedBuilderInference
// !DIAGNOSTICS: -UNUSED_PARAMETER -DEPRECATION -EXPERIMENTAL_IS_NOT_ENABLED -UNUSED_VARIABLE
// WITH_RUNTIME
// TARGET_BACKEND: JVM
// IGNORE_BACKEND_FIR: JVM_IR
// DONT_TARGET_EXACT_BACKEND: WASM
// FILE: Test.java
@@ -1,5 +1,8 @@
// !LANGUAGE: +UnrestrictedBuilderInference
// WITH_RUNTIME
// TARGET_BACKEND: JVM
// IGNORE_BACKEND_FIR: JVM_IR
// DONT_TARGET_EXACT_BACKEND: WASM
// FILE: Test.java
@@ -1,6 +1,7 @@
// ISSUE: KT-41164
// WITH_RUNTIME
// IGNORE_BACKEND_FIR: JVM_IR
// DONT_TARGET_EXACT_BACKEND: WASM
import kotlin.experimental.ExperimentalTypeInference
@@ -1,5 +1,6 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -DEPRECATION -UNCHECKED_CAST -EXPERIMENTAL_IS_NOT_ENABLED -UNUSED_VARIABLE
// WITH_RUNTIME
// DONT_TARGET_EXACT_BACKEND: WASM
// FILE: main.kt
import kotlin.experimental.ExperimentalTypeInference
@@ -1,5 +1,6 @@
// !LANGUAGE: +NewInference
// WITH_RUNTIME
// DONT_TARGET_EXACT_BACKEND: WASM
// Issue: KT-36371
import kotlin.experimental.ExperimentalTypeInference
@@ -1,8 +1,9 @@
// !LANGUAGE: +UnrestrictedBuilderInference
// !DIAGNOSTICS: -DEPRECATION -EXPERIMENTAL_IS_NOT_ENABLED
// WITH_RUNTIME
// IGNORE_BACKEND_FIR: JVM_IR
// DONT_TARGET_EXACT_BACKEND: WASM
// FILE: main.kt
import kotlin.experimental.ExperimentalTypeInference
interface TestInterface<R> {
@@ -1,6 +1,8 @@
// !LANGUAGE: +UnrestrictedBuilderInference
// !DIAGNOSTICS: -DEPRECATION -EXPERIMENTAL_IS_NOT_ENABLED
// WITH_RUNTIME
// IGNORE_BACKEND_FIR: JVM_IR
// DONT_TARGET_EXACT_BACKEND: WASM
// FILE: main.kt
import kotlin.experimental.ExperimentalTypeInference
@@ -1,4 +1,5 @@
// WITH_RUNTIME
// DONT_TARGET_EXACT_BACKEND: WASM
import kotlin.experimental.ExperimentalTypeInference
@@ -1,6 +1,9 @@
// !LANGUAGE: +UnrestrictedBuilderInference
// WITH_RUNTIME
// SKIP_TXT
// DONT_TARGET_EXACT_BACKEND: WASM
// IGNORE_LIGHT_ANALYSIS
// IGNORE_BACKEND: JVM
import kotlin.experimental.ExperimentalTypeInference
@@ -1,6 +1,7 @@
// WITH_RUNTIME
// SKIP_TXT
// !DIAGNOSTICS: -CAST_NEVER_SUCCEEDS -UNCHECKED_CAST -UNUSED_PARAMETER -UNUSED_VARIABLE -EXPERIMENTAL_API_USAGE_ERROR -UNUSED_EXPRESSION
// DONT_TARGET_EXACT_BACKEND: WASM
import kotlin.experimental.ExperimentalTypeInference
@@ -1,47 +1,24 @@
// IGNORE_BACKEND_FIR: JVM_IR
// !LANGUAGE: +NewInference
// WITH_RUNTIME
// DONT_TARGET_EXACT_BACKEND: WASM
// !LANGUAGE: -StrictOnlyInputTypesChecks
import kotlin.experimental.ExperimentalTypeInference
fun <K> FlowCollector<K>.bar(): K = null as K
fun <K> FlowCollector<K>.foo(): K = null as K
fun bar2(): Int = 1
fun foo2(): Float = 1f
val bar4: Int
get() = 1
var foo4: Float
get() = 1f
set(value) {}
fun <T> materialize() = null as T
interface FlowCollector<in T> {}
@Suppress("EXPERIMENTAL_API_USAGE_ERROR")
fun <L> flow(@BuilderInference block: suspend FlowCollector<L>.() -> Unit) = Flow(block)
class Flow<out R>(private val block: suspend FlowCollector<R>.() -> Unit)
fun poll81(): Flow<String> {
return flow {
val inv = ::bar2 in setOf(::foo2)
inv
@OptIn(ExperimentalTypeInference::class)
fun <R> scopedFlow(@BuilderInference block: suspend CoroutineScope.(FlowCollector<R>) -> Unit): Flow<R> =
flow {
val collector = <!DEBUG_INFO_EXPRESSION_TYPE("")!>this<!>
flowScope { block(collector) }
}
}
fun poll83(): Flow<String> {
return flow {
val inv = ::bar4 in setOf(::foo4)
inv
}
}
@OptIn(ExperimentalTypeInference::class)
fun <T> flow(@BuilderInference block: suspend FlowCollector<T>.() -> Unit): Flow<T> = TODO()
fun box(): String {
poll81()
poll83()
return "OK"
}
@OptIn(ExperimentalTypeInference::class)
fun <R> flowScope(@BuilderInference block: suspend CoroutineScope.() -> R): R = TODO()
interface CoroutineScope
interface Flow<out T>
interface FlowCollector<in T>
@@ -1,6 +1,8 @@
// !LANGUAGE: +UnrestrictedBuilderInference
// WITH_RUNTIME
// !DIAGNOSTICS: -EXPERIMENTAL_API_USAGE_ERROR -CAST_NEVER_SUCCEEDS
// IGNORE_BACKEND_FIR: JVM_IR
// DONT_TARGET_EXACT_BACKEND: WASM
import kotlin.experimental.ExperimentalTypeInference