From 3e420ca4e32b13d02fd163530f515344fa26aef1 Mon Sep 17 00:00:00 2001 From: "Denis.Zharkov" Date: Wed, 17 Feb 2021 16:06:42 +0300 Subject: [PATCH] FIR: Introduce FirDeclarationOrigin.BuiltIns --- .../kotlin/fir/deserialization/ClassDeserialization.kt | 5 +++-- .../fir/resolve/providers/impl/FirBuiltinSymbolProvider.kt | 1 + .../deserialization/KotlinDeserializedJvmSymbolsProvider.kt | 4 ++-- .../kotlin/fir/declarations/FirDeclarationOrigin.kt | 1 + .../kotlin/idea/frontend/api/fir/symbols/KtFirSymbol.kt | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt index 478fba4b5ba..5b9871b835c 100644 --- a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt +++ b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt @@ -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)) diff --git a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirBuiltinSymbolProvider.kt b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirBuiltinSymbolProvider.kt index 0b933862dbe..50ace5464c2 100644 --- a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirBuiltinSymbolProvider.kt +++ b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirBuiltinSymbolProvider.kt @@ -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, ) } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt index ab7f0ab23d0..36f6d1fd49e 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt @@ -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 } -} \ No newline at end of file +} diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirDeclarationOrigin.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirDeclarationOrigin.kt index 647d5105767..a5fd73e6af8 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirDeclarationOrigin.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirDeclarationOrigin.kt @@ -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() diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirSymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirSymbol.kt index 7d77acd3aaa..14498662260 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirSymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirSymbol.kt @@ -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