From 6453f2bdbfbeb5fedac17badf0b285e860d4483a Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Thu, 4 Nov 2021 21:57:34 +0100 Subject: [PATCH] Analysis API: simplify scope hierarchy --- .../components/KtFe10ScopeProvider.kt | 57 ++++++++----------- .../descriptors/scopes/KtFe10PackageScope.kt | 7 +-- .../scopes/KtFe10ScopeResolution.kt | 10 +++- .../api/fir/components/KtFirScopeProvider.kt | 49 ++++++++-------- .../fir/scopes/KtFirDeclaredMemberScope.kt | 10 +--- .../fir/scopes/KtFirDelegatedMemberScope.kt | 8 +-- .../api/fir/scopes/KtFirDelegatingScope.kt | 5 ++ .../api/fir/scopes/KtFirEmptyMemberScope.kt | 40 ------------- .../analysis/api/fir/scopes/KtFirFileScope.kt | 14 +++-- .../api/fir/scopes/KtFirMemberScope.kt | 10 +--- .../fir/scopes/KtFirNonStarImportingScope.kt | 3 +- .../api/fir/scopes/KtFirPackageScope.kt | 11 +++- ...tCompositeScope.kt => KtCompositeScope.kt} | 20 +++---- .../api/impl/base/scopes/KtEmptyScope.kt} | 14 ++--- .../api/components/KtScopeProvider.kt | 28 ++++----- .../analysis/api/scopes/KtImportingScope.kt | 6 ++ .../kotlin/analysis/api/scopes/KtScope.kt | 39 +++---------- .../symbol/classes/FirLightClassForFacade.kt | 4 +- 18 files changed, 133 insertions(+), 202 deletions(-) delete mode 100644 analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirEmptyMemberScope.kt rename analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/scopes/{SimpleKtCompositeScope.kt => KtCompositeScope.kt} (79%) rename analysis/{analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/scopes/KtFe10EmptyScope.kt => analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/scopes/KtEmptyScope.kt} (75%) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10ScopeProvider.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10ScopeProvider.kt index b19707b3793..4a9af229a89 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10ScopeProvider.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10ScopeProvider.kt @@ -20,12 +20,12 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.bas import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.KtFe10PsiSymbol import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.getResolutionScope import org.jetbrains.kotlin.analysis.api.descriptors.types.base.KtFe10Type -import org.jetbrains.kotlin.analysis.api.impl.base.scopes.SimpleKtCompositeScope +import org.jetbrains.kotlin.analysis.api.impl.base.scopes.KtEmptyScope +import org.jetbrains.kotlin.analysis.api.impl.base.scopes.KtCompositeScope import org.jetbrains.kotlin.analysis.api.scopes.* import org.jetbrains.kotlin.analysis.api.symbols.KtFileSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtPackageSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol -import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithDeclarations import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithMembers import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken import org.jetbrains.kotlin.analysis.api.types.KtType @@ -48,58 +48,47 @@ internal class KtFe10ScopeProvider(override val analysisSession: KtFe10AnalysisS override val token: ValidityToken get() = analysisSession.token - override fun getMemberScope(classSymbol: KtSymbolWithMembers): KtMemberScope = withValidityAssertion { + override fun getMemberScope(classSymbol: KtSymbolWithMembers): KtScope = withValidityAssertion { val descriptor = getDescriptor(classSymbol) - ?: return object : KtFe10EmptyScope(token), KtMemberScope { - override val owner get() = classSymbol - } + ?: return getEmptyScope() // TODO either this or declared scope should return a different set of members - return object : KtFe10ScopeMember(descriptor.unsubstitutedMemberScope, analysisSession), KtMemberScope { - override val owner get() = classSymbol - } + return KtFe10ScopeMember(descriptor.unsubstitutedMemberScope, analysisSession) } - override fun getDeclaredMemberScope(classSymbol: KtSymbolWithMembers): KtDeclaredMemberScope = withValidityAssertion { + override fun getDeclaredMemberScope(classSymbol: KtSymbolWithMembers): KtScope = withValidityAssertion { val descriptor = getDescriptor(classSymbol) - ?: return object : KtFe10EmptyScope(token), KtDeclaredMemberScope { - override val owner get() = classSymbol - } + ?: return getEmptyScope() // TODO: need to return declared members only - return object : KtFe10ScopeMember(descriptor.unsubstitutedMemberScope, analysisSession), KtDeclaredMemberScope { - override val owner get() = classSymbol - } + return KtFe10ScopeMember(descriptor.unsubstitutedMemberScope, analysisSession) } - override fun getDelegatedMemberScope(classSymbol: KtSymbolWithMembers): KtDelegatedMemberScope = withValidityAssertion { + override fun getDelegatedMemberScope(classSymbol: KtSymbolWithMembers): KtScope = withValidityAssertion { val descriptor = getDescriptor(classSymbol) - ?: return object : KtFe10EmptyScope(token), KtDelegatedMemberScope { - override val owner get() = classSymbol - } + ?: return getEmptyScope() // TODO: need to return delegated members only - return object : KtFe10ScopeMember(descriptor.unsubstitutedMemberScope, analysisSession), KtDelegatedMemberScope { - override val owner get() = classSymbol - } + return KtFe10ScopeMember(descriptor.unsubstitutedMemberScope, analysisSession) } override fun getStaticMemberScope(symbol: KtSymbolWithMembers): KtScope = withValidityAssertion { - val descriptor = getDescriptor(symbol) ?: return KtFe10EmptyScope(token) + val descriptor = getDescriptor(symbol) ?: return getEmptyScope() return KtFe10ScopeMember(descriptor.staticScope, analysisSession) } - override fun getFileScope(fileSymbol: KtFileSymbol): KtDeclarationScope = withValidityAssertion { + override fun getEmptyScope(): KtScope = withValidityAssertion { + KtEmptyScope(token) + } + + override fun getFileScope(fileSymbol: KtFileSymbol): KtScope = withValidityAssertion { require(fileSymbol is KtFe10FileSymbol) val scope = analysisSession.resolveSession.fileScopeProvider.getFileResolutionScope(fileSymbol.psi) - return object : KtFe10ScopeLexical(scope, analysisSession), KtDeclarationScope { - override val owner: KtSymbolWithDeclarations - get() = withValidityAssertion { fileSymbol } - } + return KtFe10ScopeLexical(scope, analysisSession) } - override fun getPackageScope(packageSymbol: KtPackageSymbol): KtPackageScope = withValidityAssertion { + override fun getPackageScope(packageSymbol: KtPackageSymbol): KtScope = withValidityAssertion { require(packageSymbol is KtFe10PackageSymbol) val packageFragments = analysisSession.resolveSession.packageFragmentProvider.packageFragments(packageSymbol.fqName) val scopeDescription = "Compound scope for package \"${packageSymbol.fqName}\"" @@ -107,8 +96,8 @@ internal class KtFe10ScopeProvider(override val analysisSession: KtFe10AnalysisS return KtFe10PackageScope(chainedScope, packageSymbol, analysisSession) } - override fun getCompositeScope(subScopes: List): KtCompositeScope = withValidityAssertion { - return SimpleKtCompositeScope(subScopes, token) + override fun getCompositeScope(subScopes: List): KtScope = withValidityAssertion { + return KtCompositeScope(subScopes, token) } override fun getTypeScope(type: KtType): KtScope = withValidityAssertion { @@ -122,12 +111,12 @@ internal class KtFe10ScopeProvider(override val analysisSession: KtFe10AnalysisS val lexicalScope = positionInFakeFile.getResolutionScope(bindingContext) if (lexicalScope != null) { - val compositeScope = SimpleKtCompositeScope(listOf(KtFe10ScopeLexical(lexicalScope, analysisSession)), token) + val compositeScope = KtCompositeScope(listOf(KtFe10ScopeLexical(lexicalScope, analysisSession)), token) return KtScopeContext(compositeScope, collectImplicitReceivers(lexicalScope)) } val fileScope = analysisSession.resolveSession.fileScopeProvider.getFileResolutionScope(originalFile) - val compositeScope = SimpleKtCompositeScope(listOf(KtFe10ScopeLexical(fileScope, analysisSession)), token) + val compositeScope = KtCompositeScope(listOf(KtFe10ScopeLexical(fileScope, analysisSession)), token) return KtScopeContext(compositeScope, collectImplicitReceivers(fileScope)) } diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/scopes/KtFe10PackageScope.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/scopes/KtFe10PackageScope.kt index c0fd8c4fc05..c7b0617cb50 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/scopes/KtFe10PackageScope.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/scopes/KtFe10PackageScope.kt @@ -7,22 +7,17 @@ package org.jetbrains.kotlin.analysis.api.descriptors.scopes import org.jetbrains.kotlin.analysis.api.descriptors.KtFe10AnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.symbols.KtFe10PackageSymbol -import org.jetbrains.kotlin.analysis.api.scopes.KtPackageScope import org.jetbrains.kotlin.analysis.api.scopes.KtScopeNameFilter import org.jetbrains.kotlin.analysis.api.symbols.KtConstructorSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtPackageSymbol import org.jetbrains.kotlin.analysis.api.withValidityAssertion -import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.resolve.scopes.MemberScope internal class KtFe10PackageScope( scope: MemberScope, private val owner: KtPackageSymbol, analysisSession: KtFe10AnalysisSession -) : KtFe10ScopeMember(scope, analysisSession), KtPackageScope { - override val fqName: FqName - get() = withValidityAssertion { owner.fqName } - +) : KtFe10ScopeMember(scope, analysisSession) { override fun getPackageSymbols(nameFilter: KtScopeNameFilter): Sequence = withValidityAssertion { val packageFragmentProvider = analysisSession.resolveSession.packageFragmentProvider return packageFragmentProvider.getSubPackagesOf(owner.fqName, nameFilter) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/scopes/KtFe10ScopeResolution.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/scopes/KtFe10ScopeResolution.kt index 00e69cf2bb4..f3935e3cf91 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/scopes/KtFe10ScopeResolution.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/scopes/KtFe10ScopeResolution.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.analysis.api.scopes.KtScopeNameFilter import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtClassifierSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtConstructorSymbol +import org.jetbrains.kotlin.analysis.api.symbols.KtPackageSymbol import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken import org.jetbrains.kotlin.analysis.api.withValidityAssertion import org.jetbrains.kotlin.descriptors.ConstructorDescriptor @@ -51,11 +52,15 @@ internal abstract class KtFe10ScopeResolution : KtScope, ValidityTokenOwner { .map { it.toKtConstructorSymbol(analysisSession) } } + override fun getPackageSymbols(nameFilter: KtScopeNameFilter): Sequence = withValidityAssertion { + emptySequence() + } + override val token: ValidityToken get() = analysisSession.token } -internal open class KtFe10ScopeLexical( +internal class KtFe10ScopeLexical( override val scope: LexicalScope, override val analysisSession: KtFe10AnalysisSession ) : KtFe10ScopeResolution(), ValidityTokenOwner { @@ -71,7 +76,8 @@ internal open class KtFe10ScopeLexical( internal open class KtFe10ScopeMember( override val scope: MemberScope, override val analysisSession: KtFe10AnalysisSession -) : KtFe10ScopeResolution(), ValidityTokenOwner { +) : KtFe10ScopeResolution() { + override fun getPossibleCallableNames(): Set = withValidityAssertion { return scope.getFunctionNames() + scope.getVariableNames() } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirScopeProvider.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirScopeProvider.kt index 992f85bcdeb..84119ee1671 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirScopeProvider.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirScopeProvider.kt @@ -29,11 +29,11 @@ import org.jetbrains.kotlin.analysis.api.fir.scopes.* import org.jetbrains.kotlin.analysis.api.fir.symbols.* import org.jetbrains.kotlin.analysis.api.fir.types.KtFirType import org.jetbrains.kotlin.analysis.api.fir.utils.weakRef -import org.jetbrains.kotlin.analysis.api.impl.base.scopes.SimpleKtCompositeScope +import org.jetbrains.kotlin.analysis.api.impl.base.scopes.KtEmptyScope +import org.jetbrains.kotlin.analysis.api.impl.base.scopes.KtCompositeScope import org.jetbrains.kotlin.analysis.api.scopes.* import org.jetbrains.kotlin.analysis.api.symbols.KtFileSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtPackageSymbol -import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithDeclarations import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithMembers import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken import org.jetbrains.kotlin.analysis.api.types.KtType @@ -54,11 +54,11 @@ internal class KtFirScopeProvider( private val builder by weakRef(builder) private val firResolveState by weakRef(firResolveState) - private val memberScopeCache = IdentityHashMap() - private val declaredMemberScopeCache = IdentityHashMap() - private val delegatedMemberScopeCache = IdentityHashMap() - private val fileScopeCache = IdentityHashMap>() - private val packageMemberScopeCache = IdentityHashMap() + private val memberScopeCache = IdentityHashMap() + private val declaredMemberScopeCache = IdentityHashMap() + private val delegatedMemberScopeCache = IdentityHashMap() + private val fileScopeCache = IdentityHashMap() + private val packageMemberScopeCache = IdentityHashMap() private inline fun KtSymbolWithMembers.withFirForScope(crossinline body: (FirClass) -> T): T? = when (this) { is KtFirNamedClassOrObjectSymbol -> firRef.withFir(FirResolvePhase.TYPES, body) @@ -71,9 +71,8 @@ internal class KtFirScopeProvider( else -> error { "Unknown KtSymbolWithDeclarations implementation ${this::class.qualifiedName}" } } - override fun getMemberScope(classSymbol: KtSymbolWithMembers): KtMemberScope = withValidityAssertion { + override fun getMemberScope(classSymbol: KtSymbolWithMembers): KtScope = withValidityAssertion { memberScopeCache.getOrPut(classSymbol) { - val firScope = classSymbol.withFirForScope { fir -> val firSession = analysisSession.rootModuleSession fir.unsubstitutedScope( @@ -81,32 +80,32 @@ internal class KtFirScopeProvider( ScopeSession(), withForcedTypeCalculator = false ) - } ?: return@getOrPut KtFirEmptyMemberScope(classSymbol) + } ?: return@getOrPut getEmptyScope() - KtFirMemberScope(classSymbol, firScope, token, builder) + KtFirMemberScope(firScope, token, builder) } } override fun getStaticMemberScope(symbol: KtSymbolWithMembers): KtScope { val firScope = symbol.withFirForScope { fir -> fir.scopeProvider.getStaticScope(fir, analysisSession.rootModuleSession, ScopeSession()) - } ?: return KtFirEmptyMemberScope(symbol) + } ?: return getEmptyScope() return KtFirDelegatingScopeImpl(firScope, builder, token) } - override fun getDeclaredMemberScope(classSymbol: KtSymbolWithMembers): KtDeclaredMemberScope = withValidityAssertion { + override fun getDeclaredMemberScope(classSymbol: KtSymbolWithMembers): KtScope = withValidityAssertion { declaredMemberScopeCache.getOrPut(classSymbol) { val firScope = classSymbol.withFirForScope { analysisSession.rootModuleSession.declaredMemberScope(it) - } ?: return@getOrPut KtFirEmptyMemberScope(classSymbol) + } ?: return@getOrPut getEmptyScope() - KtFirDeclaredMemberScope(classSymbol, firScope, token, builder) + KtFirDeclaredMemberScope(firScope, token, builder) } } - override fun getDelegatedMemberScope(classSymbol: KtSymbolWithMembers): KtDelegatedMemberScope = withValidityAssertion { + override fun getDelegatedMemberScope(classSymbol: KtSymbolWithMembers): KtScope = withValidityAssertion { val declaredScope = (getDeclaredMemberScope(classSymbol) as? KtFirDeclaredMemberScope)?.firScope - ?: return delegatedMemberScopeCache.getOrPut(classSymbol) { KtFirEmptyMemberScope(classSymbol) } + ?: return delegatedMemberScopeCache.getOrPut(classSymbol) { getEmptyScope() } delegatedMemberScopeCache.getOrPut(classSymbol) { val firScope = classSymbol.withFirForScope { fir -> val delegateFields = fir.delegateFields @@ -119,20 +118,24 @@ internal class KtFirScopeProvider( delegateFields ) } else null - } ?: return@getOrPut KtFirEmptyMemberScope(classSymbol) + } ?: return@getOrPut getEmptyScope() - KtFirDelegatedMemberScope(classSymbol, firScope, token, builder) + KtFirDelegatedMemberScope(firScope, token, builder) } } - override fun getFileScope(fileSymbol: KtFileSymbol): KtDeclarationScope = withValidityAssertion { + override fun getFileScope(fileSymbol: KtFileSymbol): KtScope = withValidityAssertion { fileScopeCache.getOrPut(fileSymbol) { check(fileSymbol is KtFirFileSymbol) { "KtFirScopeProvider can only work with KtFirFileSymbol, but ${fileSymbol::class} was provided" } KtFirFileScope(fileSymbol, token, builder) } } - override fun getPackageScope(packageSymbol: KtPackageSymbol): KtPackageScope = withValidityAssertion { + override fun getEmptyScope(): KtScope = withValidityAssertion { + KtEmptyScope(token) + } + + override fun getPackageScope(packageSymbol: KtPackageSymbol): KtScope = withValidityAssertion { packageMemberScopeCache.getOrPut(packageSymbol) { KtFirPackageScope( packageSymbol.fqName, @@ -146,8 +149,8 @@ internal class KtFirScopeProvider( } - override fun getCompositeScope(subScopes: List): KtCompositeScope = withValidityAssertion { - SimpleKtCompositeScope(subScopes, token) + override fun getCompositeScope(subScopes: List): KtScope = withValidityAssertion { + KtCompositeScope(subScopes, token) } override fun getTypeScope(type: KtType): KtScope? { diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirDeclaredMemberScope.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirDeclaredMemberScope.kt index 3a6c23af07c..eb0f9ff2edd 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirDeclaredMemberScope.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirDeclaredMemberScope.kt @@ -5,18 +5,12 @@ package org.jetbrains.kotlin.analysis.api.fir.scopes -import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken -import org.jetbrains.kotlin.analysis.api.ValidityTokenOwner import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder -import org.jetbrains.kotlin.analysis.api.scopes.KtDeclaredMemberScope -import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithMembers +import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken import org.jetbrains.kotlin.fir.scopes.FirContainingNamesAwareScope internal class KtFirDeclaredMemberScope( - override val owner: KtSymbolWithMembers, override val firScope: FirContainingNamesAwareScope, token: ValidityToken, builder: KtSymbolByFirBuilder -) : KtFirDelegatingScope(builder, token), - KtDeclaredMemberScope, - ValidityTokenOwner +) : KtFirDelegatingScope(builder, token) \ No newline at end of file diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirDelegatedMemberScope.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirDelegatedMemberScope.kt index 56d7b77b946..01a2da3fa2b 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirDelegatedMemberScope.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirDelegatedMemberScope.kt @@ -5,24 +5,18 @@ package org.jetbrains.kotlin.analysis.api.fir.scopes -import org.jetbrains.kotlin.analysis.api.ValidityTokenOwner import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder -import org.jetbrains.kotlin.analysis.api.scopes.KtDelegatedMemberScope import org.jetbrains.kotlin.analysis.api.scopes.KtScopeNameFilter import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtSymbolOrigin -import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithMembers import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken import org.jetbrains.kotlin.fir.scopes.FirContainingNamesAwareScope internal class KtFirDelegatedMemberScope( - override val owner: KtSymbolWithMembers, override val firScope: FirContainingNamesAwareScope, token: ValidityToken, builder: KtSymbolByFirBuilder -) : KtFirDelegatingScope(builder, token), - KtDelegatedMemberScope, - ValidityTokenOwner { +) : KtFirDelegatingScope(builder, token) { override fun getCallableSymbols(nameFilter: KtScopeNameFilter): Sequence { return super.getCallableSymbols(nameFilter).filter { it.origin == KtSymbolOrigin.DELEGATED } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirDelegatingScope.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirDelegatingScope.kt index 1caf6a00f36..f621102a6be 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirDelegatingScope.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirDelegatingScope.kt @@ -18,6 +18,7 @@ import org.jetbrains.kotlin.analysis.api.scopes.KtScopeNameFilter import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtClassifierSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtConstructorSymbol +import org.jetbrains.kotlin.analysis.api.symbols.KtPackageSymbol import org.jetbrains.kotlin.analysis.api.withValidityAssertion import org.jetbrains.kotlin.name.Name @@ -54,6 +55,10 @@ internal abstract class KtFirDelegatingScope( firScope.getConstructors(builder) } + override fun getPackageSymbols(nameFilter: KtScopeNameFilter): Sequence = withValidityAssertion { + emptySequence() + } + override fun mayContainName(name: Name): Boolean = withValidityAssertion { name in getAllPossibleNames() } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirEmptyMemberScope.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirEmptyMemberScope.kt deleted file mode 100644 index 17e980e8fd3..00000000000 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirEmptyMemberScope.kt +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.analysis.api.fir.scopes - -import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken -import org.jetbrains.kotlin.analysis.api.ValidityTokenOwner -import org.jetbrains.kotlin.analysis.api.scopes.KtDeclaredMemberScope -import org.jetbrains.kotlin.analysis.api.scopes.KtDelegatedMemberScope -import org.jetbrains.kotlin.analysis.api.scopes.KtMemberScope -import org.jetbrains.kotlin.analysis.api.scopes.KtScopeNameFilter -import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol -import org.jetbrains.kotlin.analysis.api.symbols.KtClassifierSymbol -import org.jetbrains.kotlin.analysis.api.symbols.KtConstructorSymbol -import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithMembers -import org.jetbrains.kotlin.name.Name - -internal class KtFirEmptyMemberScope( - override val owner: KtSymbolWithMembers -) : KtMemberScope, KtDeclaredMemberScope, KtDelegatedMemberScope, ValidityTokenOwner { - override fun getPossibleCallableNames(): Set = emptySet() - - override fun getPossibleClassifierNames(): Set = emptySet() - - override fun getCallableSymbols(nameFilter: KtScopeNameFilter): Sequence = - emptySequence() - - override fun getClassifierSymbols(nameFilter: KtScopeNameFilter): Sequence = - emptySequence() - - override fun getConstructors(): Sequence = - emptySequence() - - override fun mayContainName(name: Name): Boolean = false - - override val token: ValidityToken - get() = owner.token -} diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirFileScope.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirFileScope.kt index cd418e96664..fc773f8aa3a 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirFileScope.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirFileScope.kt @@ -9,25 +9,23 @@ import org.jetbrains.kotlin.fir.declarations.FirProperty import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken -import org.jetbrains.kotlin.analysis.api.ValidityTokenOwner import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.symbols.KtFirFileSymbol import org.jetbrains.kotlin.analysis.api.fir.utils.cached -import org.jetbrains.kotlin.analysis.api.scopes.KtDeclarationScope +import org.jetbrains.kotlin.analysis.api.scopes.KtScope import org.jetbrains.kotlin.analysis.api.scopes.KtScopeNameFilter import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtClassifierSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtConstructorSymbol -import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithDeclarations +import org.jetbrains.kotlin.analysis.api.symbols.KtPackageSymbol import org.jetbrains.kotlin.analysis.api.withValidityAssertion import org.jetbrains.kotlin.name.Name internal class KtFirFileScope( - override val owner: KtFirFileSymbol, + private val owner: KtFirFileSymbol, override val token: ValidityToken, private val builder: KtSymbolByFirBuilder -) : KtDeclarationScope, - ValidityTokenOwner { +) : KtScope { private val allNamesCached by cached { _callableNames + _classifierNames @@ -95,4 +93,8 @@ internal class KtFirFileScope( } override fun getConstructors(): Sequence = emptySequence() + + override fun getPackageSymbols(nameFilter: KtScopeNameFilter): Sequence = withValidityAssertion { + emptySequence() + } } \ No newline at end of file diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirMemberScope.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirMemberScope.kt index 0320099453a..a3eb5d8306c 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirMemberScope.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirMemberScope.kt @@ -5,17 +5,13 @@ package org.jetbrains.kotlin.analysis.api.fir.scopes -import org.jetbrains.kotlin.fir.scopes.FirTypeScope -import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken import org.jetbrains.kotlin.analysis.api.ValidityTokenOwner import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder -import org.jetbrains.kotlin.analysis.api.fir.utils.weakRef -import org.jetbrains.kotlin.analysis.api.scopes.KtMemberScope -import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithMembers +import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken +import org.jetbrains.kotlin.fir.scopes.FirTypeScope internal class KtFirMemberScope( - override val owner: KtSymbolWithMembers, override val firScope: FirTypeScope, token: ValidityToken, builder: KtSymbolByFirBuilder -) : KtFirDelegatingScope(builder, token), KtMemberScope, ValidityTokenOwner +) : KtFirDelegatingScope(builder, token), ValidityTokenOwner diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirNonStarImportingScope.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirNonStarImportingScope.kt index e66e39d5e1e..9f1fb4ef4e2 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirNonStarImportingScope.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirNonStarImportingScope.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.analysis.api.fir.scopes -import org.jetbrains.kotlin.analysis.api.ValidityTokenOwner import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder import org.jetbrains.kotlin.analysis.api.fir.utils.cached import org.jetbrains.kotlin.analysis.api.scopes.KtNonStarImportingScope @@ -26,7 +25,7 @@ internal class KtFirNonStarImportingScope( private val firScope: FirAbstractSimpleImportingScope, private val builder: KtSymbolByFirBuilder, override val token: ValidityToken, -) : KtNonStarImportingScope, ValidityTokenOwner { +) : KtNonStarImportingScope { @OptIn(ExperimentalStdlibApi::class) override val imports: List by cached { diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirPackageScope.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirPackageScope.kt index 6a8e10a4615..b5dbfb97d44 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirPackageScope.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirPackageScope.kt @@ -9,10 +9,11 @@ import com.intellij.openapi.project.Project import com.intellij.psi.JavaPsiFacade import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder -import org.jetbrains.kotlin.analysis.api.scopes.KtPackageScope +import org.jetbrains.kotlin.analysis.api.scopes.KtScope import org.jetbrains.kotlin.analysis.api.scopes.KtScopeNameFilter import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtClassifierSymbol +import org.jetbrains.kotlin.analysis.api.symbols.KtConstructorSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtPackageSymbol import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken import org.jetbrains.kotlin.analysis.api.withValidityAssertion @@ -25,13 +26,13 @@ import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.platform.jvm.isJvm internal class KtFirPackageScope( - override val fqName: FqName, + private val fqName: FqName, private val project: Project, private val builder: KtSymbolByFirBuilder, override val token: ValidityToken, private val searchScope: GlobalSearchScope, private val targetPlatform: TargetPlatform, -) : KtPackageScope { +) : KtScope { private val declarationsProvider = project.createDeclarationProvider(searchScope) private val packageProvider = project.createPackageProvider(searchScope) @@ -66,6 +67,10 @@ internal class KtFirPackageScope( firScope.getClassifierSymbols(getPossibleClassifierNames().filter(nameFilter), builder) } + override fun getConstructors(): Sequence = withValidityAssertion { + emptySequence() + } + override fun getPackageSymbols(nameFilter: KtScopeNameFilter): Sequence = withValidityAssertion { sequence { if (targetPlatform.isJvm()) { diff --git a/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/scopes/SimpleKtCompositeScope.kt b/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/scopes/KtCompositeScope.kt similarity index 79% rename from analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/scopes/SimpleKtCompositeScope.kt rename to analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/scopes/KtCompositeScope.kt index f15632cf4a4..83218f9cb1a 100644 --- a/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/scopes/SimpleKtCompositeScope.kt +++ b/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/scopes/KtCompositeScope.kt @@ -5,23 +5,17 @@ package org.jetbrains.kotlin.analysis.api.impl.base.scopes -import org.jetbrains.kotlin.analysis.api.ValidityTokenOwner -import org.jetbrains.kotlin.analysis.api.scopes.KtCompositeScope import org.jetbrains.kotlin.analysis.api.scopes.KtScope import org.jetbrains.kotlin.analysis.api.scopes.KtScopeNameFilter -import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol -import org.jetbrains.kotlin.analysis.api.symbols.KtClassifierSymbol -import org.jetbrains.kotlin.analysis.api.symbols.KtConstructorSymbol -import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol +import org.jetbrains.kotlin.analysis.api.symbols.* import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken import org.jetbrains.kotlin.analysis.api.withValidityAssertion import org.jetbrains.kotlin.name.Name -@OptIn(ExperimentalStdlibApi::class) -class SimpleKtCompositeScope( - override val subScopes: List, +class KtCompositeScope( + private val subScopes: List, override val token: ValidityToken -) : KtCompositeScope, ValidityTokenOwner { +) : KtScope { override fun getAllPossibleNames(): Set = withValidityAssertion { buildSet { subScopes.flatMapTo(this) { it.getAllPossibleNames() } @@ -64,6 +58,12 @@ class SimpleKtCompositeScope( } } + override fun getPackageSymbols(nameFilter: KtScopeNameFilter): Sequence = withValidityAssertion { + sequence { + subScopes.forEach { yieldAll(it.getPackageSymbols(nameFilter)) } + } + } + override fun mayContainName(name: Name): Boolean = withValidityAssertion { subScopes.any { it.mayContainName(name) } } diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/scopes/KtFe10EmptyScope.kt b/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/scopes/KtEmptyScope.kt similarity index 75% rename from analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/scopes/KtFe10EmptyScope.kt rename to analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/scopes/KtEmptyScope.kt index d776d3e4a22..a79bb83ba59 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/scopes/KtFe10EmptyScope.kt +++ b/analysis/analysis-api-impl-base/src/org/jetbrains/kotlin/analysis/api/impl/base/scopes/KtEmptyScope.kt @@ -3,20 +3,16 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.analysis.api.descriptors.scopes +package org.jetbrains.kotlin.analysis.api.impl.base.scopes -import org.jetbrains.kotlin.analysis.api.ValidityTokenOwner import org.jetbrains.kotlin.analysis.api.scopes.KtScope import org.jetbrains.kotlin.analysis.api.scopes.KtScopeNameFilter -import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol -import org.jetbrains.kotlin.analysis.api.symbols.KtClassifierSymbol -import org.jetbrains.kotlin.analysis.api.symbols.KtConstructorSymbol -import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol +import org.jetbrains.kotlin.analysis.api.symbols.* import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken import org.jetbrains.kotlin.analysis.api.withValidityAssertion import org.jetbrains.kotlin.name.Name -internal open class KtFe10EmptyScope(override val token: ValidityToken) : KtScope, ValidityTokenOwner { +class KtEmptyScope(override val token: ValidityToken) : KtScope { override fun getAllPossibleNames(): Set = withValidityAssertion { return emptySet() } @@ -45,6 +41,10 @@ internal open class KtFe10EmptyScope(override val token: ValidityToken) : KtScop return emptySequence() } + override fun getPackageSymbols(nameFilter: KtScopeNameFilter): Sequence = withValidityAssertion { + emptySequence() + } + override fun mayContainName(name: Name): Boolean = withValidityAssertion { return false } diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtScopeProvider.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtScopeProvider.kt index 41b41ce9fae..f8aa20b1517 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtScopeProvider.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtScopeProvider.kt @@ -18,19 +18,21 @@ import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtFile public abstract class KtScopeProvider : KtAnalysisSessionComponent() { - public abstract fun getMemberScope(classSymbol: KtSymbolWithMembers): KtMemberScope + public abstract fun getMemberScope(classSymbol: KtSymbolWithMembers): KtScope - public abstract fun getDeclaredMemberScope(classSymbol: KtSymbolWithMembers): KtDeclaredMemberScope + public abstract fun getDeclaredMemberScope(classSymbol: KtSymbolWithMembers): KtScope - public abstract fun getDelegatedMemberScope(classSymbol: KtSymbolWithMembers): KtDelegatedMemberScope + public abstract fun getDelegatedMemberScope(classSymbol: KtSymbolWithMembers): KtScope public abstract fun getStaticMemberScope(symbol: KtSymbolWithMembers): KtScope - public abstract fun getFileScope(fileSymbol: KtFileSymbol): KtDeclarationScope + public abstract fun getEmptyScope(): KtScope - public abstract fun getPackageScope(packageSymbol: KtPackageSymbol): KtPackageScope + public abstract fun getFileScope(fileSymbol: KtFileSymbol): KtScope - public abstract fun getCompositeScope(subScopes: List): KtCompositeScope + public abstract fun getPackageScope(packageSymbol: KtPackageSymbol): KtScope + + public abstract fun getCompositeScope(subScopes: List): KtScope public abstract fun getTypeScope(type: KtType): KtScope? @@ -41,25 +43,25 @@ public abstract class KtScopeProvider : KtAnalysisSessionComponent() { } public interface KtScopeProviderMixIn : KtAnalysisSessionMixIn { - public fun KtSymbolWithMembers.getMemberScope(): KtMemberScope = + public fun KtSymbolWithMembers.getMemberScope(): KtScope = analysisSession.scopeProvider.getMemberScope(this) - public fun KtSymbolWithMembers.getDeclaredMemberScope(): KtDeclaredMemberScope = + public fun KtSymbolWithMembers.getDeclaredMemberScope(): KtScope = analysisSession.scopeProvider.getDeclaredMemberScope(this) - public fun KtSymbolWithMembers.getDelegatedMemberScope(): KtDelegatedMemberScope = + public fun KtSymbolWithMembers.getDelegatedMemberScope(): KtScope = analysisSession.scopeProvider.getDelegatedMemberScope(this) public fun KtSymbolWithMembers.getStaticMemberScope(): KtScope = analysisSession.scopeProvider.getStaticMemberScope(this) - public fun KtFileSymbol.getFileScope(): KtDeclarationScope = + public fun KtFileSymbol.getFileScope(): KtScope = analysisSession.scopeProvider.getFileScope(this) - public fun KtPackageSymbol.getPackageScope(): KtPackageScope = + public fun KtPackageSymbol.getPackageScope(): KtScope = analysisSession.scopeProvider.getPackageScope(this) - public fun List.asCompositeScope(): KtCompositeScope = + public fun List.asCompositeScope(): KtScope = analysisSession.scopeProvider.getCompositeScope(this) public fun KtType.getTypeScope(): KtScope? = @@ -72,7 +74,7 @@ public interface KtScopeProviderMixIn : KtAnalysisSessionMixIn { analysisSession.scopeProvider.getScopeContextForPosition(this, this) } -public data class KtScopeContext(val scopes: KtCompositeScope, val implicitReceivers: List) +public data class KtScopeContext(val scopes: KtScope, val implicitReceivers: List) public class KtImplicitReceiver( override val token: ValidityToken, diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/scopes/KtImportingScope.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/scopes/KtImportingScope.kt index a1b99a51544..0fa50f7edcd 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/scopes/KtImportingScope.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/scopes/KtImportingScope.kt @@ -5,6 +5,8 @@ package org.jetbrains.kotlin.analysis.api.scopes +import org.jetbrains.kotlin.analysis.api.symbols.KtPackageSymbol +import org.jetbrains.kotlin.analysis.api.withValidityAssertion import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name @@ -12,6 +14,10 @@ import org.jetbrains.kotlin.name.Name public interface KtImportingScope : KtScope { public val imports: List public val isDefaultImportingScope: Boolean + + override fun getPackageSymbols(nameFilter: KtScopeNameFilter): Sequence = withValidityAssertion { + emptySequence() + } } public interface KtStarImportingScope : KtImportingScope { diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/scopes/KtScope.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/scopes/KtScope.kt index c66c7500f73..5f8b225c5d2 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/scopes/KtScope.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/scopes/KtScope.kt @@ -62,6 +62,13 @@ public interface KtScope : ValidityTokenOwner { */ public fun getConstructors(): Sequence + + /** + * Return a sequence of [KtPackageSymbol] nested in current scope contain if package name matches [nameFilter] + */ + public fun getPackageSymbols(nameFilter: KtScopeNameFilter = { true }): Sequence + + /** * return true if the scope may contain name, false otherwise. * @@ -73,35 +80,3 @@ public interface KtScope : ValidityTokenOwner { } public typealias KtScopeNameFilter = (Name) -> Boolean - -public interface KtCompositeScope : KtScope { - public val subScopes: List -} - -public interface KtMemberScope : KtDeclarationScope { - override val owner: KtSymbolWithMembers -} - -public interface KtDeclaredMemberScope : KtDeclarationScope { - override val owner: KtSymbolWithMembers -} - -public interface KtDelegatedMemberScope : KtDeclarationScope { - override val owner: KtSymbolWithMembers -} - -public interface KtDeclarationScope : KtScope { - public val owner: T -} - -public interface KtPackageScope : KtScope { - public val fqName: FqName - - public fun getPackageSymbols(nameFilter: KtScopeNameFilter = { true }): Sequence - - override fun getAllSymbols(): Sequence = withValidityAssertion { - super.getAllSymbols() + getPackageSymbols() - } - - override fun getConstructors(): Sequence = withValidityAssertion { emptySequence() } -} diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassForFacade.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassForFacade.kt index 994be2cb627..de9a354ed47 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassForFacade.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassForFacade.kt @@ -18,7 +18,7 @@ import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget import org.jetbrains.kotlin.fileClasses.javaFileFacadeFqName import org.jetbrains.kotlin.idea.KotlinLanguage -import org.jetbrains.kotlin.analysis.api.scopes.KtDeclarationScope +import org.jetbrains.kotlin.analysis.api.scopes.KtScope import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtKotlinPropertySymbol @@ -109,7 +109,7 @@ class FirLightClassForFacade( } private fun loadFieldsFromFile( - fileScope: KtDeclarationScope, + fileScope: KtScope, nameGenerator: FirLightField.FieldNameGenerator, result: MutableList ) {