Open louiewh opened 1 month ago
android kotlin suspend function
suspend fun firstFun(value:String){ val result = secondFun() delay(1000) Log.d("Coroutine", "firstFun delay finish $value $result") }
AndroidStudio decomile is like this.
@Nullable public static final Object firstFun(@NotNull String value, @NotNull Continuation $completion) { Object $continuation; label27: { if ($completion instanceof <undefinedtype>) { $continuation = (<undefinedtype>)$completion; if ((((<undefinedtype>)$continuation).label & Integer.MIN_VALUE) != 0) { ((<undefinedtype>)$continuation).label -= Integer.MIN_VALUE; break label27; } } $continuation = new ContinuationImpl($completion) { Object L$0; Object L$1; // $FF: synthetic field Object result; int label; @Nullable public final Object invokeSuspend(@NotNull Object $result) { this.result = $result; this.label |= Integer.MIN_VALUE; return MainActivityKt.firstFun((String)null, (Continuation)this); } }; } String result; label22: { Object $result = ((<undefinedtype>)$continuation).result; Object var5 = IntrinsicsKt.getCOROUTINE_SUSPENDED(); Object var10000; switch (((<undefinedtype>)$continuation).label) { case 0: ResultKt.throwOnFailure($result); ((<undefinedtype>)$continuation).L$0 = value; ((<undefinedtype>)$continuation).label = 1; var10000 = secondFun((Continuation)$continuation); if (var10000 == var5) { return var5; } break; case 1: value = (String)((<undefinedtype>)$continuation).L$0; ResultKt.throwOnFailure($result); var10000 = $result; break; case 2: result = (String)((<undefinedtype>)$continuation).L$1; value = (String)((<undefinedtype>)$continuation).L$0; ResultKt.throwOnFailure($result); break label22; default: throw new IllegalStateException("call to 'resume' before 'invoke' with coroutine"); } result = (String)var10000; ((<undefinedtype>)$continuation).L$0 = value; ((<undefinedtype>)$continuation).L$1 = result; ((<undefinedtype>)$continuation).label = 2; if (DelayKt.delay(1000L, (Continuation)$continuation) == var5) { return var5; } } Log.d("Coroutine", "firstFun delay finish " + value + ' ' + result); return Unit.INSTANCE; }
$continuation = new ContinuationImpl($completion) {
before switch ((()$continuation).label) {
jadx decompile is
public static final Object firstFun(String value, Continuation<? super Unit> continuation) { FirstContinuation firstContinuation; FirstContinuation firstContinuation2; Object secondFun; String value2; String value3; if (continuation instanceof FirstContinuation) { firstContinuation = (FirstContinuation) continuation; if ((firstContinuation.label & Integer.MIN_VALUE) != 0) { firstContinuation.label -= Integer.MIN_VALUE; firstContinuation2 = firstContinuation; Object $result = firstContinuation2.result; Object coroutine_suspended = IntrinsicsKt.getCOROUTINE_SUSPENDED(); switch (firstContinuation2.label) { case 0: ResultKt.throwOnFailure($result); firstContinuation2.L$0 = value; firstContinuation2.label = 1; secondFun = secondFun(firstContinuation2); if (secondFun == coroutine_suspended) { return coroutine_suspended; } String result = (String) secondFun; firstContinuation2.L$0 = value; firstContinuation2.L$1 = result; firstContinuation2.label = 2; if (DelayKt.delay(1000L, firstContinuation2) != coroutine_suspended) { return coroutine_suspended; } value2 = value; value3 = result; Log.d("Coroutine", "firstFun delay finish " + value2 + ' ' + value3); return Unit.INSTANCE; case 1: value = (String) firstContinuation2.L$0; ResultKt.throwOnFailure($result); secondFun = $result; String result2 = (String) secondFun; firstContinuation2.L$0 = value; firstContinuation2.L$1 = result2; firstContinuation2.label = 2; if (DelayKt.delay(1000L, firstContinuation2) != coroutine_suspended) { } break; case 2: value3 = (String) firstContinuation2.L$1; value2 = (String) firstContinuation2.L$0; ResultKt.throwOnFailure($result); Log.d("Coroutine", "firstFun delay finish " + value2 + ' ' + value3); return Unit.INSTANCE; default: throw new IllegalStateException("call to 'resume' before 'invoke' with coroutine"); } } } firstContinuation = new FirstContinuation(continuation); firstContinuation2 = firstContinuation; Object $result2 = firstContinuation2.result; Object coroutine_suspended2 = IntrinsicsKt.getCOROUTINE_SUSPENDED(); switch (firstContinuation2.label) { } }` switch is before . so the code is wrong ### Relevant log output or stacktrace ```java INFO : output directory: app-debug INFO : loading ... WARN : Found duplicated class: kotlin.coroutines.jvm.internal.DebugProbesKt, count: 2. Only one will be loaded! classes5.dex app-debug.apk:DebugProbesKt.bin INFO : Loaded classes: 12233, methods: 78428, instructions: 2544353 INFO : Loading obfuscation map from: /Users/louiewang/AndroidStudioProjects/DebugApk/app/build/outputs/apk/debug/app-debug.jobf INFO : Resetting disk code cache, base dir: /Users/louiewang/Library/Caches/io.github.skylot.jadx/projects/app-debug-34254274931a13b42a4d9b6e5741442f/code WARN : Removed duplicated region for block: B:18:0x0063 in method: com.example.debugapk.MainActivityKt.firstFun(java.lang.String, kotlin.coroutines.Continuation<? super kotlin.Unit>):java.lang.Object, file: classes4.dex WARN : Removed duplicated region for block: B:17:0x0062 A[RETURN] in method: com.example.debugapk.MainActivityKt.firstFun(java.lang.String, kotlin.coroutines.Continuation<? super kotlin.Unit>):java.lang.Object, file: classes4.dex WARN : Removed duplicated region for block: B:19:0x0042 in method: com.example.debugapk.MainActivityKt.firstFun(java.lang.String, kotlin.coroutines.Continuation<? super kotlin.Unit>):java.lang.Object, file: classes4.dex WARN : Removed duplicated region for block: B:14:0x0039 in method: com.example.debugapk.MainActivityKt.firstFun(java.lang.String, kotlin.coroutines.Continuation<? super kotlin.Unit>):java.lang.Object, file: classes4.dex WARN : Removed duplicated region for block: B:11:0x002d in method: com.example.debugapk.MainActivityKt.firstFun(java.lang.String, kotlin.coroutines.Continuation<? super kotlin.Unit>):java.lang.Object, file: classes4.dex WARN : Removed duplicated region for block: B:8:0x0025 in method: com.example.debugapk.MainActivityKt.firstFun(java.lang.String, kotlin.coroutines.Continuation<? super kotlin.Unit>):java.lang.Object, file: classes4.dex WARN : Removed duplicated region for block: B:14:0x0031 in method: com.example.debugapk.MainActivityKt.secondFun(kotlin.coroutines.Continuation<? super java.lang.String>):java.lang.Object, file: classes4.dex WARN : Removed duplicated region for block: B:11:0x002d in method: com.example.debugapk.MainActivityKt.secondFun(kotlin.coroutines.Continuation<? super java.lang.String>):java.lang.Object, file: classes4.dex WARN : Removed duplicated region for block: B:8:0x0025 in method: com.example.debugapk.MainActivityKt.secondFun(kotlin.coroutines.Continuation<? super java.lang.String>):java.lang.Object, file: classes4.dex ERROR: Error in decompile pass: KotlinMetadataDecompile, class: kotlin.coroutines.jvm.internal.DebugProbesKt kotlinx.metadata.InconsistentKotlinMetadataException: Exception occurred when reading Kotlin metadata at kotlinx.metadata.jvm.internal.JvmReadUtils.readMetadataImpl$kotlinx_metadata_jvm(JvmReadUtils.kt:114) at kotlinx.metadata.jvm.KotlinClassMetadata$Companion.readLenient(KotlinClassMetadata.kt:813) at jadx.plugins.kotlin.metadata.utils.KotlinMetadataExtKt.getKotlinClassMetadata(KotlinMetadataExt.kt:71) at jadx.plugins.kotlin.metadata.utils.KmClassWrapper$Companion.getWrapper(KmClassWrapper.kt:37) at jadx.plugins.kotlin.metadata.pass.KotlinMetadataDecompilePass.visit(KotlinMetadataDecompilePass.kt:35) at jadx.api.impl.passes.DecompilePassWrapper.visit(DecompilePassWrapper.java:40) at jadx.core.dex.visitors.DepthTraversal.visit(DepthTraversal.java:12) at jadx.core.ProcessClass.process(ProcessClass.java:75) at jadx.core.ProcessClass.generateCode(ProcessClass.java:110) at jadx.core.dex.nodes.ClassNode.generateClassCode(ClassNode.java:400) at jadx.core.dex.nodes.ClassNode.decompile(ClassNode.java:388) at jadx.core.dex.nodes.ClassNode.decompile(ClassNode.java:309) at jadx.api.JavaClass.load(JavaClass.java:132) at jadx.api.JavaClass.getCodeInfo(JavaClass.java:61) at jadx.gui.treemodel.JClass.getCodeInfo(JClass.java:114) at jadx.gui.ui.MainWindow.preLoadOpenTabs(MainWindow.java:1490) at jadx.gui.ui.MainWindow.lambda$onOpen$2(MainWindow.java:595) at jadx.core.utils.tasks.TaskExecutor.wrapTask(TaskExecutor.java:166) at jadx.core.utils.tasks.TaskExecutor.runStages(TaskExecutor.java:142) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1570) Caused by: kotlinx.metadata.internal.protobuf.InvalidProtocolBufferException: Protocol message tag had invalid wire type. at kotlinx.metadata.internal.protobuf.InvalidProtocolBufferException.invalidWireType(InvalidProtocolBufferException.java:99) at kotlinx.metadata.internal.protobuf.CodedInputStream.skipField(CodedInputStream.java:262) at kotlinx.metadata.internal.protobuf.GeneratedMessageLite.parseUnknownField(GeneratedMessageLite.java:73) at kotlinx.metadata.internal.metadata.jvm.JvmProtoBuf$StringTableTypes.<init>(JvmProtoBuf.java:112) at kotlinx.metadata.internal.metadata.jvm.JvmProtoBuf$StringTableTypes.<init>(JvmProtoBuf.java:71) at kotlinx.metadata.internal.metadata.jvm.JvmProtoBuf$StringTableTypes$1.parsePartialFrom(JvmProtoBuf.java:177) at kotlinx.metadata.internal.metadata.jvm.JvmProtoBuf$StringTableTypes$1.parsePartialFrom(JvmProtoBuf.java:172) at kotlinx.metadata.internal.protobuf.AbstractParser.parsePartialFrom(AbstractParser.java:192) at kotlinx.metadata.internal.protobuf.AbstractParser.parsePartialDelimitedFrom(AbstractParser.java:233) at kotlinx.metadata.internal.protobuf.AbstractParser.parseDelimitedFrom(AbstractParser.java:245) at kotlinx.metadata.internal.protobuf.AbstractParser.parseDelimitedFrom(AbstractParser.java:49) at kotlinx.metadata.internal.metadata.jvm.JvmProtoBuf$StringTableTypes.parseDelimitedFrom(JvmProtoBuf.java:1738) at kotlinx.metadata.internal.metadata.jvm.deserialization.JvmProtoBufUtil.readNameResolver(JvmProtoBufUtil.kt:52) at kotlinx.metadata.internal.metadata.jvm.deserialization.JvmProtoBufUtil.readPackageDataFrom(JvmProtoBufUtil.kt:42) at kotlinx.metadata.internal.metadata.jvm.deserialization.JvmProtoBufUtil.readPackageDataFrom(JvmProtoBufUtil.kt:37) at kotlinx.metadata.jvm.internal.JvmReadUtils.readKmPackage$kotlinx_metadata_jvm(JvmReadUtils.kt:33) at kotlinx.metadata.jvm.KotlinClassMetadata$FileFacade.<init>(KotlinClassMetadata.kt:192) at kotlinx.metadata.jvm.internal.JvmReadUtils.readMetadataImpl$kotlinx_metadata_jvm(JvmReadUtils.kt:52) ... 21 common frames omitted WARN : Code restructure failed: missing block: B:14:0x003e, code lost: if (r5 == null) goto L14; in method: kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(kotlin.coroutines.CoroutineContext, kotlin.jvm.functions.Function2<? super kotlinx.coroutines.CoroutineScope, ? super kotlin.coroutines.Continuation<? super T>, ? extends java.lang.Object>):T, file: classes5.dex WARN : Skipping pending alias: 'Finishing[cancelling' WARN : Skipping pending alias: 'completing' WARN : Skipping pending alias: 'rootCause' WARN : Skipping pending alias: 'exceptions' WARN : Removed duplicated region for block: B:75:0x0118 in method: kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(kotlin.coroutines.Continuation<? super T>, java.lang.Object, kotlin.jvm.functions.Function1<? super java.lang.Throwable, kotlin.Unit>):void, file: classes5.dex WARN : Removed duplicated region for block: B:22:0x00b3 in method: kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(kotlin.coroutines.Continuation<? super T>, java.lang.Object, kotlin.jvm.functions.Function1<? super java.lang.Throwable, kotlin.Unit>):void, file: classes5.dex WARN : Can't wrap try/catch for region: R(11:15|16|17|(3:77|78|(8:80|81|20|(15:22|23|24|25|26|27|(2:59|60)(1:29)|30|31|32|33|34|35|(1:47)|39)(1:75)|40|(1:41)|44|45))|19|20|(0)(0)|40|(1:41)|44|45) in method: kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(kotlin.coroutines.Continuation<? super T>, java.lang.Object, kotlin.jvm.functions.Function1<? super java.lang.Throwable, kotlin.Unit>):void, file: classes5.dex WARN : Code restructure failed: missing block: B:76:0x0128, code lost: r0 = th; in method: kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(kotlin.coroutines.Continuation<? super T>, java.lang.Object, kotlin.jvm.functions.Function1<? super java.lang.Throwable, kotlin.Unit>):void, file: classes5.dex WARN : Code restructure failed: missing block: B:6:0x001d, code lost: if (r1.equals(kotlinx.coroutines.Debug.DEBUG_PROPERTY_VALUE_AUTO) != false) goto L21; in method: kotlinx.coroutines.DebugKt.<clinit>():void, file: classes5.dex WARN : Code restructure failed: missing block: B:19:0x0030, code lost: if (r1.equals(kotlinx.coroutines.Debug.DEBUG_PROPERTY_VALUE_ON) != false) goto L18; in method: kotlinx.coroutines.DebugKt.<clinit>():void, file: classes5.dex WARN : Code restructure failed: missing block: B:20:0x003b, code lost: r4 = true; in method: kotlinx.coroutines.DebugKt.<clinit>():void, file: classes5.dex WARN : Code restructure failed: missing block: B:22:0x0039, code lost: if (r1.equals("") != false) goto L18; in method: kotlinx.coroutines.DebugKt.<clinit>():void, file: classes5.dex WARN : Removed duplicated region for block: B:75:0x0118 in method: kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(kotlin.coroutines.Continuation<? super T>, java.lang.Object, kotlin.jvm.functions.Function1<? super java.lang.Throwable, kotlin.Unit>):void, file: classes5.dex WARN : Removed duplicated region for block: B:22:0x00b3 in method: kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(kotlin.coroutines.Continuation<? super T>, java.lang.Object, kotlin.jvm.functions.Function1<? super java.lang.Throwable, kotlin.Unit>):void, file: classes5.dex WARN : Can't wrap try/catch for region: R(11:15|16|17|(3:77|78|(8:80|81|20|(15:22|23|24|25|26|27|(2:59|60)(1:29)|30|31|32|33|34|35|(1:47)|39)(1:75)|40|(1:41)|44|45))|19|20|(0)(0)|40|(1:41)|44|45) in method: kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(kotlin.coroutines.Continuation<? super T>, java.lang.Object, kotlin.jvm.functions.Function1<? super java.lang.Throwable, kotlin.Unit>):void, file: classes5.dex WARN : Code restructure failed: missing block: B:76:0x0128, code lost: r0 = th; in method: kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(kotlin.coroutines.Continuation<? super T>, java.lang.Object, kotlin.jvm.functions.Function1<? super java.lang.Throwable, kotlin.Unit>):void, file: classes5.dex WARN : Code restructure failed: missing block: B:51:0x020c, code lost: if (r12.changed(r68) != false) goto L176; in method: androidx.compose.material3.TextKt.Text-fLXpl1I(java.lang.String, androidx.compose.ui.Modifier, long, long, androidx.compose.ui.text.font.FontStyle, androidx.compose.ui.text.font.FontWeight, androidx.compose.ui.text.font.FontFamily, long, androidx.compose.ui.text.style.TextDecoration, androidx.compose.ui.text.style.TextAlign, long, int, boolean, int, kotlin.jvm.functions.Function1, androidx.compose.ui.text.TextStyle, androidx.compose.runtime.Composer, int, int, int):void, file: classes.dex WARN : Skipping pending alias: 'color' WARN : Skipping pending alias: 'brush' WARN : Skipping pending alias: 'alpha' WARN : Skipping pending alias: 'fontSize' WARN : Skipping pending alias: 'fontWeight' WARN : Skipping pending alias: 'fontStyle' WARN : Skipping pending alias: 'fontSynthesis' WARN : Skipping pending alias: 'fontFamily' WARN : Skipping pending alias: 'fontFeatureSettings' WARN : Skipping pending alias: 'letterSpacing' WARN : Skipping pending alias: 'baselineShift' WARN : Skipping pending alias: 'textGeometricTransform' WARN : Skipping pending alias: 'localeList' WARN : Skipping pending alias: 'background' WARN : Skipping pending alias: 'textDecoration' WARN : Skipping pending alias: 'shadow' WARN : Skipping pending alias: 'drawStyle' WARN : Skipping pending alias: 'textAlign' WARN : Skipping pending alias: 'textDirection' WARN : Skipping pending alias: 'lineHeight' WARN : Skipping pending alias: 'textIndent' WARN : Skipping pending alias: 'lineHeightStyle' WARN : Skipping pending alias: 'lineBreak' WARN : Skipping pending alias: 'hyphens' WARN : Removed duplicated region for block: B:37:0x0096 in method: com.example.debugapk.ui.theme.ThemeKt.DebugApkTheme(boolean, boolean, kotlin.jvm.functions.Function2<? super androidx.compose.runtime.Composer, ? super java.lang.Integer, kotlin.Unit>, androidx.compose.runtime.Composer, int, int):void, file: classes3.dex WARN : Removed duplicated region for block: B:52:0x00dd in method: com.example.debugapk.ui.theme.ThemeKt.DebugApkTheme(boolean, boolean, kotlin.jvm.functions.Function2<? super androidx.compose.runtime.Composer, ? super java.lang.Integer, kotlin.Unit>, androidx.compose.runtime.Composer, int, int):void, file: classes3.dex WARN : Removed duplicated region for block: B:51:0x00d9 in method: com.example.debugapk.ui.theme.ThemeKt.DebugApkTheme(boolean, boolean, kotlin.jvm.functions.Function2<? super androidx.compose.runtime.Composer, ? super java.lang.Integer, kotlin.Unit>, androidx.compose.runtime.Composer, int, int):void, file: classes3.dex WARN : Removed duplicated region for block: B:47:0x00fb in method: com.example.debugapk.ui.theme.ThemeKt.DebugApkTheme(boolean, boolean, kotlin.jvm.functions.Function2<? super androidx.compose.runtime.Composer, ? super java.lang.Integer, kotlin.Unit>, androidx.compose.runtime.Composer, int, int):void, file: classes3.dex WARN : Removed duplicated region for block: B:14:0x0032 in method: kotlinx.coroutines.DelayKt.awaitCancellation(kotlin.coroutines.Continuation<?>):java.lang.Object, file: classes5.dex WARN : Removed duplicated region for block: B:11:0x002d in method: kotlinx.coroutines.DelayKt.awaitCancellation(kotlin.coroutines.Continuation<?>):java.lang.Object, file: classes5.dex WARN : Removed duplicated region for block: B:8:0x0025 in method: kotlinx.coroutines.DelayKt.awaitCancellation(kotlin.coroutines.Continuation<?>):java.lang.Object, file: classes5.dex WARN : Code restructure failed: missing block: B:4:0x0023, code lost: if (r6 >= 0) goto L6; in method: kotlin.time.Duration.appendFractional-impl(long, java.lang.StringBuilder, int, int, int, java.lang.String, boolean):void, file: classes5.dex WARN : Code restructure failed: missing block: B:5:0x0025, code lost: r10 = r6; r6 = r6 - 1; r11 = r4.charAt(r10); in method: kotlin.time.Duration.appendFractional-impl(long, java.lang.StringBuilder, int, int, int, java.lang.String, boolean):void, file: classes5.dex WARN : Code restructure failed: missing block: B:6:0x002c, code lost: if (r11 == '0') goto L9; in method: kotlin.time.Duration.appendFractional-impl(long, java.lang.StringBuilder, int, int, int, java.lang.String, boolean):void, file: classes5.dex WARN : Code restructure failed: missing block: B:7:0x002e, code lost: r11 = 1; in method: kotlin.time.Duration.appendFractional-impl(long, java.lang.StringBuilder, int, int, int, java.lang.String, boolean):void, file: classes5.dex WARN : Code restructure failed: missing block: B:8:0x0031, code lost: if (r11 == 0) goto L12; in method: kotlin.time.Duration.appendFractional-impl(long, java.lang.StringBuilder, int, int, int, java.lang.String, boolean):void, file: classes5.dex WARN : Code restructure failed: missing block: B:9:0x0035, code lost: if (r6 >= 0) goto L24; in method: kotlin.time.Duration.appendFractional-impl(long, java.lang.StringBuilder, int, int, int, java.lang.String, boolean):void, file: classes5.dex WARN : Code restructure failed: missing block: B:13:0x0033, code lost: r7 = r10; in method: kotlin.time.Duration.appendFractional-impl(long, java.lang.StringBuilder, int, int, int, java.lang.String, boolean):void, file: classes5.dex WARN : Code restructure failed: missing block: B:14:0x0030, code lost: r11 = 0; in method: kotlin.time.Duration.appendFractional-impl(long, java.lang.StringBuilder, int, int, int, java.lang.String, boolean):void, file: classes5.dex WARN : Code restructure failed: missing block: B:15:0x0038, code lost: r7 = r7 + 1; in method: kotlin.time.Duration.appendFractional-impl(long, java.lang.StringBuilder, int, int, int, java.lang.String, boolean):void, file: classes5.dex WARN : Code restructure failed: missing block: B:16:0x003d, code lost: if (r20 != false) goto L18; in method: kotlin.time.Duration.appendFractional-impl(long, java.lang.StringBuilder, int, int, int, java.lang.String, boolean):void, file: classes5.dex WARN : Code restructure failed: missing block: B:17:0x003f, code lost: if (r7 >= 3) goto L18; in method: kotlin.time.Duration.appendFractional-impl(long, java.lang.StringBuilder, int, int, int, java.lang.String, boolean):void, file: classes5.dex WARN : Code restructure failed: missing block: B:18:0x0041, code lost: kotlin.jvm.internal.Intrinsics.checkNotNullExpressionValue(r15.append(r1, 0, r7), "this.append(value, startIndex, endIndex)"); in method: kotlin.time.Duration.appendFractional-impl(long, java.lang.StringBuilder, int, int, int, java.lang.String, boolean):void, file: classes5.dex WARN : Code restructure failed: missing block: B:22:0x004c, code lost: kotlin.jvm.internal.Intrinsics.checkNotNullExpressionValue(r15.append(r1, 0, ((r7 + 2) / 3) * 3), "this.append(value, startIndex, endIndex)"); in method: kotlin.time.Duration.appendFractional-impl(long, java.lang.StringBuilder, int, int, int, java.lang.String, boolean):void, file: classes5.dex
No response
1.5.0
+1 (i have same isssue here)
+1 I also have the same problem
Issue details
android kotlin suspend function
AndroidStudio decomile is like this.
before)$continuation).label) {
switch (((
jadx decompile is
Provide sample and class/method full name
No response
Jadx version
1.5.0