Generate $propertyMetadata field in LIGHT_CLASSES mode

This commit is contained in:
Andrey Breslav
2014-06-16 22:51:42 +04:00
parent 654dd5afff
commit f1545963f3
5 changed files with 20 additions and 6 deletions
@@ -467,9 +467,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
}
private void generateDelegatedPropertyMetadataArray() {
if (state.getClassBuilderMode() == ClassBuilderMode.FULL) {
generatePropertyMetadataArrayFieldIfNeeded(classAsmType);
}
generatePropertyMetadataArrayFieldIfNeeded(classAsmType);
}
private boolean isGenericToArrayPresent() {
@@ -334,6 +334,8 @@ public abstract class MemberCodegen<T extends JetElement/* TODO: & JetDeclaratio
v.newField(NO_ORIGIN, ACC_PRIVATE | ACC_STATIC | ACC_FINAL | ACC_SYNTHETIC, JvmAbi.PROPERTY_METADATA_ARRAY_NAME,
"[" + PROPERTY_METADATA_TYPE, null, null);
if (state.getClassBuilderMode() == ClassBuilderMode.LIGHT_CLASSES) return;
InstructionAdapter iv = createOrGetClInitCodegen().v;
iv.iconst(delegatedProperties.size());
iv.newarray(PROPERTY_METADATA_TYPE);
@@ -77,9 +77,7 @@ public class PackagePartCodegen extends MemberCodegen<JetFile> {
@Override
protected void generateSyntheticParts() {
if (state.getClassBuilderMode() == ClassBuilderMode.FULL) {
generatePropertyMetadataArrayFieldIfNeeded(packagePartType);
}
generatePropertyMetadataArrayFieldIfNeeded(packagePartType);
}
@Override
@@ -0,0 +1,11 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
fun Any.get(x: Any?, y: Any): Any = null!!
class <!CONFLICTING_JVM_DECLARATIONS!>C<!> {
val x by 1
<!CONFLICTING_JVM_DECLARATIONS!>val `$propertyMetadata`: Array<PropertyMetadata><!> = null!!
}
val x by 1
<!CONFLICTING_JVM_DECLARATIONS!>val `$propertyMetadata`: Array<PropertyMetadata><!> = null!!
@@ -2865,6 +2865,11 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
doTest("compiler/testData/diagnostics/tests/duplicateJvmSignature/specialNames/instance.kt");
}
@TestMetadata("propertyMetadataCache.kt")
public void testPropertyMetadataCache() throws Exception {
doTest("compiler/testData/diagnostics/tests/duplicateJvmSignature/specialNames/propertyMetadataCache.kt");
}
}
@TestMetadata("compiler/testData/diagnostics/tests/duplicateJvmSignature/traitImpl")