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