IR: push down implementations of startOffset/endOffset/type/...
Do not store these as properties in IrElementBase, IrExpressionBase and similar classes. This helps to reduce boilerplate in implementations (just "override val" in the constructor, instead of taking a parameter and passing it to the superclass), and also slightly optimizes memory in cases where the value is trivial (UNDEFINED_OFFSET, 0, etc) and thus does not need to be stored.
This commit is contained in:
+8
-7
@@ -11,9 +11,9 @@ import org.jetbrains.kotlin.backend.common.ir.Symbols
|
||||
import org.jetbrains.kotlin.backend.common.ir.createTemporaryVariableWithWrappedDescriptor
|
||||
import org.jetbrains.kotlin.backend.common.lower.createIrBuilder
|
||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.IrElement
|
||||
import org.jetbrains.kotlin.ir.IrStatement
|
||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||
import org.jetbrains.kotlin.ir.builders.irReturn
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
@@ -509,13 +509,14 @@ class FunctionInlining(
|
||||
}
|
||||
|
||||
private class IrGetValueWithoutLocation(
|
||||
symbol: IrValueSymbol,
|
||||
override val symbol: IrValueSymbol,
|
||||
override val origin: IrStatementOrigin? = null
|
||||
) : IrTerminalDeclarationReferenceBase<IrValueSymbol>(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET,
|
||||
symbol.owner.type,
|
||||
symbol
|
||||
), IrGetValue {
|
||||
) : IrTerminalDeclarationReferenceBase<IrValueSymbol>(), IrGetValue {
|
||||
override val startOffset: Int get() = UNDEFINED_OFFSET
|
||||
override val endOffset: Int get() = UNDEFINED_OFFSET
|
||||
|
||||
override val type: IrType get() = symbol.owner.type
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D) =
|
||||
visitor.visitGetValue(this, data)
|
||||
|
||||
|
||||
+10
-2
@@ -24,7 +24,10 @@ import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrReturnableBlockSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrValueParameterSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrVariableSymbol
|
||||
import org.jetbrains.kotlin.ir.types.*
|
||||
import org.jetbrains.kotlin.ir.types.IrDynamicType
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.types.isNothing
|
||||
import org.jetbrains.kotlin.ir.types.isUnit
|
||||
import org.jetbrains.kotlin.ir.util.deepCopyWithSymbols
|
||||
import org.jetbrains.kotlin.ir.util.getInlinedClass
|
||||
import org.jetbrains.kotlin.ir.visitors.*
|
||||
@@ -39,7 +42,12 @@ data class LoopBounds(val headState: SuspendState, val exitState: SuspendState)
|
||||
|
||||
data class TryState(val tryState: SuspendState, val catchState: SuspendState)
|
||||
|
||||
class IrDispatchPoint(val target: SuspendState) : IrExpressionBase(UNDEFINED_OFFSET, UNDEFINED_OFFSET, target.entryBlock.type) {
|
||||
class IrDispatchPoint(val target: SuspendState) : IrExpressionBase() {
|
||||
override val startOffset: Int get() = UNDEFINED_OFFSET
|
||||
override val endOffset: Int get() = UNDEFINED_OFFSET
|
||||
|
||||
override val type: IrType get() = target.entryBlock.type
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D) = visitor.visitExpression(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {}
|
||||
|
||||
+4
-1
@@ -22,7 +22,10 @@ import org.jetbrains.kotlin.ir.declarations.IrFactory
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.IrBlockBody
|
||||
|
||||
class IrBlockBodyImpl(startOffset: Int, endOffset: Int) : IrElementBase(startOffset, endOffset), IrBlockBody {
|
||||
class IrBlockBodyImpl(
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int
|
||||
) : IrElementBase(), IrBlockBody {
|
||||
constructor(startOffset: Int, endOffset: Int, statements: List<IrStatement>) : this(startOffset, endOffset) {
|
||||
this.statements.addAll(statements)
|
||||
}
|
||||
|
||||
+3
-3
@@ -23,10 +23,10 @@ import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
||||
|
||||
class IrExpressionBodyImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
initializer: (IrExpressionBody.() -> Unit)? = null
|
||||
) : IrElementBase(startOffset, endOffset), IrExpressionBody {
|
||||
) : IrElementBase(), IrExpressionBody {
|
||||
init {
|
||||
initializer?.invoke(this)
|
||||
}
|
||||
|
||||
@@ -16,4 +16,4 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir
|
||||
|
||||
abstract class IrElementBase(override val startOffset: Int, override val endOffset: Int) : IrElement
|
||||
abstract class IrElementBase : IrElement
|
||||
|
||||
+7
-1
@@ -35,9 +35,15 @@ import org.jetbrains.kotlin.serialization.deserialization.descriptors.Deserializ
|
||||
class IrExternalPackageFragmentImpl(
|
||||
override val symbol: IrExternalPackageFragmentSymbol,
|
||||
override val fqName: FqName
|
||||
) : IrElementBase(UNDEFINED_OFFSET, UNDEFINED_OFFSET),
|
||||
) : IrElementBase(),
|
||||
IrExternalPackageFragment {
|
||||
|
||||
override val startOffset: Int
|
||||
get() = UNDEFINED_OFFSET
|
||||
|
||||
override val endOffset: Int
|
||||
get() = UNDEFINED_OFFSET
|
||||
|
||||
init {
|
||||
symbol.bind(this)
|
||||
}
|
||||
|
||||
@@ -34,10 +34,7 @@ class IrFileImpl(
|
||||
override val fileEntry: SourceManager.FileEntry,
|
||||
override val symbol: IrFileSymbol,
|
||||
override val fqName: FqName
|
||||
) :
|
||||
IrElementBase(0, fileEntry.maxOffset),
|
||||
IrFile {
|
||||
|
||||
) : IrElementBase(), IrFile {
|
||||
constructor(
|
||||
fileEntry: SourceManager.FileEntry,
|
||||
packageFragmentDescriptor: PackageFragmentDescriptor
|
||||
@@ -47,6 +44,12 @@ class IrFileImpl(
|
||||
symbol.bind(this)
|
||||
}
|
||||
|
||||
override val startOffset: Int
|
||||
get() = 0
|
||||
|
||||
override val endOffset: Int
|
||||
get() = fileEntry.maxOffset
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
override val packageFragmentDescriptor: PackageFragmentDescriptor get() = symbol.descriptor
|
||||
|
||||
|
||||
@@ -29,22 +29,18 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrBlockImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
origin: IrStatementOrigin? = null
|
||||
) :
|
||||
IrContainerExpressionBase(startOffset, endOffset, type, origin),
|
||||
IrBlock {
|
||||
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val origin: IrStatementOrigin? = null,
|
||||
) : IrContainerExpressionBase(), IrBlock {
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
origin: IrStatementOrigin?,
|
||||
statements: List<IrStatement>
|
||||
) :
|
||||
this(startOffset, endOffset, type, origin) {
|
||||
) : this(startOffset, endOffset, type, origin) {
|
||||
this.statements.addAll(statements)
|
||||
}
|
||||
|
||||
@@ -65,16 +61,13 @@ fun IrBlockImpl.inlineStatement(statement: IrStatement) {
|
||||
}
|
||||
|
||||
class IrReturnableBlockImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val symbol: IrReturnableBlockSymbol,
|
||||
origin: IrStatementOrigin? = null,
|
||||
override val origin: IrStatementOrigin? = null,
|
||||
override val inlineFunctionSymbol: IrFunctionSymbol? = null
|
||||
) :
|
||||
IrContainerExpressionBase(startOffset, endOffset, type, origin),
|
||||
IrReturnableBlock {
|
||||
|
||||
) : IrContainerExpressionBase(), IrReturnableBlock {
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
override val descriptor: FunctionDescriptor
|
||||
get() = symbol.descriptor
|
||||
|
||||
+2
-11
@@ -17,16 +17,7 @@
|
||||
package org.jetbrains.kotlin.ir.expressions.impl
|
||||
|
||||
import org.jetbrains.kotlin.ir.expressions.IrBreakContinue
|
||||
import org.jetbrains.kotlin.ir.expressions.IrLoop
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
|
||||
abstract class IrBreakContinueBase(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override var loop: IrLoop
|
||||
) : IrTerminalExpressionBase(startOffset, endOffset, type),
|
||||
IrBreakContinue {
|
||||
|
||||
abstract class IrBreakContinueBase : IrTerminalExpressionBase(), IrBreakContinue {
|
||||
override var label: String? = null
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,13 +22,11 @@ import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrBreakImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
loop: IrLoop
|
||||
) : IrBreakContinueBase(startOffset, endOffset, type, loop),
|
||||
IrBreak {
|
||||
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override var loop: IrLoop,
|
||||
) : IrBreakContinueBase(), IrBreak {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitBreak(this, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,23 +28,15 @@ import org.jetbrains.kotlin.ir.util.render
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrCallImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val symbol: IrFunctionSymbol,
|
||||
typeArgumentsCount: Int,
|
||||
valueArgumentsCount: Int,
|
||||
origin: IrStatementOrigin? = null,
|
||||
override val origin: IrStatementOrigin? = null,
|
||||
override val superQualifierSymbol: IrClassSymbol? = null
|
||||
) :
|
||||
IrCallWithIndexedArgumentsBase(
|
||||
startOffset, endOffset, type,
|
||||
typeArgumentsCount,
|
||||
valueArgumentsCount,
|
||||
origin
|
||||
),
|
||||
IrCall {
|
||||
|
||||
) : IrCallWithIndexedArgumentsBase(typeArgumentsCount, valueArgumentsCount), IrCall {
|
||||
init {
|
||||
if (symbol is IrConstructorSymbol) {
|
||||
throw AssertionError("Should be IrConstructorCall: ${this.render()}")
|
||||
|
||||
+2
-17
@@ -17,29 +17,14 @@
|
||||
package org.jetbrains.kotlin.ir.expressions.impl
|
||||
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrCallWithIndexedArgumentsBase(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
typeArgumentsCount: Int,
|
||||
valueArgumentsCount: Int,
|
||||
origin: IrStatementOrigin? = null
|
||||
) :
|
||||
IrMemberAccessExpressionBase<IrFunctionSymbol>(
|
||||
startOffset,
|
||||
endOffset,
|
||||
type,
|
||||
typeArgumentsCount,
|
||||
valueArgumentsCount,
|
||||
origin
|
||||
) {
|
||||
|
||||
final override val valueArgumentsCount: Int,
|
||||
) : IrMemberAccessExpressionBase<IrFunctionSymbol>(typeArgumentsCount) {
|
||||
private val argumentsByParameterIndex: Array<IrExpression?> = arrayOfNulls(valueArgumentsCount)
|
||||
|
||||
override fun getValueArgument(index: Int): IrExpression? {
|
||||
|
||||
+5
-6
@@ -22,13 +22,12 @@ import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrClassReferenceImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
symbol: IrClassifierSymbol,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val symbol: IrClassifierSymbol,
|
||||
override val classType: IrType
|
||||
) : IrTerminalDeclarationReferenceBase<IrClassifierSymbol>(startOffset, endOffset, type, symbol), IrClassReference {
|
||||
|
||||
) : IrTerminalDeclarationReferenceBase<IrClassifierSymbol>(), IrClassReference {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitClassReference(this, data)
|
||||
}
|
||||
|
||||
+6
-11
@@ -22,16 +22,12 @@ import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
|
||||
class IrCompositeImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
origin: IrStatementOrigin? = null
|
||||
) :
|
||||
IrContainerExpressionBase(startOffset, endOffset, type, origin),
|
||||
IrComposite {
|
||||
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val origin: IrStatementOrigin? = null,
|
||||
) : IrContainerExpressionBase(), IrComposite {
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
@@ -44,5 +40,4 @@ class IrCompositeImpl(
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitComposite(this, data)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,20 +18,16 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
|
||||
import org.jetbrains.kotlin.ir.expressions.IrConst
|
||||
import org.jetbrains.kotlin.ir.expressions.IrConstKind
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.types.*
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrConstImpl<T>(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val kind: IrConstKind<T>,
|
||||
override val value: T
|
||||
) :
|
||||
IrTerminalExpressionBase(startOffset, endOffset, type),
|
||||
IrConst<T> {
|
||||
|
||||
) : IrTerminalExpressionBase(), IrConst<T> {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitConst(this, data)
|
||||
|
||||
@@ -87,4 +83,4 @@ class IrConstImpl<T>(
|
||||
else -> constNull(startOffset, endOffset, type)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+9
-10
@@ -15,18 +15,15 @@ import org.jetbrains.kotlin.ir.util.parentAsClass
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrConstructorCallImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val symbol: IrConstructorSymbol,
|
||||
typeArgumentsCount: Int,
|
||||
override val constructorTypeArgumentsCount: Int,
|
||||
valueArgumentsCount: Int,
|
||||
origin: IrStatementOrigin? = null
|
||||
) :
|
||||
IrCallWithIndexedArgumentsBase(startOffset, endOffset, type, typeArgumentsCount, valueArgumentsCount, origin),
|
||||
IrConstructorCall {
|
||||
|
||||
override val origin: IrStatementOrigin? = null,
|
||||
) : IrCallWithIndexedArgumentsBase(typeArgumentsCount, valueArgumentsCount), IrConstructorCall {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitConstructorCall(this, data)
|
||||
|
||||
@@ -92,7 +89,9 @@ class IrConstructorCallImpl(
|
||||
}
|
||||
|
||||
fun fromSymbolOwner(type: IrType, constructorSymbol: IrConstructorSymbol, origin: IrStatementOrigin? = null) =
|
||||
fromSymbolOwner(UNDEFINED_OFFSET, UNDEFINED_OFFSET, type, constructorSymbol, constructorSymbol.owner.parentAsClass.typeParameters.size, origin)
|
||||
fromSymbolOwner(
|
||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, type, constructorSymbol, constructorSymbol.owner.parentAsClass.typeParameters.size,
|
||||
origin
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-12
@@ -18,22 +18,12 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
|
||||
import org.jetbrains.kotlin.ir.IrStatement
|
||||
import org.jetbrains.kotlin.ir.expressions.IrContainerExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.util.transform
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import java.util.*
|
||||
|
||||
abstract class IrContainerExpressionBase(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val origin: IrStatementOrigin? = null
|
||||
) :
|
||||
IrExpressionBase(startOffset, endOffset, type),
|
||||
IrContainerExpression {
|
||||
|
||||
abstract class IrContainerExpressionBase : IrExpressionBase(), IrContainerExpression {
|
||||
override val statements: MutableList<IrStatement> = ArrayList(2)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
@@ -43,4 +33,4 @@ abstract class IrContainerExpressionBase(
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
statements.transform { it.transform(transformer, data) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,14 +22,11 @@ import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrContinueImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
loop: IrLoop
|
||||
) :
|
||||
IrBreakContinueBase(startOffset, endOffset, type, loop),
|
||||
IrContinue {
|
||||
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override var loop: IrLoop,
|
||||
) : IrBreakContinueBase(), IrContinue {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitContinue(this, data)
|
||||
}
|
||||
}
|
||||
|
||||
+3
-9
@@ -18,13 +18,7 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
|
||||
import org.jetbrains.kotlin.ir.expressions.IrDeclarationReference
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
|
||||
abstract class IrDeclarationReferenceBase<out S : IrSymbol>(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val symbol: S
|
||||
) :
|
||||
IrExpressionBase(startOffset, endOffset, type),
|
||||
IrDeclarationReference
|
||||
abstract class IrDeclarationReferenceBase<out S : IrSymbol> : IrExpressionBase(), IrDeclarationReference {
|
||||
abstract override val symbol: S
|
||||
}
|
||||
|
||||
+7
-12
@@ -18,27 +18,22 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
|
||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.expressions.IrDelegatingConstructorCall
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.expressions.typeParametersCount
|
||||
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrDelegatingConstructorCallImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val symbol: IrConstructorSymbol,
|
||||
typeArgumentsCount: Int,
|
||||
valueArgumentsCount: Int
|
||||
) :
|
||||
IrCallWithIndexedArgumentsBase(
|
||||
startOffset,
|
||||
endOffset,
|
||||
type,
|
||||
typeArgumentsCount = typeArgumentsCount,
|
||||
valueArgumentsCount = valueArgumentsCount
|
||||
),
|
||||
IrDelegatingConstructorCall {
|
||||
) : IrCallWithIndexedArgumentsBase(typeArgumentsCount, valueArgumentsCount), IrDelegatingConstructorCall {
|
||||
override val origin: IrStatementOrigin?
|
||||
get() = null
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
constructor(
|
||||
|
||||
+5
-8
@@ -23,14 +23,11 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrDoWhileLoopImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
origin: IrStatementOrigin?
|
||||
) :
|
||||
IrLoopBase(startOffset, endOffset, type, origin),
|
||||
IrDoWhileLoop {
|
||||
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val origin: IrStatementOrigin?,
|
||||
) : IrLoopBase(), IrDoWhileLoop {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitDoWhileLoop(this, data)
|
||||
}
|
||||
|
||||
+5
-8
@@ -12,15 +12,12 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrDynamicMemberExpressionImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val memberName: String,
|
||||
override var receiver: IrExpression
|
||||
) :
|
||||
IrExpressionBase(startOffset, endOffset, type),
|
||||
IrDynamicMemberExpression {
|
||||
|
||||
) : IrExpressionBase(), IrDynamicMemberExpression {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitDynamicMemberExpression(this, data)
|
||||
|
||||
@@ -31,4 +28,4 @@ class IrDynamicMemberExpressionImpl(
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
receiver = receiver.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+5
-8
@@ -14,14 +14,11 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.utils.SmartList
|
||||
|
||||
class IrDynamicOperatorExpressionImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val operator: IrDynamicOperator
|
||||
) :
|
||||
IrExpressionBase(startOffset, endOffset, type),
|
||||
IrDynamicOperatorExpression {
|
||||
|
||||
) : IrExpressionBase(), IrDynamicOperatorExpression {
|
||||
override lateinit var receiver: IrExpression
|
||||
|
||||
override val arguments: MutableList<IrExpression> = SmartList()
|
||||
@@ -42,4 +39,4 @@ class IrDynamicOperatorExpressionImpl(
|
||||
arguments[i] = arguments[i].transform(transformer, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+7
-12
@@ -18,26 +18,21 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
|
||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.expressions.IrEnumConstructorCall
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrEnumConstructorCallImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val symbol: IrConstructorSymbol,
|
||||
typeArgumentsCount: Int,
|
||||
valueArgumentsCount: Int
|
||||
) :
|
||||
IrCallWithIndexedArgumentsBase(
|
||||
startOffset,
|
||||
endOffset,
|
||||
type,
|
||||
typeArgumentsCount = typeArgumentsCount,
|
||||
valueArgumentsCount = valueArgumentsCount
|
||||
),
|
||||
IrEnumConstructorCall {
|
||||
) : IrCallWithIndexedArgumentsBase(typeArgumentsCount, valueArgumentsCount), IrEnumConstructorCall {
|
||||
override val origin: IrStatementOrigin?
|
||||
get() = null
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
constructor(
|
||||
|
||||
+5
-8
@@ -24,14 +24,11 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.utils.SmartList
|
||||
|
||||
class IrErrorCallExpressionImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val description: String
|
||||
) :
|
||||
IrExpressionBase(startOffset, endOffset, type),
|
||||
IrErrorCallExpression {
|
||||
|
||||
) : IrExpressionBase(), IrErrorCallExpression {
|
||||
override var explicitReceiver: IrExpression? = null
|
||||
override val arguments: MutableList<IrExpression> = SmartList()
|
||||
|
||||
@@ -54,4 +51,4 @@ class IrErrorCallExpressionImpl(
|
||||
arguments[i] = irExpression.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+5
-9
@@ -22,18 +22,14 @@ import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrErrorExpressionImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val description: String
|
||||
) :
|
||||
IrTerminalExpressionBase(startOffset, endOffset, type),
|
||||
IrExpressionWithCopy,
|
||||
IrErrorExpression {
|
||||
|
||||
) : IrTerminalExpressionBase(), IrExpressionWithCopy, IrErrorExpression {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitErrorExpression(this, data)
|
||||
|
||||
override fun copy(): IrErrorExpressionImpl =
|
||||
IrErrorExpressionImpl(startOffset, endOffset, type, description)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-6
@@ -19,13 +19,8 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
import org.jetbrains.kotlin.ir.IrElementBase
|
||||
import org.jetbrains.kotlin.ir.declarations.IrAttributeContainer
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
|
||||
abstract class IrExpressionBase(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
override val type: IrType
|
||||
) : IrElementBase(startOffset, endOffset), IrExpression {
|
||||
abstract class IrExpressionBase : IrElementBase(), IrExpression {
|
||||
@Suppress("LeakingThis")
|
||||
override var attributeOwnerId: IrAttributeContainer = this
|
||||
}
|
||||
|
||||
+2
-15
@@ -18,20 +18,7 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrFieldAccessExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
|
||||
abstract class IrFieldExpressionBase(
|
||||
startOffset: Int, endOffset: Int,
|
||||
override val symbol: IrFieldSymbol,
|
||||
type: IrType,
|
||||
override val origin: IrStatementOrigin? = null,
|
||||
override val superQualifierSymbol: IrClassSymbol?
|
||||
) :
|
||||
IrExpressionBase(startOffset, endOffset, type),
|
||||
IrFieldAccessExpression {
|
||||
|
||||
abstract class IrFieldExpressionBase : IrExpressionBase(), IrFieldAccessExpression {
|
||||
final override var receiver: IrExpression? = null
|
||||
}
|
||||
}
|
||||
|
||||
+5
-8
@@ -13,15 +13,12 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrFunctionExpressionImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override var function: IrSimpleFunction,
|
||||
override val origin: IrStatementOrigin
|
||||
) :
|
||||
IrExpressionBase(startOffset, endOffset, type),
|
||||
IrFunctionExpression {
|
||||
|
||||
) : IrExpressionBase(), IrFunctionExpression {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitFunctionExpression(this, data)
|
||||
}
|
||||
@@ -33,4 +30,4 @@ class IrFunctionExpressionImpl(
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
function = function.transform(transformer, data) as IrSimpleFunction
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+5
-15
@@ -25,25 +25,15 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
class IrFunctionReferenceImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val symbol: IrFunctionSymbol,
|
||||
typeArgumentsCount: Int,
|
||||
valueArgumentsCount: Int,
|
||||
override val reflectionTarget: IrFunctionSymbol? = symbol,
|
||||
origin: IrStatementOrigin? = null
|
||||
) :
|
||||
IrCallWithIndexedArgumentsBase(
|
||||
startOffset,
|
||||
endOffset,
|
||||
type,
|
||||
typeArgumentsCount,
|
||||
valueArgumentsCount,
|
||||
origin
|
||||
),
|
||||
IrFunctionReference {
|
||||
|
||||
override val origin: IrStatementOrigin? = null,
|
||||
) : IrCallWithIndexedArgumentsBase(typeArgumentsCount, valueArgumentsCount), IrFunctionReference {
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
|
||||
@@ -23,14 +23,11 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrGetClassImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override var argument: IrExpression,
|
||||
) :
|
||||
IrExpressionBase(startOffset, endOffset, type),
|
||||
IrGetClass {
|
||||
|
||||
) : IrExpressionBase(), IrGetClass {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitGetClass(this, data)
|
||||
}
|
||||
|
||||
+5
-6
@@ -22,12 +22,11 @@ import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrGetEnumValueImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
symbol: IrEnumEntrySymbol
|
||||
) : IrTerminalDeclarationReferenceBase<IrEnumEntrySymbol>(startOffset, endOffset, type, symbol), IrGetEnumValue {
|
||||
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val symbol: IrEnumEntrySymbol,
|
||||
) : IrTerminalDeclarationReferenceBase<IrEnumEntrySymbol>(), IrGetEnumValue {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitGetEnumValue(this, data)
|
||||
}
|
||||
|
||||
@@ -26,16 +26,13 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrGetFieldImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
symbol: IrFieldSymbol,
|
||||
type: IrType,
|
||||
origin: IrStatementOrigin? = null,
|
||||
superQualifierSymbol: IrClassSymbol? = null
|
||||
) :
|
||||
IrFieldExpressionBase(startOffset, endOffset, symbol, type, origin, superQualifierSymbol),
|
||||
IrGetField {
|
||||
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val symbol: IrFieldSymbol,
|
||||
override val type: IrType,
|
||||
override val origin: IrStatementOrigin? = null,
|
||||
override val superQualifierSymbol: IrClassSymbol? = null,
|
||||
) : IrFieldExpressionBase(), IrGetField {
|
||||
constructor(
|
||||
startOffset: Int, endOffset: Int,
|
||||
symbol: IrFieldSymbol,
|
||||
|
||||
+5
-6
@@ -22,12 +22,11 @@ import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrGetObjectValueImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
symbol: IrClassSymbol
|
||||
) : IrTerminalDeclarationReferenceBase<IrClassSymbol>(startOffset, endOffset, type, symbol), IrGetObjectValue {
|
||||
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val symbol: IrClassSymbol
|
||||
) : IrTerminalDeclarationReferenceBase<IrClassSymbol>(), IrGetObjectValue {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitGetObjectValue(this, data)
|
||||
}
|
||||
|
||||
@@ -12,20 +12,12 @@ import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrGetValueImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
symbol: IrValueSymbol,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val symbol: IrValueSymbol,
|
||||
override val origin: IrStatementOrigin? = null
|
||||
) :
|
||||
IrTerminalDeclarationReferenceBase<IrValueSymbol>(
|
||||
startOffset,
|
||||
endOffset,
|
||||
type,
|
||||
symbol
|
||||
),
|
||||
IrGetValue {
|
||||
|
||||
) : IrTerminalDeclarationReferenceBase<IrValueSymbol>(), IrGetValue {
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
|
||||
+5
-7
@@ -22,12 +22,10 @@ import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.utils.SmartList
|
||||
|
||||
class IrIfThenElseImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val origin: IrStatementOrigin? = null
|
||||
) :
|
||||
IrWhenBase(startOffset, endOffset, type) {
|
||||
|
||||
) : IrWhenBase() {
|
||||
override val branches: MutableList<IrBranch> = SmartList()
|
||||
}
|
||||
}
|
||||
|
||||
+4
-7
@@ -22,14 +22,11 @@ import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrInstanceInitializerCallImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val classSymbol: IrClassSymbol,
|
||||
type: IrType
|
||||
) :
|
||||
IrTerminalExpressionBase(startOffset, endOffset, type),
|
||||
IrInstanceInitializerCall {
|
||||
|
||||
override val type: IrType,
|
||||
) : IrTerminalExpressionBase(), IrInstanceInitializerCall {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitInstanceInitializerCall(this, data)
|
||||
}
|
||||
|
||||
+7
-7
@@ -27,17 +27,17 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
class IrLocalDelegatedPropertyReferenceImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val symbol: IrLocalDelegatedPropertySymbol,
|
||||
override val delegate: IrVariableSymbol,
|
||||
override val getter: IrSimpleFunctionSymbol,
|
||||
override val setter: IrSimpleFunctionSymbol?,
|
||||
origin: IrStatementOrigin? = null
|
||||
) :
|
||||
IrMemberAccessExpressionBase<IrLocalDelegatedPropertySymbol>(startOffset, endOffset, type, 0, 0, origin),
|
||||
IrLocalDelegatedPropertyReference {
|
||||
override val origin: IrStatementOrigin? = null,
|
||||
) : IrMemberAccessExpressionBase<IrLocalDelegatedPropertySymbol>(0), IrLocalDelegatedPropertyReference {
|
||||
override val valueArgumentsCount: Int
|
||||
get() = 0
|
||||
|
||||
override val referencedName: Name
|
||||
get() = symbol.owner.name
|
||||
|
||||
@@ -18,21 +18,11 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrLoop
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
|
||||
abstract class IrLoopBase(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val origin: IrStatementOrigin?
|
||||
) :
|
||||
IrExpressionBase(startOffset, endOffset, type),
|
||||
IrLoop {
|
||||
|
||||
abstract class IrLoopBase : IrExpressionBase(), IrLoop {
|
||||
override var label: String? = null
|
||||
|
||||
override lateinit var condition: IrExpression
|
||||
|
||||
override var body: IrExpression? = null
|
||||
}
|
||||
}
|
||||
|
||||
+2
-11
@@ -18,23 +18,14 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrMemberAccessExpressionBase<S : IrSymbol>(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
final override val typeArgumentsCount: Int,
|
||||
final override val valueArgumentsCount: Int,
|
||||
final override val origin: IrStatementOrigin? = null
|
||||
) :
|
||||
IrExpressionBase(startOffset, endOffset, type),
|
||||
IrMemberAccessExpression<S> {
|
||||
|
||||
final override val typeArgumentsCount: Int
|
||||
) : IrExpressionBase(), IrMemberAccessExpression<S> {
|
||||
override var dispatchReceiver: IrExpression? = null
|
||||
override var extensionReceiver: IrExpression? = null
|
||||
|
||||
|
||||
+7
-7
@@ -27,18 +27,18 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
class IrPropertyReferenceImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val symbol: IrPropertySymbol,
|
||||
typeArgumentsCount: Int,
|
||||
override val field: IrFieldSymbol?,
|
||||
override val getter: IrSimpleFunctionSymbol?,
|
||||
override val setter: IrSimpleFunctionSymbol?,
|
||||
origin: IrStatementOrigin? = null
|
||||
) :
|
||||
IrMemberAccessExpressionBase<IrPropertySymbol>(startOffset, endOffset, type, typeArgumentsCount, 0, origin),
|
||||
IrPropertyReference {
|
||||
override val origin: IrStatementOrigin? = null,
|
||||
) : IrMemberAccessExpressionBase<IrPropertySymbol>(typeArgumentsCount), IrPropertyReference {
|
||||
override val valueArgumentsCount: Int
|
||||
get() = 0
|
||||
|
||||
override val referencedName: Name
|
||||
get() = symbol.owner.name
|
||||
|
||||
+5
-6
@@ -22,12 +22,11 @@ import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrRawFunctionReferenceImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
symbol: IrFunctionSymbol
|
||||
) : IrTerminalDeclarationReferenceBase<IrFunctionSymbol>(startOffset, endOffset, type, symbol), IrRawFunctionReference {
|
||||
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val symbol: IrFunctionSymbol,
|
||||
) : IrTerminalDeclarationReferenceBase<IrFunctionSymbol>(), IrRawFunctionReference {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitRawFunctionReference(this, data)
|
||||
}
|
||||
|
||||
@@ -24,15 +24,12 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrReturnImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val returnTargetSymbol: IrReturnTargetSymbol,
|
||||
override var value: IrExpression
|
||||
) :
|
||||
IrExpressionBase(startOffset, endOffset, type),
|
||||
IrReturn {
|
||||
|
||||
) : IrExpressionBase(), IrReturn {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitReturn(this, data)
|
||||
|
||||
|
||||
@@ -26,22 +26,13 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrSetFieldImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
symbol: IrFieldSymbol,
|
||||
type: IrType,
|
||||
origin: IrStatementOrigin? = null,
|
||||
superQualifierSymbol: IrClassSymbol? = null
|
||||
) :
|
||||
IrFieldExpressionBase(
|
||||
startOffset, endOffset,
|
||||
symbol,
|
||||
type,
|
||||
origin,
|
||||
superQualifierSymbol
|
||||
),
|
||||
IrSetField {
|
||||
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val symbol: IrFieldSymbol,
|
||||
override val type: IrType,
|
||||
override val origin: IrStatementOrigin? = null,
|
||||
override val superQualifierSymbol: IrClassSymbol? = null,
|
||||
) : IrFieldExpressionBase(), IrSetField {
|
||||
constructor(
|
||||
startOffset: Int, endOffset: Int,
|
||||
symbol: IrFieldSymbol,
|
||||
|
||||
+4
-7
@@ -25,16 +25,13 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrSetVariableImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val symbol: IrVariableSymbol,
|
||||
override var value: IrExpression,
|
||||
override val origin: IrStatementOrigin?
|
||||
) :
|
||||
IrExpressionBase(startOffset, endOffset, type),
|
||||
IrSetVariable {
|
||||
|
||||
) : IrExpressionBase(), IrSetVariable {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitSetVariable(this, data)
|
||||
}
|
||||
|
||||
+3
-6
@@ -23,13 +23,10 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrSpreadElementImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override var expression: IrExpression,
|
||||
) :
|
||||
IrElementBase(startOffset, endOffset),
|
||||
IrSpreadElement {
|
||||
|
||||
) : IrElementBase(), IrSpreadElement {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitSpreadElement(this, data)
|
||||
}
|
||||
|
||||
+5
-8
@@ -24,13 +24,10 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import java.util.*
|
||||
|
||||
class IrStringConcatenationImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType
|
||||
) :
|
||||
IrExpressionBase(startOffset, endOffset, type),
|
||||
IrStringConcatenation {
|
||||
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType
|
||||
) : IrExpressionBase(), IrStringConcatenation {
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
@@ -58,4 +55,4 @@ class IrStringConcatenationImpl(
|
||||
arguments[i] = irExpression.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,14 +14,13 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrSuspensionPointImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override var suspensionPointIdParameter: IrVariable,
|
||||
override var result: IrExpression,
|
||||
override var resumeResult: IrExpression
|
||||
) : IrExpressionBase(startOffset, endOffset, type), IrSuspensionPoint {
|
||||
|
||||
) : IrExpressionBase(), IrSuspensionPoint {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitSuspensionPoint(this, data)
|
||||
|
||||
@@ -39,12 +38,12 @@ class IrSuspensionPointImpl(
|
||||
}
|
||||
|
||||
class IrSuspendableExpressionImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override var suspensionPointId: IrExpression,
|
||||
override var result: IrExpression
|
||||
) : IrExpressionBase(startOffset, endOffset, type), IrSuspendableExpression {
|
||||
) : IrExpressionBase(), IrSuspendableExpression {
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitSuspendableExpression(this, data)
|
||||
@@ -58,4 +57,4 @@ class IrSuspendableExpressionImpl(
|
||||
suspensionPointId = suspensionPointId.transform(transformer, data)
|
||||
result = result.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+4
-6
@@ -23,12 +23,10 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrSyntheticBodyImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val kind: IrSyntheticBodyKind
|
||||
) :
|
||||
IrElementBase(startOffset, endOffset),
|
||||
IrSyntheticBody {
|
||||
) : IrElementBase(), IrSyntheticBody {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitSyntheticBody(this, data)
|
||||
}
|
||||
@@ -43,4 +41,4 @@ class IrSyntheticBodyImpl(
|
||||
|
||||
override fun toString(): String =
|
||||
"IrSyntheticBodyImpl($kind)"
|
||||
}
|
||||
}
|
||||
|
||||
+2
-12
@@ -16,21 +16,11 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions.impl
|
||||
|
||||
import org.jetbrains.kotlin.ir.expressions.IrDeclarationReference
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrTerminalDeclarationReferenceBase<out S : IrSymbol>(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
symbol: S
|
||||
) :
|
||||
IrDeclarationReferenceBase<S>(startOffset, endOffset, type, symbol),
|
||||
IrDeclarationReference {
|
||||
|
||||
abstract class IrTerminalDeclarationReferenceBase<out S : IrSymbol> : IrDeclarationReferenceBase<S>() {
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
// No children
|
||||
}
|
||||
@@ -38,4 +28,4 @@ abstract class IrTerminalDeclarationReferenceBase<out S : IrSymbol>(
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
// No children
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-8
@@ -16,16 +16,10 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions.impl
|
||||
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrTerminalExpressionBase(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType
|
||||
) : IrExpressionBase(startOffset, endOffset, type) {
|
||||
|
||||
abstract class IrTerminalExpressionBase : IrExpressionBase() {
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
// No children
|
||||
}
|
||||
@@ -33,4 +27,4 @@ abstract class IrTerminalExpressionBase(
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
// No children
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,14 +23,11 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrThrowImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override var value: IrExpression,
|
||||
) :
|
||||
IrExpressionBase(startOffset, endOffset, type),
|
||||
IrThrow {
|
||||
|
||||
) : IrExpressionBase(), IrThrow {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitThrow(this, data)
|
||||
|
||||
|
||||
@@ -27,13 +27,10 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.utils.SmartList
|
||||
|
||||
class IrTryImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType
|
||||
) :
|
||||
IrExpressionBase(startOffset, endOffset, type),
|
||||
IrTry {
|
||||
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
) : IrExpressionBase(), IrTry {
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
@@ -73,13 +70,10 @@ class IrTryImpl(
|
||||
}
|
||||
|
||||
class IrCatchImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override var catchParameter: IrVariable,
|
||||
) :
|
||||
IrElementBase(startOffset, endOffset),
|
||||
IrCatch {
|
||||
|
||||
) : IrElementBase(), IrCatch {
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
|
||||
+4
-7
@@ -26,16 +26,13 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrTypeOperatorCallImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val operator: IrTypeOperator,
|
||||
override val typeOperand: IrType,
|
||||
override var argument: IrExpression,
|
||||
) :
|
||||
IrExpressionBase(startOffset, endOffset, type),
|
||||
IrTypeOperatorCall {
|
||||
|
||||
) : IrExpressionBase(), IrTypeOperatorCall {
|
||||
override val typeOperandClassifier: IrClassifierSymbol
|
||||
get() = typeOperand.classifierOrFail
|
||||
|
||||
|
||||
@@ -24,14 +24,11 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.utils.SmartList
|
||||
|
||||
class IrVarargImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val varargElementType: IrType
|
||||
) :
|
||||
IrExpressionBase(startOffset, endOffset, type),
|
||||
IrVararg {
|
||||
|
||||
) : IrExpressionBase(), IrVararg {
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
@@ -65,4 +62,4 @@ class IrVarargImpl(
|
||||
elements[i] = irVarargElement.transform(transformer, data) as IrVarargElement
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,15 +23,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import java.util.*
|
||||
|
||||
abstract class IrWhenBase(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val origin: IrStatementOrigin? = null
|
||||
) :
|
||||
IrExpressionBase(startOffset, endOffset, type),
|
||||
IrWhen {
|
||||
|
||||
abstract class IrWhenBase : IrExpressionBase(), IrWhen {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitWhen(this, data)
|
||||
|
||||
@@ -47,13 +39,11 @@ abstract class IrWhenBase(
|
||||
}
|
||||
|
||||
class IrWhenImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val origin: IrStatementOrigin? = null
|
||||
) :
|
||||
IrWhenBase(startOffset, endOffset, type) {
|
||||
|
||||
) : IrWhenBase() {
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
@@ -68,14 +58,11 @@ class IrWhenImpl(
|
||||
}
|
||||
|
||||
open class IrBranchImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override var condition: IrExpression,
|
||||
override var result: IrExpression
|
||||
) :
|
||||
IrElementBase(startOffset, endOffset),
|
||||
IrBranch {
|
||||
|
||||
) : IrElementBase(), IrBranch {
|
||||
constructor(condition: IrExpression, result: IrExpression) :
|
||||
this(condition.startOffset, condition.endOffset, condition, result)
|
||||
|
||||
|
||||
@@ -23,14 +23,11 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrWhileLoopImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
origin: IrStatementOrigin?
|
||||
) :
|
||||
IrLoopBase(startOffset, endOffset, type, origin),
|
||||
IrWhileLoop {
|
||||
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val type: IrType,
|
||||
override val origin: IrStatementOrigin?,
|
||||
) : IrLoopBase(), IrWhileLoop {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitWhileLoop(this, data)
|
||||
}
|
||||
@@ -44,4 +41,4 @@ class IrWhileLoopImpl(
|
||||
condition = condition.transform(transformer, data)
|
||||
body = body?.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user