JVM IR: Avoid getTopLevelClass in CollectionStubMethodLowering

This commit is contained in:
Steven Schäfer
2019-11-04 13:01:28 +01:00
committed by Alexander Udalov
parent f9ff3771e5
commit 1ac753602e
2 changed files with 7 additions and 3 deletions
@@ -67,6 +67,12 @@ class JvmSymbols(
override val ThrowTypeCastException: IrFunctionSymbol =
typeCastExceptionClass.constructors.single()
val unsupportedOperationExceptionClass: IrClassSymbol = createClass(FqName("java.lang.UnsupportedOperationException")) { klass ->
klass.addConstructor().apply {
addValueParameter("message", irBuiltIns.stringType.makeNullable())
}
}
private fun createPackage(fqName: FqName): IrPackageFragment =
IrExternalPackageFragmentImpl(IrExternalPackageFragmentSymbolImpl(EmptyPackageFragmentDescriptor(context.state.module, fqName)))
@@ -27,7 +27,6 @@ import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl
import org.jetbrains.kotlin.ir.types.*
import org.jetbrains.kotlin.ir.util.*
import org.jetbrains.kotlin.name.FqName
internal val collectionStubMethodLowering = makeIrFilePhase(
::CollectionStubMethodLowering,
@@ -86,12 +85,11 @@ private class CollectionStubMethodLowering(val context: JvmBackendContext) : Cla
for (parameter in function.valueParameters) {
valueParameters.add(parameter.copyWithSubstitution(this, substitutionMap))
}
val exception = context.getTopLevelClass(FqName("java.lang.UnsupportedOperationException"))
// Function body consist only of throwing UnsupportedOperationException statement
body = context.createIrBuilder(function.symbol).irBlockBody {
+irThrow(
irCall(
exception.owner.constructors.single {
this@CollectionStubMethodLowering.context.ir.symbols.unsupportedOperationExceptionClass.owner.constructors.single {
it.valueParameters.size == 1 && it.valueParameters.single().type.isNullableString()
}
).apply {