JVM_IR: fix unbound type parameters in AddContinuationLowering
This commit is contained in:
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.ir.overrides.IrOverridingUtil
|
|||||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrPropertySymbolImpl
|
import org.jetbrains.kotlin.ir.symbols.impl.IrPropertySymbolImpl
|
||||||
|
import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrSimpleFunctionSymbolImpl
|
import org.jetbrains.kotlin.ir.symbols.impl.IrSimpleFunctionSymbolImpl
|
||||||
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.*
|
||||||
@@ -163,14 +164,16 @@ fun IrTypeParameter.copyToWithoutSuperTypes(
|
|||||||
this.index = index
|
this.index = index
|
||||||
}
|
}
|
||||||
|
|
||||||
fun IrFunction.copyReceiverParametersFrom(from: IrFunction) {
|
fun IrFunction.copyReceiverParametersFrom(from: IrFunction, substitutionMap: Map<IrTypeParameterSymbol, IrType>) {
|
||||||
dispatchReceiverParameter = from.dispatchReceiverParameter?.run {
|
dispatchReceiverParameter = from.dispatchReceiverParameter?.run {
|
||||||
val newDescriptor = WrappedReceiverParameterDescriptor()
|
val newDescriptor = WrappedReceiverParameterDescriptor()
|
||||||
factory.createValueParameter(
|
factory.createValueParameter(
|
||||||
startOffset, endOffset, origin,
|
startOffset, endOffset, origin,
|
||||||
IrValueParameterSymbolImpl(newDescriptor),
|
IrValueParameterSymbolImpl(newDescriptor),
|
||||||
name,
|
name, index,
|
||||||
index, type, varargElementType, isCrossinline, isNoinline
|
type.substitute(substitutionMap),
|
||||||
|
varargElementType?.substitute(substitutionMap),
|
||||||
|
isCrossinline, isNoinline
|
||||||
).also { parameter ->
|
).also { parameter ->
|
||||||
parameter.parent = this@copyReceiverParametersFrom
|
parameter.parent = this@copyReceiverParametersFrom
|
||||||
newDescriptor.bind(this)
|
newDescriptor.bind(this)
|
||||||
@@ -179,16 +182,19 @@ fun IrFunction.copyReceiverParametersFrom(from: IrFunction) {
|
|||||||
extensionReceiverParameter = from.extensionReceiverParameter?.copyTo(this)
|
extensionReceiverParameter = from.extensionReceiverParameter?.copyTo(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun IrFunction.copyValueParametersFrom(from: IrFunction) {
|
fun IrFunction.copyValueParametersFrom(from: IrFunction, substitutionMap: Map<IrTypeParameterSymbol, IrType>) {
|
||||||
copyReceiverParametersFrom(from)
|
copyReceiverParametersFrom(from, substitutionMap)
|
||||||
val shift = valueParameters.size
|
val shift = valueParameters.size
|
||||||
valueParameters += from.valueParameters.map { it.copyTo(this, index = it.index + shift) }
|
valueParameters += from.valueParameters.map {
|
||||||
|
it.copyTo(this, index = it.index + shift, type = it.type.substitute(substitutionMap))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun IrFunction.copyParameterDeclarationsFrom(from: IrFunction) {
|
fun IrFunction.copyParameterDeclarationsFrom(from: IrFunction) {
|
||||||
assert(typeParameters.isEmpty())
|
assert(typeParameters.isEmpty())
|
||||||
copyTypeParametersFrom(from)
|
copyTypeParametersFrom(from)
|
||||||
copyValueParametersFrom(from)
|
val substitutionMap = makeTypeParameterSubstitutionMap(from, this)
|
||||||
|
copyValueParametersFrom(from, substitutionMap)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun IrTypeParametersContainer.copyTypeParameters(
|
fun IrTypeParametersContainer.copyTypeParameters(
|
||||||
@@ -231,6 +237,16 @@ fun IrMutableAnnotationContainer.copyAnnotationsFrom(source: IrAnnotationContain
|
|||||||
annotations += source.annotations.map { it.deepCopyWithSymbols(this as? IrDeclarationParent) }
|
annotations += source.annotations.map { it.deepCopyWithSymbols(this as? IrDeclarationParent) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun makeTypeParameterSubstitutionMap(
|
||||||
|
original: IrTypeParametersContainer,
|
||||||
|
transformed: IrTypeParametersContainer
|
||||||
|
): Map<IrTypeParameterSymbol, IrType> =
|
||||||
|
original.typeParameters
|
||||||
|
.map { it.symbol }
|
||||||
|
.zip(transformed.typeParameters.map { it.defaultType })
|
||||||
|
.toMap()
|
||||||
|
|
||||||
|
|
||||||
// Copy value parameters, dispatch receiver, and extension receiver from source to value parameters of this function.
|
// Copy value parameters, dispatch receiver, and extension receiver from source to value parameters of this function.
|
||||||
// Type of dispatch receiver defaults to source's dispatch receiver. It is overridable in case the new function and the old one are used in
|
// Type of dispatch receiver defaults to source's dispatch receiver. It is overridable in case the new function and the old one are used in
|
||||||
// different contexts and expect different type of dispatch receivers. The overriding type should be assign compatible to the old type.
|
// different contexts and expect different type of dispatch receivers. The overriding type should be assign compatible to the old type.
|
||||||
|
|||||||
+9
-4
@@ -382,7 +382,8 @@ private fun IrFunction.createSuspendFunctionStub(context: JvmBackendContext): Ir
|
|||||||
|
|
||||||
function.copyAttributes(this)
|
function.copyAttributes(this)
|
||||||
function.copyTypeParametersFrom(this)
|
function.copyTypeParametersFrom(this)
|
||||||
function.copyReceiverParametersFrom(this)
|
val substitutionMap = makeTypeParameterSubstitutionMap(this, function)
|
||||||
|
function.copyReceiverParametersFrom(this, substitutionMap)
|
||||||
|
|
||||||
if (origin != JvmLoweredDeclarationOrigin.DEFAULT_IMPLS_BRIDGE) {
|
if (origin != JvmLoweredDeclarationOrigin.DEFAULT_IMPLS_BRIDGE) {
|
||||||
function.overriddenSymbols +=
|
function.overriddenSymbols +=
|
||||||
@@ -393,11 +394,15 @@ private fun IrFunction.createSuspendFunctionStub(context: JvmBackendContext): Ir
|
|||||||
// TODO: It would be nice if AddContinuationLowering could insert the continuation argument before default stub generation.
|
// TODO: It would be nice if AddContinuationLowering could insert the continuation argument before default stub generation.
|
||||||
val index = valueParameters.firstOrNull { it.origin == IrDeclarationOrigin.MASK_FOR_DEFAULT_FUNCTION }?.index
|
val index = valueParameters.firstOrNull { it.origin == IrDeclarationOrigin.MASK_FOR_DEFAULT_FUNCTION }?.index
|
||||||
?: valueParameters.size
|
?: valueParameters.size
|
||||||
function.valueParameters += valueParameters.take(index).map { it.copyTo(function, index = it.index) }
|
function.valueParameters += valueParameters.take(index).map {
|
||||||
|
it.copyTo(function, index = it.index, type = it.type.substitute(substitutionMap))
|
||||||
|
}
|
||||||
function.addValueParameter(
|
function.addValueParameter(
|
||||||
SUSPEND_FUNCTION_COMPLETION_PARAMETER_NAME, continuationType(context), JvmLoweredDeclarationOrigin.CONTINUATION_CLASS
|
SUSPEND_FUNCTION_COMPLETION_PARAMETER_NAME, continuationType(context).substitute(substitutionMap), JvmLoweredDeclarationOrigin.CONTINUATION_CLASS
|
||||||
)
|
)
|
||||||
function.valueParameters += valueParameters.drop(index).map { it.copyTo(function, index = it.index + 1) }
|
function.valueParameters += valueParameters.drop(index).map {
|
||||||
|
it.copyTo(function, index = it.index + 1, type = it.type.substitute(substitutionMap))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+21
-10
@@ -74,12 +74,23 @@ private fun IrFunction.capturesCrossinline(): Boolean {
|
|||||||
|
|
||||||
internal abstract class SuspendLoweringUtils(protected val context: JvmBackendContext) {
|
internal abstract class SuspendLoweringUtils(protected val context: JvmBackendContext) {
|
||||||
protected fun IrClass.addFunctionOverride(
|
protected fun IrClass.addFunctionOverride(
|
||||||
function: IrSimpleFunction, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET
|
function: IrSimpleFunction,
|
||||||
): IrSimpleFunction =
|
startOffset: Int = UNDEFINED_OFFSET,
|
||||||
addFunction(function.name.asString(), function.returnType, startOffset = startOffset, endOffset = endOffset).apply {
|
endOffset: Int = UNDEFINED_OFFSET,
|
||||||
|
): IrSimpleFunction {
|
||||||
|
val overriddenType = superTypes.single { it.classifierOrFail == function.parentAsClass.symbol }
|
||||||
|
val typeSubstitution = (overriddenType.classifierOrFail.owner as IrClass).typeParameters
|
||||||
|
.map { it.symbol }
|
||||||
|
.zip((overriddenType as IrSimpleType).arguments.map { (it as IrTypeProjection).type }) // No star projections in this lowering
|
||||||
|
.toMap()
|
||||||
|
return addFunction(
|
||||||
|
function.name.asString(), function.returnType.substitute(typeSubstitution),
|
||||||
|
startOffset = startOffset, endOffset = endOffset
|
||||||
|
).apply {
|
||||||
overriddenSymbols = listOf(function.symbol)
|
overriddenSymbols = listOf(function.symbol)
|
||||||
valueParameters = function.valueParameters.map { it.copyTo(this) }
|
valueParameters = function.valueParameters.map { it.copyTo(this, type = it.type.substitute(typeSubstitution)) }
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected fun IrClass.addFunctionOverride(
|
protected fun IrClass.addFunctionOverride(
|
||||||
function: IrSimpleFunction,
|
function: IrSimpleFunction,
|
||||||
@@ -178,7 +189,7 @@ private class SuspendLambdaLowering(context: JvmBackendContext) : SuspendLowerin
|
|||||||
val createToOverride = suspendLambda.symbol.functions.singleOrNull {
|
val createToOverride = suspendLambda.symbol.functions.singleOrNull {
|
||||||
it.owner.valueParameters.size == arity + 1 && it.owner.name.asString() == "create"
|
it.owner.valueParameters.size == arity + 1 && it.owner.name.asString() == "create"
|
||||||
}
|
}
|
||||||
val invokeSuspend = addInvokeSuspendForLambda(function, parametersFields)
|
val invokeSuspend = addInvokeSuspendForLambda(function, suspendLambda, parametersFields)
|
||||||
if (function.capturesCrossinline()) {
|
if (function.capturesCrossinline()) {
|
||||||
addInvokeSuspendForInlineForLambda(invokeSuspend)
|
addInvokeSuspendForInlineForLambda(invokeSuspend)
|
||||||
}
|
}
|
||||||
@@ -192,11 +203,11 @@ private class SuspendLambdaLowering(context: JvmBackendContext) : SuspendLowerin
|
|||||||
context.suspendLambdaToOriginalFunctionMap[attributeOwnerId as IrFunctionReference] = function
|
context.suspendLambdaToOriginalFunctionMap[attributeOwnerId as IrFunctionReference] = function
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun IrClass.addInvokeSuspendForLambda(irFunction: IrFunction, fields: List<IrField>): IrSimpleFunction {
|
private fun IrClass.addInvokeSuspendForLambda(irFunction: IrFunction, suspendLambda: IrClass, fields: List<IrField>): IrSimpleFunction {
|
||||||
val superMethod = context.ir.symbols.suspendLambdaClass.functions.single {
|
val superMethod = suspendLambda.functions.single {
|
||||||
it.owner.name.asString() == INVOKE_SUSPEND_METHOD_NAME && it.owner.valueParameters.size == 1 &&
|
it.name.asString() == INVOKE_SUSPEND_METHOD_NAME && it.valueParameters.size == 1 &&
|
||||||
it.owner.valueParameters[0].type.isKotlinResult()
|
it.valueParameters[0].type.isKotlinResult()
|
||||||
}.owner
|
}
|
||||||
return addFunctionOverride(superMethod, irFunction.startOffset, irFunction.endOffset).apply {
|
return addFunctionOverride(superMethod, irFunction.startOffset, irFunction.endOffset).apply {
|
||||||
body = irFunction.moveBodyTo(this, mapOf())?.transform(object : IrElementTransformerVoid() {
|
body = irFunction.moveBodyTo(this, mapOf())?.transform(object : IrElementTransformerVoid() {
|
||||||
override fun visitGetValue(expression: IrGetValue): IrExpression {
|
override fun visitGetValue(expression: IrGetValue): IrExpression {
|
||||||
|
|||||||
+4
-2
@@ -9,7 +9,8 @@ final class LambdaWithLongReceiverKt$box$1$1 {
|
|||||||
inner (anonymous) class LambdaWithLongReceiverKt$box$1$1
|
inner (anonymous) class LambdaWithLongReceiverKt$box$1$1
|
||||||
method <init>(p0: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.Nullable p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.Nullable p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
||||||
public final method invoke(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object
|
public synthetic bridge method invoke(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object
|
||||||
|
public final @org.jetbrains.annotations.Nullable method invoke(p0: long, @org.jetbrains.annotations.Nullable p1: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -25,7 +26,8 @@ final class LambdaWithLongReceiverKt$box$1 {
|
|||||||
inner (anonymous) class LambdaWithLongReceiverKt$box$1$1
|
inner (anonymous) class LambdaWithLongReceiverKt$box$1$1
|
||||||
method <init>(p0: kotlin.jvm.internal.Ref$ObjectRef, p1: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.jvm.internal.Ref$ObjectRef, p1: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
||||||
public final method invoke(p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invoke(@org.jetbrains.annotations.Nullable p0: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
|
public synthetic bridge method invoke(p0: java.lang.Object): java.lang.Object
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-2
@@ -13,7 +13,8 @@ final class LambdaWithMultipleParametersKt$box$1$1 {
|
|||||||
inner (anonymous) class LambdaWithMultipleParametersKt$box$1
|
inner (anonymous) class LambdaWithMultipleParametersKt$box$1
|
||||||
inner (anonymous) class LambdaWithMultipleParametersKt$box$1$1
|
inner (anonymous) class LambdaWithMultipleParametersKt$box$1$1
|
||||||
method <init>(p0: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final method invoke(p0: java.lang.Object, p1: java.lang.Object, p2: java.lang.Object, p3: java.lang.Object, p4: java.lang.Object, p5: java.lang.Object, p6: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invoke(@org.jetbrains.annotations.NotNull p0: java.lang.String, p1: long, p2: long, p3: long, p4: long, p5: long, @org.jetbrains.annotations.Nullable p6: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
|
public synthetic bridge method invoke(p0: java.lang.Object, p1: java.lang.Object, p2: java.lang.Object, p3: java.lang.Object, p4: java.lang.Object, p5: java.lang.Object, p6: java.lang.Object): java.lang.Object
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,7 +30,8 @@ final class LambdaWithMultipleParametersKt$box$1 {
|
|||||||
inner (anonymous) class LambdaWithMultipleParametersKt$box$1$1
|
inner (anonymous) class LambdaWithMultipleParametersKt$box$1$1
|
||||||
method <init>(p0: kotlin.jvm.internal.Ref$ObjectRef, p1: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.jvm.internal.Ref$ObjectRef, p1: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
||||||
public final method invoke(p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invoke(@org.jetbrains.annotations.Nullable p0: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
|
public synthetic bridge method invoke(p0: java.lang.Object): java.lang.Object
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -71,7 +71,8 @@ final class CrossinlineKt$box$1 {
|
|||||||
inner (anonymous) class CrossinlineKt$box$1
|
inner (anonymous) class CrossinlineKt$box$1
|
||||||
method <init>(p0: kotlin.jvm.internal.Ref$IntRef, p1: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.jvm.internal.Ref$IntRef, p1: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
||||||
public final method invoke(p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invoke(@org.jetbrains.annotations.Nullable p0: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
|
public synthetic bridge method invoke(p0: java.lang.Object): java.lang.Object
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
-1
@@ -10,7 +10,8 @@ final class InlineWithoutStateMachineKt$box$1 {
|
|||||||
inner (anonymous) class InlineWithoutStateMachineKt$box$1
|
inner (anonymous) class InlineWithoutStateMachineKt$box$1
|
||||||
method <init>(p0: kotlin.jvm.internal.Ref$ObjectRef, p1: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.jvm.internal.Ref$ObjectRef, p1: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
||||||
public final method invoke(p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invoke(@org.jetbrains.annotations.Nullable p0: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
|
public synthetic bridge method invoke(p0: java.lang.Object): java.lang.Object
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
-1
@@ -19,7 +19,8 @@ final class flow/InnerObjectRetransformationKt$box$1 {
|
|||||||
inner (anonymous) class flow/InnerObjectRetransformationKt$box$1
|
inner (anonymous) class flow/InnerObjectRetransformationKt$box$1
|
||||||
method <init>(p0: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
||||||
public final method invoke(p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invoke(@org.jetbrains.annotations.Nullable p0: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
|
public synthetic bridge method invoke(p0: java.lang.Object): java.lang.Object
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -23,7 +23,8 @@ final class Override5Kt$box$1 {
|
|||||||
inner (anonymous) class Override5Kt$box$1
|
inner (anonymous) class Override5Kt$box$1
|
||||||
method <init>(p0: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
||||||
public final method invoke(p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invoke(@org.jetbrains.annotations.Nullable p0: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
|
public synthetic bridge method invoke(p0: java.lang.Object): java.lang.Object
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -51,7 +51,8 @@ final class CoroutineFieldsKt$box$1 {
|
|||||||
inner (anonymous) class CoroutineFieldsKt$box$1
|
inner (anonymous) class CoroutineFieldsKt$box$1
|
||||||
method <init>(p0: kotlin.jvm.internal.Ref$ObjectRef, p1: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.jvm.internal.Ref$ObjectRef, p1: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.Nullable p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.Nullable p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
||||||
public final method invoke(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invoke(@org.jetbrains.annotations.NotNull p0: Controller, @org.jetbrains.annotations.Nullable p1: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
|
public synthetic bridge method invoke(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-2
@@ -10,7 +10,8 @@ final class BooleanParameterKt$box$1 {
|
|||||||
inner (anonymous) class BooleanParameterKt$box$1
|
inner (anonymous) class BooleanParameterKt$box$1
|
||||||
method <init>(p0: kotlin.jvm.internal.Ref$ObjectRef, p1: kotlin.jvm.functions.Function2, p2: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.jvm.internal.Ref$ObjectRef, p1: kotlin.jvm.functions.Function2, p2: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
||||||
public final method invoke(p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invoke(@org.jetbrains.annotations.Nullable p0: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
|
public synthetic bridge method invoke(p0: java.lang.Object): java.lang.Object
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -24,7 +25,8 @@ final class BooleanParameterKt$box$lambda$1 {
|
|||||||
inner (anonymous) class BooleanParameterKt$box$lambda$1
|
inner (anonymous) class BooleanParameterKt$box$lambda$1
|
||||||
method <init>(p0: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.Nullable p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.Nullable p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
||||||
public final method invoke(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invoke(p0: boolean, @org.jetbrains.annotations.Nullable p1: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
|
public synthetic bridge method invoke(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -8,7 +8,8 @@ final class Component1Kt$test$1 {
|
|||||||
inner (anonymous) class Component1Kt$test$1
|
inner (anonymous) class Component1Kt$test$1
|
||||||
method <init>(p0: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.Nullable p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.Nullable p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
||||||
public final method invoke(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invoke(@org.jetbrains.annotations.NotNull p0: Foo, @org.jetbrains.annotations.Nullable p1: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
|
public synthetic bridge method invoke(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ final class FieldKt$test$1 {
|
|||||||
inner (anonymous) class FieldKt$test$1
|
inner (anonymous) class FieldKt$test$1
|
||||||
method <init>(p0: kotlin.coroutines.Continuation): void
|
method <init>(p0: kotlin.coroutines.Continuation): void
|
||||||
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.Nullable p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
public final @org.jetbrains.annotations.NotNull method create(@org.jetbrains.annotations.Nullable p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
|
||||||
public final method invoke(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invoke(@org.jetbrains.annotations.NotNull p0: Foo, @org.jetbrains.annotations.Nullable p1: kotlin.coroutines.Continuation): java.lang.Object
|
||||||
|
public synthetic bridge method invoke(p0: java.lang.Object, p1: java.lang.Object): java.lang.Object
|
||||||
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -35,5 +35,5 @@ class A {
|
|||||||
// 1 LOCALVARIABLE this LThisAndResultInLvtKt\$c\$1;
|
// 1 LOCALVARIABLE this LThisAndResultInLvtKt\$c\$1;
|
||||||
|
|
||||||
// JVM_IR_TEMPLATES
|
// JVM_IR_TEMPLATES
|
||||||
// <init>, invoke, invokeSuspend
|
// <init>, invoke, invoke bridge, invokeSuspend
|
||||||
// 3 LOCALVARIABLE this LThisAndResultInLvtKt\$c\$1; L0 L.* 0
|
// 4 LOCALVARIABLE this LThisAndResultInLvtKt\$c\$1; L0 L.* 0
|
||||||
|
|||||||
Reference in New Issue
Block a user