[FIR] add memberRequiredPhase to declaredMemberScope

^KT-56551
This commit is contained in:
Dmitrii Gridin
2023-05-15 12:17:07 +02:00
committed by Space Team
parent 01a94624f5
commit 5b3f617378
12 changed files with 105 additions and 60 deletions
@@ -74,11 +74,15 @@ object JavaScopeProvider : FirScopeProvider() {
}
private fun buildDeclaredMemberScope(useSiteSession: FirSession, regularClass: FirRegularClass): FirContainingNamesAwareScope {
return if (regularClass is FirJavaClass) useSiteSession.declaredMemberScopeWithLazyNestedScope(
regularClass,
existingNames = regularClass.existingNestedClassifierNames,
symbolProvider = useSiteSession.symbolProvider
) else useSiteSession.declaredMemberScope(regularClass)
return if (regularClass is FirJavaClass) {
useSiteSession.declaredMemberScopeWithLazyNestedScope(
regularClass,
existingNames = regularClass.existingNestedClassifierNames,
symbolProvider = useSiteSession.symbolProvider
)
} else {
useSiteSession.declaredMemberScope(regularClass, memberRequiredPhase = null)
}
}
private fun buildUseSiteMemberScopeWithJavaTypes(
@@ -89,13 +93,12 @@ object JavaScopeProvider : FirScopeProvider() {
): JavaClassUseSiteMemberScope {
return scopeSession.getOrBuild(regularClass.symbol, JAVA_USE_SITE) {
val declaredScope = buildDeclaredMemberScope(useSiteSession, regularClass)
val superTypes =
if (regularClass.isThereLoopInSupertypes(useSiteSession))
listOf(StandardClassIds.Any.constructClassLikeType(emptyArray(), isNullable = false))
else
lookupSuperTypes(
regularClass, lookupInterfaces = true, deep = false, useSiteSession = useSiteSession, substituteTypes = true
)
val superTypes = if (regularClass.isThereLoopInSupertypes(useSiteSession))
listOf(StandardClassIds.Any.constructClassLikeType(emptyArray(), isNullable = false))
else
lookupSuperTypes(
regularClass, lookupInterfaces = true, deep = false, useSiteSession = useSiteSession, substituteTypes = true
)
val superTypeScopes = superTypes.mapNotNull {
it.scopeForSupertype(useSiteSession, scopeSession, regularClass, memberRequiredPhase = memberRequiredPhase)