JVM IR: Avoid getTopLevelClass in CollectionStubMethodLowering
This commit is contained in:
committed by
Alexander Udalov
parent
f9ff3771e5
commit
1ac753602e
@@ -67,6 +67,12 @@ class JvmSymbols(
|
|||||||
override val ThrowTypeCastException: IrFunctionSymbol =
|
override val ThrowTypeCastException: IrFunctionSymbol =
|
||||||
typeCastExceptionClass.constructors.single()
|
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 =
|
private fun createPackage(fqName: FqName): IrPackageFragment =
|
||||||
IrExternalPackageFragmentImpl(IrExternalPackageFragmentSymbolImpl(EmptyPackageFragmentDescriptor(context.state.module, fqName)))
|
IrExternalPackageFragmentImpl(IrExternalPackageFragmentSymbolImpl(EmptyPackageFragmentDescriptor(context.state.module, fqName)))
|
||||||
|
|
||||||
|
|||||||
+1
-3
@@ -27,7 +27,6 @@ import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
|
|||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl
|
import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl
|
||||||
import org.jetbrains.kotlin.ir.types.*
|
import org.jetbrains.kotlin.ir.types.*
|
||||||
import org.jetbrains.kotlin.ir.util.*
|
import org.jetbrains.kotlin.ir.util.*
|
||||||
import org.jetbrains.kotlin.name.FqName
|
|
||||||
|
|
||||||
internal val collectionStubMethodLowering = makeIrFilePhase(
|
internal val collectionStubMethodLowering = makeIrFilePhase(
|
||||||
::CollectionStubMethodLowering,
|
::CollectionStubMethodLowering,
|
||||||
@@ -86,12 +85,11 @@ private class CollectionStubMethodLowering(val context: JvmBackendContext) : Cla
|
|||||||
for (parameter in function.valueParameters) {
|
for (parameter in function.valueParameters) {
|
||||||
valueParameters.add(parameter.copyWithSubstitution(this, substitutionMap))
|
valueParameters.add(parameter.copyWithSubstitution(this, substitutionMap))
|
||||||
}
|
}
|
||||||
val exception = context.getTopLevelClass(FqName("java.lang.UnsupportedOperationException"))
|
|
||||||
// Function body consist only of throwing UnsupportedOperationException statement
|
// Function body consist only of throwing UnsupportedOperationException statement
|
||||||
body = context.createIrBuilder(function.symbol).irBlockBody {
|
body = context.createIrBuilder(function.symbol).irBlockBody {
|
||||||
+irThrow(
|
+irThrow(
|
||||||
irCall(
|
irCall(
|
||||||
exception.owner.constructors.single {
|
this@CollectionStubMethodLowering.context.ir.symbols.unsupportedOperationExceptionClass.owner.constructors.single {
|
||||||
it.valueParameters.size == 1 && it.valueParameters.single().type.isNullableString()
|
it.valueParameters.size == 1 && it.valueParameters.single().type.isNullableString()
|
||||||
}
|
}
|
||||||
).apply {
|
).apply {
|
||||||
|
|||||||
Reference in New Issue
Block a user