From f3b3dcee9ea31b179b14e06ee03fe837fa084e19 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Wed, 29 Nov 2023 12:26:58 +0100 Subject: [PATCH] [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 --- .../api/fir/transformers/LLFirLazyResolver.kt | 46 ++++++++----------- 1 file changed, 19 insertions(+), 27 deletions(-) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirLazyResolver.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirLazyResolver.kt index 18caffc371c..f2a0dacf2d1 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirLazyResolver.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirLazyResolver.kt @@ -56,47 +56,39 @@ internal abstract class LLFirLazyResolver( if (target !is FirDeclaration) return checkFunctionParametersAreResolved(target) - checkPropertyAccessorsAreResolved(target) - checkPropertyBackingFieldIsResolved(target) + checkVariableSubDeclarationsAreResolved(target) checkTypeParametersAreResolved(target) - checkScriptDependentDeclaration(target) + checkScriptDependentDeclarationsAreResolved(target) } - private fun checkPropertyAccessorsAreResolved(declaration: FirDeclaration) { - if (declaration is FirProperty) { - declaration.getter?.let { checkIsResolved(it) } - declaration.setter?.let { checkIsResolved(it) } - } + private fun checkVariableSubDeclarationsAreResolved(declaration: FirDeclaration) { + if (declaration !is FirVariable) return + + 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) { - if (declaration is FirFunction) { - for (parameter in declaration.valueParameters) { - checkIsResolved(parameter) - } + if (declaration !is FirFunction) return + + for (parameter in declaration.valueParameters) { + checkIsResolved(parameter) } } private fun checkTypeParametersAreResolved(declaration: FirDeclaration) { - if (declaration is FirTypeParameterRefsOwner) { - for (parameter in declaration.typeParameters) { - if (parameter is FirTypeParameter) { - checkIsResolved(parameter) - } - } + if (declaration !is FirTypeParameterRefsOwner) return + + for (parameter in declaration.typeParameters) { + if (parameter !is FirTypeParameter) continue + checkIsResolved(parameter) } } - private fun checkScriptDependentDeclaration(declaration: FirDeclaration) { + private fun checkScriptDependentDeclarationsAreResolved(declaration: FirDeclaration) { if (declaration !is FirScript) return + declaration.forEachDependentDeclaration(::checkIsResolved) } }