FIR: Simplify contract in FirScopeProvider::getUseSiteMemberScope
This commit is contained in:
@@ -13,8 +13,6 @@ import org.jetbrains.kotlin.fir.java.scopes.JavaClassEnhancementScope
|
|||||||
import org.jetbrains.kotlin.fir.java.scopes.JavaClassUseSiteMemberScope
|
import org.jetbrains.kotlin.fir.java.scopes.JavaClassUseSiteMemberScope
|
||||||
import org.jetbrains.kotlin.fir.java.scopes.JavaOverrideChecker
|
import org.jetbrains.kotlin.fir.java.scopes.JavaOverrideChecker
|
||||||
import org.jetbrains.kotlin.fir.resolve.*
|
import org.jetbrains.kotlin.fir.resolve.*
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
|
||||||
import org.jetbrains.kotlin.fir.scopes.ConeSubstitutionScopeKey
|
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScopeProvider
|
import org.jetbrains.kotlin.fir.scopes.FirScopeProvider
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.*
|
import org.jetbrains.kotlin.fir.scopes.impl.*
|
||||||
@@ -33,16 +31,10 @@ class JavaScopeProvider(
|
|||||||
) : FirScopeProvider() {
|
) : FirScopeProvider() {
|
||||||
override fun getUseSiteMemberScope(
|
override fun getUseSiteMemberScope(
|
||||||
klass: FirClass<*>,
|
klass: FirClass<*>,
|
||||||
substitutor: ConeSubstitutor,
|
|
||||||
useSiteSession: FirSession,
|
useSiteSession: FirSession,
|
||||||
scopeSession: ScopeSession
|
scopeSession: ScopeSession
|
||||||
): FirScope {
|
): FirScope =
|
||||||
val baseScope = buildJavaEnhancementScope(useSiteSession, klass.symbol as FirRegularClassSymbol, scopeSession, mutableSetOf())
|
buildJavaEnhancementScope(useSiteSession, klass.symbol as FirRegularClassSymbol, scopeSession, mutableSetOf())
|
||||||
if (substitutor == ConeSubstitutor.Empty) return baseScope
|
|
||||||
return scopeSession.getOrBuild(klass, ConeSubstitutionScopeKey(substitutor)) {
|
|
||||||
FirClassSubstitutionScope(useSiteSession, baseScope, scopeSession, substitutor)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun buildJavaEnhancementScope(
|
private fun buildJavaEnhancementScope(
|
||||||
useSiteSession: FirSession,
|
useSiteSession: FirSession,
|
||||||
@@ -105,7 +97,7 @@ class JavaScopeProvider(
|
|||||||
useSiteSession: FirSession,
|
useSiteSession: FirSession,
|
||||||
scopeSession: ScopeSession
|
scopeSession: ScopeSession
|
||||||
): FirScope? {
|
): FirScope? {
|
||||||
return FirStaticScope(getUseSiteMemberScope(klass, ConeSubstitutor.Empty, useSiteSession, scopeSession))
|
return FirStaticScope(getUseSiteMemberScope(klass, useSiteSession, scopeSession))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,14 +8,12 @@ package org.jetbrains.kotlin.fir.builder
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScopeProvider
|
import org.jetbrains.kotlin.fir.scopes.FirScopeProvider
|
||||||
|
|
||||||
object StubFirScopeProvider : FirScopeProvider() {
|
object StubFirScopeProvider : FirScopeProvider() {
|
||||||
override fun getUseSiteMemberScope(
|
override fun getUseSiteMemberScope(
|
||||||
klass: FirClass<*>,
|
klass: FirClass<*>,
|
||||||
substitutor: ConeSubstitutor,
|
|
||||||
useSiteSession: FirSession,
|
useSiteSession: FirSession,
|
||||||
scopeSession: ScopeSession
|
scopeSession: ScopeSession
|
||||||
): FirScope {
|
): FirScope {
|
||||||
@@ -29,4 +27,4 @@ object StubFirScopeProvider : FirScopeProvider() {
|
|||||||
): FirScope? {
|
): FirScope? {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ class KotlinScopeProvider(
|
|||||||
return substitutorByMap(originalSubstitution)
|
return substitutorByMap(originalSubstitution)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun buildRawUseSiteScope(
|
override fun getUseSiteMemberScope(
|
||||||
klass: FirClass<*>,
|
klass: FirClass<*>,
|
||||||
useSiteSession: FirSession,
|
useSiteSession: FirSession,
|
||||||
scopeSession: ScopeSession
|
scopeSession: ScopeSession
|
||||||
@@ -60,20 +60,6 @@ class KotlinScopeProvider(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getUseSiteMemberScope(
|
|
||||||
klass: FirClass<*>,
|
|
||||||
substitutor: ConeSubstitutor,
|
|
||||||
useSiteSession: FirSession,
|
|
||||||
scopeSession: ScopeSession
|
|
||||||
): FirScope {
|
|
||||||
if (substitutor == ConeSubstitutor.Empty) return buildRawUseSiteScope(klass, useSiteSession, scopeSession)
|
|
||||||
return scopeSession.getOrBuild(
|
|
||||||
klass, ConeSubstitutionScopeKey(substitutor)
|
|
||||||
) {
|
|
||||||
FirClassSubstitutionScope(useSiteSession, buildRawUseSiteScope(klass, useSiteSession, scopeSession), scopeSession, substitutor)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getStaticMemberScopeForCallables(
|
override fun getStaticMemberScopeForCallables(
|
||||||
klass: FirClass<*>,
|
klass: FirClass<*>,
|
||||||
useSiteSession: FirSession,
|
useSiteSession: FirSession,
|
||||||
@@ -90,7 +76,14 @@ class KotlinScopeProvider(
|
|||||||
data class ConeSubstitutionScopeKey(val substitutor: ConeSubstitutor) : ScopeSessionKey<FirClass<*>, FirClassSubstitutionScope>()
|
data class ConeSubstitutionScopeKey(val substitutor: ConeSubstitutor) : ScopeSessionKey<FirClass<*>, FirClassSubstitutionScope>()
|
||||||
|
|
||||||
fun FirClass<*>.scope(substitutor: ConeSubstitutor, useSiteSession: FirSession, scopeSession: ScopeSession): FirScope {
|
fun FirClass<*>.scope(substitutor: ConeSubstitutor, useSiteSession: FirSession, scopeSession: ScopeSession): FirScope {
|
||||||
return scopeProvider.getUseSiteMemberScope(
|
val basicScope = scopeProvider.getUseSiteMemberScope(
|
||||||
this, substitutor, useSiteSession, scopeSession
|
this, useSiteSession, scopeSession
|
||||||
)
|
)
|
||||||
}
|
if (substitutor == ConeSubstitutor.Empty) return basicScope
|
||||||
|
|
||||||
|
return scopeSession.getOrBuild(
|
||||||
|
this, ConeSubstitutionScopeKey(substitutor)
|
||||||
|
) {
|
||||||
|
FirClassSubstitutionScope(useSiteSession, basicScope, scopeSession, substitutor)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -8,12 +8,10 @@ package org.jetbrains.kotlin.fir.scopes
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
|
||||||
|
|
||||||
abstract class FirScopeProvider {
|
abstract class FirScopeProvider {
|
||||||
abstract fun getUseSiteMemberScope(
|
abstract fun getUseSiteMemberScope(
|
||||||
klass: FirClass<*>,
|
klass: FirClass<*>,
|
||||||
substitutor: ConeSubstitutor,
|
|
||||||
useSiteSession: FirSession,
|
useSiteSession: FirSession,
|
||||||
scopeSession: ScopeSession
|
scopeSession: ScopeSession
|
||||||
): FirScope
|
): FirScope
|
||||||
|
|||||||
Reference in New Issue
Block a user