diff --git a/idea/src/org/jetbrains/jet/codegen/NamespaceCodegen.java b/idea/src/org/jetbrains/jet/codegen/NamespaceCodegen.java index 894d6a47f76..aba2c042338 100644 --- a/idea/src/org/jetbrains/jet/codegen/NamespaceCodegen.java +++ b/idea/src/org/jetbrains/jet/codegen/NamespaceCodegen.java @@ -11,15 +11,10 @@ import org.objectweb.asm.Opcodes; * @author max */ public class NamespaceCodegen { - private final ClassVisitorFactory factory; - - public NamespaceCodegen(ClassVisitorFactory factory) { - this.factory = factory; + public NamespaceCodegen() { } - public void generate(JetNamespace namespace) { - final ClassVisitor v = factory.visitorForClassIn(namespace); - + public void generate(JetNamespace namespace, ClassVisitor v) { final PropertyCodegen propertyCodegen = new PropertyCodegen(v); final FunctionCodegen functionCodegen = new FunctionCodegen(v); v.visit(Opcodes.V1_6, diff --git a/idea/tests/org/jetbrains/jet/codegen/NamespaceGenTest.java b/idea/tests/org/jetbrains/jet/codegen/NamespaceGenTest.java new file mode 100644 index 00000000000..95a0b2c5d22 --- /dev/null +++ b/idea/tests/org/jetbrains/jet/codegen/NamespaceGenTest.java @@ -0,0 +1,24 @@ +package org.jetbrains.jet.codegen; + +import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase; +import org.jetbrains.jet.lang.psi.JetFile; +import org.jetbrains.jet.lang.psi.JetNamespace; +import org.jetbrains.jet.parsing.JetParsingTest; +import org.objectweb.asm.util.TraceClassVisitor; + +import java.io.PrintWriter; +import java.io.StringWriter; + +/** + * @author yole + */ +public class NamespaceGenTest extends LightCodeInsightFixtureTestCase { + public void testPSVM() { + myFixture.configureByFile(JetParsingTest.getTestDataDir() + "/codegen/PSVM.jet"); + JetFile jetFile = (JetFile) myFixture.getFile(); + JetNamespace namespace = jetFile.getRootNamespace(); + NamespaceCodegen codegen = new NamespaceCodegen(); + StringWriter writer = new StringWriter(); + codegen.generate(namespace, new TraceClassVisitor(new PrintWriter(writer))); + } +} diff --git a/idea/tests/org/jetbrains/jet/parsing/JetParsingTest.java b/idea/tests/org/jetbrains/jet/parsing/JetParsingTest.java index bd55adda635..6706c6bf2a9 100644 --- a/idea/tests/org/jetbrains/jet/parsing/JetParsingTest.java +++ b/idea/tests/org/jetbrains/jet/parsing/JetParsingTest.java @@ -4,6 +4,7 @@ package org.jetbrains.jet.parsing; import com.intellij.openapi.application.PathManager; +import com.intellij.openapi.util.io.FileUtil; import com.intellij.psi.PsiErrorElement; import com.intellij.psi.PsiFile; import com.intellij.psi.util.PsiTreeUtil; @@ -40,12 +41,13 @@ public class JetParsingTest extends ParsingTestCase { return getTestDataDir(); } - private static String getTestDataDir() { + public static String getTestDataDir() { return getHomeDirectory() + "/idea/testData"; } private static String getHomeDirectory() { - return new File(PathManager.getResourceRoot(JetParsingTest.class, "/org/jetbrains/jet/parsing/JetParsingTest.class")).getParentFile().getParentFile().getParent(); + File root = new File(PathManager.getResourceRoot(JetParsingTest.class, "/org/jetbrains/jet/parsing/JetParsingTest.class")); + return FileUtil.toSystemIndependentName(root.getParentFile().getParentFile().getParent()); } @Override