From 6edf191b7fefbf9c45da9c9e2de7894af4a81ed2 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Wed, 17 Nov 2021 12:26:32 +0300 Subject: [PATCH] [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 --- .../kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt | 7 +++---- .../jetbrains/kotlin/fir/scopes/FirKotlinScopeProvider.kt | 2 ++ .../fir/scopes/impl/AbstractFirUseSiteMemberScope.kt | 2 ++ .../kotlin/fir/scopes/impl/FirClassDeclaredMemberScope.kt | 6 ++++-- .../kotlin/fir/scopes/impl/FirClassUseSiteMemberScope.kt | 5 ++++- .../scopes/impl/FirGeneratedClassDeclaredMemberScope.kt | 2 +- 6 files changed, 16 insertions(+), 8 deletions(-) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt index de72020b490..baa91b04970 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt @@ -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, diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/FirKotlinScopeProvider.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/FirKotlinScopeProvider.kt index 16ba49de92d..d097c11b87e 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/FirKotlinScopeProvider.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/FirKotlinScopeProvider.kt @@ -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, diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt index 3bd0856d2f0..100db5f4dae 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt @@ -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, diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassDeclaredMemberScope.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassDeclaredMemberScope.kt index 91f7a8f16d7..34f7e13335e 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassDeclaredMemberScope.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassDeclaredMemberScope.kt @@ -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? = null, symbolProvider: FirSymbolProvider? = null -) : FirClassDeclaredMemberScope() { +) : FirClassDeclaredMemberScope(klass.classId) { private val nestedClassifierScope: FirContainingNamesAwareScope? = if (useLazyNestedClassifierScope) { lazyNestedClassifierScope(klass.symbol.classId, existingNames!!, symbolProvider!!) } else { diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassUseSiteMemberScope.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassUseSiteMemberScope.kt index 6a56374a66e..c6c4afb43cb 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassUseSiteMemberScope.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassUseSiteMemberScope.kt @@ -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> { val seen = mutableSetOf>() diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirGeneratedClassDeclaredMemberScope.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirGeneratedClassDeclaredMemberScope.kt index b4af62032ee..909330ccf68 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirGeneratedClassDeclaredMemberScope.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirGeneratedClassDeclaredMemberScope.kt @@ -28,7 +28,7 @@ class FirGeneratedClassDeclaredMemberScope( val useSiteSession: FirSession, val firClass: FirClass, needNestedClassifierScope: Boolean -) : FirClassDeclaredMemberScope() { +) : FirClassDeclaredMemberScope(firClass.classId) { private val extensions: List = firClass.findGeneratedExtensions(useSiteSession) { needToGenerateAdditionalMembersInClass(it) }