FIR: record and serialize the modifier "fun" for functional interface

This commit is contained in:
Jinseong Jeon
2020-06-05 15:00:03 -07:00
committed by Mikhail Glukhikh
parent 6a2fed33d3
commit 0d2552b0b6
24 changed files with 33 additions and 196 deletions
@@ -39,6 +39,7 @@ interface FirDeclarationStatus : FirElement {
val isStatic: Boolean
val isFromSealedClass: Boolean
val isFromEnumClass: Boolean
val isFun: Boolean
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitDeclarationStatus(this, data)
}
@@ -38,6 +38,7 @@ interface FirResolvedDeclarationStatus : FirDeclarationStatus {
override val isStatic: Boolean
override val isFromSealedClass: Boolean
override val isFromEnumClass: Boolean
override val isFun: Boolean
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitResolvedDeclarationStatus(this, data)
}
@@ -37,6 +37,7 @@ 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.visibility get() = status.visibility
inline val FirMemberDeclaration.allowsToHaveFakeOverride: Boolean
@@ -136,6 +136,12 @@ open class FirDeclarationStatusImpl(
this[FROM_ENUM] = value
}
override var isFun: Boolean
get() = this[FUN]
set(value) {
this[FUN] = value
}
private enum class Modifier(val mask: Int) {
EXPECT(0x1),
ACTUAL(0x2),
@@ -153,7 +159,8 @@ open class FirDeclarationStatusImpl(
SUSPEND(0x2000),
STATIC(0x4000),
FROM_SEALED(0x8000),
FROM_ENUM(0x10000)
FROM_ENUM(0x10000),
FUN(0x20000)
}
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
@@ -323,7 +323,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
generateBooleanFields(
"expect", "actual", "override", "operator", "infix", "inline", "tailRec",
"external", "const", "lateInit", "inner", "companion", "data", "suspend", "static",
"fromSealedClass", "fromEnumClass"
"fromSealedClass", "fromEnumClass", "fun"
)
}