FIR: Ensure resolved callable symbols came out of the declared scopes
Otherwise, we need to add `ensureResolved` to almost any usage of process*: - Call resolution need fully resolved callables - UseSiteScope when binding overrides should ensure resolved for callables from supertypes - checkers have to make sure they use correct overridden - SAM resolver
This commit is contained in:
-2
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.fir.resolve.calls.tower
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
||||
import org.jetbrains.kotlin.fir.resolve.calls.*
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.ensureResolvedForCalls
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
@@ -149,7 +148,6 @@ private class TowerScopeLevelProcessor(
|
||||
implicitExtensionReceiverValue: ImplicitReceiverValue<*>?,
|
||||
builtInExtensionFunctionReceiverValue: ReceiverValue?
|
||||
) {
|
||||
symbol.ensureResolvedForCalls(candidateFactory.bodyResolveComponents.session)
|
||||
// Check explicit extension receiver for default package members
|
||||
if (symbol is FirNamedFunctionSymbol && dispatchReceiverValue == null &&
|
||||
(implicitExtensionReceiverValue == null) != (explicitReceiver == null) &&
|
||||
|
||||
+2
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.declarations.expandedConeType
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.calls.tower.TowerScopeLevel
|
||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.ensureResolvedForCalls
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
|
||||
import org.jetbrains.kotlin.fir.symbols.CallableId
|
||||
@@ -74,6 +75,7 @@ abstract class FirAbstractImportingScope(
|
||||
}
|
||||
|
||||
for (symbol in symbols) {
|
||||
symbol.ensureResolvedForCalls(session)
|
||||
processor(symbol)
|
||||
}
|
||||
}
|
||||
|
||||
+2
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.scopes.impl
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.ensureResolvedForCalls
|
||||
import org.jetbrains.kotlin.fir.scopes.FirContainingNamesAwareScope
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.scopes.getContainingClassifierNamesIfPresent
|
||||
@@ -64,6 +65,7 @@ class FirClassDeclaredMemberScope(
|
||||
val symbols = callablesIndex[name] ?: emptyList()
|
||||
for (symbol in symbols) {
|
||||
if (symbol is D) {
|
||||
symbol.ensureResolvedForCalls(symbol.fir.session)
|
||||
processor(symbol)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.scopes.impl
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.ensureResolvedForCalls
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol
|
||||
@@ -55,6 +56,7 @@ class FirPackageMemberScope(val fqName: FqName, val session: FirSession) : FirSc
|
||||
}
|
||||
for (symbol in symbols) {
|
||||
if (symbol is D) {
|
||||
symbol.ensureResolvedForCalls(session)
|
||||
processor(symbol)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user