diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java index 1cde13a6d25..8b4690b87e1 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java @@ -11964,6 +11964,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag runTest("compiler/testData/diagnostics/tests/generics/kt34729.kt"); } + @Test + @TestMetadata("kt53656.kt") + public void testKt53656() throws Exception { + runTest("compiler/testData/diagnostics/tests/generics/kt53656.kt"); + } + @Test @TestMetadata("kt5508.kt") public void testKt5508() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java index 624b3f405f6..87972d881e6 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java @@ -11964,6 +11964,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti runTest("compiler/testData/diagnostics/tests/generics/kt34729.kt"); } + @Test + @TestMetadata("kt53656.kt") + public void testKt53656() throws Exception { + runTest("compiler/testData/diagnostics/tests/generics/kt53656.kt"); + } + @Test @TestMetadata("kt5508.kt") public void testKt5508() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java index c9efc79e2b6..499d38de77c 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java @@ -11964,6 +11964,12 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac runTest("compiler/testData/diagnostics/tests/generics/kt34729.kt"); } + @Test + @TestMetadata("kt53656.kt") + public void testKt53656() throws Exception { + runTest("compiler/testData/diagnostics/tests/generics/kt53656.kt"); + } + @Test @TestMetadata("kt5508.kt") public void testKt5508() throws Exception { diff --git a/compiler/testData/diagnostics/tests/generics/kt53656.fir.kt b/compiler/testData/diagnostics/tests/generics/kt53656.fir.kt new file mode 100644 index 00000000000..bb429822a01 --- /dev/null +++ b/compiler/testData/diagnostics/tests/generics/kt53656.fir.kt @@ -0,0 +1,15 @@ +interface One +fun foo(): E where E : Number, E : One, R : One = null!! + +interface Entity +abstract class SecuredEntity(val entity: E) where E : Entity, E : SecurityCodeAware<*,*> +interface SecurityCodeAware> where E : Entity, E : SecurityCodeAware +fun > SecurityCodeAware.secured() : R where E : Entity, E : SecurityCodeAware = when(this) { + is Order -> SecuredOrder(this) + else -> null!! +} +class Order : Entity +class SecuredOrder(order: Order) : SecuredEntity<Order>(order) +fun main() { + val securedOrder = Order().secured() +} diff --git a/compiler/testData/diagnostics/tests/generics/kt53656.kt b/compiler/testData/diagnostics/tests/generics/kt53656.kt new file mode 100644 index 00000000000..72ba7e7bb76 --- /dev/null +++ b/compiler/testData/diagnostics/tests/generics/kt53656.kt @@ -0,0 +1,15 @@ +interface One +fun foo(): E where E : Number, E : One, R : One = null!! + +interface Entity +abstract class SecuredEntity(val entity: E) where E : Entity, E : SecurityCodeAware<*,*> +interface SecurityCodeAware> where E : Entity, E : SecurityCodeAware +fun > SecurityCodeAware.secured() : R where E : Entity, E : SecurityCodeAware = when(this) { + is Order -> SecuredOrder(this) + else -> null!! +} +class Order : Entity +class SecuredOrder(order: Order) : SecuredEntity<Order>(order) +fun main() { + val securedOrder = Order().secured() +} diff --git a/compiler/testData/diagnostics/tests/generics/kt53656.txt b/compiler/testData/diagnostics/tests/generics/kt53656.txt new file mode 100644 index 00000000000..3aed662fc2d --- /dev/null +++ b/compiler/testData/diagnostics/tests/generics/kt53656.txt @@ -0,0 +1,46 @@ +package + +public fun > foo(): E where E : One +public fun main(): kotlin.Unit +public fun , /*1*/ R : SecuredEntity> SecurityCodeAware.secured(): R where E : SecurityCodeAware + +public interface Entity { + 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 One { + 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 Order : Entity { + public constructor Order() + 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 SecuredEntity> where E : SecurityCodeAware<*, *> { + public constructor SecuredEntity>(/*0*/ entity: E) where E : SecurityCodeAware<*, *> + public final val entity: E + 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 SecuredOrder : SecuredEntity { + public constructor SecuredOrder(/*0*/ order: Order) + public final override /*1*/ /*fake_override*/ val entity: Order + 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 SecurityCodeAware, /*1*/ R : SecuredEntity> where E : SecurityCodeAware { + 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-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java index f501e3a2a34..9a68f88f3a5 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java @@ -11970,6 +11970,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/generics/kt34729.kt"); } + @Test + @TestMetadata("kt53656.kt") + public void testKt53656() throws Exception { + runTest("compiler/testData/diagnostics/tests/generics/kt53656.kt"); + } + @Test @TestMetadata("kt5508.kt") public void testKt5508() throws Exception {