FIR: Do not load inline flag when deserializing properties; there is
no `inline` flag for serialized properties. In order to test this, I added the changes to FirRenderer to make sure the flag is not loaded. However, this revealed that the `inline` status was propagated upward to the `FirProperty` during raw FIR building, causing test failures. I removed the upward propagation for `inline`. I also removed it for `external` because it is incorrect: `external` on properties (used in JS) should be separate from `external` on accessors (used in JNI interop for JVM). The `external` flags are also serialized separately for properties and accessors.
This commit is contained in:
committed by
teamcityserver
parent
030697d430
commit
efe3f7b87e
@@ -314,50 +314,45 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
|
||||
if (memberDeclaration.isExternal) {
|
||||
print("external ")
|
||||
}
|
||||
if (memberDeclaration is FirCallableMemberDeclaration<*>) {
|
||||
if (memberDeclaration.isOverride) {
|
||||
print("override ")
|
||||
}
|
||||
if (memberDeclaration.isStatic) {
|
||||
print("static ")
|
||||
}
|
||||
if (memberDeclaration.isOverride) {
|
||||
print("override ")
|
||||
}
|
||||
if (memberDeclaration is FirRegularClass) {
|
||||
if (memberDeclaration.isInner) {
|
||||
print("inner ")
|
||||
}
|
||||
if (memberDeclaration.isCompanion) {
|
||||
print("companion ")
|
||||
}
|
||||
if (memberDeclaration.isData) {
|
||||
print("data ")
|
||||
}
|
||||
if (memberDeclaration.isInline) {
|
||||
print("inline ")
|
||||
}
|
||||
} else if (memberDeclaration is FirSimpleFunction) {
|
||||
if (memberDeclaration.isOperator) {
|
||||
print("operator ")
|
||||
}
|
||||
if (memberDeclaration.isInfix) {
|
||||
print("infix ")
|
||||
}
|
||||
if (memberDeclaration.isInline) {
|
||||
print("inline ")
|
||||
}
|
||||
if (memberDeclaration.isTailRec) {
|
||||
print("tailrec ")
|
||||
}
|
||||
if (memberDeclaration.isSuspend) {
|
||||
print("suspend ")
|
||||
}
|
||||
} else if (memberDeclaration is FirProperty) {
|
||||
if (memberDeclaration.isConst) {
|
||||
print("const ")
|
||||
}
|
||||
if (memberDeclaration.isLateInit) {
|
||||
print("lateinit ")
|
||||
}
|
||||
if (memberDeclaration.isStatic) {
|
||||
print("static ")
|
||||
}
|
||||
if (memberDeclaration.isInner) {
|
||||
print("inner ")
|
||||
}
|
||||
|
||||
// `companion/data` modifiers are only valid for FirRegularClass, but we render them to make sure they are not
|
||||
// incorrectly loaded for other declarations during deserialization.
|
||||
if (memberDeclaration.status.isCompanion) {
|
||||
print("companion ")
|
||||
}
|
||||
if (memberDeclaration.status.isData) {
|
||||
print("data ")
|
||||
}
|
||||
|
||||
if (memberDeclaration.isInline) {
|
||||
print("inline ")
|
||||
}
|
||||
if (memberDeclaration.isOperator) {
|
||||
print("operator ")
|
||||
}
|
||||
if (memberDeclaration.isInfix) {
|
||||
print("infix ")
|
||||
}
|
||||
if (memberDeclaration.isTailRec) {
|
||||
print("tailrec ")
|
||||
}
|
||||
if (memberDeclaration.isSuspend) {
|
||||
print("suspend ")
|
||||
}
|
||||
if (memberDeclaration.isConst) {
|
||||
print("const ")
|
||||
}
|
||||
if (memberDeclaration.isLateInit) {
|
||||
print("lateinit ")
|
||||
}
|
||||
|
||||
visitDeclaration(memberDeclaration)
|
||||
|
||||
@@ -49,16 +49,13 @@ inline val FirClass<*>.isEnumClass: Boolean
|
||||
inline val FirRegularClass.modality get() = status.modality
|
||||
inline val FirRegularClass.isSealed get() = status.modality == Modality.SEALED
|
||||
inline val FirRegularClass.isAbstract get() = status.modality == Modality.ABSTRACT
|
||||
inline val FirRegularClass.isFun get() = status.isFun
|
||||
inline val FirRegularClass.isCompanion get() = status.isCompanion
|
||||
inline val FirRegularClass.isData get() = status.isData
|
||||
|
||||
inline val FirRegularClass.canHaveAbstractDeclaration: Boolean
|
||||
get() = isAbstract || isSealed || isEnumClass
|
||||
|
||||
inline val FirRegularClass.isInner get() = status.isInner
|
||||
inline val FirRegularClass.isCompanion get() = status.isCompanion
|
||||
inline val FirRegularClass.isData get() = status.isData
|
||||
inline val FirRegularClass.isInline get() = status.isInline
|
||||
inline val FirRegularClass.isFun get() = status.isFun
|
||||
|
||||
inline val FirMemberDeclaration.modality get() = status.modality
|
||||
inline val FirMemberDeclaration.isAbstract get() = status.modality == Modality.ABSTRACT
|
||||
inline val FirMemberDeclaration.isOpen get() = status.modality == Modality.OPEN
|
||||
@@ -92,7 +89,6 @@ inline val FirMemberDeclaration.isConst: Boolean get() = status.isConst
|
||||
inline val FirMemberDeclaration.isLateInit: Boolean get() = status.isLateInit
|
||||
inline val FirMemberDeclaration.isFromSealedClass: Boolean get() = status.isFromSealedClass
|
||||
inline val FirMemberDeclaration.isFromEnumClass: Boolean get() = status.isFromEnumClass
|
||||
inline val FirMemberDeclaration.isFun: Boolean get() = status.isFun
|
||||
|
||||
inline val FirFunction<*>.hasBody get() = body != null
|
||||
|
||||
|
||||
Reference in New Issue
Block a user