Make private inline suspend functions effectively inline-only
This commit is contained in:
@@ -18,6 +18,8 @@ suspend inline fun shouldNotHaveSuffix() {}
|
|||||||
|
|
||||||
suspend inline fun acceptsCrossinline(crossinline c: () -> Unit) {}
|
suspend inline fun acceptsCrossinline(crossinline c: () -> Unit) {}
|
||||||
|
|
||||||
|
private suspend inline fun privateInline() {}
|
||||||
|
|
||||||
class Foo {
|
class Foo {
|
||||||
suspend inline fun simple() {}
|
suspend inline fun simple() {}
|
||||||
|
|
||||||
@@ -36,4 +38,6 @@ class Foo {
|
|||||||
suspend inline fun shouldNotHaveSuffix() {}
|
suspend inline fun shouldNotHaveSuffix() {}
|
||||||
|
|
||||||
suspend inline fun acceptsCrossinline(crossinline c: () -> Unit) {}
|
suspend inline fun acceptsCrossinline(crossinline c: () -> Unit) {}
|
||||||
|
|
||||||
|
private suspend inline fun privateInline() {}
|
||||||
}
|
}
|
||||||
@@ -8,6 +8,7 @@ public final class Foo {
|
|||||||
public final @org.jetbrains.annotations.Nullable method generic(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
public final @org.jetbrains.annotations.Nullable method generic(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
||||||
private final method genericWithReified(p0: java.lang.Object, p1: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
private final method genericWithReified(p0: java.lang.Object, p1: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
||||||
private final method genericWithReified(p0: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
private final method genericWithReified(p0: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
||||||
|
private synthetic final method privateInline(p0: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
||||||
private final @kotlin.internal.InlineOnly method shouldNotHaveSuffix(p0: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
private final @kotlin.internal.InlineOnly method shouldNotHaveSuffix(p0: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
||||||
private final @org.jetbrains.annotations.Nullable method simple$$forInline(@org.jetbrains.annotations.NotNull p0: kotlin.Unit, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
private final @org.jetbrains.annotations.Nullable method simple$$forInline(@org.jetbrains.annotations.NotNull p0: kotlin.Unit, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
||||||
private final @org.jetbrains.annotations.Nullable method simple$$forInline(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
private final @org.jetbrains.annotations.Nullable method simple$$forInline(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
||||||
@@ -24,6 +25,7 @@ public final class SimpleNamedKt {
|
|||||||
public final static @org.jetbrains.annotations.Nullable method generic(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
public final static @org.jetbrains.annotations.Nullable method generic(p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
||||||
private final static method genericWithReified(p0: java.lang.Object, p1: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
private final static method genericWithReified(p0: java.lang.Object, p1: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
||||||
private final static method genericWithReified(p0: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
private final static method genericWithReified(p0: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
||||||
|
private synthetic final static method privateInline(p0: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
||||||
private final static @kotlin.internal.InlineOnly method shouldNotHaveSuffix(p0: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
private final static @kotlin.internal.InlineOnly method shouldNotHaveSuffix(p0: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
||||||
private final static @org.jetbrains.annotations.Nullable method simple$$forInline(@org.jetbrains.annotations.NotNull p0: kotlin.Unit, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
private final static @org.jetbrains.annotations.Nullable method simple$$forInline(@org.jetbrains.annotations.NotNull p0: kotlin.Unit, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
||||||
private final static @org.jetbrains.annotations.Nullable method simple$$forInline(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
private final static @org.jetbrains.annotations.Nullable method simple$$forInline(@org.jetbrains.annotations.NotNull p0: kotlin.coroutines.experimental.Continuation): java.lang.Object
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
|||||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.MemberDescriptor
|
import org.jetbrains.kotlin.descriptors.MemberDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -73,7 +74,8 @@ fun MemberDescriptor.isInlineOnlyOrReifiable(): Boolean =
|
|||||||
this is CallableMemberDescriptor && (isReifiable() || DescriptorUtils.getDirectMember(this).isReifiable() || isInlineOnly())
|
this is CallableMemberDescriptor && (isReifiable() || DescriptorUtils.getDirectMember(this).isReifiable() || isInlineOnly())
|
||||||
|
|
||||||
fun MemberDescriptor.isEffectivelyInlineOnly(): Boolean =
|
fun MemberDescriptor.isEffectivelyInlineOnly(): Boolean =
|
||||||
isInlineOnlyOrReifiable() || (this is FunctionDescriptor && this.isSuspend && this.valueParameters.any { it.isCrossinline })
|
isInlineOnlyOrReifiable() || (this is FunctionDescriptor && isSuspend && isInline &&
|
||||||
|
(valueParameters.any { it.isCrossinline } || visibility == Visibilities.PRIVATE))
|
||||||
|
|
||||||
fun MemberDescriptor.isInlineOnly(): Boolean {
|
fun MemberDescriptor.isInlineOnly(): Boolean {
|
||||||
if (this !is FunctionDescriptor ||
|
if (this !is FunctionDescriptor ||
|
||||||
|
|||||||
Reference in New Issue
Block a user