diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt38667.kt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt38667.kt new file mode 100644 index 00000000000..be4ad0ff937 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt38667.kt @@ -0,0 +1,34 @@ +// !USE_EXPERIMENTAL: kotlin.RequiresOptIn +// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -UNUSED_EXPRESSION + +import kotlin.experimental.ExperimentalTypeInference + +abstract class AnimationVector +class AnimationVector1D : AnimationVector() +interface PropKey +class IntPropKey : PropKey +abstract class AnimationBuilder +abstract class DurationBasedAnimationBuilder : AnimationBuilder() +class TweenBuilder : DurationBasedAnimationBuilder() +class TransitionSpec { + fun tween(init: TweenBuilder.() -> Unit): DurationBasedAnimationBuilder = TweenBuilder().apply(init) + infix fun PropKey.using(builder: AnimationBuilder) {} +} +class TransitionDefinition { + fun transition(fromState: T? = null, toState: T? = null, init: TransitionSpec.() -> Unit) {} +} +@OptIn(ExperimentalTypeInference::class) +fun transitionDefinition(@BuilderInference init: TransitionDefinition.() -> Unit) = TransitionDefinition().apply(init) + +fun main() { + val intProp = IntPropKey() + val defn = transitionDefinition { + transition(1, 2) { + intProp using tween { + + } + } + } + + ")!>defn +} diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt38667.txt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt38667.txt new file mode 100644 index 00000000000..d36d1fbd985 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt38667.txt @@ -0,0 +1,69 @@ +package + +public fun main(): kotlin.Unit +@kotlin.OptIn(markerClass = {kotlin.experimental.ExperimentalTypeInference::class}) public fun transitionDefinition(/*0*/ @kotlin.BuilderInference init: TransitionDefinition.() -> kotlin.Unit): TransitionDefinition + +public abstract class AnimationBuilder { + public constructor AnimationBuilder() + 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 abstract class AnimationVector { + public constructor AnimationVector() + 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 AnimationVector1D : AnimationVector { + public constructor AnimationVector1D() + 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 abstract class DurationBasedAnimationBuilder : AnimationBuilder { + public constructor DurationBasedAnimationBuilder() + 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 IntPropKey : PropKey { + public constructor IntPropKey() + 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 PropKey { + 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 TransitionDefinition { + public constructor TransitionDefinition() + 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 fun transition(/*0*/ fromState: T? = ..., /*1*/ toState: T? = ..., /*2*/ init: TransitionSpec.() -> kotlin.Unit): kotlin.Unit +} + +public final class TransitionSpec { + public constructor TransitionSpec() + 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 fun tween(/*0*/ init: TweenBuilder.() -> kotlin.Unit): DurationBasedAnimationBuilder + public final infix fun PropKey.using(/*0*/ builder: AnimationBuilder): kotlin.Unit +} + +public final class TweenBuilder : DurationBasedAnimationBuilder { + public constructor TweenBuilder() + 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 +} diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java index ca2455fc8d8..6e26eb2267d 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java @@ -2047,6 +2047,11 @@ public class DiagnosticsTestWithStdLibGenerated extends AbstractDiagnosticsTestW runTest("compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt38420.kt"); } + @TestMetadata("kt38667.kt") + public void testKt38667() throws Exception { + runTest("compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt38667.kt"); + } + @TestMetadata("nestedLambdaInferenceWithListMap.kt") public void testNestedLambdaInferenceWithListMap() throws Exception { runTest("compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/nestedLambdaInferenceWithListMap.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsTestWithStdLibUsingJavacGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsTestWithStdLibUsingJavacGenerated.java index e8000fe3c24..2cd3a0c4643 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsTestWithStdLibUsingJavacGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsTestWithStdLibUsingJavacGenerated.java @@ -2047,6 +2047,11 @@ public class DiagnosticsTestWithStdLibUsingJavacGenerated extends AbstractDiagno runTest("compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt38420.kt"); } + @TestMetadata("kt38667.kt") + public void testKt38667() throws Exception { + runTest("compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt38667.kt"); + } + @TestMetadata("nestedLambdaInferenceWithListMap.kt") public void testNestedLambdaInferenceWithListMap() throws Exception { runTest("compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/nestedLambdaInferenceWithListMap.kt");