From 99d4f97aef648219b35abfd6ab0a15e090e41cd4 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 14 Aug 2014 10:42:40 +0400 Subject: [PATCH] Fix access to top level delegated property from another property #KT-5612 Fixed --- .../jetbrains/jet/codegen/PackagePartCodegen.java | 7 ++----- .../accessTopLevelDelegatedPropertyInClinit.kt | 13 +++++++++++++ .../generated/BlackBoxCodegenTestGenerated.java | 5 +++++ 3 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 compiler/testData/codegen/box/delegatedProperty/accessTopLevelDelegatedPropertyInClinit.kt diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/PackagePartCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/PackagePartCodegen.java index 427ffd5b669..ed3144e527d 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/PackagePartCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/PackagePartCodegen.java @@ -55,6 +55,8 @@ public class PackagePartCodegen extends MemberCodegen { ArrayUtil.EMPTY_STRING_ARRAY ); v.visitSource(element.getName(), null); + + generatePropertyMetadataArrayFieldIfNeeded(packagePartType); } @Override @@ -75,11 +77,6 @@ public class PackagePartCodegen extends MemberCodegen { } } - @Override - protected void generateSyntheticParts() { - generatePropertyMetadataArrayFieldIfNeeded(packagePartType); - } - @Override protected void generateKotlinAnnotation() { writeKotlinSyntheticClassAnnotation(v, KotlinSyntheticClass.Kind.PACKAGE_PART); diff --git a/compiler/testData/codegen/box/delegatedProperty/accessTopLevelDelegatedPropertyInClinit.kt b/compiler/testData/codegen/box/delegatedProperty/accessTopLevelDelegatedPropertyInClinit.kt new file mode 100644 index 00000000000..26d5724a6e1 --- /dev/null +++ b/compiler/testData/codegen/box/delegatedProperty/accessTopLevelDelegatedPropertyInClinit.kt @@ -0,0 +1,13 @@ +// KT-5612 + +class Delegate { + public fun get(thisRef: Any?, prop: PropertyMetadata): String { + return "OK" + } +} + +val prop by Delegate() + +val a = prop + +fun box() = a diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java index 78066c76dd7..a9aee1f3866 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java @@ -1887,6 +1887,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { @TestMetadata("compiler/testData/codegen/box/delegatedProperty") public static class DelegatedProperty extends AbstractBlackBoxCodegenTest { + @TestMetadata("accessTopLevelDelegatedPropertyInClinit.kt") + public void testAccessTopLevelDelegatedPropertyInClinit() throws Exception { + doTest("compiler/testData/codegen/box/delegatedProperty/accessTopLevelDelegatedPropertyInClinit.kt"); + } + public void testAllFilesPresentInDelegatedProperty() throws Exception { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/box/delegatedProperty"), Pattern.compile("^(.+)\\.kt$"), true); }