FIR: get rid of symbolProvider.getClassDeclaredMemberScope usages in compiler

This commit is contained in:
Mikhail Glukhikh
2019-12-12 12:33:43 +03:00
parent f497231acd
commit af87a183c2
3 changed files with 7 additions and 5 deletions
@@ -66,8 +66,8 @@ class JavaSymbolProvider(
// NB: looks like it's better not to use this function at all...
override fun getClassDeclaredMemberScope(classId: ClassId): FirScope? {
val classSymbol = getClassLikeSymbolByFqName(classId) ?: return null
return declaredMemberScope(classSymbol.fir)
// Anyway we cannot build correct declared member scope here
return null
}
override fun getClassUseSiteMemberScope(
@@ -135,7 +135,8 @@ abstract class FirSymbolProvider : FirSessionComponent {
}
fun FirSymbolProvider.getClassDeclaredCallableSymbols(classId: ClassId, name: Name): List<FirCallableSymbol<*>> {
val declaredMemberScope = getClassDeclaredMemberScope(classId) ?: return emptyList()
val classSymbol = getClassLikeSymbolByFqName(classId) as? FirRegularClassSymbol ?: return emptyList()
val declaredMemberScope = declaredMemberScope(classSymbol.fir)
val result = mutableListOf<FirCallableSymbol<*>>()
val processor: (FirCallableSymbol<*>) -> ProcessorAction = {
result.add(it)
@@ -18,10 +18,11 @@ import org.jetbrains.kotlin.fir.resolvedTypeFromPrototype
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
import org.jetbrains.kotlin.fir.scopes.impl.FirIntegerOperator
import org.jetbrains.kotlin.fir.scopes.impl.FirIntegerOperatorCall
import org.jetbrains.kotlin.fir.scopes.impl.declaredMemberScope
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.StandardClassIds
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
import org.jetbrains.kotlin.fir.visitors.FirTransformer
@@ -55,7 +56,7 @@ class IntegerLiteralTypeApproximationTransformer(
functionCall.transformChildren(this, data)
val argumentType = functionCall.arguments.firstOrNull()?.resultType?.coneTypeUnsafe<ConeClassLikeType>()
val receiverClassId = functionCall.dispatchReceiver.typeRef.coneTypeUnsafe<ConeClassLikeType>().lookupTag.classId
val scope = symbolProvider.getClassDeclaredMemberScope(receiverClassId)!!
val scope = declaredMemberScope((symbolProvider.getClassLikeSymbolByFqName(receiverClassId) as FirRegularClassSymbol).fir)
var resultSymbol: FirFunctionSymbol<*>? = null
scope.processFunctionsByName(operator.name) { symbol ->
if (operator.kind.unary) {