diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java index 435fc7b1966..2957f70c7e4 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java @@ -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); diff --git a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/ClassObjectField.java b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/ClassObjectField.java index 0a059e798ce..c7d173c0486 100644 --- a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/ClassObjectField.java +++ b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/ClassObjectField.java @@ -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 = ""; diff --git a/compiler/testData/asJava/lightClasses/object/SimpleObject.java b/compiler/testData/asJava/lightClasses/object/SimpleObject.java index 2f906f6095c..044f065a080 100644 --- a/compiler/testData/asJava/lightClasses/object/SimpleObject.java +++ b/compiler/testData/asJava/lightClasses/object/SimpleObject.java @@ -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; diff --git a/compiler/testData/writeFlags/property/classObject/class/internalVal.kt b/compiler/testData/writeFlags/property/classObject/class/internalVal.kt index e82c7ae752f..99088d49b67 100644 --- a/compiler/testData/writeFlags/property/classObject/class/internalVal.kt +++ b/compiler/testData/writeFlags/property/classObject/class/internalVal.kt @@ -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 diff --git a/compiler/testData/writeFlags/property/classObject/class/internalVar.kt b/compiler/testData/writeFlags/property/classObject/class/internalVar.kt index e82c7ae752f..99088d49b67 100644 --- a/compiler/testData/writeFlags/property/classObject/class/internalVar.kt +++ b/compiler/testData/writeFlags/property/classObject/class/internalVar.kt @@ -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 diff --git a/compiler/testData/writeFlags/property/classObject/class/protectedVal.kt b/compiler/testData/writeFlags/property/classObject/class/protectedVal.kt index 273672263a7..31bce454f4a 100644 --- a/compiler/testData/writeFlags/property/classObject/class/protectedVal.kt +++ b/compiler/testData/writeFlags/property/classObject/class/protectedVal.kt @@ -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 diff --git a/compiler/testData/writeFlags/property/classObject/class/publicVal.kt b/compiler/testData/writeFlags/property/classObject/class/publicVal.kt index aa800315716..ef54565dfb9 100644 --- a/compiler/testData/writeFlags/property/classObject/class/publicVal.kt +++ b/compiler/testData/writeFlags/property/classObject/class/publicVal.kt @@ -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 diff --git a/compiler/testData/writeFlags/property/classObject/class/publicVar.kt b/compiler/testData/writeFlags/property/classObject/class/publicVar.kt index 24875986f47..d7cb29ff46b 100644 --- a/compiler/testData/writeFlags/property/classObject/class/publicVar.kt +++ b/compiler/testData/writeFlags/property/classObject/class/publicVar.kt @@ -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 diff --git a/compiler/testData/writeFlags/property/classObject/class/publicVarProtectedSet.kt b/compiler/testData/writeFlags/property/classObject/class/publicVarProtectedSet.kt index d15356aa56b..1ae68924d88 100644 --- a/compiler/testData/writeFlags/property/classObject/class/publicVarProtectedSet.kt +++ b/compiler/testData/writeFlags/property/classObject/class/publicVarProtectedSet.kt @@ -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 diff --git a/compiler/testData/writeFlags/property/classObject/class/publicVarPublicSet.kt b/compiler/testData/writeFlags/property/classObject/class/publicVarPublicSet.kt index 0c97bb5b99d..fe4ccecdddb 100644 --- a/compiler/testData/writeFlags/property/classObject/class/publicVarPublicSet.kt +++ b/compiler/testData/writeFlags/property/classObject/class/publicVarPublicSet.kt @@ -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 diff --git a/compiler/testData/writeFlags/property/classObject/rename/constructorAndClassObject.kt b/compiler/testData/writeFlags/property/classObject/rename/constructorAndClassObject.kt index 432f20b1c24..a02b2021b84 100644 --- a/compiler/testData/writeFlags/property/classObject/rename/constructorAndClassObject.kt +++ b/compiler/testData/writeFlags/property/classObject/rename/constructorAndClassObject.kt @@ -13,4 +13,4 @@ class Test(val prop: String) { // TESTED_OBJECT_KIND: property // TESTED_OBJECTS: Test, prop -// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_FINAL \ No newline at end of file +// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_FINAL, ACC_DEPRECATED \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/rename/propertyAndProperty.kt b/compiler/testData/writeFlags/property/classObject/rename/propertyAndProperty.kt index b0da149404d..2616341a963 100644 --- a/compiler/testData/writeFlags/property/classObject/rename/propertyAndProperty.kt +++ b/compiler/testData/writeFlags/property/classObject/rename/propertyAndProperty.kt @@ -13,4 +13,4 @@ class Test { // TESTED_OBJECT_KIND: property // TESTED_OBJECTS: Test, prop -// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_FINAL \ No newline at end of file +// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_FINAL, ACC_DEPRECATED \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/trait/internalVal.kt b/compiler/testData/writeFlags/property/classObject/trait/internalVal.kt index 360719695e2..6244d1be04c 100644 --- a/compiler/testData/writeFlags/property/classObject/trait/internalVal.kt +++ b/compiler/testData/writeFlags/property/classObject/trait/internalVal.kt @@ -10,4 +10,4 @@ interface Test { // TESTED_OBJECT_KIND: property // TESTED_OBJECTS: Test$Companion, prop -// FLAGS: ACC_PUBLIC, ACC_FINAL, ACC_STATIC \ No newline at end of file +// FLAGS: ACC_PUBLIC, ACC_FINAL, ACC_STATIC, ACC_DEPRECATED \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/trait/internalVar.kt b/compiler/testData/writeFlags/property/classObject/trait/internalVar.kt index c0a8c0c13f6..f5920ab055c 100644 --- a/compiler/testData/writeFlags/property/classObject/trait/internalVar.kt +++ b/compiler/testData/writeFlags/property/classObject/trait/internalVar.kt @@ -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 diff --git a/compiler/testData/writeFlags/property/classObject/trait/protectedVal.kt b/compiler/testData/writeFlags/property/classObject/trait/protectedVal.kt index eeca12aecd0..31063e96bfb 100644 --- a/compiler/testData/writeFlags/property/classObject/trait/protectedVal.kt +++ b/compiler/testData/writeFlags/property/classObject/trait/protectedVal.kt @@ -10,4 +10,4 @@ interface Test { // TESTED_OBJECT_KIND: property // TESTED_OBJECTS: Test$Companion, prop -// FLAGS: ACC_PROTECTED, ACC_FINAL, ACC_STATIC \ No newline at end of file +// FLAGS: ACC_PROTECTED, ACC_FINAL, ACC_STATIC, ACC_DEPRECATED \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/trait/publicVal.kt b/compiler/testData/writeFlags/property/classObject/trait/publicVal.kt index 540b75877b1..98ca9fbab70 100644 --- a/compiler/testData/writeFlags/property/classObject/trait/publicVal.kt +++ b/compiler/testData/writeFlags/property/classObject/trait/publicVal.kt @@ -10,4 +10,4 @@ interface Test { // TESTED_OBJECT_KIND: property // TESTED_OBJECTS: Test$Companion, prop -// FLAGS: ACC_PUBLIC, ACC_FINAL, ACC_STATIC \ No newline at end of file +// FLAGS: ACC_PUBLIC, ACC_FINAL, ACC_STATIC, ACC_DEPRECATED \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/trait/publicVar.kt b/compiler/testData/writeFlags/property/classObject/trait/publicVar.kt index 50ce83fe210..62fcc7ec768 100644 --- a/compiler/testData/writeFlags/property/classObject/trait/publicVar.kt +++ b/compiler/testData/writeFlags/property/classObject/trait/publicVar.kt @@ -10,4 +10,4 @@ interface Test { // TESTED_OBJECT_KIND: property // TESTED_OBJECTS: Test$Companion, prop -// FLAGS: ACC_PUBLIC, ACC_STATIC \ No newline at end of file +// FLAGS: ACC_PUBLIC, ACC_STATIC, ACC_DEPRECATED \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/trait/publicVarProtectedSet.kt b/compiler/testData/writeFlags/property/classObject/trait/publicVarProtectedSet.kt index b476316f97b..1e8cebd24ca 100644 --- a/compiler/testData/writeFlags/property/classObject/trait/publicVarProtectedSet.kt +++ b/compiler/testData/writeFlags/property/classObject/trait/publicVarProtectedSet.kt @@ -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 diff --git a/compiler/testData/writeFlags/property/classObject/trait/publicVarPublicSet.kt b/compiler/testData/writeFlags/property/classObject/trait/publicVarPublicSet.kt index 5c9106e7714..fd038238227 100644 --- a/compiler/testData/writeFlags/property/classObject/trait/publicVarPublicSet.kt +++ b/compiler/testData/writeFlags/property/classObject/trait/publicVarPublicSet.kt @@ -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