[FIR] Update all required places according to changed overridden processing contract

This commit fixes all places that relied on the contract described in
  the previous commit and also updates corresponding tests

^KT-63738
This commit is contained in:
Dmitriy Novozhilov
2023-12-06 15:51:55 +02:00
committed by Space Team
parent 4272f2e156
commit 385bff3be1
18 changed files with 101 additions and 228 deletions
@@ -37,15 +37,16 @@ object FirJsNameClashClassMembersChecker : FirClassChecker() {
private val allSymbols = mutableSetOf<FirCallableSymbol<*>>()
private fun FirTypeScope.collectOverriddenLeaves(classMemberSymbol: FirCallableSymbol<*>): Set<FirCallableSymbol<*>> {
val visitedSymbols = hashSetOf(classMemberSymbol)
val symbolsToProcess = mutableListOf(classMemberSymbol)
val startMemberWithScope = MemberWithBaseScope(classMemberSymbol, this)
val visitedSymbols = hashSetOf(startMemberWithScope)
val symbolsToProcess = mutableListOf(startMemberWithScope)
val leaves = mutableSetOf<FirCallableSymbol<*>>()
while (symbolsToProcess.isNotEmpty()) {
val processingSymbol = symbolsToProcess.popLast()
val overriddenMembers = getDirectOverriddenMembers(processingSymbol, true)
for (overriddenMember in overriddenMembers) {
if (visitedSymbols.add(overriddenMember)) {
symbolsToProcess.add(overriddenMember)
val (processingSymbol, scope) = symbolsToProcess.popLast()
val overriddenMembers = scope.getDirectOverriddenMembersWithBaseScope(processingSymbol)
for (overriddenMemberWithScope in overriddenMembers) {
if (visitedSymbols.add(overriddenMemberWithScope)) {
symbolsToProcess.add(overriddenMemberWithScope)
}
}
if (overriddenMembers.isEmpty()) {