From b95219913ade2b377584ba36a525f27583a7f0f2 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Tue, 12 Jul 2011 13:33:33 +0200 Subject: [PATCH] namespace property initializers are written directly to backing fields --- idea/src/org/jetbrains/jet/codegen/ClassFileFactory.java | 2 +- idea/src/org/jetbrains/jet/codegen/NamespaceCodegen.java | 7 ++----- idea/tests/org/jetbrains/jet/codegen/PropertyGenTest.java | 3 +++ 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/idea/src/org/jetbrains/jet/codegen/ClassFileFactory.java b/idea/src/org/jetbrains/jet/codegen/ClassFileFactory.java index c7fa87a0ae7..d485b7f7ce2 100644 --- a/idea/src/org/jetbrains/jet/codegen/ClassFileFactory.java +++ b/idea/src/org/jetbrains/jet/codegen/ClassFileFactory.java @@ -49,7 +49,7 @@ public class ClassFileFactory { String fqName = namespace.getFQName(); NamespaceCodegen codegen = ns2codegen.get(fqName); if (codegen == null) { - codegen = new NamespaceCodegen(project, newVisitor(NamespaceCodegen.getJVMClassName(fqName) + ".class"), fqName, state); + codegen = new NamespaceCodegen(newVisitor(NamespaceCodegen.getJVMClassName(fqName) + ".class"), fqName, state); ns2codegen.put(fqName, codegen); } diff --git a/idea/src/org/jetbrains/jet/codegen/NamespaceCodegen.java b/idea/src/org/jetbrains/jet/codegen/NamespaceCodegen.java index 25fdb173174..01cf982bc57 100644 --- a/idea/src/org/jetbrains/jet/codegen/NamespaceCodegen.java +++ b/idea/src/org/jetbrains/jet/codegen/NamespaceCodegen.java @@ -1,6 +1,5 @@ package org.jetbrains.jet.codegen; -import com.intellij.openapi.project.Project; import org.jetbrains.jet.lang.descriptors.PropertyDescriptor; import org.jetbrains.jet.lang.psi.*; import org.objectweb.asm.ClassVisitor; @@ -13,12 +12,10 @@ import org.objectweb.asm.commons.InstructionAdapter; * @author max */ public class NamespaceCodegen { - private final Project project; private final ClassVisitor v; private final GenerationState state; - public NamespaceCodegen(Project project, ClassVisitor v, String fqName, GenerationState state) { - this.project = project; + public NamespaceCodegen(ClassVisitor v, String fqName, GenerationState state) { this.v = v; this.state = state; @@ -80,7 +77,7 @@ public class NamespaceCodegen { if (initializer != null && !(initializer instanceof JetConstantExpression)) { final PropertyDescriptor descriptor = (PropertyDescriptor) state.getBindingContext().getVariableDescriptor((JetProperty) declaration); codegen.genToJVMStack(initializer); - codegen.intermediateValueForProperty(descriptor, false, false).store(new InstructionAdapter(mv)); + codegen.intermediateValueForProperty(descriptor, true, false).store(new InstructionAdapter(mv)); } } } diff --git a/idea/tests/org/jetbrains/jet/codegen/PropertyGenTest.java b/idea/tests/org/jetbrains/jet/codegen/PropertyGenTest.java index cbc9e0f08cf..28ab6b95901 100644 --- a/idea/tests/org/jetbrains/jet/codegen/PropertyGenTest.java +++ b/idea/tests/org/jetbrains/jet/codegen/PropertyGenTest.java @@ -80,6 +80,9 @@ public class PropertyGenTest extends CodegenTestCase { final Method method = generateFunction("append"); method.invoke(null, "IntelliJ "); String value = (String) method.invoke(null, "IDEA"); + if (!value.equals("IntelliJ IDEA")) { + System.out.println(generateToText()); + } assertEquals("IntelliJ IDEA", value); } -- GitLab