From abb45a072812d799454bbafcccdf624c7d35e850 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 23 Nov 2022 15:19:44 +0100 Subject: [PATCH] [AA] don't treat incomplete function as anonymous ^KTIJ-23672 sync anonymous function predicate with RawFirBuilder/DeclarationsConverter --- ...lysisSourceModuleDeclarationReturnTypeTestGenerated.java | 6 ++++++ .../api/fir/components/KtFirExpressionTypeProvider.kt | 2 +- ...lysisSourceModuleDeclarationReturnTypeTestGenerated.java | 6 ++++++ ...lysisSourceModuleDeclarationReturnTypeTestGenerated.java | 6 ++++++ ...lysisSourceModuleDeclarationReturnTypeTestGenerated.java | 6 ++++++ .../declarationReturnType/functionWithoutParameterList.kt | 1 + .../declarationReturnType/functionWithoutParameterList.txt | 1 + .../src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt | 2 +- .../psi/src/org/jetbrains/kotlin/psi/KtNamedFunction.java | 4 ++++ 9 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 analysis/analysis-api/testData/components/expressionTypeProvider/declarationReturnType/functionWithoutParameterList.kt create mode 100644 analysis/analysis-api/testData/components/expressionTypeProvider/declarationReturnType/functionWithoutParameterList.txt diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/expressionTypeProvider/Fe10IdeNormalAnalysisSourceModuleDeclarationReturnTypeTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/expressionTypeProvider/Fe10IdeNormalAnalysisSourceModuleDeclarationReturnTypeTestGenerated.java index 01cc0eddbb9..b0ab6929794 100644 --- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/expressionTypeProvider/Fe10IdeNormalAnalysisSourceModuleDeclarationReturnTypeTestGenerated.java +++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/expressionTypeProvider/Fe10IdeNormalAnalysisSourceModuleDeclarationReturnTypeTestGenerated.java @@ -58,6 +58,12 @@ public class Fe10IdeNormalAnalysisSourceModuleDeclarationReturnTypeTestGenerated runTest("analysis/analysis-api/testData/components/expressionTypeProvider/declarationReturnType/delegateProperties.kt"); } + @Test + @TestMetadata("functionWithoutParameterList.kt") + public void testFunctionWithoutParameterList() throws Exception { + runTest("analysis/analysis-api/testData/components/expressionTypeProvider/declarationReturnType/functionWithoutParameterList.kt"); + } + @Test @TestMetadata("funtionType.kt") public void testFuntionType() throws Exception { diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirExpressionTypeProvider.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirExpressionTypeProvider.kt index af544113bad..3ccf458ab88 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirExpressionTypeProvider.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirExpressionTypeProvider.kt @@ -119,7 +119,7 @@ internal class KtFirExpressionTypeProvider( contract { returns(true) implies (ktDeclaration is KtNamedFunction) } - return ktDeclaration is KtFunction && ktDeclaration.name == null + return ktDeclaration is KtNamedFunction && ktDeclaration.isAnonymous } private fun KtFunction.toFirAnonymousFunction(): FirAnonymousFunction { diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/expressionTypeProvider/FirIdeDependentAnalysisSourceModuleDeclarationReturnTypeTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/expressionTypeProvider/FirIdeDependentAnalysisSourceModuleDeclarationReturnTypeTestGenerated.java index e9d30ee67ef..5bf879e4cff 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/expressionTypeProvider/FirIdeDependentAnalysisSourceModuleDeclarationReturnTypeTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/expressionTypeProvider/FirIdeDependentAnalysisSourceModuleDeclarationReturnTypeTestGenerated.java @@ -58,6 +58,12 @@ public class FirIdeDependentAnalysisSourceModuleDeclarationReturnTypeTestGenerat runTest("analysis/analysis-api/testData/components/expressionTypeProvider/declarationReturnType/delegateProperties.kt"); } + @Test + @TestMetadata("functionWithoutParameterList.kt") + public void testFunctionWithoutParameterList() throws Exception { + runTest("analysis/analysis-api/testData/components/expressionTypeProvider/declarationReturnType/functionWithoutParameterList.kt"); + } + @Test @TestMetadata("funtionType.kt") public void testFuntionType() throws Exception { diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/expressionTypeProvider/FirIdeNormalAnalysisSourceModuleDeclarationReturnTypeTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/expressionTypeProvider/FirIdeNormalAnalysisSourceModuleDeclarationReturnTypeTestGenerated.java index 90d70391ae9..c6f27887a68 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/expressionTypeProvider/FirIdeNormalAnalysisSourceModuleDeclarationReturnTypeTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/expressionTypeProvider/FirIdeNormalAnalysisSourceModuleDeclarationReturnTypeTestGenerated.java @@ -58,6 +58,12 @@ public class FirIdeNormalAnalysisSourceModuleDeclarationReturnTypeTestGenerated runTest("analysis/analysis-api/testData/components/expressionTypeProvider/declarationReturnType/delegateProperties.kt"); } + @Test + @TestMetadata("functionWithoutParameterList.kt") + public void testFunctionWithoutParameterList() throws Exception { + runTest("analysis/analysis-api/testData/components/expressionTypeProvider/declarationReturnType/functionWithoutParameterList.kt"); + } + @Test @TestMetadata("funtionType.kt") public void testFuntionType() throws Exception { diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/expressionTypeProvider/FirStandaloneNormalAnalysisSourceModuleDeclarationReturnTypeTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/expressionTypeProvider/FirStandaloneNormalAnalysisSourceModuleDeclarationReturnTypeTestGenerated.java index 4b446ea1871..06dc23b69f8 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/expressionTypeProvider/FirStandaloneNormalAnalysisSourceModuleDeclarationReturnTypeTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/expressionTypeProvider/FirStandaloneNormalAnalysisSourceModuleDeclarationReturnTypeTestGenerated.java @@ -58,6 +58,12 @@ public class FirStandaloneNormalAnalysisSourceModuleDeclarationReturnTypeTestGen runTest("analysis/analysis-api/testData/components/expressionTypeProvider/declarationReturnType/delegateProperties.kt"); } + @Test + @TestMetadata("functionWithoutParameterList.kt") + public void testFunctionWithoutParameterList() throws Exception { + runTest("analysis/analysis-api/testData/components/expressionTypeProvider/declarationReturnType/functionWithoutParameterList.kt"); + } + @Test @TestMetadata("funtionType.kt") public void testFuntionType() throws Exception { diff --git a/analysis/analysis-api/testData/components/expressionTypeProvider/declarationReturnType/functionWithoutParameterList.kt b/analysis/analysis-api/testData/components/expressionTypeProvider/declarationReturnType/functionWithoutParameterList.kt new file mode 100644 index 00000000000..6ce25f143c4 --- /dev/null +++ b/analysis/analysis-api/testData/components/expressionTypeProvider/declarationReturnType/functionWithoutParameterList.kt @@ -0,0 +1 @@ +inline fun Pair<*,*>. \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/expressionTypeProvider/declarationReturnType/functionWithoutParameterList.txt b/analysis/analysis-api/testData/components/expressionTypeProvider/declarationReturnType/functionWithoutParameterList.txt new file mode 100644 index 00000000000..661c0b29008 --- /dev/null +++ b/analysis/analysis-api/testData/components/expressionTypeProvider/declarationReturnType/functionWithoutParameterList.txt @@ -0,0 +1 @@ +KtNamedFunction@(1,1) : kotlin.Unit diff --git a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt index c83b0d3ec1e..607f68e9f89 100644 --- a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt +++ b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt @@ -1313,7 +1313,7 @@ open class RawFirBuilder( val receiverType = function.receiverTypeReference.convertSafe() val labelName: String? - val isAnonymousFunction = function.name == null && !function.parent.let { it is KtFile || it is KtClassBody } + val isAnonymousFunction = function.isAnonymous val functionSymbol: FirFunctionSymbol<*> val functionBuilder = if (isAnonymousFunction) { FirAnonymousFunctionBuilder().apply { diff --git a/compiler/psi/src/org/jetbrains/kotlin/psi/KtNamedFunction.java b/compiler/psi/src/org/jetbrains/kotlin/psi/KtNamedFunction.java index 815868604e4..333baf254fa 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/psi/KtNamedFunction.java +++ b/compiler/psi/src/org/jetbrains/kotlin/psi/KtNamedFunction.java @@ -242,6 +242,10 @@ public class KtNamedFunction extends KtTypeParameterListOwnerStub