diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt index 9a3958ab2bb..88e1e3e07d5 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirReferenceShortener.kt @@ -85,7 +85,7 @@ internal class KtFirReferenceShortener( val declarationToVisit = file.findSmallestElementOfTypeContainingSelection(selection) ?: file - val firDeclaration = declarationToVisit.getCorrespondingFirDeclaration() ?: return ShortenCommandImpl( + val firDeclaration = declarationToVisit.getCorrespondingFirElement() ?: return ShortenCommandImpl( file.createSmartPointer(), importsToAdd = emptySet(), starImportsToAdd = emptySet(), @@ -140,7 +140,7 @@ internal class KtFirReferenceShortener( ) } - private fun KtElement.getCorrespondingFirDeclaration(): FirDeclaration? { + private fun KtElement.getCorrespondingFirElement(): FirElement? { require(this is KtFile || this is KtDeclaration) val firElement = getOrBuildFir(firResolveSession) @@ -148,6 +148,7 @@ internal class KtFirReferenceShortener( return when (firElement) { is FirDeclaration -> firElement is FirAnonymousFunctionExpression -> firElement.anonymousFunction + is FirFunctionTypeParameter -> firElement else -> null } } diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceShortenerTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceShortenerTestGenerated.java index 582be5e8031..1d924bcc60f 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceShortenerTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/references/FirIdeNormalAnalysisSourceModuleReferenceShortenerTestGenerated.java @@ -274,6 +274,12 @@ public class FirIdeNormalAnalysisSourceModuleReferenceShortenerTestGenerated ext runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/extensionProperty_objectReceiverWithOtherThisInScope.kt"); } + @Test + @TestMetadata("functionalType_parameterPosition.kt") + public void testFunctionalType_parameterPosition() throws Exception { + runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/functionalType_parameterPosition.kt"); + } + @Test @TestMetadata("kdoc.kt") public void testKdoc() throws Exception { diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceShortenerTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceShortenerTestGenerated.java index 2db1f48ced4..ec69a56374f 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceShortenerTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/references/FirStandaloneNormalAnalysisSourceModuleReferenceShortenerTestGenerated.java @@ -274,6 +274,12 @@ public class FirStandaloneNormalAnalysisSourceModuleReferenceShortenerTestGenera runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/extensionProperty_objectReceiverWithOtherThisInScope.kt"); } + @Test + @TestMetadata("functionalType_parameterPosition.kt") + public void testFunctionalType_parameterPosition() throws Exception { + runTest("analysis/analysis-api/testData/components/referenceShortener/referenceShortener/functionalType_parameterPosition.kt"); + } + @Test @TestMetadata("kdoc.kt") public void testKdoc() throws Exception { diff --git a/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/functionalType_parameterPosition.kt b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/functionalType_parameterPosition.kt new file mode 100644 index 00000000000..e66d23b4181 --- /dev/null +++ b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/functionalType_parameterPosition.kt @@ -0,0 +1,9 @@ +// FILE: main.kt +package test + +fun take(action: (dependency.Foo) -> Unit) {} + +// FILE: dependency.kt +package dependency + +class Foo diff --git a/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/functionalType_parameterPosition.txt b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/functionalType_parameterPosition.txt new file mode 100644 index 00000000000..737efb6d0e0 --- /dev/null +++ b/analysis/analysis-api/testData/components/referenceShortener/referenceShortener/functionalType_parameterPosition.txt @@ -0,0 +1,7 @@ +Before shortening: dependency.Foo +with DO_NOT_SHORTEN: +with SHORTEN_IF_ALREADY_IMPORTED: +with SHORTEN_AND_IMPORT: +[type] dependency.Foo +with SHORTEN_AND_STAR_IMPORT: +[type] dependency.Foo