Generate stubs for private function with default arguments as public in interfaces

This commit is contained in:
Mikhael Bogdanov
2021-03-09 07:12:10 +01:00
committed by Space
parent 7edbf79b4b
commit f648d86d2b
13 changed files with 371 additions and 4 deletions
@@ -0,0 +1,40 @@
// CHECK_BYTECODE_LISTING
// !JVM_DEFAULT_MODE: all-compatibility
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_COROUTINES
// WITH_RUNTIME
// IGNORE_BACKEND: JVM
import helpers.*
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
fun builder(c: suspend () -> Unit) {
c.startCoroutine(EmptyContinuation)
}
interface Foo {
fun bar(): String {
var result = "fail"
builder {
result = fooSuspend()
}
return foo() + result
}
private fun foo(s: String = "O"): String {
return s
}
private suspend fun fooSuspend(s: String = "K"): String {
return s
}
}
fun box(): String {
return object : Foo {}.bar()
}
@@ -0,0 +1,51 @@
@kotlin.Metadata
public final class Foo$DefaultImpls {
// source: 'privateFunWithDefaultArg.kt'
public deprecated static @java.lang.Deprecated @org.jetbrains.annotations.NotNull method bar(@org.jetbrains.annotations.NotNull p0: Foo): java.lang.String
public final inner class Foo$DefaultImpls
}
@kotlin.coroutines.jvm.internal.DebugMetadata
@kotlin.Metadata
final class Foo$bar$1 {
// source: 'privateFunWithDefaultArg.kt'
enclosing method Foo.bar()Ljava/lang/String;
synthetic final field $result: kotlin.jvm.internal.Ref$ObjectRef
field L$0: java.lang.Object
field label: int
synthetic final field this$0: Foo
inner (anonymous) class Foo$bar$1
method <init>(p0: Foo, p1: kotlin.jvm.internal.Ref$ObjectRef, 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 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
}
@kotlin.Metadata
public interface Foo {
// source: 'privateFunWithDefaultArg.kt'
inner (anonymous) class Foo$bar$1
public synthetic static method access$bar$jd(p0: Foo): java.lang.String
public @org.jetbrains.annotations.NotNull method bar(): java.lang.String
public synthetic static method foo$default(p0: Foo, p1: java.lang.String, p2: int, p3: java.lang.Object): java.lang.String
private method foo(p0: java.lang.String): java.lang.String
public synthetic static method fooSuspend$default(p0: Foo, p1: java.lang.String, p2: kotlin.coroutines.Continuation, p3: int, p4: java.lang.Object): java.lang.Object
private method fooSuspend(p0: java.lang.String, p1: kotlin.coroutines.Continuation): java.lang.Object
public final inner class Foo$DefaultImpls
}
@kotlin.Metadata
public final class PrivateFunWithDefaultArgKt$box$1 {
// source: 'privateFunWithDefaultArg.kt'
enclosing method PrivateFunWithDefaultArgKt.box()Ljava/lang/String;
inner (anonymous) class PrivateFunWithDefaultArgKt$box$1
method <init>(): void
}
@kotlin.Metadata
public final class PrivateFunWithDefaultArgKt {
// source: 'privateFunWithDefaultArg.kt'
inner (anonymous) class PrivateFunWithDefaultArgKt$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.Function1): void
}
@@ -0,0 +1,22 @@
// CHECK_BYTECODE_LISTING
// !JVM_DEFAULT_MODE: all-compatibility
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_COROUTINES
// WITH_RUNTIME
interface Foo {
fun bar(): String {
return foo()
}
private fun foo(s: String = "OK"): String {
return s
}
}
fun box(): String {
return object : Foo {}.bar()
}
@@ -0,0 +1,59 @@
@kotlin.Metadata
public final class Foo$DefaultImpls {
// source: 'privateFunWithDefaultArg.kt'
public synthetic final static method access$fooSuspend(p0: Foo, p1: java.lang.String, p2: kotlin.coroutines.Continuation): java.lang.Object
public deprecated static @java.lang.Deprecated @org.jetbrains.annotations.NotNull method bar(@org.jetbrains.annotations.NotNull p0: Foo): java.lang.String
public synthetic static method foo$default(p0: Foo, p1: java.lang.String, p2: int, p3: java.lang.Object): java.lang.String
private deprecated static @java.lang.Deprecated method foo(p0: Foo, p1: java.lang.String): java.lang.String
public synthetic static method fooSuspend$default(p0: Foo, p1: java.lang.String, p2: kotlin.coroutines.Continuation, p3: int, p4: java.lang.Object): java.lang.Object
private deprecated static @java.lang.Deprecated method fooSuspend(p0: Foo, p1: java.lang.String, p2: kotlin.coroutines.Continuation): java.lang.Object
public final inner class Foo$DefaultImpls
}
@kotlin.coroutines.jvm.internal.DebugMetadata
@kotlin.Metadata
final class Foo$bar$1 {
// source: 'privateFunWithDefaultArg.kt'
enclosing method Foo.bar()Ljava/lang/String;
synthetic final field $result: kotlin.jvm.internal.Ref$ObjectRef
field L$0: java.lang.Object
field label: int
synthetic final field this$0: Foo
inner (anonymous) class Foo$bar$1
method <init>(p0: kotlin.jvm.internal.Ref$ObjectRef, p1: Foo, 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.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
}
@kotlin.Metadata
public interface Foo {
// source: 'privateFunWithDefaultArg.kt'
inner (anonymous) class Foo$bar$1
public synthetic static method access$bar$jd(p0: Foo): java.lang.String
public synthetic static method access$foo(p0: Foo, p1: java.lang.String): java.lang.String
public synthetic static method access$fooSuspend(p0: Foo, p1: java.lang.String, p2: kotlin.coroutines.Continuation): java.lang.Object
public @org.jetbrains.annotations.NotNull method bar(): java.lang.String
public synthetic static method foo$default(p0: Foo, p1: java.lang.String, p2: int, p3: java.lang.Object): java.lang.String
private method foo(p0: java.lang.String): java.lang.String
public synthetic static method fooSuspend$default(p0: Foo, p1: java.lang.String, p2: kotlin.coroutines.Continuation, p3: int, p4: java.lang.Object): java.lang.Object
private method fooSuspend(p0: java.lang.String, p1: kotlin.coroutines.Continuation): java.lang.Object
public final inner class Foo$DefaultImpls
}
@kotlin.Metadata
public final class PrivateFunWithDefaultArgKt$box$1 {
// source: 'privateFunWithDefaultArg.kt'
enclosing method PrivateFunWithDefaultArgKt.box()Ljava/lang/String;
inner (anonymous) class PrivateFunWithDefaultArgKt$box$1
method <init>(): void
}
@kotlin.Metadata
public final class PrivateFunWithDefaultArgKt {
// source: 'privateFunWithDefaultArg.kt'
inner (anonymous) class PrivateFunWithDefaultArgKt$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.Function1): void
}
@@ -0,0 +1,37 @@
// CHECK_BYTECODE_LISTING
// !JVM_DEFAULT_MODE: all
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_COROUTINES
// WITH_RUNTIME
import helpers.*
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
fun builder(c: suspend () -> Unit) {
c.startCoroutine(EmptyContinuation)
}
interface Foo {
fun bar(): String {
var result = "fail"
builder {
result = fooSuspend()
}
return foo() + result
}
private fun foo(s: String = "O"): String {
return s
}
private suspend fun fooSuspend(s: String = "K"): String {
return s
}
}
fun box(): String {
return object : Foo {}.bar()
}
@@ -0,0 +1,42 @@
@kotlin.coroutines.jvm.internal.DebugMetadata
@kotlin.Metadata
final class Foo$bar$1 {
// source: 'privateFunWithDefaultArg.kt'
enclosing method Foo.bar()Ljava/lang/String;
synthetic final field $result: kotlin.jvm.internal.Ref$ObjectRef
field L$0: java.lang.Object
field label: int
synthetic final field this$0: Foo
inner (anonymous) class Foo$bar$1
method <init>(p0: Foo, p1: kotlin.jvm.internal.Ref$ObjectRef, 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 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
}
@kotlin.Metadata
public interface Foo {
// source: 'privateFunWithDefaultArg.kt'
inner (anonymous) class Foo$bar$1
public @org.jetbrains.annotations.NotNull method bar(): java.lang.String
public synthetic static method foo$default(p0: Foo, p1: java.lang.String, p2: int, p3: java.lang.Object): java.lang.String
private method foo(p0: java.lang.String): java.lang.String
public synthetic static method fooSuspend$default(p0: Foo, p1: java.lang.String, p2: kotlin.coroutines.Continuation, p3: int, p4: java.lang.Object): java.lang.Object
private method fooSuspend(p0: java.lang.String, p1: kotlin.coroutines.Continuation): java.lang.Object
}
@kotlin.Metadata
public final class PrivateFunWithDefaultArgKt$box$1 {
// source: 'privateFunWithDefaultArg.kt'
enclosing method PrivateFunWithDefaultArgKt.box()Ljava/lang/String;
inner (anonymous) class PrivateFunWithDefaultArgKt$box$1
method <init>(): void
}
@kotlin.Metadata
public final class PrivateFunWithDefaultArgKt {
// source: 'privateFunWithDefaultArg.kt'
inner (anonymous) class PrivateFunWithDefaultArgKt$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.Function1): void
}
@@ -0,0 +1,44 @@
@kotlin.coroutines.jvm.internal.DebugMetadata
@kotlin.Metadata
final class Foo$bar$1 {
// source: 'privateFunWithDefaultArg.kt'
enclosing method Foo.bar()Ljava/lang/String;
synthetic final field $result: kotlin.jvm.internal.Ref$ObjectRef
field L$0: java.lang.Object
field label: int
synthetic final field this$0: Foo
inner (anonymous) class Foo$bar$1
method <init>(p0: kotlin.jvm.internal.Ref$ObjectRef, p1: Foo, 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.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
}
@kotlin.Metadata
public interface Foo {
// source: 'privateFunWithDefaultArg.kt'
inner (anonymous) class Foo$bar$1
public synthetic static method access$fooSuspend(p0: Foo, p1: java.lang.String, p2: kotlin.coroutines.Continuation): java.lang.Object
public @org.jetbrains.annotations.NotNull method bar(): java.lang.String
public synthetic static method foo$default(p0: Foo, p1: java.lang.String, p2: int, p3: java.lang.Object): java.lang.String
private method foo(p0: java.lang.String): java.lang.String
public synthetic static method fooSuspend$default(p0: Foo, p1: java.lang.String, p2: kotlin.coroutines.Continuation, p3: int, p4: java.lang.Object): java.lang.Object
private method fooSuspend(p0: java.lang.String, p1: kotlin.coroutines.Continuation): java.lang.Object
}
@kotlin.Metadata
public final class PrivateFunWithDefaultArgKt$box$1 {
// source: 'privateFunWithDefaultArg.kt'
enclosing method PrivateFunWithDefaultArgKt.box()Ljava/lang/String;
inner (anonymous) class PrivateFunWithDefaultArgKt$box$1
method <init>(): void
}
@kotlin.Metadata
public final class PrivateFunWithDefaultArgKt {
// source: 'privateFunWithDefaultArg.kt'
inner (anonymous) class PrivateFunWithDefaultArgKt$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.Function1): void
}