[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
This commit is contained in:
Artem Vasilev
2022-11-17 13:18:30 +00:00
committed by Space Team
parent f05fe1d46d
commit 02484baf07
@@ -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)