[IR][refactoring] g/c IrReturnableBlock[Impl]

- drop calculatable from 'inlineFunctionSymbol' fields: 'sourceFileSymbol' and 'sourceFileName' and
replace then with extension values

- drop unused constructors.
This commit is contained in:
Vasily Levchenko
2019-04-04 16:09:34 +03:00
parent 6f9feacf6e
commit 1ebf7faedc
4 changed files with 14 additions and 32 deletions
@@ -194,7 +194,7 @@ internal class FunctionInlining(val context: Context): IrElementTransformerVoidW
symbol = irReturnableBlockSymbol,
origin = if (isCoroutineIntrinsicCall) CoroutineIntrinsicLambdaOrigin else null,
statements = statements,
sourceFileSymbol = sourceFile.symbol
inlineFunctionSymbol = callee.symbol
).apply {
transformChildrenVoid(object : IrElementTransformerVoid() {
override fun visitReturn(expression: IrReturn): IrExpression {
@@ -18,9 +18,11 @@ package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.declarations.IrReturnTarget
import org.jetbrains.kotlin.ir.declarations.IrSymbolOwner
import org.jetbrains.kotlin.ir.declarations.name
import org.jetbrains.kotlin.ir.symbols.IrFileSymbol
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
import org.jetbrains.kotlin.ir.symbols.IrReturnableBlockSymbol
import org.jetbrains.kotlin.ir.util.file
interface IrContainerExpression : IrExpression, IrStatementContainer {
val origin: IrStatementOrigin?
@@ -39,7 +41,13 @@ interface IrComposite : IrContainerExpression {
interface IrReturnableBlock : IrBlock, IrSymbolOwner, IrReturnTarget {
override val symbol: IrReturnableBlockSymbol
val sourceFileSymbol: IrFileSymbol?
val sourceFileName: String
val inlineFunctionSymbol: IrFunctionSymbol?
}
}
val IrReturnableBlock.sourceFileSymbol: IrFileSymbol?
get() = inlineFunctionSymbol?.owner?.file?.symbol
@Deprecated("Please avoid using it")
val IrReturnableBlock.sourceFileName: String
get() = sourceFileSymbol?.owner?.name ?: "no source file"
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.ir.IrStatement
import org.jetbrains.kotlin.ir.expressions.IrBlock
import org.jetbrains.kotlin.ir.expressions.IrReturnableBlock
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
import org.jetbrains.kotlin.ir.symbols.IrFileSymbol
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
import org.jetbrains.kotlin.ir.symbols.IrReturnableBlockSymbol
import org.jetbrains.kotlin.ir.symbols.impl.IrReturnableBlockSymbolImpl
@@ -71,7 +70,6 @@ class IrReturnableBlockImpl(
type: IrType,
override val symbol: IrReturnableBlockSymbol,
origin: IrStatementOrigin? = null,
override val sourceFileSymbol: IrFileSymbol? = null,
override val inlineFunctionSymbol: IrFunctionSymbol? = null
) :
IrContainerExpressionBase(startOffset, endOffset, type, origin),
@@ -86,30 +84,8 @@ class IrReturnableBlockImpl(
symbol: IrReturnableBlockSymbol,
origin: IrStatementOrigin?,
statements: List<IrStatement>,
sourceFileSymbol: IrFileSymbol? = null,
inlineFunctionSymbol: IrFunctionSymbol? = null
) : this(startOffset, endOffset, type, symbol, origin, sourceFileSymbol, inlineFunctionSymbol) {
this.statements.addAll(statements)
}
constructor(
startOffset: Int,
endOffset: Int,
type: IrType,
descriptor: FunctionDescriptor,
origin: IrStatementOrigin? = null,
sourceFileSymbol: IrFileSymbol? = null
) : this(startOffset, endOffset, type, IrReturnableBlockSymbolImpl(descriptor), origin, sourceFileSymbol)
constructor(
startOffset: Int,
endOffset: Int,
type: IrType,
descriptor: FunctionDescriptor,
origin: IrStatementOrigin?,
statements: List<IrStatement>,
sourceFileSymbol: IrFileSymbol? = null
) : this(startOffset, endOffset, type, descriptor, origin, sourceFileSymbol) {
) : this(startOffset, endOffset, type, symbol, origin, inlineFunctionSymbol) {
this.statements.addAll(statements)
}
@@ -117,8 +93,6 @@ class IrReturnableBlockImpl(
symbol.bind(this)
}
override val sourceFileName: String = sourceFileSymbol?.owner?.fileEntry?.name ?: "no source file"
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
visitor.visitBlock(this, data)
@@ -374,7 +374,7 @@ open class DeepCopyIrTreeWithSymbols(
symbolRemapper.getReferencedReturnableBlock(expression.symbol),
mapStatementOrigin(expression.origin),
expression.statements.map { it.transform() },
expression.sourceFileSymbol
expression.inlineFunctionSymbol
)
else
IrBlockImpl(