From 7395f8e01957f91118cc706ecde5a22079226de1 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Mon, 9 May 2022 14:15:30 +0200 Subject: [PATCH] [low level api] consider property type parameters when matching FIR and PSI declarations --- ...eclarationAndFirDeclarationEqualityChecker.kt | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/KtDeclarationAndFirDeclarationEqualityChecker.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/KtDeclarationAndFirDeclarationEqualityChecker.kt index cb4b513da44..8fc97ff9034 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/KtDeclarationAndFirDeclarationEqualityChecker.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/KtDeclarationAndFirDeclarationEqualityChecker.kt @@ -34,10 +34,8 @@ object KtDeclarationAndFirDeclarationEqualityChecker { fun representsTheSameDeclaration(psi: KtCallableDeclaration, fir: FirCallableDeclaration): Boolean { if (!receiverTypeMatch(psi, fir)) return false if (!returnTypesMatch(psi, fir)) return false - - if (fir is FirFunction) { - if (!typeParametersMatch(fir, psi) || !valueParametersMatch(fir, psi)) return false - } + if (!typeParametersMatch(psi, fir)) return false + if (fir is FirFunction && !valueParametersMatch(psi, fir)) return false return true } @@ -54,7 +52,7 @@ object KtDeclarationAndFirDeclarationEqualityChecker { return isTheSameTypes(psi.typeReference!!, fir.returnTypeRef, isVararg = false) } - private fun typeParametersMatch(firFunction: FirCallableDeclaration, psiFunction: KtCallableDeclaration): Boolean { + private fun typeParametersMatch(psiFunction: KtCallableDeclaration, firFunction: FirCallableDeclaration): Boolean { if (firFunction.typeParameters.size != psiFunction.typeParameters.size) return false val boundsByName = psiFunction.typeConstraints.groupBy { it.subjectTypeParameterName?.getReferencedName() } firFunction.typeParameters.zip(psiFunction.typeParameters) { expectedTypeParameter, candidateTypeParameter -> @@ -80,7 +78,7 @@ object KtDeclarationAndFirDeclarationEqualityChecker { return true } - private fun valueParametersMatch(firFunction: FirFunction, psiFunction: KtCallableDeclaration): Boolean { + private fun valueParametersMatch(psiFunction: KtCallableDeclaration, firFunction: FirFunction): Boolean { if (firFunction.valueParameters.size != psiFunction.valueParameters.size) return false firFunction.valueParameters.zip(psiFunction.valueParameters) { expectedParameter, candidateParameter -> if (expectedParameter.name.toString() != candidateParameter.name) return false @@ -246,7 +244,11 @@ object KtDeclarationAndFirDeclarationEqualityChecker { shouldNotBeCalled() } - override fun getNestedClassifierScope(klass: FirClass, useSiteSession: FirSession, scopeSession: ScopeSession): FirContainingNamesAwareScope? { + override fun getNestedClassifierScope( + klass: FirClass, + useSiteSession: FirSession, + scopeSession: ScopeSession + ): FirContainingNamesAwareScope? { shouldNotBeCalled() }