Fix tests in DiagnosticsTestWithStdLibGenerated with NI

This commit is contained in:
Dmitriy Novozhilov
2019-01-30 13:08:22 +03:00
parent 98810ba750
commit 0501a108c0
73 changed files with 507 additions and 218 deletions
@@ -1,5 +1,6 @@
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_ANONYMOUS_PARAMETER -UNUSED_VARIABLE
// !WITH_NEW_INFERENCE
// !WITH_NEW_INFERENCE
// NI_EXPECTED_FILE
class Controller<T> {
@@ -8,26 +9,26 @@ class Controller<T> {
fun <S> generate(g: suspend Controller<S>.() -> Unit): S = TODO()
val test1 = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val <!NI;IMPLICIT_NOTHING_PROPERTY_TYPE!>test1<!> = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
apply {
yield(4)
yield(<!NI;CONSTANT_EXPECTED_TYPE_MISMATCH!>4<!>)
}
}
val test2 = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
yield(B)
val <!NI;IMPLICIT_NOTHING_PROPERTY_TYPE!>test2<!> = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
yield(<!NI;TYPE_MISMATCH!>B<!>)
apply {
yield(C)
yield(<!NI;TYPE_MISMATCH!>C<!>)
}
}
val test3 = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val <!NI;IMPLICIT_NOTHING_PROPERTY_TYPE!>test3<!> = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
this.<!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>let<!> {
yield(B)
yield(<!NI;TYPE_MISMATCH!>B<!>)
}
apply {
yield(C)
yield(<!NI;TYPE_MISMATCH!>C<!>)
}
}
@@ -1,8 +1,8 @@
package
public val test1: kotlin.Int
public val test2: A
public val test3: A
public val test1: kotlin.Nothing
public val test2: kotlin.Nothing
public val test3: kotlin.Nothing
public fun </*0*/ S> generate(/*0*/ g: suspend Controller<S>.() -> kotlin.Unit): S
public interface A {
@@ -1,5 +1,7 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// !USE_EXPERIMENTAL: kotlin.Experimental
// !WITH_NEW_INFERENCE
// NI_EXPECTED_FILE
@file:UseExperimental(ExperimentalTypeInference::class)
@@ -27,7 +29,7 @@ val test1 = generate {
baseExtension()
}
val test2 = <!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val test2 = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
baseExtension()
}
@@ -36,21 +38,21 @@ val test3 = generate {
outNullableAnyExtension()
}
val test4 = <!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val test4 = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
outNullableAnyExtension()
}
val test5 = <!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val test5 = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
yield(42)
outAnyExtension()
}
val test6 = <!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val test6 = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
yield("bar")
invNullableAnyExtension()
}
val test7 = <!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val test7 = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
yield("baz")
genericExtension<Int>()
}
@@ -0,0 +1,30 @@
package
public val test1: kotlin.String
public val test2: kotlin.Any?
public val test3: kotlin.Int
public val test4: kotlin.Any?
public val test5: kotlin.Int
public val test6: kotlin.String
public val test7: kotlin.String
public val test8: kotlin.Any?
public fun </*0*/ S> generate(/*0*/ @kotlin.BuilderInference g: suspend Controller<S>.() -> kotlin.Unit): S
public fun Base.baseExtension(): kotlin.Unit
public fun </*0*/ S> Controller<S>.genericExtension(): kotlin.Unit
public fun Controller<kotlin.Any?>.invNullableAnyExtension(): kotlin.Unit
public fun Controller<out kotlin.Any>.outAnyExtension(): kotlin.Unit
public fun Controller<out kotlin.Any?>.outNullableAnyExtension(): kotlin.Unit
@kotlin.BuilderInference public fun Controller<kotlin.String>.safeExtension(): kotlin.Unit
public interface Base {
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
}
public interface Controller</*0*/ T> : Base {
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
public open suspend fun yield(/*0*/ t: T): kotlin.Unit
}
@@ -1,5 +1,7 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// !USE_EXPERIMENTAL: kotlin.Experimental
// !WITH_NEW_INFERENCE
// NI_EXPECTED_FILE
@file:UseExperimental(ExperimentalTypeInference::class)
@@ -26,11 +28,11 @@ val test1 = generate {
yield("foo")
}
val test2 = <!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val test2 = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
starBase()
}
val test3 = <!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val test3 = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
yield("bar")
stringBase()
}
@@ -45,6 +47,6 @@ val test5 = generateSpecific {
stringBase()
}
val test6 = <!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generateSpecific<!> {
val test6 = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generateSpecific<!> {
stringBase()
}
@@ -0,0 +1,32 @@
package
public val test1: kotlin.String
public val test2: kotlin.Any?
public val test3: kotlin.String
public val test4: kotlin.Int
public val test5: kotlin.Int
public val test6: kotlin.Any?
public fun </*0*/ S> generate(/*0*/ @kotlin.BuilderInference g: suspend Controller<S>.() -> kotlin.Unit): S
public fun </*0*/ S> generateSpecific(/*0*/ @kotlin.BuilderInference g: suspend SpecificController<S>.() -> kotlin.Unit): S
public fun Base<*>.starBase(): kotlin.Unit
public fun Base<kotlin.String>.stringBase(): kotlin.Unit
public interface Base</*0*/ K> {
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
}
public interface Controller</*0*/ T> : Base<T> {
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
public open suspend fun yield(/*0*/ t: T): kotlin.Unit
}
public interface SpecificController</*0*/ T> : Base<kotlin.String> {
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
public open suspend fun yield(/*0*/ t: T): kotlin.Unit
}
@@ -1,5 +1,7 @@
// !LANGUAGE: -ExperimentalBuilderInference
// !DIAGNOSTICS: -UNUSED_PARAMETER
// !WITH_NEW_INFERENCE
// NI_EXPECTED_FILE
class Builder<T> {
suspend fun add(t: T) {}
@@ -16,11 +18,11 @@ val member = build {
add(42)
}
val memberWithoutAnn = <!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>wrongBuild<!> {
<!ILLEGAL_SUSPEND_FUNCTION_CALL!>add<!>(42)
val memberWithoutAnn = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>wrongBuild<!> {
<!ILLEGAL_SUSPEND_FUNCTION_CALL!>add<!>(<!NI;CONSTANT_EXPECTED_TYPE_MISMATCH!>42<!>)
}
val extension = <!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>build<!> {
val extension = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>build<!> {
extensionAdd("foo")
}
@@ -0,0 +1,18 @@
package
public val extension: kotlin.collections.List<kotlin.Any?>
public val member: kotlin.collections.List<kotlin.Int>
public val memberWithoutAnn: kotlin.collections.List<kotlin.Nothing>
public val safeExtension: kotlin.collections.List<kotlin.String>
public fun </*0*/ S> build(/*0*/ g: suspend Builder<S>.() -> kotlin.Unit): kotlin.collections.List<S>
public fun </*0*/ S> wrongBuild(/*0*/ g: Builder<S>.() -> kotlin.Unit): kotlin.collections.List<S>
public fun </*0*/ S> Builder<S>.extensionAdd(/*0*/ s: S): kotlin.Unit
public suspend fun </*0*/ S> Builder<S>.safeExtensionAdd(/*0*/ s: S): kotlin.Unit
public final class Builder</*0*/ T> {
public constructor Builder</*0*/ T>()
public final suspend fun add(/*0*/ t: T): kotlin.Unit
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
}
@@ -13,7 +13,7 @@ class Problem<F>(){
fun createStateMachine(): StateMachine<F> = stateMachine {
val letter = getInputStub()
if (<!NI;USELESS_IS_CHECK!>letter is Any<!>)
if (letter is Any)
println("yes")
}
}
@@ -1,8 +1,8 @@
package
public val test1: kotlin.collections.List<kotlin.collections.List<kotlin.Int>>
public fun </*0*/ S> generate(/*0*/ g: suspend GenericController<S>.() -> kotlin.Unit): kotlin.collections.List<S>
public suspend fun </*0*/ S> GenericController<kotlin.collections.List<S>>.yieldGenerate(/*0*/ g: suspend GenericController<S>.() -> kotlin.Unit): kotlin.Unit
public val test1: kotlin.collections.List<kotlin.collections.List<kotlin.Any?>>
public fun </*0*/ S> generate(/*0*/ @kotlin.BuilderInference g: suspend GenericController<S>.() -> kotlin.Unit): kotlin.collections.List<S>
@kotlin.BuilderInference public suspend fun </*0*/ S> GenericController<kotlin.collections.List<S>>.yieldGenerate(/*0*/ g: suspend GenericController<S>.() -> kotlin.Unit): kotlin.Unit
public final class GenericController</*0*/ T> {
public constructor GenericController</*0*/ T>()
@@ -1,6 +1,7 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// !WITH_NEW_INFERENCE
// FILE: annotation.kt
// NI_EXPECTED_FILE
package kotlin
@@ -24,11 +25,11 @@ val member = build {
add(42)
}
val memberWithoutAnn = <!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>wrongBuild<!> {
add(42)
val memberWithoutAnn = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>wrongBuild<!> {
add(<!NI;CONSTANT_EXPECTED_TYPE_MISMATCH!>42<!>)
}
val extension = <!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>build<!> {
val extension = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>build<!> {
extensionAdd("foo")
}
@@ -0,0 +1,28 @@
package
public val extension: kotlin.collections.List<kotlin.Any?>
public val member: kotlin.collections.List<kotlin.Any?>
public val memberWithoutAnn: kotlin.collections.List<kotlin.Nothing>
public val safeExtension: kotlin.collections.List<kotlin.Any?>
public fun </*0*/ S> build(/*0*/ @kotlin.BuilderInference g: Builder<S>.() -> kotlin.Unit): kotlin.collections.List<S>
public fun </*0*/ S> wrongBuild(/*0*/ g: Builder<S>.() -> kotlin.Unit): kotlin.collections.List<S>
public fun </*0*/ S> Builder<S>.extensionAdd(/*0*/ s: S): kotlin.Unit
@kotlin.BuilderInference public fun </*0*/ S> Builder<S>.safeExtensionAdd(/*0*/ s: S): kotlin.Unit
public final class Builder</*0*/ T> {
public constructor Builder</*0*/ T>()
public final fun add(/*0*/ t: T): kotlin.Unit
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
}
package kotlin {
public final annotation class BuilderInference : kotlin.Annotation {
public constructor BuilderInference()
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
}
}
@@ -1,8 +1,8 @@
package
public val test1: [ERROR : Error type for ParseError-argument VALUE_ARGUMENT]
public val test1: kotlin.Any?
public val test2: kotlin.Int
public fun </*0*/ S> generate(/*0*/ g: suspend Controller<S>.() -> kotlin.Unit): S
public fun </*0*/ S> generate(/*0*/ @kotlin.BuilderInference g: suspend Controller<S>.() -> kotlin.Unit): S
public final class A {
public constructor A()
@@ -1,6 +1,6 @@
package
public val test: kotlin.String
public val test: kotlin.Number
public fun </*0*/ S : kotlin.Number> generate(/*0*/ g: suspend Controller<S>.() -> kotlin.Unit): S
public final class Controller</*0*/ T : kotlin.Number> {
@@ -1,4 +1,6 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// !WITH_NEW_INFERENCE
// NI_EXPECTED_FILE
// FILE: annotation.kt
@@ -23,7 +25,7 @@ val normal = generate {
yield(42)
}
val extension = <!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
val extension = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
extensionYield("foo")
}
@@ -0,0 +1,26 @@
package
public val extension: kotlin.collections.List<kotlin.String>
public val normal: kotlin.collections.List<kotlin.Int>
public val safeExtension: kotlin.collections.List<kotlin.String>
public fun </*0*/ S> generate(/*0*/ @kotlin.BuilderInference g: suspend GenericController<S>.() -> kotlin.Unit): kotlin.collections.List<S>
public suspend fun </*0*/ S> GenericController<S>.extensionYield(/*0*/ s: S): kotlin.Unit
@kotlin.BuilderInference public suspend fun </*0*/ S> GenericController<S>.safeExtensionYield(/*0*/ s: S): kotlin.Unit
public final class GenericController</*0*/ T> {
public constructor GenericController</*0*/ T>()
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
public final suspend fun yield(/*0*/ t: T): kotlin.Unit
}
package kotlin {
public final annotation class BuilderInference : kotlin.Annotation {
public constructor BuilderInference()
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
}
}
@@ -8,8 +8,8 @@ class GenericController<T> {
fun <S> generate(g: suspend GenericController<S>.(S) -> Unit): S = TODO()
val test1 = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
yield(4)
val <!NI;IMPLICIT_NOTHING_PROPERTY_TYPE!>test1<!> = <!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>generate<!> {
yield(<!NI;CONSTANT_EXPECTED_TYPE_MISMATCH!>4<!>)
}
val test2 = generate<Int> {
@@ -1,6 +1,6 @@
package
public val test1: kotlin.Int
public val test1: kotlin.Nothing
public val test2: kotlin.Int
public val test3: kotlin.Int
public fun </*0*/ S> generate(/*0*/ g: suspend GenericController<S>.(S) -> kotlin.Unit): S
@@ -1,6 +1,7 @@
// SKIP_TXT
// WITH_RUNTIME
// COMMON_COROUTINES_TEST
// !WITH_NEW_INFERENCE
import COROUTINES_PACKAGE.*
@@ -1,3 +1,4 @@
// !WITH_NEW_INFERENCE
// !CHECK_TYPE
// !DIAGNOSTICS: -UNUSED_PARAMETER -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_VARIABLE
@@ -27,25 +28,25 @@ fun foo() {
i = genericBuilder { 1 }
genericBuilder { 1 }
genericBuilder<Int> { 1 }
genericBuilder<Int> { <!TYPE_MISMATCH!>""<!> }
genericBuilder<Int> { <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>""<!> }
val y = { 1 }
<!TYPE_INFERENCE_PARAMETER_CONSTRAINT_ERROR!>genericBuilder<!>(<!TYPE_MISMATCH!>y<!>)
<!OI;TYPE_INFERENCE_PARAMETER_CONSTRAINT_ERROR!>genericBuilder<!>(<!TYPE_MISMATCH!>y<!>)
unitBuilder {}
unitBuilder { <!UNUSED_EXPRESSION!>1<!> }
unitBuilder({})
unitBuilder({ <!UNUSED_EXPRESSION!>1<!> })
<!NI;UNREACHABLE_CODE!>unitBuilder {}<!>
<!NI;UNREACHABLE_CODE!>unitBuilder { <!OI;UNUSED_EXPRESSION!>1<!> }<!>
<!NI;UNREACHABLE_CODE!>unitBuilder({})<!>
<!NI;UNREACHABLE_CODE!>unitBuilder({ <!OI;UNUSED_EXPRESSION!>1<!> })<!>
manyArgumentsBuilder({}, { "" }) { 1 }
<!NI;UNREACHABLE_CODE!>manyArgumentsBuilder({}, { "" }) { 1 }<!>
val s: String = manyArgumentsBuilder({}, { "" }) { 1 }
<!NI;UNREACHABLE_CODE!>val s: String = manyArgumentsBuilder({}, { "" }) { 1 }<!>
manyArgumentsBuilder<String>({}, { "" }, { 1 })
manyArgumentsBuilder<String>({}, { <!CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!> }, { 2 })
<!NI;UNREACHABLE_CODE!>manyArgumentsBuilder<String>({}, { "" }, { 1 })<!>
<!NI;UNREACHABLE_CODE!>manyArgumentsBuilder<String>({}, { <!NI;CONSTANT_EXPECTED_TYPE_MISMATCH, CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!> }, { 2 })<!>
severalParamsInLambda { <!NAME_SHADOWING!>x<!>, <!NAME_SHADOWING!>y<!> ->
<!NI;UNREACHABLE_CODE!>severalParamsInLambda { <!NAME_SHADOWING!>x<!>, <!NAME_SHADOWING!>y<!> ->
x checkType { _<String>() }
y checkType { _<Int>() }
}
}<!>
}
@@ -1,6 +1,7 @@
// !API_VERSION: 1.2
// !DIAGNOSTICS: -PRE_RELEASE_CLASS, -UNUSED_PARAMETER
// !LANGUAGE: +ReleaseCoroutines
// !WITH_NEW_INFERENCE
// SKIP_TXT
<!UNSUPPORTED!>suspend<!> fun dummy() {}
@@ -34,4 +35,4 @@ fun test2() {
<!UNSUPPORTED!>suspend<!> fun test3(): Unit = kotlin.coroutines.experimental.<!DEPRECATION!>suspendCoroutine<!> { _ -> Unit }
<!UNSUPPORTED!>suspend<!> fun test4(): Unit = kotlin.coroutines.<!UNRESOLVED_REFERENCE!>suspendCoroutine<!> { <!CANNOT_INFER_PARAMETER_TYPE!>_<!> -> Unit }
<!UNSUPPORTED!>suspend<!> fun test4(): Unit = kotlin.coroutines.<!UNRESOLVED_REFERENCE!>suspendCoroutine<!> { <!OI;CANNOT_INFER_PARAMETER_TYPE!>_<!> -> Unit }
@@ -1,3 +1,4 @@
// !WITH_NEW_INFERENCE
// !DIAGNOSTICS: -UNUSED_PARAMETER
// !CHECK_TYPE
// SKIP_TXT
@@ -18,7 +19,7 @@ class Controller {
suspend fun yieldString(value: String) = suspendCoroutineUninterceptedOrReturn<Int> {
it.resume(1)
it checkType { _<Continuation<Int>>() }
it.<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>resume<!>("")
it.<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>resume<!>(<!NI;TYPE_MISMATCH!>""<!>)
// 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
@@ -1,6 +1,7 @@
// !LANGUAGE: -ReleaseCoroutines
// !DIAGNOSTICS: -UNUSED_PARAMETER -EXPERIMENTAL_FEATURE_WARNING
// !CHECK_TYPE
// !WITH_NEW_INFERENCE
// SKIP_TXT
import kotlin.coroutines.*
@@ -19,7 +20,7 @@ class Controller {
suspend fun yieldString(value: String) = suspendCoroutineUninterceptedOrReturn<Int> {
it.resume(1)
it checkType { _<Continuation<Int>>() }
it.<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>resume<!>("")
it.<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>resume<!>(<!NI;TYPE_MISMATCH!>""<!>)
// 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
@@ -1,5 +1,6 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// !CHECK_TYPE
// !WITH_NEW_INFERENCE
suspend fun noParams() {
}
@@ -35,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 { <!TYPE_MISMATCH!>_<!><Unit>() }
severalParams("", 89, <!TOO_MANY_ARGUMENTS!>6.9<!>) checkType { <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><Unit>() }
"".stringReceiver(1)
Any().anyReceiver(1)
@@ -1,6 +1,7 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// !CHECK_TYPE
// COMMON_COROUTINES_TEST
// !WITH_NEW_INFERENCE
import COROUTINES_PACKAGE.*
class Controller {
@@ -1,4 +1,6 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_VARIABLE
// !WITH_NEW_INFERENCE
suspend fun <V> await(f: V): V = f
fun <T> genericBuilder(c: suspend () -> T): T = null!!
@@ -6,10 +8,10 @@ fun <T> genericBuilder(c: suspend () -> T): T = null!!
fun foo() {
var result = ""
genericBuilder<String> {
try {
<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>try {
await("")
} catch(e: Exception) {
<!EXPECTED_TYPE_MISMATCH!>result = "fail"<!>
}
<!OI;EXPECTED_TYPE_MISMATCH!>result = "fail"<!>
}<!>
}
}