JVM_IR: Generate inner classes for continuations

Also, generate correct visibilities for constructors and continuation's fields.
This commit is contained in:
Ilmir Usmanov
2020-02-27 16:57:48 +01:00
parent 536e0e23a0
commit 42420cb6fc
23 changed files with 216 additions and 320 deletions
@@ -1,4 +1,5 @@
// IGNORE_BACKEND: JVM_IR
// TODO: KT-37084
// WITH_RUNTIME
// COMMON_COROUTINES_TEST
import COROUTINES_PACKAGE.*
@@ -1,4 +1,5 @@
// IGNORE_BACKEND: JVM_IR
// TODO: KT-37010 KT-37084 KT-37085
// WITH_RUNTIME
// COMMON_COROUTINES_TEST
import COROUTINES_PACKAGE.*
@@ -0,0 +1,57 @@
@kotlin.Metadata
@kotlin.coroutines.jvm.internal.DebugMetadata
final class Controller$multipleSuspensions$1 {
field L$0: java.lang.Object
field label: int
synthetic field result: java.lang.Object
synthetic final field this$0: Controller
inner class Controller$multipleSuspensions$1
method <init>(p0: Controller, p1: kotlin.coroutines.Continuation): void
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
}
@kotlin.Metadata
@kotlin.coroutines.jvm.internal.DebugMetadata
final class Controller$nonTailCall$1 {
field L$0: java.lang.Object
field label: int
synthetic field result: java.lang.Object
synthetic final field this$0: Controller
inner class Controller$nonTailCall$1
method <init>(p0: Controller, p1: kotlin.coroutines.Continuation): void
public final @org.jetbrains.annotations.Nullable method invokeSuspend(@org.jetbrains.annotations.NotNull p0: java.lang.Object): java.lang.Object
}
@kotlin.Metadata
public final class Controller {
inner class Controller$multipleSuspensions$1
inner class Controller$nonTailCall$1
public method <init>(): void
public final @org.jetbrains.annotations.Nullable method multipleSuspensions(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): java.lang.Object
public final @org.jetbrains.annotations.Nullable method nonTailCall(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): java.lang.Object
public final @org.jetbrains.annotations.Nullable method suspendHere(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): java.lang.Object
public final @org.jetbrains.annotations.Nullable method tailCall(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): java.lang.Object
}
@kotlin.coroutines.jvm.internal.DebugMetadata
@kotlin.Metadata
final class CoroutineFieldsKt$box$1 {
synthetic final field $result: kotlin.jvm.internal.Ref$ObjectRef
field J$0: long
field L$0: java.lang.Object
field L$1: java.lang.Object
field label: int
private field p$: Controller
inner class CoroutineFieldsKt$box$1
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 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
}
@kotlin.Metadata
public final class CoroutineFieldsKt {
inner class CoroutineFieldsKt$box$1
public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String
public final static method builder(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function2): void
}
@@ -1,8 +1,7 @@
// IGNORE_BACKEND: JVM_IR
// TODO: KT-37084
// WITH_RUNTIME
// COMMON_COROUTINES_TEST
// WITH_COROUTINES
import helpers.*
import COROUTINES_PACKAGE.*
import COROUTINES_PACKAGE.intrinsics.*
@@ -16,63 +16,3 @@ public final class OomInReturnUnitKt {
public final static @org.jetbrains.annotations.Nullable method some(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.experimental.Continuation): java.lang.Object
public final static @org.jetbrains.annotations.Nullable method test(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.experimental.Continuation): java.lang.Object
}
@kotlin.Metadata
public abstract class helpers/ContinuationAdapter {
private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.experimental.CoroutineContext
public method <init>(): void
public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.experimental.CoroutineContext
}
@kotlin.Metadata
public final class helpers/CoroutineUtilKt$handleExceptionContinuation$1 {
synthetic final field $x: kotlin.jvm.functions.Function1
private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.experimental.EmptyCoroutineContext
inner class helpers/CoroutineUtilKt$handleExceptionContinuation$1
method <init>(p0: kotlin.jvm.functions.Function1): void
public synthetic bridge method getContext(): kotlin.coroutines.experimental.CoroutineContext
public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.experimental.EmptyCoroutineContext
public method resume(@org.jetbrains.annotations.Nullable p0: java.lang.Object): void
public method resumeWithException(@org.jetbrains.annotations.NotNull p0: java.lang.Throwable): void
}
@kotlin.Metadata
public final class helpers/CoroutineUtilKt$handleResultContinuation$1 {
synthetic final field $x: kotlin.jvm.functions.Function1
private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.experimental.EmptyCoroutineContext
inner class helpers/CoroutineUtilKt$handleResultContinuation$1
method <init>(p0: kotlin.jvm.functions.Function1): void
public synthetic bridge method getContext(): kotlin.coroutines.experimental.CoroutineContext
public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.experimental.EmptyCoroutineContext
public method resume(p0: java.lang.Object): void
public method resumeWithException(@org.jetbrains.annotations.NotNull p0: java.lang.Throwable): void
}
@kotlin.Metadata
public final class helpers/CoroutineUtilKt {
inner class helpers/CoroutineUtilKt$handleExceptionContinuation$1
inner class helpers/CoroutineUtilKt$handleResultContinuation$1
public final static @org.jetbrains.annotations.NotNull method handleExceptionContinuation(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function1): kotlin.coroutines.experimental.Continuation
public final static @org.jetbrains.annotations.NotNull method handleResultContinuation(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function1): kotlin.coroutines.experimental.Continuation
}
@kotlin.Metadata
public final class helpers/EmptyContinuation$Companion {
inner class helpers/EmptyContinuation$Companion
private method <init>(): void
public synthetic method <init>(p0: kotlin.jvm.internal.DefaultConstructorMarker): void
}
@kotlin.Metadata
public class helpers/EmptyContinuation {
public final static field Companion: helpers.EmptyContinuation$Companion
private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.experimental.CoroutineContext
inner class helpers/EmptyContinuation$Companion
static method <clinit>(): void
public method <init>(): void
public method <init>(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.experimental.CoroutineContext): void
public synthetic method <init>(p0: kotlin.coroutines.experimental.CoroutineContext, p1: int, p2: kotlin.jvm.internal.DefaultConstructorMarker): void
public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.experimental.CoroutineContext
public method resume(@org.jetbrains.annotations.Nullable p0: java.lang.Object): void
public method resumeWithException(@org.jetbrains.annotations.NotNull p0: java.lang.Throwable): void
}
@@ -15,63 +15,3 @@ public final class OomInReturnUnitKt {
public final static @org.jetbrains.annotations.Nullable method some(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): java.lang.Object
public final static @org.jetbrains.annotations.Nullable method test(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.Continuation): java.lang.Object
}
@kotlin.Metadata
public abstract class helpers/ContinuationAdapter {
private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.CoroutineContext
public method <init>(): void
public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.CoroutineContext
public abstract method resume(p0: java.lang.Object): void
public method resumeWith(@org.jetbrains.annotations.NotNull p0: java.lang.Object): void
public abstract method resumeWithException(@org.jetbrains.annotations.NotNull p0: java.lang.Throwable): void
}
@kotlin.Metadata
public final class helpers/CoroutineUtilKt$handleExceptionContinuation$1 {
synthetic final field $x: kotlin.jvm.functions.Function1
private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.EmptyCoroutineContext
inner class helpers/CoroutineUtilKt$handleExceptionContinuation$1
method <init>(p0: kotlin.jvm.functions.Function1): void
public synthetic bridge method getContext(): kotlin.coroutines.CoroutineContext
public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.EmptyCoroutineContext
public method resumeWith(@org.jetbrains.annotations.NotNull p0: java.lang.Object): void
}
@kotlin.Metadata
public final class helpers/CoroutineUtilKt$handleResultContinuation$1 {
synthetic final field $x: kotlin.jvm.functions.Function1
private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.EmptyCoroutineContext
inner class helpers/CoroutineUtilKt$handleResultContinuation$1
method <init>(p0: kotlin.jvm.functions.Function1): void
public synthetic bridge method getContext(): kotlin.coroutines.CoroutineContext
public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.EmptyCoroutineContext
public method resumeWith(@org.jetbrains.annotations.NotNull p0: java.lang.Object): void
}
@kotlin.Metadata
public final class helpers/CoroutineUtilKt {
inner class helpers/CoroutineUtilKt$handleExceptionContinuation$1
inner class helpers/CoroutineUtilKt$handleResultContinuation$1
public final static @org.jetbrains.annotations.NotNull method handleExceptionContinuation(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function1): kotlin.coroutines.Continuation
public final static @org.jetbrains.annotations.NotNull method handleResultContinuation(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function1): kotlin.coroutines.Continuation
}
@kotlin.Metadata
public final class helpers/EmptyContinuation$Companion {
inner class helpers/EmptyContinuation$Companion
private method <init>(): void
public synthetic method <init>(p0: kotlin.jvm.internal.DefaultConstructorMarker): void
}
@kotlin.Metadata
public class helpers/EmptyContinuation {
public final static field Companion: helpers.EmptyContinuation$Companion
private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.CoroutineContext
inner class helpers/EmptyContinuation$Companion
static method <clinit>(): void
public method <init>(): void
public method <init>(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.CoroutineContext): void
public synthetic method <init>(p0: kotlin.coroutines.CoroutineContext, p1: int, p2: kotlin.jvm.internal.DefaultConstructorMarker): void
public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.CoroutineContext
public method resumeWith(@org.jetbrains.annotations.NotNull p0: java.lang.Object): void
}
@@ -1,4 +1,5 @@
// IGNORE_BACKEND: JVM_IR
// TODO: KT-37086
// WITH_RUNTIME
// COMMON_COROUTINES_TEST
import COROUTINES_PACKAGE.*
@@ -1,4 +1,5 @@
// IGNORE_BACKEND: JVM_IR
// TODO: KT-37086
private suspend fun foo() {}
class A {
@@ -1,4 +1,5 @@
// IGNORE_BACKEND: JVM_IR
// TODO: KT-37088
// COMMON_COROUTINES_TEST
// WITH_RUNTIME
@@ -1,7 +1,7 @@
// IGNORE_BACKEND: JVM_IR
// TODO: KT-36987 KT-37084 KT-37093
// COMMON_COROUTINES_TEST
// WITH_RUNTIME
// WITH_COROUTINES
// There should be no $foo$$inlined$map$1$1 class
@@ -336,63 +336,3 @@ public final class TcoContinuationKt {
public final static @org.jetbrains.annotations.NotNull method map(@org.jetbrains.annotations.NotNull p0: Flow, @org.jetbrains.annotations.NotNull p1: kotlin.jvm.functions.Function2): Flow
public final static @org.jetbrains.annotations.NotNull method transform(@org.jetbrains.annotations.NotNull p0: Flow, @org.jetbrains.annotations.NotNull p1: kotlin.jvm.functions.Function3): Flow
}
@kotlin.Metadata
public abstract class helpers/ContinuationAdapter {
private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.experimental.CoroutineContext
public method <init>(): void
public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.experimental.CoroutineContext
}
@kotlin.Metadata
public final class helpers/CoroutineUtilKt$handleExceptionContinuation$1 {
synthetic final field $x: kotlin.jvm.functions.Function1
private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.experimental.EmptyCoroutineContext
inner class helpers/CoroutineUtilKt$handleExceptionContinuation$1
method <init>(p0: kotlin.jvm.functions.Function1): void
public synthetic bridge method getContext(): kotlin.coroutines.experimental.CoroutineContext
public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.experimental.EmptyCoroutineContext
public method resume(@org.jetbrains.annotations.Nullable p0: java.lang.Object): void
public method resumeWithException(@org.jetbrains.annotations.NotNull p0: java.lang.Throwable): void
}
@kotlin.Metadata
public final class helpers/CoroutineUtilKt$handleResultContinuation$1 {
synthetic final field $x: kotlin.jvm.functions.Function1
private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.experimental.EmptyCoroutineContext
inner class helpers/CoroutineUtilKt$handleResultContinuation$1
method <init>(p0: kotlin.jvm.functions.Function1): void
public synthetic bridge method getContext(): kotlin.coroutines.experimental.CoroutineContext
public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.experimental.EmptyCoroutineContext
public method resume(p0: java.lang.Object): void
public method resumeWithException(@org.jetbrains.annotations.NotNull p0: java.lang.Throwable): void
}
@kotlin.Metadata
public final class helpers/CoroutineUtilKt {
inner class helpers/CoroutineUtilKt$handleExceptionContinuation$1
inner class helpers/CoroutineUtilKt$handleResultContinuation$1
public final static @org.jetbrains.annotations.NotNull method handleExceptionContinuation(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function1): kotlin.coroutines.experimental.Continuation
public final static @org.jetbrains.annotations.NotNull method handleResultContinuation(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function1): kotlin.coroutines.experimental.Continuation
}
@kotlin.Metadata
public final class helpers/EmptyContinuation$Companion {
inner class helpers/EmptyContinuation$Companion
private method <init>(): void
public synthetic method <init>(p0: kotlin.jvm.internal.DefaultConstructorMarker): void
}
@kotlin.Metadata
public class helpers/EmptyContinuation {
public final static field Companion: helpers.EmptyContinuation$Companion
private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.experimental.CoroutineContext
inner class helpers/EmptyContinuation$Companion
static method <clinit>(): void
public method <init>(): void
public method <init>(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.experimental.CoroutineContext): void
public synthetic method <init>(p0: kotlin.coroutines.experimental.CoroutineContext, p1: int, p2: kotlin.jvm.internal.DefaultConstructorMarker): void
public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.experimental.CoroutineContext
public method resume(@org.jetbrains.annotations.Nullable p0: java.lang.Object): void
public method resumeWithException(@org.jetbrains.annotations.NotNull p0: java.lang.Throwable): void
}
@@ -312,63 +312,3 @@ public final class TcoContinuationKt {
public final static @org.jetbrains.annotations.NotNull method map(@org.jetbrains.annotations.NotNull p0: Flow, @org.jetbrains.annotations.NotNull p1: kotlin.jvm.functions.Function2): Flow
public final static @org.jetbrains.annotations.NotNull method transform(@org.jetbrains.annotations.NotNull p0: Flow, @org.jetbrains.annotations.NotNull p1: kotlin.jvm.functions.Function3): Flow
}
@kotlin.Metadata
public abstract class helpers/ContinuationAdapter {
private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.CoroutineContext
public method <init>(): void
public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.CoroutineContext
public abstract method resume(p0: java.lang.Object): void
public method resumeWith(@org.jetbrains.annotations.NotNull p0: java.lang.Object): void
public abstract method resumeWithException(@org.jetbrains.annotations.NotNull p0: java.lang.Throwable): void
}
@kotlin.Metadata
public final class helpers/CoroutineUtilKt$handleExceptionContinuation$1 {
synthetic final field $x: kotlin.jvm.functions.Function1
private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.EmptyCoroutineContext
inner class helpers/CoroutineUtilKt$handleExceptionContinuation$1
method <init>(p0: kotlin.jvm.functions.Function1): void
public synthetic bridge method getContext(): kotlin.coroutines.CoroutineContext
public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.EmptyCoroutineContext
public method resumeWith(@org.jetbrains.annotations.NotNull p0: java.lang.Object): void
}
@kotlin.Metadata
public final class helpers/CoroutineUtilKt$handleResultContinuation$1 {
synthetic final field $x: kotlin.jvm.functions.Function1
private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.EmptyCoroutineContext
inner class helpers/CoroutineUtilKt$handleResultContinuation$1
method <init>(p0: kotlin.jvm.functions.Function1): void
public synthetic bridge method getContext(): kotlin.coroutines.CoroutineContext
public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.EmptyCoroutineContext
public method resumeWith(@org.jetbrains.annotations.NotNull p0: java.lang.Object): void
}
@kotlin.Metadata
public final class helpers/CoroutineUtilKt {
inner class helpers/CoroutineUtilKt$handleExceptionContinuation$1
inner class helpers/CoroutineUtilKt$handleResultContinuation$1
public final static @org.jetbrains.annotations.NotNull method handleExceptionContinuation(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function1): kotlin.coroutines.Continuation
public final static @org.jetbrains.annotations.NotNull method handleResultContinuation(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function1): kotlin.coroutines.Continuation
}
@kotlin.Metadata
public final class helpers/EmptyContinuation$Companion {
inner class helpers/EmptyContinuation$Companion
private method <init>(): void
public synthetic method <init>(p0: kotlin.jvm.internal.DefaultConstructorMarker): void
}
@kotlin.Metadata
public class helpers/EmptyContinuation {
public final static field Companion: helpers.EmptyContinuation$Companion
private final @org.jetbrains.annotations.NotNull field context: kotlin.coroutines.CoroutineContext
inner class helpers/EmptyContinuation$Companion
static method <clinit>(): void
public method <init>(): void
public method <init>(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.CoroutineContext): void
public synthetic method <init>(p0: kotlin.coroutines.CoroutineContext, p1: int, p2: kotlin.jvm.internal.DefaultConstructorMarker): void
public @org.jetbrains.annotations.NotNull method getContext(): kotlin.coroutines.CoroutineContext
public method resumeWith(@org.jetbrains.annotations.NotNull p0: java.lang.Object): void
}