[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:
+3
-4
@@ -10,10 +10,7 @@ import org.jetbrains.kotlin.fir.*
|
|||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
|
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
|
||||||
import org.jetbrains.kotlin.fir.declarations.synthetic.buildSyntheticProperty
|
import org.jetbrains.kotlin.fir.declarations.synthetic.buildSyntheticProperty
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.isInterface
|
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||||
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.java.declarations.FirJavaClass
|
import org.jetbrains.kotlin.fir.java.declarations.FirJavaClass
|
||||||
import org.jetbrains.kotlin.fir.java.declarations.buildJavaMethodCopy
|
import org.jetbrains.kotlin.fir.java.declarations.buildJavaMethodCopy
|
||||||
import org.jetbrains.kotlin.fir.java.declarations.buildJavaValueParameterCopy
|
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.computeJvmDescriptor
|
||||||
import org.jetbrains.kotlin.fir.scopes.jvm.computeJvmSignature
|
import org.jetbrains.kotlin.fir.scopes.jvm.computeJvmSignature
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
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.fir.types.*
|
||||||
import org.jetbrains.kotlin.load.java.BuiltinSpecialProperties
|
import org.jetbrains.kotlin.load.java.BuiltinSpecialProperties
|
||||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||||
@@ -44,6 +42,7 @@ class JavaClassUseSiteMemberScope(
|
|||||||
superTypesScope: FirTypeScope,
|
superTypesScope: FirTypeScope,
|
||||||
declaredMemberScope: FirContainingNamesAwareScope
|
declaredMemberScope: FirContainingNamesAwareScope
|
||||||
) : AbstractFirUseSiteMemberScope(
|
) : AbstractFirUseSiteMemberScope(
|
||||||
|
klass.classId,
|
||||||
session,
|
session,
|
||||||
JavaOverrideChecker(session, klass.javaTypeParameterStack, superTypesScope, considerReturnTypeKinds = true),
|
JavaOverrideChecker(session, klass.javaTypeParameterStack, superTypesScope, considerReturnTypeKinds = true),
|
||||||
superTypesScope,
|
superTypesScope,
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
|||||||
import org.jetbrains.kotlin.fir.FirSessionComponent
|
import org.jetbrains.kotlin.fir.FirSessionComponent
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
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.delegateFields
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.isExpect
|
import org.jetbrains.kotlin.fir.declarations.utils.isExpect
|
||||||
import org.jetbrains.kotlin.fir.resolve.*
|
import org.jetbrains.kotlin.fir.resolve.*
|
||||||
@@ -54,6 +55,7 @@ class FirKotlinScopeProvider(
|
|||||||
useSiteSuperType.scopeForSupertype(useSiteSession, scopeSession, klass)
|
useSiteSuperType.scopeForSupertype(useSiteSession, scopeSession, klass)
|
||||||
}
|
}
|
||||||
FirClassUseSiteMemberScope(
|
FirClassUseSiteMemberScope(
|
||||||
|
klass.classId,
|
||||||
useSiteSession,
|
useSiteSession,
|
||||||
FirTypeIntersectionScope.prepareIntersectionScope(
|
FirTypeIntersectionScope.prepareIntersectionScope(
|
||||||
useSiteSession, FirStandardOverrideChecker(useSiteSession), scopes,
|
useSiteSession, FirStandardOverrideChecker(useSiteSession), scopes,
|
||||||
|
|||||||
+2
@@ -12,9 +12,11 @@ import org.jetbrains.kotlin.fir.scopes.FirOverrideChecker
|
|||||||
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
|
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
|
||||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
abstract class AbstractFirUseSiteMemberScope(
|
abstract class AbstractFirUseSiteMemberScope(
|
||||||
|
val classId: ClassId,
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
overrideChecker: FirOverrideChecker,
|
overrideChecker: FirOverrideChecker,
|
||||||
protected val superTypesScope: FirTypeScope,
|
protected val superTypesScope: FirTypeScope,
|
||||||
|
|||||||
+4
-2
@@ -7,15 +7,17 @@ package org.jetbrains.kotlin.fir.scopes.impl
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
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.declarations.utils.isSynthetic
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirContainingNamesAwareScope
|
import org.jetbrains.kotlin.fir.scopes.FirContainingNamesAwareScope
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.name.SpecialNames
|
import org.jetbrains.kotlin.name.SpecialNames
|
||||||
|
|
||||||
abstract class FirClassDeclaredMemberScope : FirContainingNamesAwareScope()
|
abstract class FirClassDeclaredMemberScope(val classId: ClassId) : FirContainingNamesAwareScope()
|
||||||
|
|
||||||
class FirClassDeclaredMemberScopeImpl(
|
class FirClassDeclaredMemberScopeImpl(
|
||||||
val useSiteSession: FirSession,
|
val useSiteSession: FirSession,
|
||||||
@@ -23,7 +25,7 @@ class FirClassDeclaredMemberScopeImpl(
|
|||||||
useLazyNestedClassifierScope: Boolean = false,
|
useLazyNestedClassifierScope: Boolean = false,
|
||||||
existingNames: List<Name>? = null,
|
existingNames: List<Name>? = null,
|
||||||
symbolProvider: FirSymbolProvider? = null
|
symbolProvider: FirSymbolProvider? = null
|
||||||
) : FirClassDeclaredMemberScope() {
|
) : FirClassDeclaredMemberScope(klass.classId) {
|
||||||
private val nestedClassifierScope: FirContainingNamesAwareScope? = if (useLazyNestedClassifierScope) {
|
private val nestedClassifierScope: FirContainingNamesAwareScope? = if (useLazyNestedClassifierScope) {
|
||||||
lazyNestedClassifierScope(klass.symbol.classId, existingNames!!, symbolProvider!!)
|
lazyNestedClassifierScope(klass.symbol.classId, existingNames!!, symbolProvider!!)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+4
-1
@@ -6,19 +6,22 @@
|
|||||||
package org.jetbrains.kotlin.fir.scopes.impl
|
package org.jetbrains.kotlin.fir.scopes.impl
|
||||||
|
|
||||||
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.FirProperty
|
import org.jetbrains.kotlin.fir.declarations.FirProperty
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirContainingNamesAwareScope
|
import org.jetbrains.kotlin.fir.scopes.FirContainingNamesAwareScope
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
|
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.isStatic
|
import org.jetbrains.kotlin.fir.symbols.impl.isStatic
|
||||||
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
class FirClassUseSiteMemberScope(
|
class FirClassUseSiteMemberScope(
|
||||||
|
classId: ClassId,
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
superTypesScope: FirTypeScope,
|
superTypesScope: FirTypeScope,
|
||||||
declaredMemberScope: FirContainingNamesAwareScope
|
declaredMemberScope: FirContainingNamesAwareScope
|
||||||
) : AbstractFirUseSiteMemberScope(session, FirStandardOverrideChecker(session), superTypesScope, declaredMemberScope) {
|
) : AbstractFirUseSiteMemberScope(classId, session, FirStandardOverrideChecker(session), superTypesScope, declaredMemberScope) {
|
||||||
|
|
||||||
override fun doProcessProperties(name: Name): Collection<FirVariableSymbol<*>> {
|
override fun doProcessProperties(name: Name): Collection<FirVariableSymbol<*>> {
|
||||||
val seen = mutableSetOf<FirVariableSymbol<*>>()
|
val seen = mutableSetOf<FirVariableSymbol<*>>()
|
||||||
|
|||||||
+1
-1
@@ -28,7 +28,7 @@ class FirGeneratedClassDeclaredMemberScope(
|
|||||||
val useSiteSession: FirSession,
|
val useSiteSession: FirSession,
|
||||||
val firClass: FirClass,
|
val firClass: FirClass,
|
||||||
needNestedClassifierScope: Boolean
|
needNestedClassifierScope: Boolean
|
||||||
) : FirClassDeclaredMemberScope() {
|
) : FirClassDeclaredMemberScope(firClass.classId) {
|
||||||
private val extensions: List<FirDeclarationGenerationExtension> = firClass.findGeneratedExtensions(useSiteSession) {
|
private val extensions: List<FirDeclarationGenerationExtension> = firClass.findGeneratedExtensions(useSiteSession) {
|
||||||
needToGenerateAdditionalMembersInClass(it)
|
needToGenerateAdditionalMembersInClass(it)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user