Deprecated flag for static non-JvmField and non-const properties

This commit is contained in:
Michael Bogdanov
2015-10-12 16:41:56 +03:00
parent 275f3f8954
commit 0209cd080e
19 changed files with 33 additions and 18 deletions
@@ -56,8 +56,7 @@ import java.util.List;
import static org.jetbrains.kotlin.codegen.AsmUtil.*;
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.*;
import static org.jetbrains.kotlin.resolve.jvm.AsmTypes.PROPERTY_METADATA_TYPE;
import static org.jetbrains.kotlin.resolve.jvm.annotations.AnnotationUtilKt.hasJvmFieldAnnotation;
import static org.jetbrains.kotlin.resolve.jvm.diagnostics.DiagnosticsPackage.OtherOrigin;
@@ -327,6 +326,13 @@ public class PropertyCodegen {
backingFieldContext = codegen.context;
v.getSerializationBindings().put(STATIC_FIELD_IN_OUTER_CLASS, propertyDescriptor);
}
if (isObject(propertyDescriptor.getContainingDeclaration()) &&
!hasJvmFieldAnnotation &&
!propertyDescriptor.isConst() &&
(modifiers & ACC_PRIVATE) == 0) {
modifiers |= ACC_DEPRECATED;
}
}
else if (takeVisibilityFromDescriptor) {
modifiers |= getVisibilityAccessFlag(propertyDescriptor);
@@ -1,4 +1,7 @@
public final class ClassObjectField {
/**
* @deprecated
*/
@org.jetbrains.annotations.Nullable
public static final java.lang.String x = "";
private static final java.lang.String y = "";
@@ -1,5 +1,11 @@
public final class A {
/**
* @deprecated
*/
public static final int c = 1;
/**
* @deprecated
*/
@org.jetbrains.annotations.NotNull
public static java.lang.String v;
public static final pack.A INSTANCE;
@@ -6,7 +6,7 @@ class Test {
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test, prop
// FLAGS: ACC_STATIC, ACC_PUBLIC
// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_DEPRECATED
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test$Companion, prop
@@ -6,7 +6,7 @@ class Test {
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test, prop
// FLAGS: ACC_STATIC, ACC_PUBLIC
// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_DEPRECATED
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test$Companion, prop
@@ -6,7 +6,7 @@ class Test {
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test, prop
// FLAGS: ACC_STATIC, ACC_PROTECTED, ACC_FINAL
// FLAGS: ACC_STATIC, ACC_PROTECTED, ACC_FINAL, ACC_DEPRECATED
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test$Companion, prop
@@ -6,7 +6,7 @@ class Test {
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test, prop
// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_FINAL
// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_FINAL, ACC_DEPRECATED
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test$Companion, prop
@@ -6,7 +6,7 @@ class Test {
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test, prop
// FLAGS: ACC_STATIC, ACC_PUBLIC
// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_DEPRECATED
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test$Companion, prop
@@ -7,7 +7,7 @@ class Test {
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test, prop
// FLAGS: ACC_STATIC, ACC_PROTECTED
// FLAGS: ACC_STATIC, ACC_PROTECTED, ACC_DEPRECATED
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test$Companion, prop
@@ -7,7 +7,7 @@ class Test {
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test, prop
// FLAGS: ACC_STATIC, ACC_PUBLIC
// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_DEPRECATED
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test$Companion, prop
@@ -13,4 +13,4 @@ class Test(val prop: String) {
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test, prop
// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_FINAL
// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_FINAL, ACC_DEPRECATED
@@ -13,4 +13,4 @@ class Test {
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test, prop
// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_FINAL
// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_FINAL, ACC_DEPRECATED
@@ -10,4 +10,4 @@ interface Test {
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test$Companion, prop
// FLAGS: ACC_PUBLIC, ACC_FINAL, ACC_STATIC
// FLAGS: ACC_PUBLIC, ACC_FINAL, ACC_STATIC, ACC_DEPRECATED
@@ -10,4 +10,4 @@ interface Test {
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test$Companion, prop
// FLAGS: ACC_PUBLIC, ACC_STATIC
// FLAGS: ACC_PUBLIC, ACC_STATIC, ACC_DEPRECATED
@@ -10,4 +10,4 @@ interface Test {
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test$Companion, prop
// FLAGS: ACC_PROTECTED, ACC_FINAL, ACC_STATIC
// FLAGS: ACC_PROTECTED, ACC_FINAL, ACC_STATIC, ACC_DEPRECATED
@@ -10,4 +10,4 @@ interface Test {
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test$Companion, prop
// FLAGS: ACC_PUBLIC, ACC_FINAL, ACC_STATIC
// FLAGS: ACC_PUBLIC, ACC_FINAL, ACC_STATIC, ACC_DEPRECATED
@@ -10,4 +10,4 @@ interface Test {
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test$Companion, prop
// FLAGS: ACC_PUBLIC, ACC_STATIC
// FLAGS: ACC_PUBLIC, ACC_STATIC, ACC_DEPRECATED
@@ -11,4 +11,4 @@ interface Test {
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test$Companion, prop
// FLAGS: ACC_PROTECTED, ACC_STATIC
// FLAGS: ACC_PROTECTED, ACC_STATIC, ACC_DEPRECATED
@@ -11,4 +11,4 @@ interface Test {
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: Test$Companion, prop
// FLAGS: ACC_PUBLIC, ACC_STATIC
// FLAGS: ACC_PUBLIC, ACC_STATIC, ACC_DEPRECATED