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) ||
|
return (kind != OwnerKind.DEFAULT_IMPLS && !isSyntheticInCompatibilityOrJvmDefault) ||
|
||||||
(kind == OwnerKind.DEFAULT_IMPLS &&
|
(kind == OwnerKind.DEFAULT_IMPLS &&
|
||||||
(isSyntheticInCompatibilityOrJvmDefault ||
|
(isSyntheticInCompatibilityOrJvmDefault ||
|
||||||
(mode.isCompatibility() && !JvmAnnotationUtilKt.hasJvmDefaultNoCompatibilityAnnotation(containingDeclaration))));
|
(mode.isCompatibility() && !JvmAnnotationUtilKt.hasJvmDefaultNoCompatibilityAnnotation(containingDeclaration))) && !DescriptorVisibilities.isPrivate(memberDescriptor.getVisibility()));
|
||||||
} else {
|
} else {
|
||||||
switch (kind) {
|
switch (kind) {
|
||||||
case DEFAULT_IMPLS: return true;
|
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.ClassKind
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
|
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
|
||||||
|
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrCall
|
import org.jetbrains.kotlin.ir.expressions.IrCall
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
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, ...
|
* 5) JVM default declaration is bridged in DefaultImpls via accessor if in compatibility mode, ...
|
||||||
*/
|
*/
|
||||||
isCompatibilityMode -> {
|
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.
|
// 6) ... otherwise we simply leave the default function implementation on the interface.
|
||||||
|
|||||||
Vendored
-2
@@ -8,7 +8,6 @@ public final class Delegate {
|
|||||||
@kotlin.Metadata
|
@kotlin.Metadata
|
||||||
public final class Foo$DefaultImpls {
|
public final class Foo$DefaultImpls {
|
||||||
// source: 'localDelegatedProperties.kt'
|
// 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 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
|
public final inner class Foo$DefaultImpls
|
||||||
}
|
}
|
||||||
@@ -19,7 +18,6 @@ public interface Foo {
|
|||||||
public synthetic final static field $$delegatedProperties: kotlin.reflect.KProperty[]
|
public synthetic final static field $$delegatedProperties: kotlin.reflect.KProperty[]
|
||||||
static method <clinit>(): void
|
static method <clinit>(): void
|
||||||
public synthetic static method access$test$jd(p0: Foo): java.lang.String
|
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
|
private static method test$lambda-0(p0: Delegate): java.lang.String
|
||||||
public @org.jetbrains.annotations.NotNull method test(): java.lang.String
|
public @org.jetbrains.annotations.NotNull method test(): java.lang.String
|
||||||
public final inner class Foo$DefaultImpls
|
public final inner class Foo$DefaultImpls
|
||||||
|
|||||||
-2
@@ -5,8 +5,6 @@
|
|||||||
// WITH_COROUTINES
|
// WITH_COROUTINES
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
// IGNORE_BACKEND: JVM
|
|
||||||
|
|
||||||
import helpers.*
|
import helpers.*
|
||||||
import kotlin.coroutines.*
|
import kotlin.coroutines.*
|
||||||
import kotlin.coroutines.intrinsics.*
|
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
|
@kotlin.Metadata
|
||||||
public final class Foo$DefaultImpls {
|
public final class Foo$DefaultImpls {
|
||||||
// source: 'privateFunWithDefaultArg.kt'
|
// 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 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
|
public final inner class Foo$DefaultImpls
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,7 +27,6 @@ public interface Foo {
|
|||||||
// source: 'privateFunWithDefaultArg.kt'
|
// source: 'privateFunWithDefaultArg.kt'
|
||||||
inner (anonymous) class Foo$bar$1
|
inner (anonymous) class Foo$bar$1
|
||||||
public synthetic static method access$bar$jd(p0: Foo): java.lang.String
|
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 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 @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
|
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