FIR: Introduce and use FirClass<*>::unsubstitutedScope
This commit is contained in:
@@ -13,11 +13,10 @@ import org.jetbrains.kotlin.fir.declarations.classId
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.constructType
|
||||
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||
import org.jetbrains.kotlin.fir.resolve.wrapSubstitutionScopeIfNeed
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.scopes.jvm.JvmMappedScope
|
||||
import org.jetbrains.kotlin.fir.scopes.scope
|
||||
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||
import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
|
||||
|
||||
@@ -36,7 +35,7 @@ fun wrapScopeWithJvmMapped(
|
||||
?: return declaredMemberScope
|
||||
val preparedSignatures = JvmMappedScope.prepareSignatures(javaClass)
|
||||
return if (preparedSignatures.isNotEmpty()) {
|
||||
javaClass.scope(ConeSubstitutor.Empty, useSiteSession, scopeSession).let { javaClassUseSiteScope ->
|
||||
javaClass.unsubstitutedScope(useSiteSession, scopeSession).let { javaClassUseSiteScope ->
|
||||
val jvmMappedScope = JvmMappedScope(declaredMemberScope, javaClassUseSiteScope, preparedSignatures)
|
||||
if (klass !is FirRegularClass) {
|
||||
jvmMappedScope
|
||||
@@ -52,4 +51,4 @@ fun wrapScopeWithJvmMapped(
|
||||
} else {
|
||||
declaredMemberScope
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.resultType
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.phasedFir
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.FirLocalScope
|
||||
import org.jetbrains.kotlin.fir.scopes.scope
|
||||
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
|
||||
@@ -289,7 +289,7 @@ class FirCallResolver(
|
||||
symbol: FirClassSymbol<*>,
|
||||
typeArguments: List<FirTypeProjection>
|
||||
): FirDelegatedConstructorCall? {
|
||||
val scope = symbol.fir.scope(ConeSubstitutor.Empty, session, scopeSession) ?: return null
|
||||
val scope = symbol.fir.unsubstitutedScope(session, scopeSession) ?: return null
|
||||
val className = symbol.classId.shortClassName
|
||||
val callInfo = CallInfo(
|
||||
CallKind.Function,
|
||||
|
||||
@@ -16,9 +16,8 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirTypeParameterImpl
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirValueParameterImpl
|
||||
import org.jetbrains.kotlin.fir.inferenceContext
|
||||
import org.jetbrains.kotlin.fir.resolve.calls.FirSyntheticFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap
|
||||
import org.jetbrains.kotlin.fir.scopes.scope
|
||||
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
|
||||
import org.jetbrains.kotlin.fir.symbols.CallableId
|
||||
import org.jetbrains.kotlin.fir.symbols.StandardClassIds
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||
@@ -249,7 +248,7 @@ private fun FirRegularClass.findSingleAbstractMethodByNames(
|
||||
var resultMethod: FirSimpleFunction? = null
|
||||
var metIncorrectMember = false
|
||||
|
||||
val classUseSiteMemberScope = this.scope(ConeSubstitutor.Empty, session, scopeSession)
|
||||
val classUseSiteMemberScope = this.unsubstitutedScope(session, scopeSession)
|
||||
|
||||
for (candidateName in samCandidateNames) {
|
||||
if (metIncorrectMember) break
|
||||
|
||||
@@ -12,10 +12,8 @@ import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.inferenceContext
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.FirClassSubstitutionScope
|
||||
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||
import org.jetbrains.kotlin.fir.inferenceContext
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||
import org.jetbrains.kotlin.fir.scopes.scope
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
|
||||
abstract class SupertypeSupplier {
|
||||
@@ -53,7 +51,7 @@ fun FirClassSymbol<*>.buildUseSiteMemberScope(useSiteSession: FirSession, builde
|
||||
}
|
||||
|
||||
fun FirClass<*>.buildUseSiteMemberScope(useSiteSession: FirSession, builder: ScopeSession): FirScope? {
|
||||
return this.scope(ConeSubstitutor.Empty, useSiteSession, builder)
|
||||
return this.unsubstitutedScope(useSiteSession, builder)
|
||||
}
|
||||
|
||||
/* TODO REMOVE */
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.FirClassSubstitutionScope
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.withReplacedConeType
|
||||
import org.jetbrains.kotlin.fir.scopes.scope
|
||||
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
@@ -147,7 +147,7 @@ private fun processConstructors(
|
||||
) ?: return
|
||||
} else basicScope
|
||||
}
|
||||
is FirClassSymbol -> (matchedSymbol.fir as FirClass<*>).scope(ConeSubstitutor.Empty, session, scopeSession)
|
||||
is FirClassSymbol -> (matchedSymbol.fir as FirClass<*>).unsubstitutedScope(session, scopeSession)
|
||||
}
|
||||
|
||||
val constructorName = when (matchedSymbol) {
|
||||
|
||||
@@ -75,6 +75,10 @@ class KotlinScopeProvider(
|
||||
|
||||
data class ConeSubstitutionScopeKey(val substitutor: ConeSubstitutor) : ScopeSessionKey<FirClass<*>, FirClassSubstitutionScope>()
|
||||
|
||||
fun FirClass<*>.unsubstitutedScope(useSiteSession: FirSession, scopeSession: ScopeSession): FirScope {
|
||||
return scope(ConeSubstitutor.Empty, useSiteSession, scopeSession)
|
||||
}
|
||||
|
||||
fun FirClass<*>.scope(substitutor: ConeSubstitutor, useSiteSession: FirSession, scopeSession: ScopeSession): FirScope {
|
||||
val basicScope = scopeProvider.getUseSiteMemberScope(
|
||||
this, useSiteSession, scopeSession
|
||||
|
||||
+2
-3
@@ -10,10 +10,9 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvedImport
|
||||
import org.jetbrains.kotlin.fir.declarations.expandedConeType
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.calls.TowerScopeLevel
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.scopes.scope
|
||||
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
|
||||
import org.jetbrains.kotlin.fir.symbols.CallableId
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
@@ -35,7 +34,7 @@ abstract class FirAbstractImportingScope(
|
||||
return getStaticsScope(expansionSymbol.classId)
|
||||
}
|
||||
} else {
|
||||
return (symbol as FirClassSymbol<*>).fir.scope(ConeSubstitutor.Empty, session, scopeSession)
|
||||
return (symbol as FirClassSymbol<*>).fir.unsubstitutedScope(session, scopeSession)
|
||||
}
|
||||
|
||||
return null
|
||||
|
||||
Reference in New Issue
Block a user