IR: make IrBranch/IrCatch/IrSpreadElement/IrModuleFragment/IrPackageFragment classes
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
package org.jetbrains.kotlin.ir.declarations
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
||||
import org.jetbrains.kotlin.ir.IrElement
|
||||
import org.jetbrains.kotlin.ir.IrElementBase
|
||||
import org.jetbrains.kotlin.ir.SourceManager
|
||||
import org.jetbrains.kotlin.ir.symbols.IrExternalPackageFragmentSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrFileSymbol
|
||||
@@ -27,22 +27,22 @@ import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
|
||||
import java.io.File
|
||||
|
||||
interface IrPackageFragment : IrElement, IrDeclarationContainer, IrSymbolOwner {
|
||||
val packageFragmentDescriptor: PackageFragmentDescriptor
|
||||
override val symbol: IrPackageFragmentSymbol
|
||||
abstract class IrPackageFragment : IrElementBase(), IrDeclarationContainer, IrSymbolOwner {
|
||||
abstract val packageFragmentDescriptor: PackageFragmentDescriptor
|
||||
abstract override val symbol: IrPackageFragmentSymbol
|
||||
|
||||
val fqName: FqName
|
||||
abstract val fqName: FqName
|
||||
}
|
||||
|
||||
interface IrExternalPackageFragment : IrPackageFragment {
|
||||
override val symbol: IrExternalPackageFragmentSymbol
|
||||
val containerSource: DeserializedContainerSource?
|
||||
abstract class IrExternalPackageFragment : IrPackageFragment() {
|
||||
abstract override val symbol: IrExternalPackageFragmentSymbol
|
||||
abstract val containerSource: DeserializedContainerSource?
|
||||
}
|
||||
|
||||
interface IrFile : IrPackageFragment, IrMutableAnnotationContainer, IrMetadataSourceOwner {
|
||||
override val symbol: IrFileSymbol
|
||||
abstract class IrFile : IrPackageFragment(), IrMutableAnnotationContainer, IrMetadataSourceOwner {
|
||||
abstract override val symbol: IrFileSymbol
|
||||
|
||||
val fileEntry: SourceManager.FileEntry
|
||||
abstract val fileEntry: SourceManager.FileEntry
|
||||
|
||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrFile =
|
||||
accept(transformer, data) as IrFile
|
||||
|
||||
@@ -18,16 +18,17 @@ package org.jetbrains.kotlin.ir.declarations
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.ir.IrElement
|
||||
import org.jetbrains.kotlin.ir.IrElementBase
|
||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
interface IrModuleFragment : IrElement {
|
||||
val name: Name
|
||||
val descriptor: ModuleDescriptor
|
||||
val irBuiltins: IrBuiltIns
|
||||
val files: MutableList<IrFile>
|
||||
abstract class IrModuleFragment : IrElementBase() {
|
||||
abstract val name: Name
|
||||
abstract val descriptor: ModuleDescriptor
|
||||
abstract val irBuiltins: IrBuiltIns
|
||||
abstract val files: MutableList<IrFile>
|
||||
|
||||
override val startOffset: Int get() = UNDEFINED_OFFSET
|
||||
override val endOffset: Int get() = UNDEFINED_OFFSET
|
||||
@@ -35,4 +36,3 @@ interface IrModuleFragment : IrElement {
|
||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrElement =
|
||||
accept(transformer, data) as IrModuleFragment
|
||||
}
|
||||
|
||||
|
||||
+1
-4
@@ -19,7 +19,6 @@ package org.jetbrains.kotlin.ir.declarations.impl
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.impl.EmptyPackageFragmentDescriptor
|
||||
import org.jetbrains.kotlin.ir.IrElementBase
|
||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
|
||||
@@ -35,9 +34,7 @@ import org.jetbrains.kotlin.serialization.deserialization.descriptors.Deserializ
|
||||
class IrExternalPackageFragmentImpl(
|
||||
override val symbol: IrExternalPackageFragmentSymbol,
|
||||
override val fqName: FqName
|
||||
) : IrElementBase(),
|
||||
IrExternalPackageFragment {
|
||||
|
||||
) : IrExternalPackageFragment() {
|
||||
override val startOffset: Int
|
||||
get() = UNDEFINED_OFFSET
|
||||
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package org.jetbrains.kotlin.ir.declarations.impl
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
||||
import org.jetbrains.kotlin.ir.IrElementBase
|
||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.SourceManager
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
|
||||
@@ -34,7 +33,7 @@ class IrFileImpl(
|
||||
override val fileEntry: SourceManager.FileEntry,
|
||||
override val symbol: IrFileSymbol,
|
||||
override val fqName: FqName
|
||||
) : IrElementBase(), IrFile {
|
||||
) : IrFile() {
|
||||
constructor(
|
||||
fileEntry: SourceManager.FileEntry,
|
||||
packageFragmentDescriptor: PackageFragmentDescriptor
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@ class IrModuleFragmentImpl(
|
||||
override val descriptor: ModuleDescriptor,
|
||||
override val irBuiltins: IrBuiltIns,
|
||||
files: List<IrFile> = emptyList(),
|
||||
) : IrModuleFragment {
|
||||
) : IrModuleFragment() {
|
||||
override val name: Name get() = descriptor.name // TODO
|
||||
|
||||
override val files: MutableList<IrFile> = files.toMutableList()
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.IrElement
|
||||
import org.jetbrains.kotlin.ir.IrElementBase
|
||||
import org.jetbrains.kotlin.ir.declarations.IrVariable
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
|
||||
@@ -28,9 +28,9 @@ abstract class IrTry : IrExpression() {
|
||||
abstract var finallyExpression: IrExpression?
|
||||
}
|
||||
|
||||
interface IrCatch : IrElement {
|
||||
var catchParameter: IrVariable
|
||||
var result: IrExpression
|
||||
abstract class IrCatch : IrElementBase() {
|
||||
abstract var catchParameter: IrVariable
|
||||
abstract var result: IrExpression
|
||||
|
||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrCatch =
|
||||
super.transform(transformer, data) as IrCatch
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.IrElement
|
||||
import org.jetbrains.kotlin.ir.IrElementBase
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
|
||||
@@ -30,8 +31,8 @@ abstract class IrVararg : IrExpression() {
|
||||
abstract fun putElement(i: Int, element: IrVarargElement)
|
||||
}
|
||||
|
||||
interface IrSpreadElement : IrVarargElement {
|
||||
var expression: IrExpression
|
||||
abstract class IrSpreadElement : IrElementBase(), IrVarargElement {
|
||||
abstract var expression: IrExpression
|
||||
|
||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrElement =
|
||||
accept(transformer, data) as IrSpreadElement
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.IrElement
|
||||
import org.jetbrains.kotlin.ir.IrElementBase
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
@@ -39,11 +39,21 @@ abstract class IrWhen : IrExpression() {
|
||||
}
|
||||
}
|
||||
|
||||
interface IrBranch : IrElement {
|
||||
var condition: IrExpression
|
||||
var result: IrExpression
|
||||
abstract class IrBranch : IrElementBase() {
|
||||
abstract var condition: IrExpression
|
||||
abstract var result: IrExpression
|
||||
|
||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrBranch
|
||||
abstract override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrBranch
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
condition.accept(visitor, data)
|
||||
result.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
condition = condition.transform(transformer, data)
|
||||
result = result.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
interface IrElseBranch : IrBranch
|
||||
abstract class IrElseBranch : IrBranch()
|
||||
|
||||
+1
-2
@@ -16,7 +16,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions.impl
|
||||
|
||||
import org.jetbrains.kotlin.ir.IrElementBase
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrSpreadElement
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
@@ -26,7 +25,7 @@ class IrSpreadElementImpl(
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override var expression: IrExpression,
|
||||
) : IrElementBase(), IrSpreadElement {
|
||||
) : IrSpreadElement() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitSpreadElement(this, data)
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions.impl
|
||||
|
||||
import org.jetbrains.kotlin.ir.IrElementBase
|
||||
import org.jetbrains.kotlin.ir.declarations.IrVariable
|
||||
import org.jetbrains.kotlin.ir.expressions.IrCatch
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
@@ -73,7 +72,7 @@ class IrCatchImpl(
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override var catchParameter: IrVariable,
|
||||
) : IrElementBase(), IrCatch {
|
||||
) : IrCatch() {
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
|
||||
@@ -16,12 +16,10 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions.impl
|
||||
|
||||
import org.jetbrains.kotlin.ir.IrElementBase
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import java.util.*
|
||||
|
||||
class IrWhenImpl(
|
||||
override val startOffset: Int,
|
||||
@@ -47,7 +45,7 @@ open class IrBranchImpl(
|
||||
override val endOffset: Int,
|
||||
override var condition: IrExpression,
|
||||
override var result: IrExpression
|
||||
) : IrElementBase(), IrBranch {
|
||||
) : IrBranch() {
|
||||
constructor(condition: IrExpression, result: IrExpression) :
|
||||
this(condition.startOffset, condition.endOffset, condition, result)
|
||||
|
||||
@@ -56,28 +54,16 @@ open class IrBranchImpl(
|
||||
|
||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrBranch =
|
||||
transformer.visitBranch(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
condition.accept(visitor, data)
|
||||
result.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
condition = condition.transform(transformer, data)
|
||||
result = result.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
class IrElseBranchImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
condition: IrExpression,
|
||||
result: IrExpression
|
||||
) :
|
||||
IrBranchImpl(startOffset, endOffset, condition, result),
|
||||
IrElseBranch {
|
||||
|
||||
constructor(condition: IrExpression, result: IrExpression) : this(condition.startOffset, condition.endOffset, condition, result)
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override var condition: IrExpression,
|
||||
override var result: IrExpression
|
||||
) : IrElseBranch() {
|
||||
constructor(condition: IrExpression, result: IrExpression) :
|
||||
this(condition.startOffset, condition.endOffset, condition, result)
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitElseBranch(this, data)
|
||||
|
||||
Reference in New Issue
Block a user