[FIR IDE] Fix annotation value parameter and ctor resolve

This commit is contained in:
Igor Yakovlev
2021-01-26 02:37:47 +03:00
parent 019635189a
commit 659d2c13b4
4 changed files with 23 additions and 8 deletions
@@ -309,7 +309,12 @@ class JavaSymbolProvider(
}
if (classIsAnnotation) {
declarations +=
buildConstructorForAnnotationClass(constructorId, this, valueParametersForAnnotationConstructor)
buildConstructorForAnnotationClass(
classSource = (javaClass as? JavaElementImpl<*>)?.psi?.toFirPsiSourceElement(FirFakeSourceElementKind.ImplicitConstructor),
constructorId = constructorId,
ownerClassBuilder = this,
valueParametersForAnnotationConstructor = valueParametersForAnnotationConstructor
)
}
}
@@ -438,6 +443,7 @@ class JavaSymbolProvider(
}
if (classIsAnnotation) {
val parameterForAnnotationConstructor = buildJavaValueParameter {
source = (javaMethod as? JavaElementImpl<*>)?.psi?.toFirPsiSourceElement(FirFakeSourceElementKind.ImplicitJavaAnnotationConstructor)
session = this@JavaSymbolProvider.session
returnTypeRef = firJavaMethod.returnTypeRef
name = methodName
@@ -505,11 +511,13 @@ class JavaSymbolProvider(
}
private fun buildConstructorForAnnotationClass(
classSource: FirSourceElement?,
constructorId: CallableId,
ownerClassBuilder: FirJavaClassBuilder,
valueParametersForAnnotationConstructor: ValueParametersForAnnotationConstructor
): FirJavaConstructor {
return buildJavaConstructor {
source = classSource
session = this@JavaSymbolProvider.session
symbol = FirConstructorSymbol(constructorId)
status = FirResolvedDeclarationStatusImpl(Visibilities.Public, Modality.FINAL)