FIR Java model: support static members & enum entries

Related to KT-29218
This commit is contained in:
Mikhail Glukhikh
2019-03-01 16:09:51 +03:00
parent 0434a55ea2
commit 33fb3d154b
25 changed files with 136 additions and 14 deletions
@@ -148,8 +148,13 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
if (memberDeclaration.isActual) {
print("actual ")
}
if (memberDeclaration is FirCallableMember && memberDeclaration.isOverride) {
print("override ")
if (memberDeclaration is FirCallableMember) {
if (memberDeclaration.isOverride) {
print("override ")
}
if (memberDeclaration.isStatic) {
print("static ")
}
}
if (memberDeclaration is FirRegularClass) {
if (memberDeclaration.isInner) {
@@ -16,6 +16,8 @@ interface FirCallableMember :
FirTypedDeclaration, FirSymbolOwner<FirCallableMember> {
val isOverride: Boolean get() = status.isOverride
val isStatic: Boolean get() = status.isStatic
val receiverTypeRef: FirTypeRef?
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
@@ -46,6 +46,8 @@ interface FirDeclarationStatus : FirElement {
val isSuspend: Boolean
val isStatic: Boolean
override val psi: PsiElement?
get() = null
@@ -112,6 +112,12 @@ open class FirDeclarationStatusImpl(
this[SUSPEND] = value
}
override var isStatic: Boolean
get() = this[STATIC]
set(value) {
this[STATIC] = value
}
private enum class Modifier(val mask: Int) {
EXPECT(0x1),
ACTUAL(0x2),
@@ -126,7 +132,8 @@ open class FirDeclarationStatusImpl(
INNER(0x400),
COMPANION(0x800),
DATA(0x1000),
SUSPEND(0x2000)
SUSPEND(0x2000),
STATIC(0x4000)
}
fun resolved(visibility: Visibility, modality: Modality): FirDeclarationStatus {