[FIR] Create generated declared scope only for classes from sources and plugins
This commit is contained in:
committed by
teamcity
parent
f5637e5077
commit
d527b00dfc
+10
-6
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.fir.scopes.FirTypeScope
|
|||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.utils.addToStdlib.runIf
|
||||||
|
|
||||||
@ThreadSafeMutableState
|
@ThreadSafeMutableState
|
||||||
class FirDeclaredMemberScopeProvider(val useSiteSession: FirSession) : FirSessionComponent {
|
class FirDeclaredMemberScopeProvider(val useSiteSession: FirSession) : FirSessionComponent {
|
||||||
@@ -52,8 +53,9 @@ class FirDeclaredMemberScopeProvider(val useSiteSession: FirSession) : FirSessio
|
|||||||
existingNames: List<Name>?,
|
existingNames: List<Name>?,
|
||||||
symbolProvider: FirSymbolProvider?
|
symbolProvider: FirSymbolProvider?
|
||||||
): FirContainingNamesAwareScope {
|
): FirContainingNamesAwareScope {
|
||||||
|
val origin = klass.origin
|
||||||
return when {
|
return when {
|
||||||
klass.origin.generated -> {
|
origin.generated -> {
|
||||||
FirGeneratedClassDeclaredMemberScope.create(
|
FirGeneratedClassDeclaredMemberScope.create(
|
||||||
useSiteSession,
|
useSiteSession,
|
||||||
MemberGenerationContext(klass.symbol, declaredMemberScope = null),
|
MemberGenerationContext(klass.symbol, declaredMemberScope = null),
|
||||||
@@ -68,11 +70,13 @@ class FirDeclaredMemberScopeProvider(val useSiteSession: FirSession) : FirSessio
|
|||||||
existingNames,
|
existingNames,
|
||||||
symbolProvider
|
symbolProvider
|
||||||
)
|
)
|
||||||
val generatedScope = FirGeneratedClassDeclaredMemberScope.create(
|
val generatedScope = runIf(origin.fromSource || origin.generated) {
|
||||||
useSiteSession,
|
FirGeneratedClassDeclaredMemberScope.create(
|
||||||
MemberGenerationContext(klass.symbol, baseScope),
|
useSiteSession,
|
||||||
needNestedClassifierScope = false
|
MemberGenerationContext(klass.symbol, baseScope),
|
||||||
)
|
needNestedClassifierScope = false
|
||||||
|
)
|
||||||
|
}
|
||||||
if (generatedScope != null) {
|
if (generatedScope != null) {
|
||||||
FirNameAwareCompositeScope(listOf(baseScope, generatedScope))
|
FirNameAwareCompositeScope(listOf(baseScope, generatedScope))
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user