From 2fad935ce2307e8bc44c59152d023c0c6c543538 Mon Sep 17 00:00:00 2001 From: Jinseong Jeon Date: Mon, 14 Sep 2020 15:28:08 -0700 Subject: [PATCH] FIR deserializer: load inline/external flags properly --- .../fir/deserialization/ClassDeserialization.kt | 1 + .../fir/deserialization/FirMemberDeserializer.kt | 12 ++++++++++-- .../coroutines/coroutineContextInInlinedLambda.kt | 1 - .../intrinsicSemantics/coroutineContext.kt | 1 - .../intrinsicSemantics/coroutineContextReceiver.kt | 1 - 5 files changed, 11 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 91fd1fd3e0a..5a117c9965e 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 @@ -67,6 +67,7 @@ fun deserializeClassToSymbol( isInner = Flags.IS_INNER.get(flags) isData = Flags.IS_DATA.get(classProto.flags) isInline = Flags.IS_INLINE_CLASS.get(classProto.flags) + isExternal = Flags.IS_EXTERNAL_CLASS.get(classProto.flags) } val isSealed = modality == Modality.SEALED val annotationDeserializer = defaultAnnotationDeserializer ?: FirBuiltinAnnotationDeserializer(session) diff --git a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirMemberDeserializer.kt b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirMemberDeserializer.kt index ba49fc9df28..c6fb74aed84 100644 --- a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirMemberDeserializer.kt +++ b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirMemberDeserializer.kt @@ -222,7 +222,10 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) { this.returnTypeRef = returnTypeRef resolvePhase = FirResolvePhase.ANALYZED_DEPENDENCIES isGetter = true - status = FirResolvedDeclarationStatusImpl(visibility, modality) + status = FirResolvedDeclarationStatusImpl(visibility, modality).apply { + isInline = Flags.IS_INLINE_ACCESSOR.get(getterFlags) + isExternal = Flags.IS_EXTERNAL_ACCESSOR.get(getterFlags) + } annotations += c.annotationDeserializer.loadPropertyGetterAnnotations( c.containerSource, proto, local.nameResolver, local.typeTable, getterFlags @@ -247,7 +250,10 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) { this.returnTypeRef = FirImplicitUnitTypeRef(source) resolvePhase = FirResolvePhase.ANALYZED_DEPENDENCIES isGetter = false - status = FirResolvedDeclarationStatusImpl(visibility, modality) + status = FirResolvedDeclarationStatusImpl(visibility, modality).apply { + isInline = Flags.IS_INLINE_ACCESSOR.get(setterFlags) + isExternal = Flags.IS_EXTERNAL_ACCESSOR.get(setterFlags) + } annotations += c.annotationDeserializer.loadPropertySetterAnnotations( c.containerSource, proto, local.nameResolver, local.typeTable, setterFlags @@ -288,6 +294,8 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) { isOverride = false isConst = Flags.IS_CONST.get(flags) isLateInit = Flags.IS_LATEINIT.get(flags) + isInline = Flags.IS_INLINE.get(flags) + isExternal = Flags.IS_EXTERNAL_PROPERTY.get(flags) } resolvePhase = FirResolvePhase.ANALYZED_DEPENDENCIES diff --git a/compiler/testData/codegen/box/coroutines/coroutineContextInInlinedLambda.kt b/compiler/testData/codegen/box/coroutines/coroutineContextInInlinedLambda.kt index 324c507f763..8c018988501 100644 --- a/compiler/testData/codegen/box/coroutines/coroutineContextInInlinedLambda.kt +++ b/compiler/testData/codegen/box/coroutines/coroutineContextInInlinedLambda.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // WITH_RUNTIME // WITH_COROUTINES // COMMON_COROUTINES_TEST diff --git a/compiler/testData/codegen/box/coroutines/intrinsicSemantics/coroutineContext.kt b/compiler/testData/codegen/box/coroutines/intrinsicSemantics/coroutineContext.kt index cac370a0641..192b484d2e9 100644 --- a/compiler/testData/codegen/box/coroutines/intrinsicSemantics/coroutineContext.kt +++ b/compiler/testData/codegen/box/coroutines/intrinsicSemantics/coroutineContext.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // WITH_RUNTIME // WITH_COROUTINES // COMMON_COROUTINES_TEST diff --git a/compiler/testData/codegen/box/coroutines/intrinsicSemantics/coroutineContextReceiver.kt b/compiler/testData/codegen/box/coroutines/intrinsicSemantics/coroutineContextReceiver.kt index 0a5ef26a8cd..9f5e66713ed 100644 --- a/compiler/testData/codegen/box/coroutines/intrinsicSemantics/coroutineContextReceiver.kt +++ b/compiler/testData/codegen/box/coroutines/intrinsicSemantics/coroutineContextReceiver.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // WITH_RUNTIME // WITH_COROUTINES // COMMON_COROUTINES_TEST