FIR: Introduce FirDeclarationOrigin.BuiltIns

This commit is contained in:
Denis.Zharkov
2021-02-17 16:06:42 +03:00
parent 893b1045ba
commit 3e420ca4e3
5 changed files with 8 additions and 5 deletions
@@ -52,6 +52,7 @@ fun deserializeClassToSymbol(
scopeProvider: FirScopeProvider,
parentContext: FirDeserializationContext? = null,
containerSource: DeserializedContainerSource? = null,
origin: FirDeclarationOrigin = FirDeclarationOrigin.Library,
deserializeNestedClass: (ClassId, FirDeserializationContext) -> FirRegularClassSymbol?
) {
val flags = classProto.flags
@@ -94,7 +95,7 @@ fun deserializeClassToSymbol(
}
buildRegularClass {
this.session = session
origin = FirDeclarationOrigin.Library
this.origin = origin
name = classId.shortClassName
this.status = status
classKind = ProtoEnumFlags.classKind(kind)
@@ -151,7 +152,7 @@ fun deserializeClassToSymbol(
val enumType = ConeClassLikeTypeImpl(symbol.toLookupTag(), emptyArray(), false)
val property = buildEnumEntry {
this.session = session
origin = FirDeclarationOrigin.Library
this.origin = FirDeclarationOrigin.Library
returnTypeRef = buildResolvedTypeRef { type = enumType }
name = enumEntryName
this.symbol = FirVariableSymbol(CallableId(classId, enumEntryName))
@@ -303,6 +303,7 @@ class FirBuiltinSymbolProvider(session: FirSession, val kotlinScopeProvider: Kot
classId, classProto, symbol, nameResolver, session,
null, kotlinScopeProvider, parentContext,
null,
origin = FirDeclarationOrigin.BuiltIns,
this::findAndDeserializeClass,
)
}
@@ -200,7 +200,7 @@ class KotlinDeserializedJvmSymbolsProvider(
JvmBinaryAnnotationDeserializer(session, kotlinClass.kotlinJvmBinaryClass, kotlinClass.byteContent),
kotlinScopeProvider,
parentContext, KotlinJvmBinarySourceElement(kotlinClass.kotlinJvmBinaryClass),
this::getClass
deserializeNestedClass = this::getClass,
)
return symbol to kotlinClass
@@ -287,4 +287,4 @@ private class KnownNameInPackageCache(session: FirSession, private val javaClass
val knownNames = knownClassNamesInPackage.getValue(classId.packageFqName) ?: return false
return classId.relativeClassName.topLevelName() !in knownNames
}
}
}
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations
sealed class FirDeclarationOrigin(val fromSupertypes: Boolean = false) {
object Source : FirDeclarationOrigin()
object Library : FirDeclarationOrigin()
object BuiltIns : FirDeclarationOrigin()
object Java : FirDeclarationOrigin()
object Synthetic : FirDeclarationOrigin()
object SamConstructor : FirDeclarationOrigin()
@@ -32,7 +32,7 @@ private tailrec fun FirDeclaration.ktSymbolOrigin(): KtSymbolOrigin = when (orig
KtSymbolOrigin.SOURCE_MEMBER_GENERATED
} else KtSymbolOrigin.SOURCE
}
FirDeclarationOrigin.Library -> KtSymbolOrigin.LIBRARY
FirDeclarationOrigin.Library, FirDeclarationOrigin.BuiltIns -> KtSymbolOrigin.LIBRARY
FirDeclarationOrigin.Java -> KtSymbolOrigin.JAVA
FirDeclarationOrigin.SamConstructor -> KtSymbolOrigin.SAM_CONSTRUCTOR
FirDeclarationOrigin.Enhancement -> KtSymbolOrigin.JAVA