[FIR] Fix collecting member candidates on receiver with smartcast
^KT-51460 Fixed ^KT-51827
This commit is contained in:
committed by
teamcity
parent
51bd0fd2db
commit
6e2402620f
@@ -63,10 +63,25 @@ class FirOverrideService(val session: FirSession) : FirSessionComponent {
|
||||
return result
|
||||
}
|
||||
|
||||
fun <D : FirCallableSymbol<*>> createOverridableGroups(
|
||||
members: Collection<MemberWithBaseScope<D>>,
|
||||
overrideChecker: FirOverrideChecker
|
||||
): List<List<MemberWithBaseScope<D>>> {
|
||||
if (members.size <= 1) return listOf(members.toList())
|
||||
val queue = LinkedList(members)
|
||||
val result = mutableListOf<List<MemberWithBaseScope<D>>>()
|
||||
while (queue.isNotEmpty()) {
|
||||
val nextHandle = queue.first()
|
||||
val overridableGroup = extractBothWaysOverridable(nextHandle, queue, overrideChecker)
|
||||
result += overridableGroup
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
fun <D : FirCallableSymbol<*>> extractBothWaysOverridable(
|
||||
overrider: MemberWithBaseScope<D>,
|
||||
members: MutableCollection<MemberWithBaseScope<D>>,
|
||||
overrideChecker: FirOverrideChecker
|
||||
overrideChecker: FirOverrideChecker,
|
||||
): MutableList<MemberWithBaseScope<D>> {
|
||||
val result = mutableListOf<MemberWithBaseScope<D>>().apply { add(overrider) }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user