Don't generate private members in compatibility mode in DefaultImpls
This commit is contained in:
@@ -1691,7 +1691,7 @@ public class FunctionCodegen {
|
||||
return (kind != OwnerKind.DEFAULT_IMPLS && !isSyntheticInCompatibilityOrJvmDefault) ||
|
||||
(kind == OwnerKind.DEFAULT_IMPLS &&
|
||||
(isSyntheticInCompatibilityOrJvmDefault ||
|
||||
(mode.isCompatibility() && !JvmAnnotationUtilKt.hasJvmDefaultNoCompatibilityAnnotation(containingDeclaration))));
|
||||
(mode.isCompatibility() && !JvmAnnotationUtilKt.hasJvmDefaultNoCompatibilityAnnotation(containingDeclaration))) && !DescriptorVisibilities.isPrivate(memberDescriptor.getVisibility()));
|
||||
} else {
|
||||
switch (kind) {
|
||||
case DEFAULT_IMPLS: return true;
|
||||
|
||||
+8
-1
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.config.JvmDefaultMode
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.expressions.IrCall
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
@@ -150,7 +151,13 @@ internal class InterfaceLowering(val context: JvmBackendContext) : IrElementTran
|
||||
* 5) JVM default declaration is bridged in DefaultImpls via accessor if in compatibility mode, ...
|
||||
*/
|
||||
isCompatibilityMode -> {
|
||||
createJvmDefaultCompatibilityDelegate(function)
|
||||
val visibility =
|
||||
if (function.origin == IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER)
|
||||
context.mapping.defaultArgumentsOriginalFunction[function]!!.visibility
|
||||
else function.visibility
|
||||
if (!DescriptorVisibilities.isPrivate(visibility)) {
|
||||
createJvmDefaultCompatibilityDelegate(function)
|
||||
}
|
||||
}
|
||||
|
||||
// 6) ... otherwise we simply leave the default function implementation on the interface.
|
||||
|
||||
Vendored
-2
@@ -8,7 +8,6 @@ public final class Delegate {
|
||||
@kotlin.Metadata
|
||||
public final class Foo$DefaultImpls {
|
||||
// source: 'localDelegatedProperties.kt'
|
||||
private deprecated static @java.lang.Deprecated method test$lambda-0(p0: Delegate): java.lang.String
|
||||
public deprecated static @java.lang.Deprecated @org.jetbrains.annotations.NotNull method test(@org.jetbrains.annotations.NotNull p0: Foo): java.lang.String
|
||||
public final inner class Foo$DefaultImpls
|
||||
}
|
||||
@@ -19,7 +18,6 @@ public interface Foo {
|
||||
public synthetic final static field $$delegatedProperties: kotlin.reflect.KProperty[]
|
||||
static method <clinit>(): void
|
||||
public synthetic static method access$test$jd(p0: Foo): java.lang.String
|
||||
public synthetic static method access$test$lambda-0(p0: Delegate): java.lang.String
|
||||
private static method test$lambda-0(p0: Delegate): java.lang.String
|
||||
public @org.jetbrains.annotations.NotNull method test(): java.lang.String
|
||||
public final inner class Foo$DefaultImpls
|
||||
|
||||
-2
@@ -5,8 +5,6 @@
|
||||
// WITH_COROUTINES
|
||||
// WITH_RUNTIME
|
||||
|
||||
// IGNORE_BACKEND: JVM
|
||||
|
||||
import helpers.*
|
||||
import kotlin.coroutines.*
|
||||
import kotlin.coroutines.intrinsics.*
|
||||
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
@kotlin.Metadata
|
||||
public final class Foo$DefaultImpls {
|
||||
// source: 'privateFunWithDefaultArg2.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.Metadata
|
||||
public interface Foo {
|
||||
// source: 'privateFunWithDefaultArg2.kt'
|
||||
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 final inner class Foo$DefaultImpls
|
||||
}
|
||||
|
||||
@kotlin.Metadata
|
||||
public final class PrivateFunWithDefaultArg2Kt$box$1 {
|
||||
// source: 'privateFunWithDefaultArg2.kt'
|
||||
enclosing method PrivateFunWithDefaultArg2Kt.box()Ljava/lang/String;
|
||||
inner (anonymous) class PrivateFunWithDefaultArg2Kt$box$1
|
||||
method <init>(): void
|
||||
}
|
||||
|
||||
@kotlin.Metadata
|
||||
public final class PrivateFunWithDefaultArg2Kt {
|
||||
// source: 'privateFunWithDefaultArg2.kt'
|
||||
inner (anonymous) class PrivateFunWithDefaultArg2Kt$box$1
|
||||
public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String
|
||||
}
|
||||
Vendored
+31
@@ -0,0 +1,31 @@
|
||||
@kotlin.Metadata
|
||||
public final class Foo$DefaultImpls {
|
||||
// source: 'privateFunWithDefaultArg2.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.Metadata
|
||||
public interface Foo {
|
||||
// source: 'privateFunWithDefaultArg2.kt'
|
||||
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 final inner class Foo$DefaultImpls
|
||||
}
|
||||
|
||||
@kotlin.Metadata
|
||||
public final class PrivateFunWithDefaultArg2Kt$box$1 {
|
||||
// source: 'privateFunWithDefaultArg2.kt'
|
||||
enclosing method PrivateFunWithDefaultArg2Kt.box()Ljava/lang/String;
|
||||
inner (anonymous) class PrivateFunWithDefaultArg2Kt$box$1
|
||||
method <init>(): void
|
||||
}
|
||||
|
||||
@kotlin.Metadata
|
||||
public final class PrivateFunWithDefaultArg2Kt {
|
||||
// source: 'privateFunWithDefaultArg2.kt'
|
||||
inner (anonymous) class PrivateFunWithDefaultArg2Kt$box$1
|
||||
public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String
|
||||
}
|
||||
Vendored
-6
@@ -1,12 +1,7 @@
|
||||
@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
|
||||
}
|
||||
|
||||
@@ -32,7 +27,6 @@ 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
|
||||
|
||||
Reference in New Issue
Block a user