[LL FIR] LLFirLazyResolver: more generic checks and cleanup

We should use more common classes which it is possible to potentially
not miss any changes in the future

^KT-63681
This commit is contained in:
Dmitrii Gridin
2023-11-29 12:26:58 +01:00
committed by Space Team
parent 8039e38519
commit f3b3dcee9e
@@ -56,47 +56,39 @@ internal abstract class LLFirLazyResolver(
if (target !is FirDeclaration) return if (target !is FirDeclaration) return
checkFunctionParametersAreResolved(target) checkFunctionParametersAreResolved(target)
checkPropertyAccessorsAreResolved(target) checkVariableSubDeclarationsAreResolved(target)
checkPropertyBackingFieldIsResolved(target)
checkTypeParametersAreResolved(target) checkTypeParametersAreResolved(target)
checkScriptDependentDeclaration(target) checkScriptDependentDeclarationsAreResolved(target)
} }
private fun checkPropertyAccessorsAreResolved(declaration: FirDeclaration) { private fun checkVariableSubDeclarationsAreResolved(declaration: FirDeclaration) {
if (declaration is FirProperty) { if (declaration !is FirVariable) return
declaration.getter?.let { checkIsResolved(it) }
declaration.setter?.let { checkIsResolved(it) } declaration.getter?.let(::checkIsResolved)
} declaration.setter?.let(::checkIsResolved)
declaration.backingField?.let(::checkIsResolved)
} }
private fun checkPropertyBackingFieldIsResolved(declaration: FirDeclaration) {
if (declaration is FirProperty) {
declaration.backingField?.let { checkIsResolved(it) }
}
}
private fun checkFunctionParametersAreResolved(declaration: FirDeclaration) { private fun checkFunctionParametersAreResolved(declaration: FirDeclaration) {
if (declaration is FirFunction) { if (declaration !is FirFunction) return
for (parameter in declaration.valueParameters) {
checkIsResolved(parameter) for (parameter in declaration.valueParameters) {
} checkIsResolved(parameter)
} }
} }
private fun checkTypeParametersAreResolved(declaration: FirDeclaration) { private fun checkTypeParametersAreResolved(declaration: FirDeclaration) {
if (declaration is FirTypeParameterRefsOwner) { if (declaration !is FirTypeParameterRefsOwner) return
for (parameter in declaration.typeParameters) {
if (parameter is FirTypeParameter) { for (parameter in declaration.typeParameters) {
checkIsResolved(parameter) if (parameter !is FirTypeParameter) continue
} checkIsResolved(parameter)
}
} }
} }
private fun checkScriptDependentDeclaration(declaration: FirDeclaration) { private fun checkScriptDependentDeclarationsAreResolved(declaration: FirDeclaration) {
if (declaration !is FirScript) return if (declaration !is FirScript) return
declaration.forEachDependentDeclaration(::checkIsResolved) declaration.forEachDependentDeclaration(::checkIsResolved)
} }
} }