[FIR] Save classId in declared and use site scopes

This is needed for debug purposes, because without classId or reference
  to class it's very hard to understand which scope you are observing
  in debugger
This commit is contained in:
Dmitriy Novozhilov
2021-11-17 12:26:32 +03:00
parent a695d9bf59
commit 6edf191b7f
6 changed files with 16 additions and 8 deletions
@@ -10,10 +10,7 @@ import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
import org.jetbrains.kotlin.fir.declarations.synthetic.buildSyntheticProperty
import org.jetbrains.kotlin.fir.declarations.utils.isInterface
import org.jetbrains.kotlin.fir.declarations.utils.isOperator
import org.jetbrains.kotlin.fir.declarations.utils.modality
import org.jetbrains.kotlin.fir.declarations.utils.superConeTypes
import org.jetbrains.kotlin.fir.declarations.utils.*
import org.jetbrains.kotlin.fir.java.declarations.FirJavaClass
import org.jetbrains.kotlin.fir.java.declarations.buildJavaMethodCopy
import org.jetbrains.kotlin.fir.java.declarations.buildJavaValueParameterCopy
@@ -25,6 +22,7 @@ import org.jetbrains.kotlin.fir.scopes.impl.AbstractFirUseSiteMemberScope
import org.jetbrains.kotlin.fir.scopes.jvm.computeJvmDescriptor
import org.jetbrains.kotlin.fir.scopes.jvm.computeJvmSignature
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.symbols.impl.isStatic
import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.load.java.BuiltinSpecialProperties
import org.jetbrains.kotlin.load.java.JvmAbi
@@ -44,6 +42,7 @@ class JavaClassUseSiteMemberScope(
superTypesScope: FirTypeScope,
declaredMemberScope: FirContainingNamesAwareScope
) : AbstractFirUseSiteMemberScope(
klass.classId,
session,
JavaOverrideChecker(session, klass.javaTypeParameterStack, superTypesScope, considerReturnTypeKinds = true),
superTypesScope,
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.FirSessionComponent
import org.jetbrains.kotlin.fir.declarations.FirClass
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.declarations.utils.classId
import org.jetbrains.kotlin.fir.declarations.utils.delegateFields
import org.jetbrains.kotlin.fir.declarations.utils.isExpect
import org.jetbrains.kotlin.fir.resolve.*
@@ -54,6 +55,7 @@ class FirKotlinScopeProvider(
useSiteSuperType.scopeForSupertype(useSiteSession, scopeSession, klass)
}
FirClassUseSiteMemberScope(
klass.classId,
useSiteSession,
FirTypeIntersectionScope.prepareIntersectionScope(
useSiteSession, FirStandardOverrideChecker(useSiteSession), scopes,
@@ -12,9 +12,11 @@ import org.jetbrains.kotlin.fir.scopes.FirOverrideChecker
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.Name
abstract class AbstractFirUseSiteMemberScope(
val classId: ClassId,
session: FirSession,
overrideChecker: FirOverrideChecker,
protected val superTypesScope: FirTypeScope,
@@ -7,15 +7,17 @@ package org.jetbrains.kotlin.fir.scopes.impl
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.utils.classId
import org.jetbrains.kotlin.fir.declarations.utils.isSynthetic
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
import org.jetbrains.kotlin.fir.scopes.FirContainingNamesAwareScope
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.name.SpecialNames
abstract class FirClassDeclaredMemberScope : FirContainingNamesAwareScope()
abstract class FirClassDeclaredMemberScope(val classId: ClassId) : FirContainingNamesAwareScope()
class FirClassDeclaredMemberScopeImpl(
val useSiteSession: FirSession,
@@ -23,7 +25,7 @@ class FirClassDeclaredMemberScopeImpl(
useLazyNestedClassifierScope: Boolean = false,
existingNames: List<Name>? = null,
symbolProvider: FirSymbolProvider? = null
) : FirClassDeclaredMemberScope() {
) : FirClassDeclaredMemberScope(klass.classId) {
private val nestedClassifierScope: FirContainingNamesAwareScope? = if (useLazyNestedClassifierScope) {
lazyNestedClassifierScope(klass.symbol.classId, existingNames!!, symbolProvider!!)
} else {
@@ -6,19 +6,22 @@
package org.jetbrains.kotlin.fir.scopes.impl
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirClass
import org.jetbrains.kotlin.fir.declarations.FirProperty
import org.jetbrains.kotlin.fir.scopes.FirContainingNamesAwareScope
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.symbols.impl.isStatic
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.Name
class FirClassUseSiteMemberScope(
classId: ClassId,
session: FirSession,
superTypesScope: FirTypeScope,
declaredMemberScope: FirContainingNamesAwareScope
) : AbstractFirUseSiteMemberScope(session, FirStandardOverrideChecker(session), superTypesScope, declaredMemberScope) {
) : AbstractFirUseSiteMemberScope(classId, session, FirStandardOverrideChecker(session), superTypesScope, declaredMemberScope) {
override fun doProcessProperties(name: Name): Collection<FirVariableSymbol<*>> {
val seen = mutableSetOf<FirVariableSymbol<*>>()
@@ -28,7 +28,7 @@ class FirGeneratedClassDeclaredMemberScope(
val useSiteSession: FirSession,
val firClass: FirClass,
needNestedClassifierScope: Boolean
) : FirClassDeclaredMemberScope() {
) : FirClassDeclaredMemberScope(firClass.classId) {
private val extensions: List<FirDeclarationGenerationExtension> = firClass.findGeneratedExtensions(useSiteSession) {
needToGenerateAdditionalMembersInClass(it)
}