[low level api] consider property type parameters when matching FIR and PSI declarations
This commit is contained in:
+9
-7
@@ -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()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user