FIR: Add FirTypeScope

^KT-35495 Relates
This commit is contained in:
Denis Zharkov
2020-06-09 14:35:45 +03:00
parent 38922a84f1
commit 0bd2a74542
15 changed files with 96 additions and 29 deletions
@@ -14,10 +14,13 @@ import org.jetbrains.kotlin.fir.java.scopes.JavaClassEnhancementScope
import org.jetbrains.kotlin.fir.java.scopes.JavaClassUseSiteMemberScope
import org.jetbrains.kotlin.fir.java.scopes.JavaOverrideChecker
import org.jetbrains.kotlin.fir.resolve.*
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.scopes.FirScopeProvider
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
import org.jetbrains.kotlin.fir.scopes.impl.*
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.types.ConeClassErrorType
@@ -34,7 +37,7 @@ class JavaScopeProvider(
klass: FirClass<*>,
useSiteSession: FirSession,
scopeSession: ScopeSession
): FirScope =
): FirTypeScope =
buildJavaEnhancementScope(useSiteSession, klass.symbol as FirRegularClassSymbol, scopeSession, mutableSetOf())
private fun buildJavaEnhancementScope(
@@ -86,7 +89,7 @@ class JavaScopeProvider(
}
JavaClassUseSiteMemberScope(
regularClass, useSiteSession,
FirSuperTypeScope.prepareSupertypeScope(
FirSuperTypeScope.prepareOverrideAwareSupertypeScope(
useSiteSession,
JavaOverrideChecker(
useSiteSession,
@@ -110,7 +113,14 @@ class JavaScopeProvider(
val wrappedDeclaredScope = declaredMemberScopeDecorator(klass, declaredScope, useSiteSession, scopeSession)
JavaClassEnhancementScope(
useSiteSession, JavaClassUseSiteMemberScope(
klass, useSiteSession, superTypesScope = object : FirScope() {}, declaredMemberScope = wrappedDeclaredScope
klass, useSiteSession,
superTypesScope = object : FirTypeScope() {
override fun processOverriddenFunctions(
functionSymbol: FirFunctionSymbol<*>,
processor: (FirFunctionSymbol<*>) -> ProcessorAction
): ProcessorAction = ProcessorAction.STOP
},
declaredMemberScope = wrappedDeclaredScope
)
)
}
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.fir.declarations.builder.FirConstructorBuilder
import org.jetbrains.kotlin.fir.declarations.builder.FirPrimaryConstructorBuilder
import org.jetbrains.kotlin.fir.declarations.builder.FirSimpleFunctionBuilder
import org.jetbrains.kotlin.fir.declarations.builder.buildValueParameter
import org.jetbrains.kotlin.fir.declarations.impl.*
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
import org.jetbrains.kotlin.fir.declarations.synthetic.buildSyntheticProperty
import org.jetbrains.kotlin.fir.expressions.FirConstKind
@@ -24,7 +24,8 @@ import org.jetbrains.kotlin.fir.java.declarations.*
import org.jetbrains.kotlin.fir.java.enhancement.*
import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
import org.jetbrains.kotlin.fir.scopes.jvm.computeJvmDescriptor
import org.jetbrains.kotlin.fir.symbols.CallableId
import org.jetbrains.kotlin.fir.symbols.impl.*
@@ -42,7 +43,7 @@ import org.jetbrains.kotlin.utils.Jsr305State
class JavaClassEnhancementScope(
private val session: FirSession,
private val useSiteMemberScope: JavaClassUseSiteMemberScope
) : FirScope() {
) : FirTypeScope() {
private val owner: FirRegularClass = useSiteMemberScope.symbol.fir
private val javaTypeParameterStack: JavaTypeParameterStack =
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.builder.FirSimpleFunctionBuilder
import org.jetbrains.kotlin.fir.declarations.builder.FirValueParameterBuilder
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
import org.jetbrains.kotlin.fir.declarations.synthetic.buildSyntheticProperty
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.java.JavaTypeParameterStack
@@ -17,6 +16,7 @@ import org.jetbrains.kotlin.fir.java.declarations.*
import org.jetbrains.kotlin.fir.resolve.calls.FirSyntheticPropertiesScope
import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.scopes.impl.AbstractFirUseSiteMemberScope
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
import org.jetbrains.kotlin.fir.symbols.CallableId
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.jvm.FirJavaTypeRef
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.name.Name
class JavaClassUseSiteMemberScope(
klass: FirRegularClass,
session: FirSession,
superTypesScope: FirScope,
superTypesScope: FirTypeScope,
declaredMemberScope: FirScope
) : AbstractFirUseSiteMemberScope(
session,