From cbc8b74e89d033e5440d42ee8becb3d475f3bf2e Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Fri, 17 Feb 2023 16:30:43 +0200 Subject: [PATCH] [FE 1.0] Don't check star projections in PrivateInlineFunctionsReturningAnonymousObjectsChecker ^KT-56692 Fixed --- .../DiagnosisCompilerTestFE10TestdataTestGenerated.java | 6 ++++++ .../FirLightTreeOldFrontendDiagnosticsTestGenerated.java | 6 ++++++ .../runners/FirPsiOldFrontendDiagnosticsTestGenerated.java | 6 ++++++ ...rivateInlineFunctionsReturningAnonymousObjectsChecker.kt | 1 + .../tests/inline/recursiveTypeInPrivateInlineFunction.kt | 5 +++++ .../kotlin/test/runners/DiagnosticTestGenerated.java | 6 ++++++ 6 files changed, 30 insertions(+) create mode 100644 compiler/testData/diagnostics/tests/inline/recursiveTypeInPrivateInlineFunction.kt 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 8d033a6f2f5..52065169cb9 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 @@ -17912,6 +17912,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag runTest("compiler/testData/diagnostics/tests/inline/recursion.kt"); } + @Test + @TestMetadata("recursiveTypeInPrivateInlineFunction.kt") + public void testRecursiveTypeInPrivateInlineFunction() throws Exception { + runTest("compiler/testData/diagnostics/tests/inline/recursiveTypeInPrivateInlineFunction.kt"); + } + @Test @TestMetadata("returnedAnonymousObjects.kt") public void testReturnedAnonymousObjects() 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 78d408866f8..a5eb5f59f23 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 @@ -17912,6 +17912,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/inline/recursion.kt"); } + @Test + @TestMetadata("recursiveTypeInPrivateInlineFunction.kt") + public void testRecursiveTypeInPrivateInlineFunction() throws Exception { + runTest("compiler/testData/diagnostics/tests/inline/recursiveTypeInPrivateInlineFunction.kt"); + } + @Test @TestMetadata("returnedAnonymousObjects.kt") public void testReturnedAnonymousObjects() 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 99498058d8a..f54cf9a3ffe 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 @@ -17918,6 +17918,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/inline/recursion.kt"); } + @Test + @TestMetadata("recursiveTypeInPrivateInlineFunction.kt") + public void testRecursiveTypeInPrivateInlineFunction() throws Exception { + runTest("compiler/testData/diagnostics/tests/inline/recursiveTypeInPrivateInlineFunction.kt"); + } + @Test @TestMetadata("returnedAnonymousObjects.kt") public void testReturnedAnonymousObjects() throws Exception { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/PrivateInlineFunctionsReturningAnonymousObjectsChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/PrivateInlineFunctionsReturningAnonymousObjectsChecker.kt index 88627c5c514..f7c79cbb3ae 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/PrivateInlineFunctionsReturningAnonymousObjectsChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/PrivateInlineFunctionsReturningAnonymousObjectsChecker.kt @@ -29,6 +29,7 @@ object PrivateInlineFunctionsReturningAnonymousObjectsChecker : DeclarationCheck private fun checkTypeAndArguments(type: KotlinType, reportOn: PsiElement, context: DeclarationCheckerContext) { checkType(type, reportOn, context) for (argument in type.arguments) { + if (argument.isStarProjection) continue checkTypeAndArguments(argument.type, reportOn, context) } } diff --git a/compiler/testData/diagnostics/tests/inline/recursiveTypeInPrivateInlineFunction.kt b/compiler/testData/diagnostics/tests/inline/recursiveTypeInPrivateInlineFunction.kt new file mode 100644 index 00000000000..610d6f61883 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inline/recursiveTypeInPrivateInlineFunction.kt @@ -0,0 +1,5 @@ +// FIR_IDENTICAL +// ISSUE: KT-56692 + +private inline fun check(inf: Self<*>) = inf +class Self> 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 0638e3b8c16..ce01eb52e71 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 @@ -17918,6 +17918,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/inline/recursion.kt"); } + @Test + @TestMetadata("recursiveTypeInPrivateInlineFunction.kt") + public void testRecursiveTypeInPrivateInlineFunction() throws Exception { + runTest("compiler/testData/diagnostics/tests/inline/recursiveTypeInPrivateInlineFunction.kt"); + } + @Test @TestMetadata("returnedAnonymousObjects.kt") public void testReturnedAnonymousObjects() throws Exception {