Move fields and init blocks of companions to their owners

This commit is contained in:
Georgy Bronnikov
2018-07-19 18:14:58 +03:00
parent 827494abbe
commit 605afbae90
42 changed files with 567 additions and 176 deletions
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.ir.symbols.IrAnonymousInitializerSymbol
interface IrAnonymousInitializer : IrSymbolDeclaration<IrAnonymousInitializerSymbol> {
override val descriptor: ClassDescriptor // TODO special descriptor for anonymous initializer blocks
val isStatic: Boolean
var body: IrBlockBody
}
@@ -38,6 +38,10 @@ interface IrDeclarationOrigin {
object IR_EXTERNAL_DECLARATION_STUB : IrDeclarationOriginImpl("IR_EXTERNAL_DECLARATION_STUB")
object IR_BUILTINS_STUB : IrDeclarationOriginImpl("IR_BUILTINS_STUB")
object BRIDGE : IrDeclarationOriginImpl("BRIDGE")
object FIELD_FOR_ENUM_ENTRY : IrDeclarationOriginImpl("FIELD_FOR_ENUM_ENTRY")
object FIELD_FOR_ENUM_VALUES : IrDeclarationOriginImpl("FIELD_FOR_ENUM_VALUES")
object FIELD_FOR_OBJECT_INSTANCE : IrDeclarationOriginImpl("FIELD_FOR_OBJECT_INSTANCE")
}
abstract class IrDeclarationOriginImpl(val name: String) : IrDeclarationOrigin {
@@ -29,7 +29,8 @@ class IrAnonymousInitializerImpl(
startOffset: Int,
endOffset: Int,
origin: IrDeclarationOrigin,
override val symbol: IrAnonymousInitializerSymbol
override val symbol: IrAnonymousInitializerSymbol,
override val isStatic: Boolean = false
) : IrDeclarationBase(startOffset, endOffset, origin),
IrAnonymousInitializer {
@@ -37,17 +38,19 @@ class IrAnonymousInitializerImpl(
startOffset: Int,
endOffset: Int,
origin: IrDeclarationOrigin,
descriptor: ClassDescriptor
descriptor: ClassDescriptor,
isStatic: Boolean = false
) :
this(startOffset, endOffset, origin, IrAnonymousInitializerSymbolImpl(descriptor))
this(startOffset, endOffset, origin, IrAnonymousInitializerSymbolImpl(descriptor), isStatic)
constructor(
startOffset: Int,
endOffset: Int,
origin: IrDeclarationOrigin,
descriptor: ClassDescriptor,
body: IrBlockBody
) : this(startOffset, endOffset, origin, descriptor) {
body: IrBlockBody,
isStatic: Boolean = false
) : this(startOffset, endOffset, origin, descriptor, isStatic) {
this.body = body
}