diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java index 1a3776aea4c..39d351ef187 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java @@ -39,6 +39,7 @@ import org.jetbrains.kotlin.lexer.KtTokens; import org.jetbrains.kotlin.load.java.JavaVisibilities; import org.jetbrains.kotlin.load.java.JvmAnnotationNames; import org.jetbrains.kotlin.name.FqName; +import org.jetbrains.kotlin.platform.JavaToKotlinClassMap; import org.jetbrains.kotlin.resolve.DeprecationUtilKt; import org.jetbrains.kotlin.resolve.DescriptorUtils; import org.jetbrains.kotlin.resolve.annotations.AnnotationUtilKt; @@ -61,6 +62,7 @@ import java.util.Set; import static org.jetbrains.kotlin.builtins.KotlinBuiltIns.isBoolean; import static org.jetbrains.kotlin.builtins.KotlinBuiltIns.isPrimitiveClass; +import static org.jetbrains.kotlin.codegen.JvmCodegenUtil.isConstOrHasJvmFieldAnnotation; import static org.jetbrains.kotlin.codegen.JvmCodegenUtil.isJvmInterface; import static org.jetbrains.kotlin.load.java.JvmAnnotationNames.KOTLIN_SYNTHETIC_CLASS; import static org.jetbrains.kotlin.resolve.DescriptorUtils.*; @@ -681,13 +683,13 @@ public class AsmUtil { isObject(propertyDescriptor.getContainingDeclaration()); } - public static int getVisibilityForSpecialPropertyBackingField(@NotNull PropertyDescriptor propertyDescriptor, boolean isDelegate) { + public static int getVisibilityForBackingField(@NotNull PropertyDescriptor propertyDescriptor, boolean isDelegate) { boolean isExtensionProperty = propertyDescriptor.getExtensionReceiverParameter() != null; if (isDelegate || isExtensionProperty) { return ACC_PRIVATE; } else { - return areBothAccessorDefault(propertyDescriptor) + return propertyDescriptor.isLateInit() || isConstOrHasJvmFieldAnnotation(propertyDescriptor) ? getVisibilityAccessFlag(descriptorForVisibility(propertyDescriptor)) : ACC_PRIVATE; } @@ -706,16 +708,7 @@ public class AsmUtil { DeclarationDescriptor propertyContainer = propertyDescriptor.getContainingDeclaration(); return propertyDescriptor.isConst() && isCompanionObject(propertyContainer) && isInterface(propertyContainer.getContainingDeclaration()) - && getVisibilityForSpecialPropertyBackingField(propertyDescriptor, false) == ACC_PUBLIC; - } - - private static boolean areBothAccessorDefault(@NotNull PropertyDescriptor propertyDescriptor) { - return isAccessorWithEmptyBody(propertyDescriptor.getGetter()) - && (!propertyDescriptor.isVar() || isAccessorWithEmptyBody(propertyDescriptor.getSetter())); - } - - private static boolean isAccessorWithEmptyBody(@Nullable PropertyAccessorDescriptor accessorDescriptor) { - return accessorDescriptor == null || !accessorDescriptor.hasBody(); + && getVisibilityForBackingField(propertyDescriptor, false) == ACC_PUBLIC; } public static Type comparisonOperandType(Type left, Type right) { diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java index 52cad2d6c0d..a4440705a0b 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java @@ -2140,7 +2140,7 @@ public class ExpressionCodegen extends KtVisitor impleme PropertyDescriptor originalPropertyDescriptor = DescriptorUtils.unwrapFakeOverride(propertyDescriptor); if (fieldAccessorKind != FieldAccessorKind.NORMAL) { - int flags = AsmUtil.getVisibilityForSpecialPropertyBackingField(propertyDescriptor, isDelegatedProperty); + int flags = AsmUtil.getVisibilityForBackingField(propertyDescriptor, isDelegatedProperty); skipPropertyAccessors = (flags & ACC_PRIVATE) == 0 || skipAccessorsForPrivateFieldInOuterClass; if (!skipPropertyAccessors) { //noinspection ConstantConditions diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java index 7ef4ed680a5..9ab4b35a969 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java @@ -54,12 +54,14 @@ import org.jetbrains.org.objectweb.asm.commons.Method; import java.util.List; -import static org.jetbrains.kotlin.codegen.AsmUtil.*; +import static org.jetbrains.kotlin.codegen.AsmUtil.getDeprecatedAccessFlag; +import static org.jetbrains.kotlin.codegen.AsmUtil.getVisibilityForBackingField; import static org.jetbrains.kotlin.codegen.JvmCodegenUtil.isConstOrHasJvmFieldAnnotation; import static org.jetbrains.kotlin.codegen.JvmCodegenUtil.isJvmInterface; import static org.jetbrains.kotlin.codegen.serialization.JvmSerializationBindings.FIELD_FOR_PROPERTY; import static org.jetbrains.kotlin.codegen.serialization.JvmSerializationBindings.SYNTHETIC_METHOD_FOR_PROPERTY; -import static org.jetbrains.kotlin.resolve.DescriptorUtils.*; +import static org.jetbrains.kotlin.resolve.DescriptorUtils.isCompanionObject; +import static org.jetbrains.kotlin.resolve.DescriptorUtils.isInterface; import static org.jetbrains.kotlin.resolve.jvm.AsmTypes.K_PROPERTY_TYPE; import static org.jetbrains.kotlin.resolve.jvm.annotations.AnnotationUtilKt.hasJvmFieldAnnotation; import static org.jetbrains.org.objectweb.asm.Opcodes.*; @@ -300,50 +302,17 @@ public class PropertyCodegen { ClassBuilder builder = v; - boolean hasJvmFieldAnnotation = hasJvmFieldAnnotation(propertyDescriptor); - FieldOwnerContext backingFieldContext = context; - boolean takeVisibilityFromDescriptor = propertyDescriptor.isLateInit() || propertyDescriptor.isConst(); - boolean takeVisibilityFromSetter = propertyDescriptor.isLateInit() && propertyDescriptor.getSetter() != null; if (AsmUtil.isInstancePropertyWithStaticBackingField(propertyDescriptor) ) { modifiers |= ACC_STATIC; - if (takeVisibilityFromDescriptor) { - modifiers |= getVisibilityAccessFlag(propertyDescriptor); - } - else if (hasJvmFieldAnnotation && !isDelegate) { - modifiers |= getDefaultVisibilityFlag(propertyDescriptor.getVisibility()); - } - else { - modifiers |= getVisibilityForSpecialPropertyBackingField(propertyDescriptor, isDelegate); - } - if (JvmAbi.isPropertyWithBackingFieldInOuterClass(propertyDescriptor)) { ImplementationBodyCodegen codegen = (ImplementationBodyCodegen) memberCodegen.getParentCodegen(); builder = codegen.v; backingFieldContext = codegen.context; } - - if (isObject(propertyDescriptor.getContainingDeclaration()) && - !hasJvmFieldAnnotation && - !propertyDescriptor.isConst() && - (modifiers & ACC_PRIVATE) == 0) { - modifiers |= ACC_DEPRECATED; - } - } - else if (takeVisibilityFromSetter) { - // For lateinits, we take visibility from setter, if any - modifiers |= getVisibilityAccessFlag(propertyDescriptor.getSetter()); - } - else if (takeVisibilityFromDescriptor) { - modifiers |= getVisibilityAccessFlag(propertyDescriptor); - } - else if (!isDelegate && hasJvmFieldAnnotation) { - modifiers |= getDefaultVisibilityFlag(propertyDescriptor.getVisibility()); - } - else { - modifiers |= ACC_PRIVATE; } + modifiers |= getVisibilityForBackingField(propertyDescriptor, isDelegate); if (AsmUtil.isPropertyWithBackingFieldCopyInOuterClass(propertyDescriptor)) { ImplementationBodyCodegen parentBodyCodegen = (ImplementationBodyCodegen) memberCodegen.getParentCodegen(); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorUtil.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorUtil.java index 48650a4db6d..bf3b64e0f98 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorUtil.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorUtil.java @@ -55,7 +55,7 @@ public class FunctionDescriptorUtil { @NotNull FunctionDescriptor functionDescriptor, @NotNull List typeArguments ) { - if (functionDescriptor.getTypeParameters().isEmpty()) return TypeSubstitution.getEMPTY(); + if (functionDescriptor.getTypeParameters().isEmpty()) return TypeSubstitution.EMPTY; return new IndexedParametersSubstitution(functionDescriptor.getTypeParameters(), TypeUtilsKt.defaultProjections(typeArguments)); } diff --git a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/ClassObjectField.java b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/ClassObjectField.java index 8d60bd2ab19..973674801a1 100644 --- a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/ClassObjectField.java +++ b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/ClassObjectField.java @@ -1,9 +1,6 @@ public final class ClassObjectField { - /** - * @deprecated - */ @org.jetbrains.annotations.Nullable - public static final java.lang.String x = ""; + private static final java.lang.String x = ""; private static final java.lang.String y = ""; public static final ClassObjectField.Companion Companion; diff --git a/compiler/testData/asJava/lightClasses/object/SimpleObject.java b/compiler/testData/asJava/lightClasses/object/SimpleObject.java index ddb08bd68d8..3497e73ffc6 100644 --- a/compiler/testData/asJava/lightClasses/object/SimpleObject.java +++ b/compiler/testData/asJava/lightClasses/object/SimpleObject.java @@ -1,13 +1,7 @@ public final class A { - /** - * @deprecated - */ - public static final int c = 1; - /** - * @deprecated - */ + private static final int c = 1; @org.jetbrains.annotations.NotNull - public static java.lang.String v; + private static java.lang.String v; public static final pack.A INSTANCE; public final int getC() { /* compiled code */ } diff --git a/compiler/testData/codegen/boxWithJava/jvmStatic/enumCompanion/Test.java b/compiler/testData/codegen/boxWithJava/jvmStatic/enumCompanion/Test.java index 8c566c76827..3a26873920f 100644 --- a/compiler/testData/codegen/boxWithJava/jvmStatic/enumCompanion/Test.java +++ b/compiler/testData/codegen/boxWithJava/jvmStatic/enumCompanion/Test.java @@ -3,8 +3,8 @@ class Test { return A.foo; } - public static String bar() { - return A.bar; + public static String constBar() { + return A.constBar; } public static String getBar() { diff --git a/compiler/testData/codegen/boxWithJava/jvmStatic/enumCompanion/enumCompanionObject.kt b/compiler/testData/codegen/boxWithJava/jvmStatic/enumCompanion/enumCompanionObject.kt index 37386fb99f4..df900b3dfe6 100644 --- a/compiler/testData/codegen/boxWithJava/jvmStatic/enumCompanion/enumCompanionObject.kt +++ b/compiler/testData/codegen/boxWithJava/jvmStatic/enumCompanion/enumCompanionObject.kt @@ -3,7 +3,9 @@ import kotlin.jvm.JvmStatic enum class A { ; companion object { - val foo: String = "OK" + @JvmField val foo: String = "OK" + + const val constBar: String = "OK" @JvmStatic val bar: String = "OK" @@ -13,7 +15,7 @@ enum class A { fun box(): String { if (Test.foo() != "OK") return "Fail foo" - if (Test.bar() != "OK") return "Fail bar" + if (Test.constBar() != "OK") return "Fail bar" if (Test.getBar() != "OK") return "Fail getBar" if (Test.baz() != "OK") return "Fail baz" return "OK" diff --git a/compiler/testData/codegen/boxWithJava/properties/annotationWithKotlinProperty/kotlinClass.kt b/compiler/testData/codegen/boxWithJava/properties/annotationWithKotlinProperty/kotlinClass.kt index 6770e1d7dd2..a03d7156cf3 100644 --- a/compiler/testData/codegen/boxWithJava/properties/annotationWithKotlinProperty/kotlinClass.kt +++ b/compiler/testData/codegen/boxWithJava/properties/annotationWithKotlinProperty/kotlinClass.kt @@ -1,7 +1,7 @@ class KotlinClass { companion object { - val FOO_INT: Int = 10 - val FOO_STRING: String = "OK" + const val FOO_INT: Int = 10 + @JvmField val FOO_STRING: String = "OK" } } diff --git a/compiler/testData/codegen/boxWithJava/properties/classObjectProperties/Test.java b/compiler/testData/codegen/boxWithJava/properties/classObjectProperties/Test.java index 06605a89d36..fe3d92a9f84 100644 --- a/compiler/testData/codegen/boxWithJava/properties/classObjectProperties/Test.java +++ b/compiler/testData/codegen/boxWithJava/properties/classObjectProperties/Test.java @@ -5,12 +5,18 @@ class Test { s = Klass.NAME; if (!s.equals("Klass")) throw new AssertionError("Fail class: " + s); + s = Klass.JVM_NAME; + if (!s.equals("JvmKlass")) throw new AssertionError("Fail jvm class: " + s); + s = Trait.NAME; if (!s.equals("Trait")) throw new AssertionError("Fail interface: " + s); s = Enoom.NAME; if (!s.equals("Enum")) throw new AssertionError("Fail enum: " + s); + s = Enoom.JVM_NAME; + if (!s.equals("JvmEnum")) throw new AssertionError("Fail jvm enum: " + s); + return "OK"; } } diff --git a/compiler/testData/codegen/boxWithJava/properties/classObjectProperties/classObjectProperties.kt b/compiler/testData/codegen/boxWithJava/properties/classObjectProperties/classObjectProperties.kt index dd66557abe3..29ef9f2fead 100644 --- a/compiler/testData/codegen/boxWithJava/properties/classObjectProperties/classObjectProperties.kt +++ b/compiler/testData/codegen/boxWithJava/properties/classObjectProperties/classObjectProperties.kt @@ -1,6 +1,7 @@ class Klass { companion object { - val NAME = "Klass" + const val NAME = "Klass" + @JvmField val JVM_NAME = "JvmKlass" } } @@ -14,6 +15,7 @@ enum class Enoom { ; companion object { const val NAME = "Enum" + @JvmField val JVM_NAME = "JvmEnum" } } diff --git a/compiler/testData/codegen/boxWithStdlib/reflection/genericSignature/kt5112.kt b/compiler/testData/codegen/boxWithStdlib/reflection/genericSignature/kt5112.kt index 440078b1541..0d9cf66256a 100644 --- a/compiler/testData/codegen/boxWithStdlib/reflection/genericSignature/kt5112.kt +++ b/compiler/testData/codegen/boxWithStdlib/reflection/genericSignature/kt5112.kt @@ -12,7 +12,7 @@ public interface ErrorsJvmTrait { public class ErrorsJvmClass { companion object { - public val param : G = G("STRING") + @JvmField public val param : G = G("STRING") } } diff --git a/compiler/testData/compileJavaAgainstKotlin/staticFields/AnnotationClass.kt b/compiler/testData/compileJavaAgainstKotlin/staticFields/AnnotationClass.kt index ce48fbfc6c6..7dce73a33df 100644 --- a/compiler/testData/compileJavaAgainstKotlin/staticFields/AnnotationClass.kt +++ b/compiler/testData/compileJavaAgainstKotlin/staticFields/AnnotationClass.kt @@ -11,13 +11,13 @@ annotation class AFloat(val value: Float) class Test { companion object { - val vstring: String = "Test" - val vchar: Char = 'c' - val vint: Int = 10 - val vbyte: Byte = 11 - val vlong: Long = 12 - val vdouble: Double = 1.2 - val vfloat: Float = 1.3.toFloat() + const val vstring: String = "Test" + const val vchar: Char = 'c' + const val vint: Int = 10 + const val vbyte: Byte = 11 + const val vlong: Long = 12 + const val vdouble: Double = 1.2 + const val vfloat: Float = 1.3.toFloat() } } \ No newline at end of file diff --git a/compiler/testData/compileJavaAgainstKotlin/staticFields/AnnotationClass.txt b/compiler/testData/compileJavaAgainstKotlin/staticFields/AnnotationClass.txt index 84f735773b7..146e486a64f 100644 --- a/compiler/testData/compileJavaAgainstKotlin/staticFields/AnnotationClass.txt +++ b/compiler/testData/compileJavaAgainstKotlin/staticFields/AnnotationClass.txt @@ -44,12 +44,12 @@ public final class Test { public companion object Companion { private constructor Companion() - public final val vbyte: kotlin.Byte - public final val vchar: kotlin.Char - public final val vdouble: kotlin.Double - public final val vfloat: kotlin.Float - public final val vint: kotlin.Int - public final val vlong: kotlin.Long - public final val vstring: kotlin.String + public const final val vbyte: kotlin.Byte + public const final val vchar: kotlin.Char + public const final val vdouble: kotlin.Double + public const final val vfloat: kotlin.Float + public const final val vint: kotlin.Int + public const final val vlong: kotlin.Long + public const final val vstring: kotlin.String } } diff --git a/compiler/testData/compileJavaAgainstKotlin/staticFields/kt3698.kt b/compiler/testData/compileJavaAgainstKotlin/staticFields/kt3698.kt index 516f88002ef..058b249d9a2 100644 --- a/compiler/testData/compileJavaAgainstKotlin/staticFields/kt3698.kt +++ b/compiler/testData/compileJavaAgainstKotlin/staticFields/kt3698.kt @@ -2,6 +2,6 @@ package test class KotlinClass { companion object { - val FOO: Int = 10 + const val FOO: Int = 10 } } diff --git a/compiler/testData/compileJavaAgainstKotlin/staticFields/kt3698.txt b/compiler/testData/compileJavaAgainstKotlin/staticFields/kt3698.txt index ae300c1e16c..a134fe6fc6b 100644 --- a/compiler/testData/compileJavaAgainstKotlin/staticFields/kt3698.txt +++ b/compiler/testData/compileJavaAgainstKotlin/staticFields/kt3698.txt @@ -5,7 +5,7 @@ public final class KotlinClass { public companion object Companion { private constructor Companion() - public final val FOO: kotlin.Int + public const final val FOO: kotlin.Int } } diff --git a/compiler/testData/compileJavaAgainstKotlin/staticFields/staticClassProperty.kt b/compiler/testData/compileJavaAgainstKotlin/staticFields/staticClassProperty.kt index 25f2bce225f..6d1d86cfc53 100644 --- a/compiler/testData/compileJavaAgainstKotlin/staticFields/staticClassProperty.kt +++ b/compiler/testData/compileJavaAgainstKotlin/staticFields/staticClassProperty.kt @@ -3,9 +3,9 @@ package test class Test { companion object { - public val valProp: Int = 10 + public const val valProp: Int = 10 - public var varProp: Int = 10 + @JvmField public var varProp: Int = 10 } } \ No newline at end of file diff --git a/compiler/testData/compileJavaAgainstKotlin/staticFields/staticClassProperty.txt b/compiler/testData/compileJavaAgainstKotlin/staticFields/staticClassProperty.txt index 05a9c3320f6..9a0832c8bf0 100644 --- a/compiler/testData/compileJavaAgainstKotlin/staticFields/staticClassProperty.txt +++ b/compiler/testData/compileJavaAgainstKotlin/staticFields/staticClassProperty.txt @@ -5,8 +5,8 @@ public final class Test { public companion object Companion { private constructor Companion() - public final val valProp: kotlin.Int - public final var varProp: kotlin.Int + public const final val valProp: kotlin.Int + @field:kotlin.jvm.JvmField() public final var varProp: kotlin.Int } } diff --git a/compiler/testData/writeFlags/property/classObject/class/internalVal.kt b/compiler/testData/writeFlags/property/classObject/class/internalVal.kt index 99088d49b67..7c76c321f92 100644 --- a/compiler/testData/writeFlags/property/classObject/class/internalVal.kt +++ b/compiler/testData/writeFlags/property/classObject/class/internalVal.kt @@ -1,12 +1,12 @@ class Test { companion object { - var prop: Int = 0; + const val prop: Int = 0; } } // TESTED_OBJECT_KIND: property // TESTED_OBJECTS: Test, prop -// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_DEPRECATED +// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_FINAL // 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 99088d49b67..a514b0db9e3 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, ACC_DEPRECATED +// FLAGS: ACC_STATIC, ACC_PRIVATE // 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 31bce454f4a..9b34606dc86 100644 --- a/compiler/testData/writeFlags/property/classObject/class/protectedVal.kt +++ b/compiler/testData/writeFlags/property/classObject/class/protectedVal.kt @@ -1,12 +1,12 @@ class Test { companion object { - protected val prop: Int = 0; + const protected val prop: Int = 0; } } // TESTED_OBJECT_KIND: property // TESTED_OBJECTS: Test, prop -// FLAGS: ACC_STATIC, ACC_PROTECTED, ACC_FINAL, ACC_DEPRECATED +// FLAGS: ACC_STATIC, ACC_PROTECTED, ACC_FINAL // 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 ef54565dfb9..431860ac25f 100644 --- a/compiler/testData/writeFlags/property/classObject/class/publicVal.kt +++ b/compiler/testData/writeFlags/property/classObject/class/publicVal.kt @@ -1,12 +1,12 @@ class Test { companion object { - public val prop: Int = 0; + public const val prop: Int = 0; } } // TESTED_OBJECT_KIND: property // TESTED_OBJECTS: Test, prop -// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_FINAL, ACC_DEPRECATED +// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_FINAL // 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 d7cb29ff46b..83fac291ee4 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, ACC_DEPRECATED +// FLAGS: ACC_STATIC, ACC_PRIVATE // 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 1ae68924d88..02434006d7f 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, ACC_DEPRECATED +// FLAGS: ACC_STATIC, ACC_PRIVATE // 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 fe4ccecdddb..e10ae4251cb 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, ACC_DEPRECATED +// FLAGS: ACC_STATIC, ACC_PRIVATE // 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 a02b2021b84..4198a24aa82 100644 --- a/compiler/testData/writeFlags/property/classObject/rename/constructorAndClassObject.kt +++ b/compiler/testData/writeFlags/property/classObject/rename/constructorAndClassObject.kt @@ -1,7 +1,7 @@ class Test(val prop: String) { companion object { - public val prop : String = "CO"; + public const val prop : String = "CO"; } } @@ -13,4 +13,4 @@ class Test(val prop: String) { // TESTED_OBJECT_KIND: property // TESTED_OBJECTS: Test, prop -// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_FINAL, ACC_DEPRECATED \ No newline at end of file +// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_FINAL \ 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 2616341a963..b39996d6753 100644 --- a/compiler/testData/writeFlags/property/classObject/rename/propertyAndProperty.kt +++ b/compiler/testData/writeFlags/property/classObject/rename/propertyAndProperty.kt @@ -3,7 +3,7 @@ class Test { public var prop: Int = 0; companion object { - public val prop: Int = 0; + public const val prop: Int = 0; } } @@ -13,4 +13,4 @@ class Test { // TESTED_OBJECT_KIND: property // TESTED_OBJECTS: Test, prop -// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_FINAL, ACC_DEPRECATED \ No newline at end of file +// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_FINAL \ 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 e4c3afc4d11..9d1fc3de087 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, ACC_DEPRECATED \ No newline at end of file +// FLAGS: ACC_PRIVATE, ACC_FINAL, ACC_STATIC \ 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 f5920ab055c..61589802929 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, ACC_DEPRECATED +// FLAGS: ACC_PRIVATE, ACC_STATIC diff --git a/compiler/testData/writeFlags/property/classObject/trait/protectedConstVal.kt b/compiler/testData/writeFlags/property/classObject/trait/protectedConstVal.kt new file mode 100644 index 00000000000..43abe383c46 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/trait/protectedConstVal.kt @@ -0,0 +1,13 @@ +interface Test { + companion object { + protected const val prop: Int = 0 + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$Companion, prop +// FLAGS: ACC_PROTECTED, ACC_FINAL, ACC_STATIC \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/trait/protectedVal.kt b/compiler/testData/writeFlags/property/classObject/trait/protectedVal.kt index 31063e96bfb..5187c7818df 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, ACC_DEPRECATED \ No newline at end of file +// FLAGS: ACC_PRIVATE, ACC_FINAL, ACC_STATIC \ 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 78ff25b41ee..f87cadd1322 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, ACC_DEPRECATED \ No newline at end of file +// FLAGS: ACC_PRIVATE, ACC_FINAL, ACC_STATIC \ 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 62fcc7ec768..1e024c71530 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, ACC_DEPRECATED \ No newline at end of file +// FLAGS: ACC_PRIVATE, ACC_STATIC \ 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 1e8cebd24ca..327755430c6 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, ACC_DEPRECATED +// FLAGS: ACC_PRIVATE, ACC_STATIC diff --git a/compiler/testData/writeFlags/property/classObject/trait/publicVarPublicSet.kt b/compiler/testData/writeFlags/property/classObject/trait/publicVarPublicSet.kt index fd038238227..a362660a830 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, ACC_DEPRECATED +// FLAGS: ACC_PRIVATE, ACC_STATIC diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/flags/WriteFlagsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/flags/WriteFlagsTestGenerated.java index b395019b858..e86e8fed9a0 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/flags/WriteFlagsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/flags/WriteFlagsTestGenerated.java @@ -875,6 +875,12 @@ public class WriteFlagsTestGenerated extends AbstractWriteFlagsTest { doTest(fileName); } + @TestMetadata("protectedConstVal.kt") + public void testProtectedConstVal() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/writeFlags/property/classObject/trait/protectedConstVal.kt"); + doTest(fileName); + } + @TestMetadata("protectedVal.kt") public void testProtectedVal() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/writeFlags/property/classObject/trait/protectedVal.kt"); diff --git a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRenderer.kt b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRenderer.kt index 1f879ae3bd4..2be2c08ebe0 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRenderer.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRenderer.kt @@ -240,7 +240,7 @@ public enum class DescriptorRendererModifier(val includeByDefault: Boolean) { ; companion object { - val DEFAULTS = DescriptorRendererModifier.values().filter { it.includeByDefault }.toSet() - val ALL = DescriptorRendererModifier.values().toSet() + @JvmField val DEFAULTS = DescriptorRendererModifier.values().filter { it.includeByDefault }.toSet() + @JvmField val ALL = DescriptorRendererModifier.values().toSet() } } diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/TypeSubstitution.kt b/core/descriptors/src/org/jetbrains/kotlin/types/TypeSubstitution.kt index 3a475de8ae8..01b8f635aa5 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/TypeSubstitution.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/TypeSubstitution.kt @@ -22,7 +22,7 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations public abstract class TypeSubstitution { companion object { - @JvmStatic + @JvmField public val EMPTY: TypeSubstitution = object : TypeSubstitution() { override fun get(key: KotlinType) = null override fun isEmpty() = true diff --git a/idea/testData/debugger/tinyApp/outs/fwBackingField.out b/idea/testData/debugger/tinyApp/outs/fwBackingField.out index 7e622d95e40..8d319844209 100644 --- a/idea/testData/debugger/tinyApp/outs/fwBackingField.out +++ b/idea/testData/debugger/tinyApp/outs/fwBackingField.out @@ -32,10 +32,13 @@ fwBackingField.kt:62 fwBackingField.kt:45 fwBackingField.kt:48 fwBackingField.kt:62 +fwBackingField.kt:42 fwBackingField.kt:45 fwBackingField.kt:51 +fwBackingField.kt:42 fwBackingField.kt:48 fwBackingField.kt:52 +fwBackingField.kt:42 fwBackingField.kt:48 fwBackingField.kt:54 fwBackingField.kt:63 diff --git a/jps-plugin/test/org/jetbrains/kotlin/jps/build/ExperimentalIncrementalJpsTestGenerated.java b/jps-plugin/test/org/jetbrains/kotlin/jps/build/ExperimentalIncrementalJpsTestGenerated.java index 6fbe156fd5d..ccaf4667333 100644 --- a/jps-plugin/test/org/jetbrains/kotlin/jps/build/ExperimentalIncrementalJpsTestGenerated.java +++ b/jps-plugin/test/org/jetbrains/kotlin/jps/build/ExperimentalIncrementalJpsTestGenerated.java @@ -892,6 +892,18 @@ public class ExperimentalIncrementalJpsTestGenerated extends AbstractExperimenta doTest(fileName); } + @TestMetadata("jvmFieldChanged") + public void testJvmFieldChanged() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldChanged/"); + doTest(fileName); + } + + @TestMetadata("jvmFieldUnchanged") + public void testJvmFieldUnchanged() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldUnchanged/"); + doTest(fileName); + } + @TestMetadata("methodAddedInSuper") public void testMethodAddedInSuper() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/withJava/kotlinUsedInJava/methodAddedInSuper/"); diff --git a/jps-plugin/test/org/jetbrains/kotlin/jps/build/IncrementalConstantSearchTest.kt b/jps-plugin/test/org/jetbrains/kotlin/jps/build/IncrementalConstantSearchTest.kt index 8293f92313f..b6cd03cd68e 100644 --- a/jps-plugin/test/org/jetbrains/kotlin/jps/build/IncrementalConstantSearchTest.kt +++ b/jps-plugin/test/org/jetbrains/kotlin/jps/build/IncrementalConstantSearchTest.kt @@ -34,10 +34,18 @@ public class IncrementalConstantSearchTest : AbstractIncrementalJpsTest() { doTest("jps-plugin/testData/incremental/custom/kotlinConstantChangedUsedInJava/") } + fun testKotlinJvmFieldChangedUsedInJava() { + doTest("jps-plugin/testData/incremental/custom/kotlinJvmFieldChangedUsedInJava/") + } + fun testKotlinConstantUnchangedUsedInJava() { doTest("jps-plugin/testData/incremental/custom/kotlinConstantUnchangedUsedInJava/") } + fun testKotlinJvmFieldUnchangedUsedInJava() { + doTest("jps-plugin/testData/incremental/custom/kotlinJvmFieldUnchangedUsedInJava/") + } + override val mockConstantSearch: Callbacks.ConstantAffectionResolver? get() = object : Callbacks.ConstantAffectionResolver { override fun request( diff --git a/jps-plugin/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java b/jps-plugin/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java index 007a6cb0e49..49b4ef012aa 100644 --- a/jps-plugin/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java +++ b/jps-plugin/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java @@ -892,6 +892,18 @@ public class IncrementalJpsTestGenerated extends AbstractIncrementalJpsTest { doTest(fileName); } + @TestMetadata("jvmFieldChanged") + public void testJvmFieldChanged() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldChanged/"); + doTest(fileName); + } + + @TestMetadata("jvmFieldUnchanged") + public void testJvmFieldUnchanged() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldUnchanged/"); + doTest(fileName); + } + @TestMetadata("methodAddedInSuper") public void testMethodAddedInSuper() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/withJava/kotlinUsedInJava/methodAddedInSuper/"); diff --git a/jps-plugin/testData/incremental/custom/kotlinConstantChangedUsedInJava/const.kt b/jps-plugin/testData/incremental/custom/kotlinConstantChangedUsedInJava/const.kt index 4680ae2c26f..cd3256a7612 100644 --- a/jps-plugin/testData/incremental/custom/kotlinConstantChangedUsedInJava/const.kt +++ b/jps-plugin/testData/incremental/custom/kotlinConstantChangedUsedInJava/const.kt @@ -3,6 +3,6 @@ package test class Klass { companion object { // Old and new constant values are different, but their hashes are the same - val CONST = "BF" + const val CONST = "BF" } } diff --git a/jps-plugin/testData/incremental/custom/kotlinConstantChangedUsedInJava/const.kt.new b/jps-plugin/testData/incremental/custom/kotlinConstantChangedUsedInJava/const.kt.new index e9ccf1ab8db..49b604cd74f 100644 --- a/jps-plugin/testData/incremental/custom/kotlinConstantChangedUsedInJava/const.kt.new +++ b/jps-plugin/testData/incremental/custom/kotlinConstantChangedUsedInJava/const.kt.new @@ -3,6 +3,6 @@ package test class Klass { companion object { // Old and new constant values are different, but their hashes are the same - val CONST = "Ae" + const val CONST = "Ae" } } diff --git a/jps-plugin/testData/incremental/custom/kotlinConstantUnchangedUsedInJava/const.kt b/jps-plugin/testData/incremental/custom/kotlinConstantUnchangedUsedInJava/const.kt index 7dd5eac1a73..44e612f1bb9 100644 --- a/jps-plugin/testData/incremental/custom/kotlinConstantUnchangedUsedInJava/const.kt +++ b/jps-plugin/testData/incremental/custom/kotlinConstantUnchangedUsedInJava/const.kt @@ -2,6 +2,6 @@ package test class Klass { companion object { - val CONST = "bar" + const val CONST = "bar" } } diff --git a/jps-plugin/testData/incremental/custom/kotlinJvmFieldChangedUsedInJava/Usage.java b/jps-plugin/testData/incremental/custom/kotlinJvmFieldChangedUsedInJava/Usage.java new file mode 100644 index 00000000000..9430b8d5f66 --- /dev/null +++ b/jps-plugin/testData/incremental/custom/kotlinJvmFieldChangedUsedInJava/Usage.java @@ -0,0 +1,7 @@ +import test.*; + +class Usage { + public static void main(String[] args) { + System.out.println(Klass.CONST + Klass.CONST); + } +} diff --git a/jps-plugin/testData/incremental/custom/kotlinJvmFieldChangedUsedInJava/build.log b/jps-plugin/testData/incremental/custom/kotlinJvmFieldChangedUsedInJava/build.log new file mode 100644 index 00000000000..29b384519d1 --- /dev/null +++ b/jps-plugin/testData/incremental/custom/kotlinJvmFieldChangedUsedInJava/build.log @@ -0,0 +1,13 @@ +Cleaning output files: +out/production/module/test/Klass$Companion.class +out/production/module/test/Klass.class +End of files +Compiling files: +src/const.kt +End of files +Cleaning output files: +out/production/module/Usage.class +End of files +Compiling files: +src/Usage.java +End of files \ No newline at end of file diff --git a/jps-plugin/testData/incremental/custom/kotlinJvmFieldChangedUsedInJava/const.kt b/jps-plugin/testData/incremental/custom/kotlinJvmFieldChangedUsedInJava/const.kt new file mode 100644 index 00000000000..f5d8342d491 --- /dev/null +++ b/jps-plugin/testData/incremental/custom/kotlinJvmFieldChangedUsedInJava/const.kt @@ -0,0 +1,9 @@ +package test + +class Klass { + companion object { + // Old and new constant values are different, but their hashes are the same + @JvmField + val CONST = "BF" + } +} diff --git a/jps-plugin/testData/incremental/custom/kotlinJvmFieldChangedUsedInJava/const.kt.new b/jps-plugin/testData/incremental/custom/kotlinJvmFieldChangedUsedInJava/const.kt.new new file mode 100644 index 00000000000..247548db1f8 --- /dev/null +++ b/jps-plugin/testData/incremental/custom/kotlinJvmFieldChangedUsedInJava/const.kt.new @@ -0,0 +1,9 @@ +package test + +class Klass { + companion object { + // Old and new constant values are different, but their hashes are the same + @JvmField + val CONST = "Ae" + } +} diff --git a/jps-plugin/testData/incremental/custom/kotlinJvmFieldUnchangedUsedInJava/Usage.java b/jps-plugin/testData/incremental/custom/kotlinJvmFieldUnchangedUsedInJava/Usage.java new file mode 100644 index 00000000000..9430b8d5f66 --- /dev/null +++ b/jps-plugin/testData/incremental/custom/kotlinJvmFieldUnchangedUsedInJava/Usage.java @@ -0,0 +1,7 @@ +import test.*; + +class Usage { + public static void main(String[] args) { + System.out.println(Klass.CONST + Klass.CONST); + } +} diff --git a/jps-plugin/testData/incremental/custom/kotlinJvmFieldUnchangedUsedInJava/build.log b/jps-plugin/testData/incremental/custom/kotlinJvmFieldUnchangedUsedInJava/build.log new file mode 100644 index 00000000000..8dfe7647a28 --- /dev/null +++ b/jps-plugin/testData/incremental/custom/kotlinJvmFieldUnchangedUsedInJava/build.log @@ -0,0 +1,7 @@ +Cleaning output files: +out/production/module/test/Klass$Companion.class +out/production/module/test/Klass.class +End of files +Compiling files: +src/const.kt +End of files \ No newline at end of file diff --git a/jps-plugin/testData/incremental/custom/kotlinJvmFieldUnchangedUsedInJava/const.kt b/jps-plugin/testData/incremental/custom/kotlinJvmFieldUnchangedUsedInJava/const.kt new file mode 100644 index 00000000000..203275f2160 --- /dev/null +++ b/jps-plugin/testData/incremental/custom/kotlinJvmFieldUnchangedUsedInJava/const.kt @@ -0,0 +1,8 @@ +package test + +class Klass { + companion object { + @JvmField + val CONST = "bar" + } +} diff --git a/jps-plugin/testData/incremental/custom/kotlinJvmFieldUnchangedUsedInJava/const.kt.touch b/jps-plugin/testData/incremental/custom/kotlinJvmFieldUnchangedUsedInJava/const.kt.touch new file mode 100644 index 00000000000..e69de29bb2d diff --git a/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/constantChanged/const.kt b/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/constantChanged/const.kt index 4680ae2c26f..cd3256a7612 100644 --- a/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/constantChanged/const.kt +++ b/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/constantChanged/const.kt @@ -3,6 +3,6 @@ package test class Klass { companion object { // Old and new constant values are different, but their hashes are the same - val CONST = "BF" + const val CONST = "BF" } } diff --git a/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/constantChanged/const.kt.new b/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/constantChanged/const.kt.new index e9ccf1ab8db..49b604cd74f 100644 --- a/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/constantChanged/const.kt.new +++ b/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/constantChanged/const.kt.new @@ -3,6 +3,6 @@ package test class Klass { companion object { // Old and new constant values are different, but their hashes are the same - val CONST = "Ae" + const val CONST = "Ae" } } diff --git a/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/constantUnchanged/const.kt b/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/constantUnchanged/const.kt index 7dd5eac1a73..44e612f1bb9 100644 --- a/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/constantUnchanged/const.kt +++ b/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/constantUnchanged/const.kt @@ -2,6 +2,6 @@ package test class Klass { companion object { - val CONST = "bar" + const val CONST = "bar" } } diff --git a/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldChanged/Usage.java b/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldChanged/Usage.java new file mode 100644 index 00000000000..9430b8d5f66 --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldChanged/Usage.java @@ -0,0 +1,7 @@ +import test.*; + +class Usage { + public static void main(String[] args) { + System.out.println(Klass.CONST + Klass.CONST); + } +} diff --git a/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldChanged/build.log b/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldChanged/build.log new file mode 100644 index 00000000000..e0426c17165 --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldChanged/build.log @@ -0,0 +1,18 @@ +Cleaning output files: +out/production/module/test/Klass$Companion.class +out/production/module/test/Klass.class +End of files +Compiling files: +src/const.kt +End of files +Cleaning output files: +out/production/module/Usage.class +out/production/module/test/Klass$Companion.class +out/production/module/test/Klass.class +End of files +Compiling files: +src/const.kt +End of files +Compiling files: +src/Usage.java +End of files diff --git a/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldChanged/const.kt b/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldChanged/const.kt new file mode 100644 index 00000000000..f5d8342d491 --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldChanged/const.kt @@ -0,0 +1,9 @@ +package test + +class Klass { + companion object { + // Old and new constant values are different, but their hashes are the same + @JvmField + val CONST = "BF" + } +} diff --git a/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldChanged/const.kt.new b/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldChanged/const.kt.new new file mode 100644 index 00000000000..247548db1f8 --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldChanged/const.kt.new @@ -0,0 +1,9 @@ +package test + +class Klass { + companion object { + // Old and new constant values are different, but their hashes are the same + @JvmField + val CONST = "Ae" + } +} diff --git a/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldUnchanged/Usage.java b/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldUnchanged/Usage.java new file mode 100644 index 00000000000..9430b8d5f66 --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldUnchanged/Usage.java @@ -0,0 +1,7 @@ +import test.*; + +class Usage { + public static void main(String[] args) { + System.out.println(Klass.CONST + Klass.CONST); + } +} diff --git a/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldUnchanged/build.log b/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldUnchanged/build.log new file mode 100644 index 00000000000..8dfe7647a28 --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldUnchanged/build.log @@ -0,0 +1,7 @@ +Cleaning output files: +out/production/module/test/Klass$Companion.class +out/production/module/test/Klass.class +End of files +Compiling files: +src/const.kt +End of files \ No newline at end of file diff --git a/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldUnchanged/const.kt b/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldUnchanged/const.kt new file mode 100644 index 00000000000..203275f2160 --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldUnchanged/const.kt @@ -0,0 +1,8 @@ +package test + +class Klass { + companion object { + @JvmField + val CONST = "bar" + } +} diff --git a/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldUnchanged/const.kt.touch b/jps-plugin/testData/incremental/withJava/kotlinUsedInJava/jvmFieldUnchanged/const.kt.touch new file mode 100644 index 00000000000..e69de29bb2d diff --git a/plugins/android-compiler-plugin/testData/codegen/android/fqNameInAttr/0.kt b/plugins/android-compiler-plugin/testData/codegen/android/fqNameInAttr/0.kt index 04fb5218f00..e0792a5fa4a 100644 --- a/plugins/android-compiler-plugin/testData/codegen/android/fqNameInAttr/0.kt +++ b/plugins/android-compiler-plugin/testData/codegen/android/fqNameInAttr/0.kt @@ -9,7 +9,7 @@ import kotlinx.android.synthetic.main.layout.* class R { class id { companion object { - val login = 5 + const val login = 5 } } } diff --git a/plugins/android-compiler-plugin/testData/codegen/android/fqNameInAttr/1.kt b/plugins/android-compiler-plugin/testData/codegen/android/fqNameInAttr/1.kt index 2201d6aec6f..38918000b52 100644 --- a/plugins/android-compiler-plugin/testData/codegen/android/fqNameInAttr/1.kt +++ b/plugins/android-compiler-plugin/testData/codegen/android/fqNameInAttr/1.kt @@ -9,7 +9,7 @@ import kotlinx.android.synthetic.main.layout.* class R { class id { companion object { - val login = 5 + const val login = 5 } } } diff --git a/plugins/android-compiler-plugin/testData/codegen/android/fqNameInTag/0.kt b/plugins/android-compiler-plugin/testData/codegen/android/fqNameInTag/0.kt index 04fb5218f00..e0792a5fa4a 100644 --- a/plugins/android-compiler-plugin/testData/codegen/android/fqNameInTag/0.kt +++ b/plugins/android-compiler-plugin/testData/codegen/android/fqNameInTag/0.kt @@ -9,7 +9,7 @@ import kotlinx.android.synthetic.main.layout.* class R { class id { companion object { - val login = 5 + const val login = 5 } } } diff --git a/plugins/android-compiler-plugin/testData/codegen/android/fqNameInTag/1.kt b/plugins/android-compiler-plugin/testData/codegen/android/fqNameInTag/1.kt index 2201d6aec6f..38918000b52 100644 --- a/plugins/android-compiler-plugin/testData/codegen/android/fqNameInTag/1.kt +++ b/plugins/android-compiler-plugin/testData/codegen/android/fqNameInTag/1.kt @@ -9,7 +9,7 @@ import kotlinx.android.synthetic.main.layout.* class R { class id { companion object { - val login = 5 + const val login = 5 } } } diff --git a/plugins/android-compiler-plugin/testData/codegen/android/fragment/0.kt b/plugins/android-compiler-plugin/testData/codegen/android/fragment/0.kt index caf5973d5fd..d4de3895e92 100644 --- a/plugins/android-compiler-plugin/testData/codegen/android/fragment/0.kt +++ b/plugins/android-compiler-plugin/testData/codegen/android/fragment/0.kt @@ -11,7 +11,7 @@ import kotlinx.android.synthetic.main.layout.* class R { class id { companion object { - val login = 5 + const val login = 5 } } } diff --git a/plugins/android-compiler-plugin/testData/codegen/android/fragment/1.kt b/plugins/android-compiler-plugin/testData/codegen/android/fragment/1.kt index efdb7cd3450..fe65d796427 100644 --- a/plugins/android-compiler-plugin/testData/codegen/android/fragment/1.kt +++ b/plugins/android-compiler-plugin/testData/codegen/android/fragment/1.kt @@ -11,7 +11,7 @@ import kotlinx.android.synthetic.main.layout.* class R { class id { companion object { - val login = 5 + const val login = 5 } } } diff --git a/plugins/android-compiler-plugin/testData/codegen/android/multiFile/0.kt b/plugins/android-compiler-plugin/testData/codegen/android/multiFile/0.kt index 5c4753dbdb9..a44bd82b99c 100644 --- a/plugins/android-compiler-plugin/testData/codegen/android/multiFile/0.kt +++ b/plugins/android-compiler-plugin/testData/codegen/android/multiFile/0.kt @@ -9,15 +9,15 @@ import kotlinx.android.synthetic.main.layout1.* class R { class id { companion object { - val item_detail_container = 0 - val textView1 = 1 - val password = 2 - val textView2 = 3 - val passwordConfirmation = 4 - val login = 5 - val passwordField = 6 - val passwordCaption = 7 - val loginButton = 8 + const val item_detail_container = 0 + const val textView1 = 1 + const val password = 2 + const val textView2 = 3 + const val passwordConfirmation = 4 + const val login = 5 + const val passwordField = 6 + const val passwordCaption = 7 + const val loginButton = 8 } } } diff --git a/plugins/android-compiler-plugin/testData/codegen/android/multiFile/1.kt b/plugins/android-compiler-plugin/testData/codegen/android/multiFile/1.kt index d1f3349acae..6955cb3ea26 100644 --- a/plugins/android-compiler-plugin/testData/codegen/android/multiFile/1.kt +++ b/plugins/android-compiler-plugin/testData/codegen/android/multiFile/1.kt @@ -9,12 +9,12 @@ import kotlinx.android.synthetic.main.layout1.* class R { class id { companion object { - val item_detail_container = 0 - val textView1 = 1 - val password = 2 - val textView2 = 3 - val passwordConfirmation = 4 - val login = 5 + const val item_detail_container = 0 + const val textView1 = 1 + const val password = 2 + const val textView2 = 3 + const val passwordConfirmation = 4 + const val login = 5 } } } diff --git a/plugins/android-compiler-plugin/testData/codegen/android/singleFile/0.kt b/plugins/android-compiler-plugin/testData/codegen/android/singleFile/0.kt index dee1a88a801..0c8fdc01bbe 100644 --- a/plugins/android-compiler-plugin/testData/codegen/android/singleFile/0.kt +++ b/plugins/android-compiler-plugin/testData/codegen/android/singleFile/0.kt @@ -8,12 +8,12 @@ import kotlinx.android.synthetic.main.layout.* class R { class id { companion object { - val item_detail_container = 0 - val textView1 = 1 - val password = 2 - val textView2 = 3 - val passwordConfirmation = 4 - val login = 5 + const val item_detail_container = 0 + const val textView1 = 1 + const val password = 2 + const val textView2 = 3 + const val passwordConfirmation = 4 + const val login = 5 } } } diff --git a/plugins/android-compiler-plugin/testData/codegen/android/singleFile/1.kt b/plugins/android-compiler-plugin/testData/codegen/android/singleFile/1.kt index 2bbd235a270..6898d4558e4 100644 --- a/plugins/android-compiler-plugin/testData/codegen/android/singleFile/1.kt +++ b/plugins/android-compiler-plugin/testData/codegen/android/singleFile/1.kt @@ -8,12 +8,12 @@ import kotlinx.android.synthetic.main.layout.* class R { class id { companion object { - val item_detail_container = 0 - val textView1 = 1 - val password = 2 - val textView2 = 3 - val passwordConfirmation = 4 - val login = 5 + const val item_detail_container = 0 + const val textView1 = 1 + const val password = 2 + const val textView2 = 3 + const val passwordConfirmation = 4 + const val login = 5 } } } diff --git a/plugins/android-compiler-plugin/testData/codegen/android/view/0.kt b/plugins/android-compiler-plugin/testData/codegen/android/view/0.kt index f094a3c79ac..ff6ceea8775 100644 --- a/plugins/android-compiler-plugin/testData/codegen/android/view/0.kt +++ b/plugins/android-compiler-plugin/testData/codegen/android/view/0.kt @@ -9,8 +9,8 @@ import kotlinx.android.synthetic.main.layout.view.* class R { class id { companion object { - val container = 0 - val login = 1 + const val container = 0 + const val login = 1 } } } diff --git a/plugins/android-compiler-plugin/testData/codegen/android/view/1.kt b/plugins/android-compiler-plugin/testData/codegen/android/view/1.kt index 64fd3985dbd..c50c38040a2 100644 --- a/plugins/android-compiler-plugin/testData/codegen/android/view/1.kt +++ b/plugins/android-compiler-plugin/testData/codegen/android/view/1.kt @@ -9,8 +9,8 @@ import kotlinx.android.synthetic.main.layout.view.* class R { class id { companion object { - val container = 0 - val login = 1 + const val container = 0 + const val login = 1 } } }