Copy to interface just companion object public const properties
This commit is contained in:
@@ -758,14 +758,8 @@ public class AsmUtil {
|
||||
}
|
||||
|
||||
public static int getVisibilityForSpecialPropertyBackingField(@NotNull PropertyDescriptor propertyDescriptor, boolean isDelegate) {
|
||||
return getVisibilityForSpecialPropertyBackingField(propertyDescriptor, isDelegate, false);
|
||||
}
|
||||
|
||||
public static int getVisibilityForSpecialPropertyBackingField(@NotNull PropertyDescriptor propertyDescriptor, boolean isDelegate, boolean skipInterfaceCheck) {
|
||||
boolean isExtensionProperty = propertyDescriptor.getExtensionReceiverParameter() != null;
|
||||
if (isDelegate ||
|
||||
isExtensionProperty ||
|
||||
(!skipInterfaceCheck && isInterfaceCompanionObject(propertyDescriptor.getContainingDeclaration()))) {
|
||||
if (isDelegate || isExtensionProperty) {
|
||||
return ACC_PRIVATE;
|
||||
}
|
||||
else {
|
||||
@@ -785,13 +779,10 @@ public class AsmUtil {
|
||||
}
|
||||
|
||||
public static boolean isPropertyWithBackingFieldCopyInOuterClass(@NotNull PropertyDescriptor propertyDescriptor) {
|
||||
boolean isExtensionProperty = propertyDescriptor.getExtensionReceiverParameter() != null;
|
||||
DeclarationDescriptor propertyContainer = propertyDescriptor.getContainingDeclaration();
|
||||
return !propertyDescriptor.isVar()
|
||||
&& !isExtensionProperty
|
||||
&& isCompanionObject(propertyContainer) && isInterface(propertyContainer.getContainingDeclaration())
|
||||
&& areBothAccessorDefault(propertyDescriptor)
|
||||
&& getVisibilityForSpecialPropertyBackingField(propertyDescriptor, false, true) == ACC_PUBLIC;
|
||||
return propertyDescriptor.isConst()
|
||||
&& isInterfaceCompanionObject(propertyContainer)
|
||||
&& propertyDescriptor.getVisibility() == Visibilities.PUBLIC;
|
||||
}
|
||||
|
||||
public static boolean isCompanionObjectWithBackingFieldsInOuter(@NotNull DeclarationDescriptor companionObject) {
|
||||
|
||||
@@ -59,6 +59,7 @@ import static org.jetbrains.kotlin.codegen.JvmCodegenUtil.isJvmInterface;
|
||||
import static org.jetbrains.kotlin.codegen.serialization.JvmSerializationBindings.*;
|
||||
import static org.jetbrains.kotlin.resolve.DescriptorUtils.isCompanionObject;
|
||||
import static org.jetbrains.kotlin.resolve.DescriptorUtils.isInterface;
|
||||
import static org.jetbrains.kotlin.resolve.DescriptorUtils.isInterfaceCompanionObject;
|
||||
import static org.jetbrains.kotlin.resolve.jvm.AsmTypes.PROPERTY_METADATA_TYPE;
|
||||
import static org.jetbrains.kotlin.resolve.jvm.diagnostics.DiagnosticsPackage.OtherOrigin;
|
||||
import static org.jetbrains.org.objectweb.asm.Opcodes.*;
|
||||
@@ -315,7 +316,9 @@ public class PropertyCodegen {
|
||||
else if (hasPublicFieldAnnotation && !isDelegate) {
|
||||
modifiers |= ACC_PUBLIC;
|
||||
}
|
||||
else {
|
||||
else if (isInterfaceCompanionObject(propertyDescriptor.getContainingDeclaration())) {
|
||||
modifiers |= ACC_PRIVATE;
|
||||
} else {
|
||||
modifiers |= getVisibilityForSpecialPropertyBackingField(propertyDescriptor, isDelegate);
|
||||
}
|
||||
|
||||
|
||||
@@ -66,14 +66,14 @@ public class GenerationState @JvmOverloads constructor(
|
||||
public val incrementalCompilationComponents: IncrementalCompilationComponents? = null,
|
||||
public val progress: Progress = Progress.DEAF
|
||||
) {
|
||||
public interface GenerateClassFilter {
|
||||
public fun shouldAnnotateClass(classOrObject: JetClassOrObject): Boolean
|
||||
public fun shouldGenerateClass(classOrObject: JetClassOrObject): Boolean
|
||||
public fun shouldGeneratePackagePart(jetFile: JetFile): Boolean
|
||||
public fun shouldGenerateScript(script: JetScript): Boolean
|
||||
public abstract class GenerateClassFilter {
|
||||
public abstract fun shouldAnnotateClass(classOrObject: JetClassOrObject): Boolean
|
||||
public abstract fun shouldGenerateClass(classOrObject: JetClassOrObject): Boolean
|
||||
public abstract fun shouldGeneratePackagePart(jetFile: JetFile): Boolean
|
||||
public abstract fun shouldGenerateScript(script: JetScript): Boolean
|
||||
|
||||
companion object {
|
||||
public val GENERATE_ALL: GenerateClassFilter = object : GenerateClassFilter {
|
||||
public val GENERATE_ALL: GenerateClassFilter = object : GenerateClassFilter() {
|
||||
override fun shouldAnnotateClass(classOrObject: JetClassOrObject): Boolean = true
|
||||
|
||||
override fun shouldGenerateClass(classOrObject: JetClassOrObject): Boolean = true
|
||||
|
||||
Reference in New Issue
Block a user