[FIR] Use proper scope lookup for classifiers

This commit is contained in:
Dmitriy Novozhilov
2023-06-26 14:59:33 +03:00
committed by Space Team
parent 4dafc3b6e6
commit 22b2774ef7
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.fir.resolve.transformers.mpp
import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.descriptors.isEnumClass
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.isSubstitutionOrIntersectionOverride import org.jetbrains.kotlin.fir.isSubstitutionOrIntersectionOverride
@@ -27,7 +26,6 @@ import org.jetbrains.kotlin.types.AbstractTypeChecker
import org.jetbrains.kotlin.types.TypeCheckerState import org.jetbrains.kotlin.types.TypeCheckerState
import org.jetbrains.kotlin.types.Variance import org.jetbrains.kotlin.types.Variance
import org.jetbrains.kotlin.types.model.* import org.jetbrains.kotlin.types.model.*
import org.jetbrains.kotlin.utils.addIfNotNull
import org.jetbrains.kotlin.utils.addToStdlib.UnsafeCastFunction import org.jetbrains.kotlin.utils.addToStdlib.UnsafeCastFunction
import org.jetbrains.kotlin.utils.addToStdlib.castAll import org.jetbrains.kotlin.utils.addToStdlib.castAll
@@ -170,9 +168,13 @@ class FirExpectActualMatchingContext(
scope.getMembersTo(this, name) scope.getMembersTo(this, name)
} }
// TODO: replace with scope lookup for (name in scope.getClassifierNames()) {
for (name in symbol.declarationSymbols.mapNotNull { (it as? FirRegularClassSymbol)?.classId?.shortClassName }) { scope.processClassifiersByName(name) {
addIfNotNull(scope.getSingleClassifier(name) as? FirRegularClassSymbol) // We should skip nested classes from supertypes here
if (it is FirRegularClassSymbol && it.classId.parentClassId == symbol.classId) {
add(it)
}
}
} }
getConstructorsTo(this, scope) getConstructorsTo(this, scope)
} }