work in progress on compiler unification between cli and plugin

This commit is contained in:
Alex Tkachman
2011-12-27 17:36:37 +02:00
parent 4272dafc36
commit 725bebc23f
43 changed files with 469 additions and 202 deletions
@@ -12,7 +12,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.codegen.ClassBuilderFactory;
import org.jetbrains.jet.codegen.ClassFileFactory;
import org.jetbrains.jet.codegen.GenerationState;
import org.jetbrains.jet.compiler.CompileEnvironment;
import org.jetbrains.jet.compiler.CoreCompileEnvironment;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.AnalyzingUtils;
import org.jetbrains.jet.plugin.JetLanguage;
@@ -36,7 +36,7 @@ public class CompileJavaAgainstKotlinTest extends UsefulTestCase {
private final File ktFile;
private final File javaFile;
private JetCoreEnvironment jetCoreEnvironment;
private CoreCompileEnvironment jetCoreEnvironment;
private File tmpdir;
public CompileJavaAgainstKotlinTest(File ktFile) {
@@ -80,7 +80,7 @@ public class CompileJavaAgainstKotlinTest extends UsefulTestCase {
ClassFileFactory classFileFactory = state.getFactory();
CompileEnvironment.writeToOutputDirectory(classFileFactory, tmpdir.getPath());
CoreCompileEnvironment.writeToOutputDirectory(classFileFactory, tmpdir.getPath());
Disposer.dispose(myTestRootDisposable);
@@ -14,7 +14,8 @@ import com.intellij.testFramework.LightVirtualFile;
import com.intellij.testFramework.TestDataFile;
import com.intellij.testFramework.UsefulTestCase;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.jet.compiler.CompileEnvironment;
import org.jetbrains.jet.compiler.AbstractCompileEnvironment;
import org.jetbrains.jet.compiler.CoreCompileEnvironment;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.plugin.JetLanguage;
@@ -28,7 +29,7 @@ public abstract class JetLiteFixture extends UsefulTestCase {
@NonNls
protected final String myFullDataPath;
protected JetFile myFile;
protected JetCoreEnvironment myEnvironment;
protected CoreCompileEnvironment myEnvironment;
public JetLiteFixture(@NonNls String dataPath) {
myFullDataPath = getTestDataPath() + "/" + dataPath;
@@ -57,8 +58,8 @@ public abstract class JetLiteFixture extends UsefulTestCase {
}
protected void createEnvironmentWithFullJdk() {
myEnvironment = new JetCoreEnvironment(getTestRootDisposable());
final File rtJar = CompileEnvironment.findRtJar(true);
myEnvironment = new CoreCompileEnvironment(new JetCoreEnvironment(getTestRootDisposable()));
final File rtJar = AbstractCompileEnvironment.findRtJar(true);
myEnvironment.addToClasspath(rtJar);
}
@@ -3,6 +3,7 @@ package org.jetbrains.jet;
import com.google.common.collect.Lists;
import com.intellij.openapi.Disposable;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.compiler.CoreCompileEnvironment;
import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory;
import org.jetbrains.jet.lang.diagnostics.Diagnostic;
import org.jetbrains.jet.lang.diagnostics.Severity;
@@ -137,12 +138,12 @@ public class JetTestUtils {
}
public static JetCoreEnvironment createEnvironmentWithMockJdk(Disposable disposable) {
public static CoreCompileEnvironment createEnvironmentWithMockJdk(Disposable disposable) {
JetCoreEnvironment environment = new JetCoreEnvironment(disposable);
final File rtJar = new File(JetTestCaseBuilder.getHomeDirectory(), "compiler/testData/mockJDK-1.7/jre/lib/rt.jar");
environment.addToClasspath(rtJar);
environment.addToClasspath(new File(JetTestCaseBuilder.getHomeDirectory(), "compiler/testData/mockJDK-1.7/jre/lib/annotations.jar"));
return environment;
return new CoreCompileEnvironment(environment);
}
@@ -13,7 +13,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.codegen.ClassBuilderFactory;
import org.jetbrains.jet.codegen.ClassFileFactory;
import org.jetbrains.jet.codegen.GenerationState;
import org.jetbrains.jet.compiler.CompileEnvironment;
import org.jetbrains.jet.compiler.CoreCompileEnvironment;
import org.jetbrains.jet.lang.JetSemanticServices;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.psi.JetFile;
@@ -49,7 +49,7 @@ public class ReadClassDataTest extends UsefulTestCase {
}
};
private JetCoreEnvironment jetCoreEnvironment;
private CoreCompileEnvironment jetCoreEnvironment;
private File tmpdir;
private final File testFile;
@@ -72,7 +72,7 @@ public class ReadClassDataTest extends UsefulTestCase {
}
private void createMockCoreEnvironment() {
jetCoreEnvironment = new JetCoreEnvironment(myTestRootDisposable);
jetCoreEnvironment = new CoreCompileEnvironment(new JetCoreEnvironment(myTestRootDisposable));
final File rtJar = new File(JetTestCaseBuilder.getHomeDirectory(), "compiler/testData/mockJDK-1.7/jre/lib/rt.jar");
jetCoreEnvironment.addToClasspath(rtJar);
@@ -95,7 +95,7 @@ public class ReadClassDataTest extends UsefulTestCase {
ClassFileFactory classFileFactory = state.getFactory();
CompileEnvironment.writeToOutputDirectory(classFileFactory, tmpdir.getPath());
CoreCompileEnvironment.writeToOutputDirectory(classFileFactory, tmpdir.getPath());
NamespaceDescriptor namespaceFromSource = (NamespaceDescriptor) bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, psiFile.getRootNamespace());
@@ -1,20 +1,7 @@
package org.jetbrains.jet.codegen;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.CharsetToolkit;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import org.jetbrains.jet.compiler.CompileEnvironment;
import org.jetbrains.jet.compiler.CoreCompileEnvironment;
import org.jetbrains.jet.compiler.CompileSession;
import org.jetbrains.jet.lang.psi.JetNamespace;
import org.jetbrains.jet.lang.resolve.AnalyzingUtils;
import org.jetbrains.jet.parsing.JetParsingTest;
import java.io.File;
import java.io.IOException;
import java.util.List;
/**
* @author alex.tkachman
@@ -46,7 +33,7 @@ public class StdlibTest extends CodegenTestCase {
protected ClassFileFactory generateClassesInFile() {
try {
CompileSession session = new CompileSession(myEnvironment);
CompileEnvironment.initializeKotlinRuntime(myEnvironment);
CoreCompileEnvironment.initializeKotlinRuntime(myEnvironment);
session.addSources(myFile.getVirtualFile());
session.addStdLibSources();
@@ -19,11 +19,11 @@ import java.util.jar.JarInputStream;
* @author alex.tkachman
*/
public class CompileEnvironmentTest extends TestCase {
private CompileEnvironment environment;
private CoreCompileEnvironment environment;
protected void setUp() throws Exception {
super.setUp();
environment = new CompileEnvironment();
environment = new CoreCompileEnvironment();
}
@Override
@@ -33,7 +33,7 @@ public class CompileEnvironmentTest extends TestCase {
}
public void testSmoke() throws IOException {
final File activeRtJar = CompileEnvironment.findRtJar(true);
final File activeRtJar = AbstractCompileEnvironment.findRtJar(true);
environment.setJavaRuntime(activeRtJar);
environment.initializeKotlinRuntime();
final String testDataDir = JetParsingTest.getTestDataDir() + "/compiler/smoke/";
@@ -45,7 +45,7 @@ public class CompileEnvironmentTest extends TestCase {
assertNotNull(factory.asBytes("Smoke/namespace.class"));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
CompileEnvironment.writeToJar(factory, baos, null, false);
CoreCompileEnvironment.writeToJar(factory, baos, null, false);
JarInputStream is = new JarInputStream(new ByteArrayInputStream(baos.toByteArray()));
final List<String> entries = listEntries(is);
assertTrue(entries.contains("Smoke/namespace.class"));
@@ -93,7 +93,7 @@ public class CompileEnvironmentTest extends TestCase {
tempFile = new File(tempFile.getAbsolutePath());
tempFile.mkdir();
try {
KotlinCompiler.main(Arrays.asList("-src", JetParsingTest.getTestDataDir() + "/compiler/smoke/Smoke.kt", "-output", tempFile.getAbsolutePath()).toArray(new String[0]));
KotlinCompiler.main(Arrays.asList("-src", JetParsingTest.getTestDataDir() + "/compiler/smoke/src/Smoke.kt", "-output", tempFile.getAbsolutePath()).toArray(new String[0]));
assertEquals(1, tempFile.listFiles().length);
assertEquals(1, tempFile.listFiles()[0].listFiles().length);
}