From 02484baf071968a3a50389cba01ab5e4986ad811 Mon Sep 17 00:00:00 2001 From: Artem Vasilev Date: Thu, 17 Nov 2022 13:18:30 +0000 Subject: [PATCH] [FIR] Set Java constructor source to Java class's when it's implicit When there are no declared constructors in Java class, make javaConstructor's source element point to the class declaration, making it possible to navigate from constructor's invocation there. ^KTIJ-22360 Fixed --- .../java/src/org/jetbrains/kotlin/fir/java/FirJavaFacade.kt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaFacade.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaFacade.kt index e258f39bb2f..d40dfadbbc4 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaFacade.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaFacade.kt @@ -640,7 +640,7 @@ abstract class FirJavaFacade( ): FirJavaConstructor { val constructorSymbol = FirConstructorSymbol(constructorId) return buildJavaConstructor { - source = javaConstructor?.toSourceElement() + source = javaConstructor?.toSourceElement() ?: javaClass.toSourceElement(KtFakeSourceElementKind.ImplicitConstructor) this.moduleData = moduleData isFromSource = javaClass.isFromSource symbol = constructorSymbol @@ -687,9 +687,7 @@ abstract class FirJavaFacade( moduleData: FirModuleData, ): FirJavaConstructor { return buildJavaConstructor { - source = (javaClass as? JavaElementImpl<*>) - ?.psi - ?.toKtPsiSourceElement(KtFakeSourceElementKind.ImplicitConstructor) as? KtFakeSourceElement + source = javaClass.toSourceElement(KtFakeSourceElementKind.ImplicitConstructor) this.moduleData = moduleData isFromSource = javaClass.isFromSource symbol = FirConstructorSymbol(constructorId)