diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java index 30fcfbcef1d..1a0f27750a2 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java @@ -348,7 +348,7 @@ public class PropertyCodegen { FieldVisitor fv = builder.newField( JvmDeclarationOriginKt.OtherOrigin(element, propertyDescriptor), modifiers, name, type.getDescriptor(), - typeMapper.mapFieldSignature(kotlinType, propertyDescriptor), defaultValue + isDelegate ? null : typeMapper.mapFieldSignature(kotlinType, propertyDescriptor), defaultValue ); Annotated fieldAnnotated = new AnnotatedWithFakeAnnotations(propertyDescriptor, annotations); diff --git a/compiler/testData/codegen/box/reflection/genericSignature/genericBackingFieldSignature.kt b/compiler/testData/codegen/box/reflection/genericSignature/genericBackingFieldSignature.kt index 583d090ed38..d748b0f2613 100644 --- a/compiler/testData/codegen/box/reflection/genericSignature/genericBackingFieldSignature.kt +++ b/compiler/testData/codegen/box/reflection/genericSignature/genericBackingFieldSignature.kt @@ -48,35 +48,35 @@ fun box(): String { val classField = clz.getDeclaredField("classField1"); if (classField.getGenericType().toString() != "Z") - return "fail1:" + classField.getGenericType(); + return "fail1: " + classField.getGenericType(); val classField2 = clz.getDeclaredField("classField2"); if (classField2.getGenericType().toString() != "Z") - return "fail2:" + classField2.getGenericType(); + return "fail2: " + classField2.getGenericType(); val classField3 = clz.getDeclaredField("classField3"); if (classField3.getGenericType().toString() != "Zout") - return "fail3:" + classField3.getGenericType(); + return "fail3: " + classField3.getGenericType(); val classField4 = clz.getDeclaredField("classField4"); if (classField4.getGenericType().toString() != "Zin") - return "fail4:" + classField4.getGenericType(); + return "fail4: " + classField4.getGenericType(); val classField5 = clz.getDeclaredField("delegateLazy\$delegate"); - if (classField5.getGenericType().toString() != "kotlin.Lazy>") - return "fail5:" + classField5.getGenericType(); + if (classField5.getGenericType().toString() != "interface kotlin.Lazy") + return "fail5: " + classField5.getGenericType(); val classField6 = clz.getDeclaredField("delegateNotNull\$delegate"); - if (classField6.getGenericType().toString() != "kotlin.properties.ReadWriteProperty>") - return "fail6:" + classField6.getGenericType(); + if (classField6.getGenericType().toString() != "interface kotlin.properties.ReadWriteProperty") + return "fail6: " + classField6.getGenericType(); return "OK" diff --git a/compiler/testData/writeSignature/backingFieldForGenericDelegated.kt b/compiler/testData/writeSignature/backingFieldForGenericDelegated.kt new file mode 100644 index 00000000000..9eef34bca07 --- /dev/null +++ b/compiler/testData/writeSignature/backingFieldForGenericDelegated.kt @@ -0,0 +1,18 @@ +import kotlin.reflect.KProperty +import kotlin.reflect.KProperty1 + +class DVal>(val kmember: P) { + operator fun getValue(t: T, p: KProperty<*>): R { + return kmember.get(t) + } +} + +class Value(var text: String? = null) + +class Test { + val Value.additionalText by DVal(Value::text) +} + +// field: Test::additionalText$delegate +// jvm signature: LDVal; +// generic signature: null \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/WriteSignatureTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/WriteSignatureTestGenerated.java index 9ed624bb62c..d28119aedd5 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/WriteSignatureTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/WriteSignatureTestGenerated.java @@ -47,6 +47,12 @@ public class WriteSignatureTestGenerated extends AbstractWriteSignatureTest { doTest(fileName); } + @TestMetadata("backingFieldForGenericDelegated.kt") + public void testBackingFieldForGenericDelegated() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/writeSignature/backingFieldForGenericDelegated.kt"); + doTest(fileName); + } + @TestMetadata("Comparable.kt") public void testComparable() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/writeSignature/Comparable.kt");