[LL] fix resolving of compiled type value parameter

KT-57917
occurs when UAST requests e.g. annotations for the target parameter
to check correctness of nullability or Nls
This commit is contained in:
Anna Kozlova
2023-04-11 11:11:50 +02:00
committed by Space Team
parent b8b8570a60
commit 1aba9460f2
@@ -33,11 +33,24 @@ internal class FirDeclarationForCompiledElementSearcher(private val symbolProvid
is KtConstructor<*> -> findConstructorOfNonLocalClass(ktDeclaration)
is KtNamedFunction -> findNonLocalFunction(ktDeclaration)
is KtProperty -> findNonLocalProperty(ktDeclaration)
is KtParameter -> findParameter(ktDeclaration)
else -> errorWithFirSpecificEntries("Unsupported compiled declaration of type", psi = ktDeclaration)
}
}
private fun findParameter(param: KtParameter): FirDeclaration {
val ownerFunction = param.ownerFunction ?: errorWithFirSpecificEntries("Unsupported compiled parameter", psi = param)
val firDeclaration = findNonLocalDeclaration(ownerFunction)
val firFunction = firDeclaration as? FirFunction ?: errorWithFirSpecificEntries(
"No fir function found by ktFunction",
psi = ownerFunction,
fir = firDeclaration
)
return firFunction.valueParameters.find { it.name == param.nameAsSafeName }
?: errorWithFirSpecificEntries("No fir value parameter found", psi = param, fir = firFunction)
}
private fun findNonLocalEnumEntry(declaration: KtEnumEntry): FirEnumEntry {
require(!declaration.isLocal)
val classId = declaration.containingClassOrObject?.getClassId()