FIR deserializer: load inline/external flags properly

This commit is contained in:
Jinseong Jeon
2020-09-14 15:28:08 -07:00
committed by Mikhail Glukhikh
parent 2154c94100
commit 2fad935ce2
5 changed files with 11 additions and 5 deletions
@@ -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)
@@ -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
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// WITH_RUNTIME
// WITH_COROUTINES
// COMMON_COROUTINES_TEST
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// WITH_RUNTIME
// WITH_COROUTINES
// COMMON_COROUTINES_TEST
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// WITH_RUNTIME
// WITH_COROUTINES
// COMMON_COROUTINES_TEST