diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.kt index 79909b2a3d6..9da9bd1ed46 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.kt @@ -1157,7 +1157,7 @@ class KotlinTypeMapper @JvmOverloads constructor( fun mapSyntheticMethodForPropertyAnnotations(descriptor: PropertyDescriptor): Method { val receiver = descriptor.extensionReceiverParameter - val name = JvmAbi.getSyntheticMethodNameForAnnotatedProperty(descriptor.name) + val name = JvmAbi.getSyntheticMethodNameForAnnotatedProperty(mapFunctionName(descriptor.getter!!, OwnerKind.IMPLEMENTATION)) val desc = if (receiver == null) "()V" else "(${mapType(receiver.type)})V" return Method(name, desc) } diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/PropertiesLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/PropertiesLowering.kt index 5f81729f6ec..652182ab115 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/PropertiesLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/PropertiesLowering.kt @@ -31,7 +31,7 @@ class PropertiesLowering( private val originOfSyntheticMethodForAnnotations: IrDeclarationOrigin? = null, private val skipExternalProperties: Boolean = false, private val generateAnnotationFields: Boolean = false, - private val computeSyntheticMethodName: ((Name) -> String)? = null + private val computeSyntheticMethodName: ((IrProperty) -> String)? = null ) : IrElementTransformerVoid(), FileLoweringPass { override fun lower(irFile: IrFile) { irFile.accept(this, null) @@ -63,7 +63,7 @@ class PropertiesLowering( if (declaration.annotations.isNotEmpty() && originOfSyntheticMethodForAnnotations != null && computeSyntheticMethodName != null ) { - val methodName = computeSyntheticMethodName.invoke(declaration.name) // Workaround KT-4113 + val methodName = computeSyntheticMethodName.invoke(declaration) // Workaround KT-4113 add(createSyntheticMethodForAnnotations(declaration, originOfSyntheticMethodForAnnotations, methodName)) } } diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt index 9c6e75d8e4b..56ec48afdd8 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.backend.common.lower.* import org.jetbrains.kotlin.backend.common.lower.loops.forLoopsPhase import org.jetbrains.kotlin.backend.common.phaser.* import org.jetbrains.kotlin.backend.jvm.lower.* +import org.jetbrains.kotlin.codegen.OwnerKind import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.ir.declarations.IrDeclarationWithName import org.jetbrains.kotlin.ir.declarations.IrFile @@ -67,10 +68,13 @@ private val lateinitPhase = makeIrFilePhase( description = "Insert checks for lateinit field references" ) -private val propertiesPhase = makeIrFilePhase( +private val propertiesPhase = makeIrFilePhase( { context -> - PropertiesLowering(context, JvmLoweredDeclarationOrigin.SYNTHETIC_METHOD_FOR_PROPERTY_ANNOTATIONS) { propertyName -> - JvmAbi.getSyntheticMethodNameForAnnotatedProperty(propertyName) + PropertiesLowering(context, JvmLoweredDeclarationOrigin.SYNTHETIC_METHOD_FOR_PROPERTY_ANNOTATIONS) { property -> + val getterName = property.getter?.let { getter -> + context.typeMapper.mapFunctionName(getter, OwnerKind.IMPLEMENTATION) + } ?: JvmAbi.getterName(property.name.asString()) + JvmAbi.getSyntheticMethodNameForAnnotatedProperty(getterName) } }, name = "Properties", diff --git a/compiler/testData/codegen/box/jvmName/propertySyntheticMethod.kt b/compiler/testData/codegen/box/jvmName/propertySyntheticMethod.kt new file mode 100644 index 00000000000..5dc7f203ea6 --- /dev/null +++ b/compiler/testData/codegen/box/jvmName/propertySyntheticMethod.kt @@ -0,0 +1,30 @@ +// TARGET_BACKEND: JVM +// WITH_REFLECT + +import kotlin.reflect.KProperty2 + +class C { + @Deprecated("int") + @get:JvmName("mapIntIntHex") + val Map.hex: String get() = "O" + + @Deprecated("byte") + @get:JvmName("mapIntByteHex") + val Map.hex: String get() = "K" +} + +fun box(): String { + val a1 = C::class.members.single { + it is KProperty2<*, *, *> && it.parameters[1].type.arguments[1].type!!.classifier == Int::class + }.annotations + if ((a1.single() as Deprecated).message != "int") + return "Fail annotations on Map::hex: $a1" + + val a2 = C::class.members.single { + it is KProperty2<*, *, *> && it.parameters[1].type.arguments[1].type!!.classifier == Byte::class + }.annotations + if ((a2.single() as Deprecated).message != "byte") + return "Fail annotations on Map::hex: $a2" + + return with(C()) { mapOf(0 to 0).hex + mapOf(0 to 0.toByte()).hex } +} diff --git a/compiler/testData/codegen/bytecodeListing/annotations/defaultTargets.txt b/compiler/testData/codegen/bytecodeListing/annotations/defaultTargets.txt index 0b3ac0d2c9f..a5381d5823d 100644 --- a/compiler/testData/codegen/bytecodeListing/annotations/defaultTargets.txt +++ b/compiler/testData/codegen/bytecodeListing/annotations/defaultTargets.txt @@ -3,10 +3,10 @@ public final class A { private final @AnnField @AnnParameterField @AnnTypeField field a: int private final @AnnField @AnnTypeField field x: int public method (@AnnParameterProperty @AnnParameterField p0: int): void - public synthetic deprecated static @AnnProperty @AnnFieldProperty @AnnParameterProperty method a$annotations(): void + public synthetic deprecated static @AnnProperty @AnnFieldProperty @AnnParameterProperty method getA$annotations(): void public final method getA(): int + public synthetic deprecated static @AnnProperty @AnnFieldProperty method getX$annotations(): void public final method getX(): int - public synthetic deprecated static @AnnProperty @AnnFieldProperty method x$annotations(): void } @kotlin.annotation.Target diff --git a/compiler/testData/codegen/bytecodeListing/annotations/onProperties.txt b/compiler/testData/codegen/bytecodeListing/annotations/onProperties.txt index 23c02e69831..6c0a8159bad 100644 --- a/compiler/testData/codegen/bytecodeListing/annotations/onProperties.txt +++ b/compiler/testData/codegen/bytecodeListing/annotations/onProperties.txt @@ -7,15 +7,15 @@ public final class A { private field y: int static method (): void public method (@AnnParam p0: int, @AnnParam p1: int): void + public synthetic deprecated static @AnnProp @AnnProp2 method getP$annotations(): void public final @AnnGetter method getP(): int + public synthetic deprecated static @AnnProp @AnnProp2 @AnnDelegate method getS$annotations(): void public final @org.jetbrains.annotations.NotNull method getS(): java.lang.String + public synthetic deprecated static @AnnProp2 method getX$annotations(): void public final method getX(): int public final @AnnGetter method getY(): int - public synthetic deprecated static @AnnProp @AnnProp2 method p$annotations(): void - public synthetic deprecated static @AnnProp @AnnProp2 @AnnDelegate method s$annotations(): void public final @AnnSetter method setP(@AnnParam p0: int): void public final @AnnSetter method setY(p0: int): void - public synthetic deprecated static @AnnProp2 method x$annotations(): void } @java.lang.annotation.Retention diff --git a/compiler/testData/codegen/bytecodeListing/inline/InlineOnlyPropertyMultifile.txt b/compiler/testData/codegen/bytecodeListing/inline/InlineOnlyPropertyMultifile.txt index c0f11548e7c..cf0f2cb64f9 100644 --- a/compiler/testData/codegen/bytecodeListing/inline/InlineOnlyPropertyMultifile.txt +++ b/compiler/testData/codegen/bytecodeListing/inline/InlineOnlyPropertyMultifile.txt @@ -6,7 +6,7 @@ public final class test/Foo { @kotlin.Metadata synthetic final class test/Foo__InlineOnlyPropertyMultifileKt { public final static method foo(): void + public synthetic deprecated static @kotlin.internal.InlineOnly method getProp$annotations(): void private final static method getProp(): java.lang.String - public synthetic deprecated static @kotlin.internal.InlineOnly method prop$annotations(): void private final static method setProp(p0: java.lang.String): void } diff --git a/compiler/testData/codegen/bytecodeListing/inline/inlineOnlyProperty.txt b/compiler/testData/codegen/bytecodeListing/inline/inlineOnlyProperty.txt index 75bbe2f45ad..3983a4a73db 100644 --- a/compiler/testData/codegen/bytecodeListing/inline/inlineOnlyProperty.txt +++ b/compiler/testData/codegen/bytecodeListing/inline/inlineOnlyProperty.txt @@ -1,18 +1,18 @@ @kotlin.Metadata public final class Foo { public method (): void + public synthetic deprecated static @kotlin.internal.InlineOnly method getProp$annotations(): void private final method getProp(): java.lang.String private final @kotlin.internal.InlineOnly method getProp2(): java.lang.String - public synthetic deprecated static @kotlin.internal.InlineOnly method prop$annotations(): void private final method setProp(p0: java.lang.String): void public final method setProp2(@org.jetbrains.annotations.NotNull p0: java.lang.String): void } @kotlin.Metadata public final class InlineOnlyPropertyKt { + public synthetic deprecated static @kotlin.internal.InlineOnly method getProp$annotations(): void private final static method getProp(): java.lang.String private final static @kotlin.internal.InlineOnly method getProp2(): java.lang.String - public synthetic deprecated static @kotlin.internal.InlineOnly method prop$annotations(): void private final static method setProp(p0: java.lang.String): void public final static method setProp2(@org.jetbrains.annotations.NotNull p0: java.lang.String): void } diff --git a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassWithManyKindsOfMembers.txt b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassWithManyKindsOfMembers.txt index 1850c41333c..16101d1d5c4 100644 --- a/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassWithManyKindsOfMembers.txt +++ b/compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassWithManyKindsOfMembers.txt @@ -55,35 +55,35 @@ public final class Z { public method equals(p0: java.lang.Object): boolean public static method equals-impl(p0: int, @org.jetbrains.annotations.Nullable p1: java.lang.Object): boolean public final static method equals-impl0(p0: int, p1: int): boolean + public synthetic deprecated static @A method getNonOverridingExtVal$annotations(p0: java.lang.String): void public final static @AGet method getNonOverridingExtVal-impl(p0: int, @AReceiver @org.jetbrains.annotations.NotNull p1: java.lang.String): int + public synthetic deprecated static @A method getNonOverridingExtVar$annotations(p0: java.lang.String): void public final static @AGet method getNonOverridingExtVar-impl(p0: int, @AReceiver @org.jetbrains.annotations.NotNull p1: java.lang.String): int + public synthetic deprecated static @A method getNonOverridingVal$annotations(): void public final static @AGet method getNonOverridingVal-impl(p0: int): int + public synthetic deprecated static @A method getNonOverridingVar$annotations(): void public final static @AGet method getNonOverridingVar-impl(p0: int): int + public synthetic deprecated static @A method getOverridingExtVal$annotations(p0: java.lang.String): void public @AGet method getOverridingExtVal(@AReceiver @org.jetbrains.annotations.NotNull p0: java.lang.String): int public static @AGet method getOverridingExtVal-impl(p0: int, @AReceiver @org.jetbrains.annotations.NotNull p1: java.lang.String): int + public synthetic deprecated static @A method getOverridingExtVar$annotations(p0: java.lang.String): void public @AGet method getOverridingExtVar(@AReceiver @org.jetbrains.annotations.NotNull p0: java.lang.String): int public static @AGet method getOverridingExtVar-impl(p0: int, @AReceiver @org.jetbrains.annotations.NotNull p1: java.lang.String): int + public synthetic deprecated static @A method getOverridingVal$annotations(): void public @AGet method getOverridingVal(): int public static @AGet method getOverridingVal-impl(p0: int): int + public synthetic deprecated static @A method getOverridingVar$annotations(): void public @AGet method getOverridingVar(): int public static @AGet method getOverridingVar-impl(p0: int): int public final @AGet method getX(): int public method hashCode(): int public static method hashCode-impl(p0: int): int public final static @A method nonOverridingExtFun-impl(p0: int, @AReceiver @org.jetbrains.annotations.NotNull p1: java.lang.String): void - public synthetic deprecated static @A method nonOverridingExtVal$annotations(p0: java.lang.String): void - public synthetic deprecated static @A method nonOverridingExtVar$annotations(p0: java.lang.String): void public final static @A method nonOverridingFun-impl(p0: int): void - public synthetic deprecated static @A method nonOverridingVal$annotations(): void - public synthetic deprecated static @A method nonOverridingVar$annotations(): void public @A method overridingExtFun(@AReceiver @org.jetbrains.annotations.NotNull p0: java.lang.String): void public static @A method overridingExtFun-impl(p0: int, @AReceiver @org.jetbrains.annotations.NotNull p1: java.lang.String): void - public synthetic deprecated static @A method overridingExtVal$annotations(p0: java.lang.String): void - public synthetic deprecated static @A method overridingExtVar$annotations(p0: java.lang.String): void public @A method overridingFun(): void public static @A method overridingFun-impl(p0: int): void - public synthetic deprecated static @A method overridingVal$annotations(): void - public synthetic deprecated static @A method overridingVar$annotations(): void public final static @ASet method setNonOverridingExtVar-impl(p0: int, @AReceiver @org.jetbrains.annotations.NotNull p1: java.lang.String, @ASetParam p2: int): void public final static @ASet method setNonOverridingVar-impl(p0: int, @ASetParam p1: int): void public @ASet method setOverridingExtVar(@AReceiver @org.jetbrains.annotations.NotNull p0: java.lang.String, @ASetParam p1: int): void diff --git a/compiler/testData/codegen/bytecodeListing/multiplatform/optionalExpectation.txt b/compiler/testData/codegen/bytecodeListing/multiplatform/optionalExpectation.txt index a176442165d..1f4b3fb78f7 100644 --- a/compiler/testData/codegen/bytecodeListing/multiplatform/optionalExpectation.txt +++ b/compiler/testData/codegen/bytecodeListing/multiplatform/optionalExpectation.txt @@ -16,7 +16,7 @@ public final class Foo { inner class Foo$Nested public method (p0: int): void public final method bar(): void + public synthetic deprecated static method getX$annotations(): void public final method getX(): int public final method setX(p0: int): void - public synthetic deprecated static method x$annotations(): void } diff --git a/compiler/testData/codegen/kapt/innerClasses.txt b/compiler/testData/codegen/kapt/innerClasses.txt index 9a572929bae..39835b1fcd4 100644 --- a/compiler/testData/codegen/kapt/innerClasses.txt +++ b/compiler/testData/codegen/kapt/innerClasses.txt @@ -3,8 +3,8 @@ public final class test/TopLevel$Companion { inner class test/TopLevel$Companion private method (): void public final method a(): void + public synthetic deprecated static @kotlin.jvm.JvmStatic method getQ$annotations(): void public final @org.jetbrains.annotations.NotNull method getQ(): java.lang.String - public synthetic deprecated static @kotlin.jvm.JvmStatic method q$annotations(): void } @kotlin.Metadata diff --git a/compiler/testData/writeFlags/jvm8/defaults/compatibility/propertyAnnotation.kt b/compiler/testData/writeFlags/jvm8/defaults/compatibility/propertyAnnotation.kt index f44eaa920b0..94b6ba25f08 100644 --- a/compiler/testData/writeFlags/jvm8/defaults/compatibility/propertyAnnotation.kt +++ b/compiler/testData/writeFlags/jvm8/defaults/compatibility/propertyAnnotation.kt @@ -13,9 +13,9 @@ interface Test { } // TESTED_OBJECT_KIND: function -// TESTED_OBJECTS: Test, test$annotations +// TESTED_OBJECTS: Test, getTest$annotations // ABSENT: TRUE // TESTED_OBJECT_KIND: function -// TESTED_OBJECTS: Test$DefaultImpls, test$annotations +// TESTED_OBJECTS: Test$DefaultImpls, getTest$annotations // FLAGS: ACC_PUBLIC, ACC_STATIC, ACC_SYNTHETIC, ACC_DEPRECATED diff --git a/compiler/testData/writeFlags/jvm8/defaults/propertyAnnotation.kt b/compiler/testData/writeFlags/jvm8/defaults/propertyAnnotation.kt index c86aa948308..7d3939c2537 100644 --- a/compiler/testData/writeFlags/jvm8/defaults/propertyAnnotation.kt +++ b/compiler/testData/writeFlags/jvm8/defaults/propertyAnnotation.kt @@ -15,9 +15,9 @@ interface Test { } // TESTED_OBJECT_KIND: function -// TESTED_OBJECTS: Test, test$annotations +// TESTED_OBJECTS: Test, getTest$annotations // ABSENT: TRUE // TESTED_OBJECT_KIND: function -// TESTED_OBJECTS: Test$DefaultImpls, test$annotations +// TESTED_OBJECTS: Test$DefaultImpls, getTest$annotations // FLAGS: ACC_PUBLIC, ACC_STATIC, ACC_SYNTHETIC, ACC_DEPRECATED diff --git a/compiler/testData/writeFlags/property/syntheticAnnotationsMethod/privateProperty.kt b/compiler/testData/writeFlags/property/syntheticAnnotationsMethod/privateProperty.kt index 5e44f85cde5..ef515002edb 100644 --- a/compiler/testData/writeFlags/property/syntheticAnnotationsMethod/privateProperty.kt +++ b/compiler/testData/writeFlags/property/syntheticAnnotationsMethod/privateProperty.kt @@ -7,5 +7,5 @@ class Foo { } // TESTED_OBJECT_KIND: function -// TESTED_OBJECTS: Foo, prop$annotations +// TESTED_OBJECTS: Foo, getProp$annotations // FLAGS: ACC_DEPRECATED, ACC_STATIC, ACC_SYNTHETIC, ACC_PRIVATE diff --git a/compiler/testData/writeFlags/property/syntheticAnnotationsMethod/protectedProperty.kt b/compiler/testData/writeFlags/property/syntheticAnnotationsMethod/protectedProperty.kt index 6f8f6a73322..5f6ae392023 100644 --- a/compiler/testData/writeFlags/property/syntheticAnnotationsMethod/protectedProperty.kt +++ b/compiler/testData/writeFlags/property/syntheticAnnotationsMethod/protectedProperty.kt @@ -7,5 +7,5 @@ open class Foo { } // TESTED_OBJECT_KIND: function -// TESTED_OBJECTS: Foo, prop$annotations +// TESTED_OBJECTS: Foo, getProp$annotations // FLAGS: ACC_DEPRECATED, ACC_STATIC, ACC_SYNTHETIC, ACC_PROTECTED diff --git a/compiler/testData/writeFlags/property/syntheticAnnotationsMethod/publicProperty.kt b/compiler/testData/writeFlags/property/syntheticAnnotationsMethod/publicProperty.kt index 441ae56f9ac..196384ad7f2 100644 --- a/compiler/testData/writeFlags/property/syntheticAnnotationsMethod/publicProperty.kt +++ b/compiler/testData/writeFlags/property/syntheticAnnotationsMethod/publicProperty.kt @@ -7,5 +7,5 @@ class Foo { } // TESTED_OBJECT_KIND: function -// TESTED_OBJECTS: Foo, prop$annotations +// TESTED_OBJECTS: Foo, getProp$annotations // FLAGS: ACC_DEPRECATED, ACC_STATIC, ACC_SYNTHETIC, ACC_PUBLIC diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index 5cfcd559876..5cd5f680f7a 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -14873,6 +14873,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/jvmName/propertyName.kt"); } + @TestMetadata("propertySyntheticMethod.kt") + public void testPropertySyntheticMethod() throws Exception { + runTest("compiler/testData/codegen/box/jvmName/propertySyntheticMethod.kt"); + } + @TestMetadata("renamedFileClass.kt") public void testRenamedFileClass() throws Exception { runTest("compiler/testData/codegen/box/jvmName/renamedFileClass.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 764d9783d88..1897dcbb8eb 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -14873,6 +14873,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/jvmName/propertyName.kt"); } + @TestMetadata("propertySyntheticMethod.kt") + public void testPropertySyntheticMethod() throws Exception { + runTest("compiler/testData/codegen/box/jvmName/propertySyntheticMethod.kt"); + } + @TestMetadata("renamedFileClass.kt") public void testRenamedFileClass() throws Exception { runTest("compiler/testData/codegen/box/jvmName/renamedFileClass.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/SyntheticMethodForAnnotatedPropertyGenTest.java b/compiler/tests/org/jetbrains/kotlin/codegen/SyntheticMethodForAnnotatedPropertyGenTest.java index 8d75a43f470..8391a1e3453 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/SyntheticMethodForAnnotatedPropertyGenTest.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/SyntheticMethodForAnnotatedPropertyGenTest.java @@ -18,7 +18,6 @@ package org.jetbrains.kotlin.codegen; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.load.java.JvmAbi; -import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.test.ConfigurationKind; import java.lang.annotation.Annotation; @@ -38,7 +37,7 @@ public class SyntheticMethodForAnnotatedPropertyGenTest extends CodegenTestCase return "properties/syntheticMethod"; } - private static final String TEST_SYNTHETIC_METHOD_NAME = JvmAbi.getSyntheticMethodNameForAnnotatedProperty(Name.identifier("property")); + private static final String TEST_SYNTHETIC_METHOD_NAME = JvmAbi.getSyntheticMethodNameForAnnotatedProperty("getProperty"); public void testInClass() { loadFile(); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java index 30c6542f52c..cafeb5432ca 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -13758,6 +13758,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/jvmName/propertyName.kt"); } + @TestMetadata("propertySyntheticMethod.kt") + public void testPropertySyntheticMethod() throws Exception { + runTest("compiler/testData/codegen/box/jvmName/propertySyntheticMethod.kt"); + } + @TestMetadata("renamedFileClass.kt") public void testRenamedFileClass() throws Exception { runTest("compiler/testData/codegen/box/jvmName/renamedFileClass.kt"); diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/JvmAbi.java b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/JvmAbi.java index a5165fede7b..6640d0c86db 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/JvmAbi.java +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/JvmAbi.java @@ -51,8 +51,8 @@ public final class JvmAbi { public static final String IMPL_SUFFIX_FOR_INLINE_CLASS_MEMBERS = "-impl"; @NotNull - public static String getSyntheticMethodNameForAnnotatedProperty(@NotNull Name propertyName) { - return propertyName.asString() + ANNOTATED_PROPERTY_METHOD_NAME_SUFFIX; + public static String getSyntheticMethodNameForAnnotatedProperty(@NotNull String getterName) { + return getterName + ANNOTATED_PROPERTY_METHOD_NAME_SUFFIX; } @NotNull diff --git a/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/deserialization/JvmMetadataVersion.kt b/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/deserialization/JvmMetadataVersion.kt index 89072951ad4..4bcab8bfe81 100644 --- a/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/deserialization/JvmMetadataVersion.kt +++ b/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/deserialization/JvmMetadataVersion.kt @@ -27,7 +27,7 @@ class JvmMetadataVersion(versionArray: IntArray, val isStrictSemantics: Boolean) companion object { @JvmField - val INSTANCE = JvmMetadataVersion(1, 1, 15) + val INSTANCE = JvmMetadataVersion(1, 1, 16) @JvmField val INVALID_VERSION = JvmMetadataVersion() diff --git a/libraries/tools/kotlinp/testData/VersionRequirement.txt b/libraries/tools/kotlinp/testData/VersionRequirement.txt index 5980b409e19..c86b34f388a 100644 --- a/libraries/tools/kotlinp/testData/VersionRequirement.txt +++ b/libraries/tools/kotlinp/testData/VersionRequirement.txt @@ -29,7 +29,7 @@ package { // requires language version 1.3.0 (level=ERROR, message="property must not be used!") // field: property:Ljava/lang/String; // getter: getProperty()Ljava/lang/String; - // synthetic method for annotations: property$annotations()V + // synthetic method for annotations: getProperty$annotations()V public final val property: kotlin/String /* = ... */ public final get diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/annotations.txt b/plugins/kapt3/kapt3-compiler/testData/converter/annotations.txt index a4998fe463d..1034c8401ce 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/annotations.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/annotations.txt @@ -110,7 +110,7 @@ public final class TestAnno2 { } @Anno3(value = "property") - public static void b$annotations() { + public static void getB$annotations() { } @org.jetbrains.annotations.NotNull() diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/annotations2.txt b/plugins/kapt3/kapt3-compiler/testData/converter/annotations2.txt index 1238848a7e1..82922bc9469 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/annotations2.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/annotations2.txt @@ -30,7 +30,7 @@ public final class AnnotationsTest { } @Anno(value = "top-level-val") - public static void topLevelVal$annotations(int p0) { + public static void getTopLevelVal$annotations(int p0) { } @org.jetbrains.annotations.NotNull() @@ -82,14 +82,14 @@ public abstract class Test { public abstract java.lang.String abstractMethod(); @Anno(value = "abstract-val") - public static void abstractVal$annotations() { + public static void getAbstractVal$annotations() { } @org.jetbrains.annotations.NotNull() public abstract java.lang.String getAbstractVal(); @Anno(value = "v-property") - public static void v$annotations() { + public static void getV$annotations() { } @org.jetbrains.annotations.NotNull() diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/annotationsWithTargets.txt b/plugins/kapt3/kapt3-compiler/testData/converter/annotationsWithTargets.txt index 6b4773110b8..6a05fc2e7e5 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/annotationsWithTargets.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/annotationsWithTargets.txt @@ -18,7 +18,7 @@ public final class Bar { @Anno() @PropertyAnno() - public static void a$annotations() { + public static void getA$annotations() { } @org.jetbrains.annotations.NotNull() @@ -43,7 +43,7 @@ public final class Baz { public final java.lang.String a = ""; @Anno() - public static void a$annotations() { + public static void getA$annotations() { } public Baz() { @@ -75,7 +75,7 @@ public final class Foo { private final java.lang.String a = null; @PropertyAnno() - public static void a$annotations() { + public static void getA$annotations() { } @org.jetbrains.annotations.NotNull() diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/comments.txt b/plugins/kapt3/kapt3-compiler/testData/converter/comments.txt index 8bc8f5daeee..7d048cec5e0 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/comments.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/comments.txt @@ -87,7 +87,7 @@ public final class Test { * prop2. */ @Anno() - public static void prop2$annotations() { + public static void getProp2$annotations() { } @org.jetbrains.annotations.NotNull() diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/jvmStatic.txt b/plugins/kapt3/kapt3-compiler/testData/converter/jvmStatic.txt index 3990759e580..1294072a234 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/jvmStatic.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/jvmStatic.txt @@ -20,7 +20,7 @@ public final class JvmStaticTest { @kotlin.Metadata() public static final class Companion { - public static void one$annotations() { + public static void getOne$annotations() { } public final int getOne() { diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/jvmStaticFieldInParent.txt b/plugins/kapt3/kapt3-compiler/testData/converter/jvmStaticFieldInParent.txt index 07e90091af6..655263960d1 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/jvmStaticFieldInParent.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/jvmStaticFieldInParent.txt @@ -18,7 +18,7 @@ public final class Test { @kotlin.Metadata() public static final class A { - public static void test$annotations() { + public static void getTest$annotations() { } @org.jetbrains.annotations.NotNull() diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/kt18791.txt b/plugins/kapt3/kapt3-compiler/testData/converter/kt18791.txt index a0b74f61b25..97b6ddc8568 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/kt18791.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/kt18791.txt @@ -136,7 +136,7 @@ public final class MyActivity { private final int propF = 0; @Bind(id = lib.R.id.textView) - public static void a$annotations() { + public static void getA$annotations() { } public final int getA() { @@ -144,7 +144,7 @@ public final class MyActivity { } @Bind(id = lib.R.id.textView) - public static void b$annotations() { + public static void getB$annotations() { } public final int getB() { @@ -152,7 +152,7 @@ public final class MyActivity { } @Bind(id = app.R.layout.mainActivity) - public static void c$annotations() { + public static void getC$annotations() { } public final int getC() { @@ -160,7 +160,7 @@ public final class MyActivity { } @Bind(id = app.R.layout.mainActivity) - public static void d$annotations() { + public static void getD$annotations() { } public final int getD() { @@ -169,7 +169,7 @@ public final class MyActivity { @Anno(a1 = app.B.a1, a2 = app.B.a2, a3 = app.B.a3, a4 = app.B.a4, a5 = app.B.a5, a6 = app.B.a6, a7 = app.B.a7, a8 = app.B.a8, a9 = "A") @Bind(id = app.R2.layout.mainActivity) - public static void e$annotations() { + public static void getE$annotations() { } public final int getE() { @@ -177,7 +177,7 @@ public final class MyActivity { } @Bind(id = app.B.id.textView) - public static void f$annotations() { + public static void getF$annotations() { } public final int getF() { diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/propertyAnnotations.txt b/plugins/kapt3/kapt3-compiler/testData/converter/propertyAnnotations.txt index ea84001dfe8..e6a6991997c 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/propertyAnnotations.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/propertyAnnotations.txt @@ -29,7 +29,7 @@ public final class Test { @Anno2() @Anno() - public static void prop$annotations() { + public static void getProp$annotations() { } @org.jetbrains.annotations.NotNull() diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/repeatableAnnotations.txt b/plugins/kapt3/kapt3-compiler/testData/converter/repeatableAnnotations.txt index 2779b066bb0..8863234f2e5 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/repeatableAnnotations.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/repeatableAnnotations.txt @@ -189,7 +189,7 @@ public final class Test { @lib.Anno(value = "3", construct = {"C"}) @lib.Anno(value = "2", construct = {"A", "B"}) @lib.Anno(value = "1") - public static void value$annotations() { + public static void getValue$annotations() { } @org.jetbrains.annotations.NotNull() diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/topLevel.txt b/plugins/kapt3/kapt3-compiler/testData/converter/topLevel.txt index 8d44c6c4de7..81686462620 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/topLevel.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/topLevel.txt @@ -53,7 +53,7 @@ public final class TopLevelKt { } @Anno(value = "extpr") - public static void extensionProperty$annotations(java.lang.Object p0) { + public static void getExtensionProperty$annotations(java.lang.Object p0) { } @org.jetbrains.annotations.NotNull()