diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java index 88f185e2f51..e295187410f 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java @@ -18173,6 +18173,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/inference/recursiveTypes/multirecursion.kt"); } + @Test + @TestMetadata("nestedClassesWithSelfTypes.kt") + public void testNestedClassesWithSelfTypes() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/recursiveTypes/nestedClassesWithSelfTypes.kt"); + } + @Test @TestMetadata("recursiveInIn.kt") public void testRecursiveInIn() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java index b5fab902fc4..399ea461967 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java @@ -18173,6 +18173,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/inference/recursiveTypes/multirecursion.kt"); } + @Test + @TestMetadata("nestedClassesWithSelfTypes.kt") + public void testNestedClassesWithSelfTypes() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/recursiveTypes/nestedClassesWithSelfTypes.kt"); + } + @Test @TestMetadata("recursiveInIn.kt") public void testRecursiveInIn() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java index 590b448b9dd..b4d0c1ec4e3 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java @@ -18173,6 +18173,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/inference/recursiveTypes/multirecursion.kt"); } + @Test + @TestMetadata("nestedClassesWithSelfTypes.kt") + public void testNestedClassesWithSelfTypes() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/recursiveTypes/nestedClassesWithSelfTypes.kt"); + } + @Test @TestMetadata("recursiveInIn.kt") public void testRecursiveInIn() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java index 8d32b06430d..aa3d0b5df52 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java @@ -18179,6 +18179,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/inference/recursiveTypes/multirecursion.kt"); } + @Test + @TestMetadata("nestedClassesWithSelfTypes.kt") + public void testNestedClassesWithSelfTypes() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/recursiveTypes/nestedClassesWithSelfTypes.kt"); + } + @Test @TestMetadata("recursiveInIn.kt") public void testRecursiveInIn() throws Exception { diff --git a/compiler/testData/diagnostics/tests/inference/recursiveTypes/nestedClassesWithSelfTypes.fir.kt b/compiler/testData/diagnostics/tests/inference/recursiveTypes/nestedClassesWithSelfTypes.fir.kt new file mode 100644 index 00000000000..d0194354cfe --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/recursiveTypes/nestedClassesWithSelfTypes.fir.kt @@ -0,0 +1,22 @@ +// ISSUE: KT-61459 + +interface Alarm { + interface Builder> { + fun build(): Alarm + } +} + +abstract class AbstractAlarm, Builder : AbstractAlarm.Builder>( + val identifier: String, +) : Alarm { + abstract class Builder, Built : AbstractAlarmSelf>> : Alarm.Builder<Self> { + private var identifier: String = "" + + fun setIdentifier(text: String): Self { + this.identifier = text + return this as Self + } + + final override fun build(): Built = TODO() + } +} diff --git a/compiler/testData/diagnostics/tests/inference/recursiveTypes/nestedClassesWithSelfTypes.kt b/compiler/testData/diagnostics/tests/inference/recursiveTypes/nestedClassesWithSelfTypes.kt new file mode 100644 index 00000000000..57caabf91ae --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/recursiveTypes/nestedClassesWithSelfTypes.kt @@ -0,0 +1,22 @@ +// ISSUE: KT-61459 + +interface Alarm { + interface Builder> { + fun build(): Alarm + } +} + +abstract class AbstractAlarm, Builder : AbstractAlarm.Builder>( + val identifier: String, +) : Alarm { + abstract class Builder, Built : AbstractAlarm> : Alarm.Builder { + private var identifier: String = "" + + fun setIdentifier(text: String): Self { + this.identifier = text + return this as Self + } + + final override fun build(): Built = TODO() + } +} 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 1323bc11e66..063b330d03e 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 @@ -18179,6 +18179,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/inference/recursiveTypes/multirecursion.kt"); } + @Test + @TestMetadata("nestedClassesWithSelfTypes.kt") + public void testNestedClassesWithSelfTypes() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/recursiveTypes/nestedClassesWithSelfTypes.kt"); + } + @Test @TestMetadata("recursiveInIn.kt") public void testRecursiveInIn() throws Exception {