diff --git a/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java index 8ad1fa26545..17bd5399183 100644 --- a/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java @@ -9380,6 +9380,11 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirOldFronte runTest("compiler/testData/diagnostics/tests/generics/starProjections/collectionInheritedFromJava.kt"); } + @TestMetadata("foldRecursiveTypesToStarProjection.kt") + public void testFoldRecursiveTypesToStarProjection() throws Exception { + runTest("compiler/testData/diagnostics/tests/generics/starProjections/foldRecursiveTypesToStarProjection.kt"); + } + @TestMetadata("inheritedFromJava.kt") public void testInheritedFromJava() throws Exception { runTest("compiler/testData/diagnostics/tests/generics/starProjections/inheritedFromJava.kt"); diff --git a/compiler/testData/diagnostics/tests/generics/starProjections/foldRecursiveTypesToStarProjection.kt b/compiler/testData/diagnostics/tests/generics/starProjections/foldRecursiveTypesToStarProjection.kt new file mode 100644 index 00000000000..8a46ed9ab49 --- /dev/null +++ b/compiler/testData/diagnostics/tests/generics/starProjections/foldRecursiveTypesToStarProjection.kt @@ -0,0 +1,46 @@ +// FIR_IDENTICAL +// !DIAGNOSTICS: -UNUSED_EXPRESSION +// WITH_RUNTIME + +object KT32183 { + interface AGraphExecutionEntity { + val jobs: Sequence + } + + interface AJobExecutionEntity { + val meta: ProjectJob.Process<*, *> + } + + sealed class ProjectJob { + sealed class Process, R : ProcessResources> : ProjectJob() + sealed class ProcessExecutable> + sealed class ProcessResources> + } + + fun test(graph: AGraphExecutionEntity) { + val statusByMeta = graph.jobs.associateBy { it.meta } + , KT32183.AJobExecutionEntity>")!>statusByMeta + } +} + +object KT31474 { + abstract class A> + class B : A() + class C : A() + + fun test() { + val a = listOf(B(), C()) + >")!>a + } +} + +object KT31853 { + interface A + interface B : A + interface C : A + + fun test(b: B, c: C) { + val a = if (true) b else c + ")!>a + } +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/generics/starProjections/foldRecursiveTypesToStarProjection.txt b/compiler/testData/diagnostics/tests/generics/starProjections/foldRecursiveTypesToStarProjection.txt new file mode 100644 index 00000000000..a3462779ed6 --- /dev/null +++ b/compiler/testData/diagnostics/tests/generics/starProjections/foldRecursiveTypesToStarProjection.txt @@ -0,0 +1,106 @@ +package + +public object KT31474 { + private constructor KT31474() + 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 final fun test(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public abstract class A> { + public constructor A>() + 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 B : KT31474.A { + public constructor B() + 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 C : KT31474.A { + public constructor C() + 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 object KT31853 { + private constructor KT31853() + 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 final fun test(/*0*/ b: KT31853.B, /*1*/ c: KT31853.C): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public interface A { + 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 B : KT31853.A { + 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 C : KT31853.A { + 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 object KT32183 { + private constructor KT32183() + 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 final fun test(/*0*/ graph: KT32183.AGraphExecutionEntity): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public interface AGraphExecutionEntity { + public abstract val jobs: kotlin.sequences.Sequence + 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 AJobExecutionEntity { + public abstract val meta: KT32183.ProjectJob.Process<*, *> + 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 sealed class ProjectJob { + private constructor ProjectJob() + 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 sealed class Process, /*1*/ R : KT32183.ProjectJob.ProcessResources> : KT32183.ProjectJob { + private constructor Process, /*1*/ R : KT32183.ProjectJob.ProcessResources>() + 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 sealed class ProcessExecutable> { + private constructor ProcessExecutable>() + 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 sealed class ProcessResources> { + private constructor ProcessResources>() + 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/DiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java index 4890c90ef08..b03c1bd07dc 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java @@ -9387,6 +9387,11 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTestWithFirVali runTest("compiler/testData/diagnostics/tests/generics/starProjections/collectionInheritedFromJava.kt"); } + @TestMetadata("foldRecursiveTypesToStarProjection.kt") + public void testFoldRecursiveTypesToStarProjection() throws Exception { + runTest("compiler/testData/diagnostics/tests/generics/starProjections/foldRecursiveTypesToStarProjection.kt"); + } + @TestMetadata("inheritedFromJava.kt") public void testInheritedFromJava() throws Exception { runTest("compiler/testData/diagnostics/tests/generics/starProjections/inheritedFromJava.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java index 5c0e45c50fb..9de8a884f06 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java @@ -9382,6 +9382,11 @@ public class DiagnosticsUsingJavacTestGenerated extends AbstractDiagnosticsUsing runTest("compiler/testData/diagnostics/tests/generics/starProjections/collectionInheritedFromJava.kt"); } + @TestMetadata("foldRecursiveTypesToStarProjection.kt") + public void testFoldRecursiveTypesToStarProjection() throws Exception { + runTest("compiler/testData/diagnostics/tests/generics/starProjections/foldRecursiveTypesToStarProjection.kt"); + } + @TestMetadata("inheritedFromJava.kt") public void testInheritedFromJava() throws Exception { runTest("compiler/testData/diagnostics/tests/generics/starProjections/inheritedFromJava.kt");