JVM_IR: reorganize throw... functions in Symbols

This commit is contained in:
Georgy Bronnikov
2020-08-05 23:39:42 +03:00
parent 6a16d6a246
commit 7f4df19dd1
12 changed files with 94 additions and 82 deletions
@@ -28,7 +28,7 @@ interface CommonBackendContext : BackendContext, LoggingContext {
val scriptMode: Boolean
fun throwUninitializedPropertyAccessException(builder: IrBuilderWithScope, name: String): IrExpression {
val throwErrorFunction = ir.symbols.ThrowUninitializedPropertyAccessException.owner
val throwErrorFunction = ir.symbols.throwUninitializedPropertyAccessException.owner
return builder.irCall(throwErrorFunction).apply {
putValueArgument(0, builder.irString(name))
}
@@ -274,13 +274,13 @@ open class BuiltinSymbolsBase(protected val irBuiltIns: IrBuiltIns, protected va
@Suppress("MemberVisibilityCanBePrivate", "PropertyName")
abstract class Symbols<out T : CommonBackendContext>(val context: T, irBuiltIns: IrBuiltIns, symbolTable: SymbolTable) :
BuiltinSymbolsBase(irBuiltIns, context.builtIns, symbolTable) {
abstract val ThrowNullPointerException: IrFunctionSymbol
abstract val ThrowNoWhenBranchMatchedException: IrFunctionSymbol
abstract val ThrowTypeCastException: IrFunctionSymbol
abstract val throwNullPointerException: IrSimpleFunctionSymbol
abstract val throwNoWhenBranchMatchedException: IrSimpleFunctionSymbol
abstract val throwTypeCastException: IrSimpleFunctionSymbol
abstract val ThrowUninitializedPropertyAccessException: IrSimpleFunctionSymbol
abstract val throwUninitializedPropertyAccessException: IrSimpleFunctionSymbol
abstract val ThrowKotlinNothingValueException: IrSimpleFunctionSymbol
abstract val throwKotlinNothingValueException: IrSimpleFunctionSymbol
abstract val stringBuilder: IrClassSymbol
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.ir.declarations.IrSymbolDeclaration
import org.jetbrains.kotlin.ir.expressions.IrBody
import org.jetbrains.kotlin.ir.expressions.IrCall
import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
import org.jetbrains.kotlin.ir.symbols.IrSymbol
import org.jetbrains.kotlin.ir.types.isNothing
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
@@ -41,7 +40,7 @@ class KotlinNothingValueExceptionLowering(
backendContext.createIrBuilder(parent, expression.startOffset, expression.endOffset).run {
irBlock(expression, null, context.irBuiltIns.nothingType) {
+super.visitCall(expression)
+irCall(backendContext.ir.symbols.ThrowKotlinNothingValueException)
+irCall(backendContext.ir.symbols.throwKotlinNothingValueException)
}
}
} else {