From 209d59440b4ed2bdeca5cc202274acc557c00174 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Wed, 6 Sep 2023 13:46:10 +0200 Subject: [PATCH] [Analysis API FIR]: fix a freeze on rendering of invalid type arguments ^KT-61750 fixed --- ...eNormalAnalysisSourceModuleRendererTestGenerated.java | 6 ++++++ .../types/qualifiers/ErrorClassTypeQualifierBuilder.kt | 4 ++-- ...pendentAnalysisSourceModuleRendererTestGenerated.java | 6 ++++++ ...eNormalAnalysisSourceModuleRendererTestGenerated.java | 6 ++++++ ...eNormalAnalysisSourceModuleRendererTestGenerated.java | 6 ++++++ .../types/extraTypeArguments.descriptors.rendered | 7 +++++++ .../renderDeclaration/types/extraTypeArguments.kt | 9 +++++++++ .../renderDeclaration/types/extraTypeArguments.rendered | 5 +++++ 8 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/types/extraTypeArguments.descriptors.rendered create mode 100644 analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/types/extraTypeArguments.kt create mode 100644 analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/types/extraTypeArguments.rendered diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/symbolDeclarationRenderer/Fe10IdeNormalAnalysisSourceModuleRendererTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/symbolDeclarationRenderer/Fe10IdeNormalAnalysisSourceModuleRendererTestGenerated.java index a8f10029690..99bfaa5651e 100644 --- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/symbolDeclarationRenderer/Fe10IdeNormalAnalysisSourceModuleRendererTestGenerated.java +++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/symbolDeclarationRenderer/Fe10IdeNormalAnalysisSourceModuleRendererTestGenerated.java @@ -246,5 +246,11 @@ public class Fe10IdeNormalAnalysisSourceModuleRendererTestGenerated extends Abst public void testContextFunctionTypes() throws Exception { runTest("analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/types/contextFunctionTypes.kt"); } + + @Test + @TestMetadata("extraTypeArguments.kt") + public void testExtraTypeArguments() throws Exception { + runTest("analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/types/extraTypeArguments.kt"); + } } } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/types/qualifiers/ErrorClassTypeQualifierBuilder.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/types/qualifiers/ErrorClassTypeQualifierBuilder.kt index 62153decc45..8eff62ecbbd 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/types/qualifiers/ErrorClassTypeQualifierBuilder.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/types/qualifiers/ErrorClassTypeQualifierBuilder.kt @@ -15,7 +15,7 @@ import org.jetbrains.kotlin.fir.types.toConeTypeProjection internal object ErrorClassTypeQualifierBuilder { fun createQualifiersForUnresolvedType( coneDiagnostic: ConeUnresolvedError, - builder: KtSymbolByFirBuilder + builder: KtSymbolByFirBuilder, ): List { return when (coneDiagnostic) { is ConeUnresolvedTypeQualifierError -> @@ -53,7 +53,7 @@ internal object ErrorClassTypeQualifierBuilder { firSymbol: FirClassLikeSymbol<*>, builder: KtSymbolByFirBuilder ): List { - return generateSequence(firSymbol) { firSymbol.getContainingClassSymbol(builder.rootSession) }.mapTo(mutableListOf()) { classSymbol -> + return generateSequence(firSymbol) { it.getContainingClassSymbol(builder.rootSession) }.mapTo(mutableListOf()) { classSymbol -> KtClassTypeQualifier.KtResolvedClassTypeQualifier( builder.classifierBuilder.buildClassLikeSymbol(classSymbol), emptyList(), diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationRenderer/FirIdeDependentAnalysisSourceModuleRendererTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationRenderer/FirIdeDependentAnalysisSourceModuleRendererTestGenerated.java index a73c685d14f..8a7f97c738d 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationRenderer/FirIdeDependentAnalysisSourceModuleRendererTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationRenderer/FirIdeDependentAnalysisSourceModuleRendererTestGenerated.java @@ -246,5 +246,11 @@ public class FirIdeDependentAnalysisSourceModuleRendererTestGenerated extends Ab public void testContextFunctionTypes() throws Exception { runTest("analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/types/contextFunctionTypes.kt"); } + + @Test + @TestMetadata("extraTypeArguments.kt") + public void testExtraTypeArguments() throws Exception { + runTest("analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/types/extraTypeArguments.kt"); + } } } diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationRenderer/FirIdeNormalAnalysisSourceModuleRendererTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationRenderer/FirIdeNormalAnalysisSourceModuleRendererTestGenerated.java index 6f52bc5f712..fe4efe51c3b 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationRenderer/FirIdeNormalAnalysisSourceModuleRendererTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationRenderer/FirIdeNormalAnalysisSourceModuleRendererTestGenerated.java @@ -246,5 +246,11 @@ public class FirIdeNormalAnalysisSourceModuleRendererTestGenerated extends Abstr public void testContextFunctionTypes() throws Exception { runTest("analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/types/contextFunctionTypes.kt"); } + + @Test + @TestMetadata("extraTypeArguments.kt") + public void testExtraTypeArguments() throws Exception { + runTest("analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/types/extraTypeArguments.kt"); + } } } diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/symbolDeclarationRenderer/FirStandaloneNormalAnalysisSourceModuleRendererTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/symbolDeclarationRenderer/FirStandaloneNormalAnalysisSourceModuleRendererTestGenerated.java index 9543c70fb05..81891c22298 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/symbolDeclarationRenderer/FirStandaloneNormalAnalysisSourceModuleRendererTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/symbolDeclarationRenderer/FirStandaloneNormalAnalysisSourceModuleRendererTestGenerated.java @@ -246,5 +246,11 @@ public class FirStandaloneNormalAnalysisSourceModuleRendererTestGenerated extend public void testContextFunctionTypes() throws Exception { runTest("analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/types/contextFunctionTypes.kt"); } + + @Test + @TestMetadata("extraTypeArguments.kt") + public void testExtraTypeArguments() throws Exception { + runTest("analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/types/extraTypeArguments.kt"); + } } } diff --git a/analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/types/extraTypeArguments.descriptors.rendered b/analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/types/extraTypeArguments.descriptors.rendered new file mode 100644 index 00000000000..937205b2241 --- /dev/null +++ b/analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/types/extraTypeArguments.descriptors.rendered @@ -0,0 +1,7 @@ +interface AAA { + class BBB : AAA +} + +fun foo(): ERROR + + diff --git a/analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/types/extraTypeArguments.kt b/analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/types/extraTypeArguments.kt new file mode 100644 index 00000000000..777feb95221 --- /dev/null +++ b/analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/types/extraTypeArguments.kt @@ -0,0 +1,9 @@ +import AAA.BBB + +public interface AAA { + class BBB : AAA +} + + +fun foo() : BBB<*> { +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/types/extraTypeArguments.rendered b/analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/types/extraTypeArguments.rendered new file mode 100644 index 00000000000..9b107cfbd76 --- /dev/null +++ b/analysis/analysis-api/testData/components/symbolDeclarationRenderer/renderDeclaration/types/extraTypeArguments.rendered @@ -0,0 +1,5 @@ +interface AAA { + class BBB : AAA +} + +fun foo(): BBB.AAA