rewrite K2JSTranslator class

This commit is contained in:
Pavel Talanov
2011-12-12 13:00:39 +04:00
parent 024138e759
commit b0fbdb05e2
5 changed files with 13 additions and 32 deletions
+1 -1
View File
@@ -24,7 +24,7 @@
<component name="ProjectResources"> <component name="ProjectResources">
<default-html-doctype>http://www.w3.org/1999/xhtml</default-html-doctype> <default-html-doctype>http://www.w3.org/1999/xhtml</default-html-doctype>
</component> </component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="IDEA IC-110.283" project-jdk-type="IDEA JDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="IDEA IC-112.121" project-jdk-type="IDEA JDK">
<output url="file://$PROJECT_DIR$/out" /> <output url="file://$PROJECT_DIR$/out" />
</component> </component>
<component name="com.sixrr.metrics.MetricsReloaded"> <component name="com.sixrr.metrics.MetricsReloaded">
+1 -1
View File
@@ -7,7 +7,7 @@
</content> </content>
<orderEntry type="jdk" jdkName="1.7" jdkType="JavaSDK" /> <orderEntry type="jdk" jdkName="1.7" jdkType="JavaSDK" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="libs" level="project" /> <orderEntry type="library" name="lib" level="project" />
</component> </component>
</module> </module>
@@ -1,11 +1,10 @@
package org.jetbrains.k2js; package org.jetbrains.k2js;
import com.google.dart.compiler.backend.js.ast.JsProgram;
import com.intellij.openapi.Disposable; import com.intellij.openapi.Disposable;
import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.CharsetToolkit; import com.intellij.openapi.vfs.CharsetToolkit;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiElementVisitor;
import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiFileFactory; import com.intellij.psi.PsiFileFactory;
import com.intellij.psi.impl.PsiFileFactoryImpl; import com.intellij.psi.impl.PsiFileFactoryImpl;
@@ -15,12 +14,12 @@ import org.jetbrains.jet.JetCoreEnvironment;
import org.jetbrains.jet.compiler.CompileEnvironment; import org.jetbrains.jet.compiler.CompileEnvironment;
import org.jetbrains.jet.compiler.CompileEnvironmentException; import org.jetbrains.jet.compiler.CompileEnvironmentException;
import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory; import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory;
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetNamespace; import org.jetbrains.jet.lang.psi.JetNamespace;
import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.plugin.JetLanguage; import org.jetbrains.jet.plugin.JetLanguage;
import org.jetbrains.k2js.translate.utils.BindingUtils; import org.jetbrains.k2js.generate.CodeGenerator;
import org.jetbrains.k2js.translate.general.Translation;
import org.jetbrains.k2js.utils.JetTestUtils; import org.jetbrains.k2js.utils.JetTestUtils;
import java.io.File; import java.io.File;
@@ -35,14 +34,13 @@ public final class K2JSTranslator {
@Override @Override
public void dispose() { public void dispose() {
//To change body of implemented methods use File | Settings | File Templates.
} }
}); });
public K2JSTranslator() { public K2JSTranslator() {
} }
public void translate(String inputFile, String outputFile) { public void translate(String inputFile, String outputFile) throws Exception {
try { try {
@@ -54,8 +52,10 @@ public final class K2JSTranslator {
BindingContext bindingContext = JetTestUtils.analyzeNamespace(namespace, BindingContext bindingContext = JetTestUtils.analyzeNamespace(namespace,
JetControlFlowDataTraceFactory.EMPTY); JetControlFlowDataTraceFactory.EMPTY);
NamespaceDescriptor namespaceDescriptor = BindingUtils.getNamespaceDescriptor(bindingContext, namespace); JsProgram program = Translation.generateAst(bindingContext, namespace, myEnvironment.getProject());
namespaceDescriptor.getMemberScope().getAllDescriptors();
CodeGenerator generator = new CodeGenerator();
generator.generateToFile(program, new File(outputFile));
} catch (CompileEnvironmentException e) { } catch (CompileEnvironmentException e) {
System.out.println(e.getMessage()); System.out.println(e.getMessage());
@@ -90,22 +90,4 @@ public final class K2JSTranslator {
return ((PsiFileFactoryImpl) PsiFileFactory.getInstance(myEnvironment.getProject())).trySetupPsiForFile(virtualFile, JetLanguage.INSTANCE, true, false); return ((PsiFileFactoryImpl) PsiFileFactory.getInstance(myEnvironment.getProject())).trySetupPsiForFile(virtualFile, JetLanguage.INSTANCE, true, false);
} }
protected void ensureParsed(PsiFile file) {
file.accept(new PsiElementVisitor() {
@Override
public void visitElement(PsiElement element) {
element.acceptChildren(this);
}
});
}
protected void prepareForTest(String name) throws IOException {
// String text = loadFile(name + ".jet");
// createAndCheckPsiFile(name, text);
}
protected void createAndCheckPsiFile(String name, String text) {
//createCheckAndReturnPsiFile(name, text);
}
} }
@@ -1,6 +1,5 @@
package org.jetbrains.k2js.test; package org.jetbrains.k2js.test;
import org.jetbrains.k2js.K2JSTranslator;
import org.mozilla.javascript.Context; import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable; import org.mozilla.javascript.Scriptable;
@@ -56,7 +55,7 @@ public abstract class TranslationTest {
new RhinoFunctionResultChecker(namespaceName, functionName, expectedResult)); new RhinoFunctionResultChecker(namespaceName, functionName, expectedResult));
} }
protected void translateFile(String filename) { protected void translateFile(String filename) throws Exception {
(new K2JSTranslator()).translate(getInputFilePath(filename), getOutputFilePath(filename)); (new K2JSTranslator()).translate(getInputFilePath(filename), getOutputFilePath(filename));
} }
+2 -2
View File
@@ -7,13 +7,13 @@
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/examples" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/examples" isTestSource="true" />
</content> </content>
<orderEntry type="inheritedJdk" /> <orderEntry type="jdk" jdkName="IDEA IC-112.121" jdkType="IDEA JDK" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="js" /> <orderEntry type="module" module-name="js" />
<orderEntry type="module" module-name="frontend" /> <orderEntry type="module" module-name="frontend" />
<orderEntry type="module" module-name="frontend.java" /> <orderEntry type="module" module-name="frontend.java" />
<orderEntry type="library" name="libs" level="project" />
<orderEntry type="module" module-name="backend" /> <orderEntry type="module" module-name="backend" />
<orderEntry type="library" name="lib" level="project" />
</component> </component>
</module> </module>