diff --git a/compiler/testData/diagnostics/tests/inference/substitutions/kt32189returnTypeWithTypealiasSubtitution.kt b/compiler/testData/diagnostics/tests/inference/substitutions/kt32189returnTypeWithTypealiasSubtitution.kt index d4b9306ab8f..0c877efeb43 100644 --- a/compiler/testData/diagnostics/tests/inference/substitutions/kt32189returnTypeWithTypealiasSubtitution.kt +++ b/compiler/testData/diagnostics/tests/inference/substitutions/kt32189returnTypeWithTypealiasSubtitution.kt @@ -20,3 +20,18 @@ fun buildB() { B.Builder().a2() B.Builder().a3() } + +// additional example from #KT-34820 + +class R +class P + +typealias F = R.(P) -> Unit + +fun guess(): F? = TODO() +fun consume(f: F) {} + +fun problem() { + val p = guess() + consume(p ?: {}) +} diff --git a/compiler/testData/diagnostics/tests/inference/substitutions/kt32189returnTypeWithTypealiasSubtitution.txt b/compiler/testData/diagnostics/tests/inference/substitutions/kt32189returnTypeWithTypealiasSubtitution.txt index 1bef2a6997b..ecfea9bfa35 100644 --- a/compiler/testData/diagnostics/tests/inference/substitutions/kt32189returnTypeWithTypealiasSubtitution.txt +++ b/compiler/testData/diagnostics/tests/inference/substitutions/kt32189returnTypeWithTypealiasSubtitution.txt @@ -4,6 +4,9 @@ public fun applyRestrictions1(): ApplyRestrictions /* = B.Builder.() -> B.Builde public fun applyRestrictions2(): ApplyRestrictions /* = B.Builder.() -> B.Builder */ public fun applyRestrictions3(/*0*/ e: K): ApplyRestrictions /* = B.Builder.() -> B.Builder */ public fun buildB(): kotlin.Unit +public fun consume(/*0*/ f: F /* = R.(P) -> kotlin.Unit */): kotlin.Unit +public fun guess(): F? /* = (R.(P) -> kotlin.Unit)? */ +public fun problem(): kotlin.Unit public final class B { public constructor B() @@ -18,4 +21,19 @@ public final class B { public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } } + +public final class P { + public constructor P() + 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 class R { + public constructor R() + 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 typealias ApplyRestrictions = B.Builder.() -> B.Builder +public typealias F = R.(P) -> kotlin.Unit