IR: IrField.isStatic

This commit is contained in:
Dmitry Petrov
2018-07-27 14:19:06 +03:00
parent 8d97512179
commit 6dfcf15a39
62 changed files with 11242 additions and 11234 deletions
@@ -20,6 +20,7 @@ interface IrField : IrSymbolDeclaration<IrFieldSymbol> {
val visibility: Visibility
val isFinal: Boolean
val isExternal: Boolean
val isStatic: Boolean
var initializer: IrExpressionBody?
}
@@ -39,7 +39,8 @@ class IrFieldImpl(
override val type: IrType,
override val visibility: Visibility,
override val isFinal: Boolean,
override val isExternal: Boolean
override val isExternal: Boolean,
override val isStatic: Boolean
) : IrDeclarationBase(startOffset, endOffset, origin),
IrField {
@@ -54,7 +55,8 @@ class IrFieldImpl(
startOffset, endOffset, origin, symbol,
symbol.descriptor.name, type, symbol.descriptor.visibility,
isFinal = !symbol.descriptor.isVar,
isExternal = symbol.descriptor.isEffectivelyExternal()
isExternal = symbol.descriptor.isEffectivelyExternal(),
isStatic = symbol.descriptor.dispatchReceiverParameter == null
)
constructor(
@@ -122,7 +122,8 @@ class RenderIrElementVisitor : IrElementVisitor<String, Nothing?> {
private fun IrField.renderFieldFlags() =
renderFlagsList(
"final".takeIf { isFinal },
"external".takeIf { isExternal }
"external".takeIf { isExternal },
"static".takeIf { isStatic }
)
override fun visitClass(declaration: IrClass, data: Nothing?): String =