Make declaration containers mutable.

This commit is contained in:
Dmitry Petrov
2016-09-15 16:30:07 +03:00
committed by Dmitry Petrov
parent 4b9c5effd3
commit 4c88ad408f
9 changed files with 14 additions and 97 deletions
@@ -23,15 +23,6 @@ interface IrClass : IrDeclaration, IrDeclarationContainer {
get() = IrDeclarationKind.CLASS
override val descriptor: ClassDescriptor
interface Builder : IrDeclarationContainer.Builder {
val startOffset: Int
val endOffset: Int
var origin: IrDeclarationOrigin
val descriptor: ClassDescriptor
override fun build(): IrClass
}
}
fun IrClass.getInstanceInitializerMembers() =
@@ -17,13 +17,5 @@
package org.jetbrains.kotlin.ir.declarations
interface IrDeclarationContainer {
val declarations: List<IrDeclaration>
fun toBuilder(): Builder
interface Builder {
val declarations: MutableList<IrDeclaration>
fun build(): IrDeclarationContainer
}
val declarations: MutableList<IrDeclaration>
}
@@ -26,19 +26,9 @@ import org.jetbrains.kotlin.name.FqName
interface IrFile : IrElement, IrDeclarationContainer {
val fileEntry: SourceManager.FileEntry
val fileAnnotations: List<AnnotationDescriptor>
val fileAnnotations: MutableList<AnnotationDescriptor>
val packageFragmentDescriptor: PackageFragmentDescriptor
override fun toBuilder(): Builder
interface Builder : IrDeclarationContainer.Builder {
val fileEntry: SourceManager.FileEntry
val fileAnnotations: MutableList<AnnotationDescriptor>
val packageFragmentDescriptor: PackageFragmentDescriptor
override fun build(): IrFile
}
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrFile =
accept(transformer, data) as IrFile
}
@@ -48,9 +48,6 @@ class IrClassImpl(
declarations.addAll(members)
}
override fun toBuilder(): IrDeclarationContainer.Builder =
IrClassBuilderImpl(this)
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
visitor.visitClass(this, data)
@@ -64,17 +61,3 @@ class IrClassImpl(
}
}
}
class IrClassBuilderImpl(
override var startOffset: Int,
override var endOffset: Int,
override var origin: IrDeclarationOrigin,
override var descriptor: ClassDescriptor,
override val declarations: MutableList<IrDeclaration>
) : IrClass.Builder {
constructor(irClass: IrClass) : this(irClass.startOffset, irClass.endOffset, irClass.origin, irClass.descriptor,
irClass.declarations.toMutableList())
override fun build(): IrClass =
IrClassImpl(startOffset, endOffset, origin, descriptor, declarations)
}
@@ -34,33 +34,14 @@ class IrFileImpl(
fileEntry: SourceManager.FileEntry, packageFragmentDescriptor: PackageFragmentDescriptor,
fileAnnotations: List<AnnotationDescriptor>, declarations: List<IrDeclaration>
) : this(fileEntry, packageFragmentDescriptor) {
addAllAnnotations(fileAnnotations)
addAll(declarations)
this.fileAnnotations.addAll(fileAnnotations)
this.declarations.addAll(declarations)
}
override val fileAnnotations: MutableList<AnnotationDescriptor> = SmartList()
fun addAnnotation(annotation: AnnotationDescriptor) {
fileAnnotations.add(annotation)
}
fun addAllAnnotations(annotations: List<AnnotationDescriptor>) {
fileAnnotations.addAll(annotations)
}
override val declarations: MutableList<IrDeclaration> = ArrayList()
fun addDeclaration(declaration: IrDeclaration) {
declarations.add(declaration)
}
fun addAll(newDeclarations: List<IrDeclaration>) {
declarations.addAll(newDeclarations)
}
override fun toBuilder(): IrFile.Builder =
IrFileBuilderImpl(this)
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
visitor.visitFile(this, data)
@@ -74,18 +55,3 @@ class IrFileImpl(
}
}
}
class IrFileBuilderImpl(
override val fileEntry: SourceManager.FileEntry,
override val packageFragmentDescriptor: PackageFragmentDescriptor,
override val fileAnnotations: MutableList<AnnotationDescriptor>,
override val declarations: MutableList<IrDeclaration>
) : IrFile.Builder {
constructor(irFile: IrFile) : this(irFile.fileEntry,
irFile.packageFragmentDescriptor,
irFile.fileAnnotations.toMutableList(),
irFile.declarations.toMutableList())
override fun build(): IrFile =
IrFileImpl(fileEntry, packageFragmentDescriptor, fileAnnotations, declarations)
}