[FIR] Check visibility correctly for sealed class in file

This commit is contained in:
Mikhail Glukhikh
2020-02-19 12:02:47 +03:00
parent ace259314b
commit 14fd1d3c9f
14 changed files with 62 additions and 7 deletions
@@ -35,6 +35,8 @@ interface FirDeclarationStatus : FirElement {
val isData: Boolean
val isSuspend: Boolean
val isStatic: Boolean
val isFromSealedClass: Boolean
val isFromEnumClass: Boolean
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitDeclarationStatus(this, data)
}
@@ -34,6 +34,8 @@ interface FirResolvedDeclarationStatus : FirDeclarationStatus {
override val isData: Boolean
override val isSuspend: Boolean
override val isStatic: Boolean
override val isFromSealedClass: Boolean
override val isFromEnumClass: Boolean
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitResolvedDeclarationStatus(this, data)
}
@@ -121,6 +121,18 @@ open class FirDeclarationStatusImpl(
this[STATIC] = value
}
override var isFromSealedClass: Boolean
get() = this[FROM_SEALED]
set(value) {
this[FROM_SEALED] = value
}
override var isFromEnumClass: Boolean
get() = this[FROM_ENUM]
set(value) {
this[FROM_ENUM] = value
}
private enum class Modifier(val mask: Int) {
EXPECT(0x1),
ACTUAL(0x2),
@@ -136,7 +148,9 @@ open class FirDeclarationStatusImpl(
COMPANION(0x800),
DATA(0x1000),
SUSPEND(0x2000),
STATIC(0x4000)
STATIC(0x4000),
FROM_SEALED(0x8000),
FROM_ENUM(0x10000)
}
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
@@ -296,7 +296,8 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
+modality
generateBooleanFields(
"expect", "actual", "override", "operator", "infix", "inline", "tailRec",
"external", "const", "lateInit", "inner", "companion", "data", "suspend", "static"
"external", "const", "lateInit", "inner", "companion", "data", "suspend", "static",
"fromSealedClass", "fromEnumClass"
)
}