Changed types of JVM configuration keys from arrays to lists.

This commit is contained in:
Evgeny Gerashchenko
2012-07-09 15:56:30 +04:00
parent 4332a60b31
commit ffca0409d4
8 changed files with 38 additions and 42 deletions
@@ -21,7 +21,6 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.cli.common.CompilerPlugin; import org.jetbrains.jet.cli.common.CompilerPlugin;
import org.jetbrains.jet.cli.common.messages.MessageCollector; import org.jetbrains.jet.cli.common.messages.MessageCollector;
import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys;
import org.jetbrains.jet.cli.jvm.compiler.*; import org.jetbrains.jet.cli.jvm.compiler.*;
import org.jetbrains.jet.codegen.BuiltinToJavaTypesMapping; import org.jetbrains.jet.codegen.BuiltinToJavaTypesMapping;
import org.jetbrains.jet.config.CompilerConfiguration; import org.jetbrains.jet.config.CompilerConfiguration;
@@ -32,6 +31,8 @@ import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import static org.jetbrains.jet.cli.jvm.JVMConfigurationKeys.*;
/** /**
* Wrapper class for Kotlin bytecode compiler. * Wrapper class for Kotlin bytecode compiler.
@@ -52,22 +53,26 @@ public class BytecodeCompiler {
* @return compile environment instance * @return compile environment instance
*/ */
private K2JVMCompileEnvironmentConfiguration env(String stdlib, String[] classpath) { private K2JVMCompileEnvironmentConfiguration env(String stdlib, String[] classpath) {
List<File> classpathItems = new ArrayList<File>(); CompilerConfiguration configuration = new CompilerConfiguration();
classpathItems.add(PathUtil.findRtJar()); configuration.add(CLASSPATH_KEY, PathUtil.findRtJar());
if ((stdlib != null) && (stdlib.trim().length() > 0)) { if ((stdlib != null) && (stdlib.trim().length() > 0)) {
classpathItems.add(new File(stdlib)); configuration.add(CLASSPATH_KEY, new File(stdlib));
} }
else { else {
classpathItems.add(PathUtil.getDefaultRuntimePath()); File path = PathUtil.getDefaultRuntimePath();
if (path != null) {
configuration.add(CLASSPATH_KEY, path);
}
} }
if ((classpath != null) && (classpath.length > 0)) { if ((classpath != null) && (classpath.length > 0)) {
for (String path : classpath) { for (String path : classpath) {
classpathItems.add(new File(path)); configuration.add(CLASSPATH_KEY, new File(path));
} }
} }
CompilerConfiguration configuration = new CompilerConfiguration(); File jdkAnnotationsPath = PathUtil.getJdkAnnotationsPath();
configuration.put(JVMConfigurationKeys.CLASSPATH_KEY, classpathItems.toArray(new File[classpathItems.size()])); if (jdkAnnotationsPath != null) {
configuration.put(JVMConfigurationKeys.ANNOTATIONS_PATH_KEY, new File[] {PathUtil.getJdkAnnotationsPath()}); configuration.add(ANNOTATIONS_PATH_KEY, jdkAnnotationsPath);
}
JetCoreEnvironment environment = new JetCoreEnvironment(CompileEnvironmentUtil.createMockDisposable(), configuration JetCoreEnvironment environment = new JetCoreEnvironment(CompileEnvironmentUtil.createMockDisposable(), configuration
); );
@@ -19,6 +19,7 @@ package org.jetbrains.jet.cli.jvm;
import com.intellij.openapi.util.Key; import com.intellij.openapi.util.Key;
import java.io.File; import java.io.File;
import java.util.List;
/** /**
* @author Evgeny Gerashchenko * @author Evgeny Gerashchenko
@@ -28,6 +29,6 @@ public class JVMConfigurationKeys {
private JVMConfigurationKeys() { private JVMConfigurationKeys() {
} }
public static final Key<File[]> CLASSPATH_KEY = Key.create("classpath"); public static final Key<List<File>> CLASSPATH_KEY = Key.create("classpath");
public static final Key<File[]> ANNOTATIONS_PATH_KEY = Key.create("annotations path"); public static final Key<List<File>> ANNOTATIONS_PATH_KEY = Key.create("annotations path");
} }
@@ -163,8 +163,8 @@ public class K2JVMCompiler extends CLICompiler<K2JVMCompilerArguments, K2JVMComp
@NotNull @NotNull
private static CompilerConfiguration createCompilerConfiguration(@NotNull K2JVMCompilerArguments arguments) { private static CompilerConfiguration createCompilerConfiguration(@NotNull K2JVMCompilerArguments arguments) {
CompilerConfiguration configuration = new CompilerConfiguration(); CompilerConfiguration configuration = new CompilerConfiguration();
configuration.put(JVMConfigurationKeys.CLASSPATH_KEY, getClasspath(arguments).toArray(new File[0])); configuration.addAll(JVMConfigurationKeys.CLASSPATH_KEY, getClasspath(arguments));
configuration.put(JVMConfigurationKeys.ANNOTATIONS_PATH_KEY, getAnnotationsPath(arguments).toArray(new File[0])); configuration.addAll(JVMConfigurationKeys.ANNOTATIONS_PATH_KEY, getAnnotationsPath(arguments));
return configuration; return configuration;
} }
@@ -47,6 +47,7 @@ import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.net.URLClassLoader; import java.net.URLClassLoader;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.jar.*; import java.util.jar.*;
@@ -142,13 +143,13 @@ public class CompileEnvironmentUtil {
} }
}; };
CompilerConfiguration configuration = new CompilerConfiguration(); CompilerConfiguration configuration = new CompilerConfiguration();
configuration.put(JVMConfigurationKeys.CLASSPATH_KEY, new File[]{ configuration.put(JVMConfigurationKeys.CLASSPATH_KEY, Arrays.asList(
PathUtil.findRtJar(), PathUtil.findRtJar(),
PathUtil.getDefaultRuntimePath() PathUtil.getDefaultRuntimePath()
}); ));
configuration.put(JVMConfigurationKeys.ANNOTATIONS_PATH_KEY, new File[]{ configuration.put(JVMConfigurationKeys.ANNOTATIONS_PATH_KEY, Arrays.asList(
PathUtil.getJdkAnnotationsPath() PathUtil.getJdkAnnotationsPath()
}); ));
JetCoreEnvironment scriptEnvironment = JetCoreEnvironment.createCoreEnvironmentForJVM(disposable, configuration); JetCoreEnvironment scriptEnvironment = JetCoreEnvironment.createCoreEnvironmentForJVM(disposable, configuration);
scriptEnvironment.addSources(moduleScriptFile); scriptEnvironment.addSources(moduleScriptFile);
@@ -168,8 +168,8 @@ public class JetCoreEnvironment extends JavaCoreEnvironment {
} }
public void configure(@NotNull CompilerConfiguration compilerConfiguration) { public void configure(@NotNull CompilerConfiguration compilerConfiguration) {
File[] classpath = compilerConfiguration.get(JVMConfigurationKeys.CLASSPATH_KEY); List<File> classpath = compilerConfiguration.get(JVMConfigurationKeys.CLASSPATH_KEY);
File[] annotationsPath = compilerConfiguration.get(JVMConfigurationKeys.ANNOTATIONS_PATH_KEY); List<File> annotationsPath = compilerConfiguration.get(JVMConfigurationKeys.ANNOTATIONS_PATH_KEY);
if (classpath != null) { if (classpath != null) {
for (File path : classpath) { for (File path : classpath) {
addToClasspath(path); addToClasspath(path);
@@ -105,7 +105,7 @@ public class ReplInterpreter {
List<URL> classpath = Lists.newArrayList(); List<URL> classpath = Lists.newArrayList();
for (File file : configuration.get(JVMConfigurationKeys.CLASSPATH_KEY)) { for (File file : configuration.getList(JVMConfigurationKeys.CLASSPATH_KEY)) {
try { try {
classpath.add(file.toURI().toURL()); classpath.add(file.toURI().toURL());
} }
@@ -17,7 +17,6 @@
package org.jetbrains.jet; package org.jetbrains.jet;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys;
import org.jetbrains.jet.codegen.forTestCompile.ForTestCompileBuiltins; import org.jetbrains.jet.codegen.forTestCompile.ForTestCompileBuiltins;
import org.jetbrains.jet.codegen.forTestCompile.ForTestCompileRuntime; import org.jetbrains.jet.codegen.forTestCompile.ForTestCompileRuntime;
import org.jetbrains.jet.codegen.forTestCompile.ForTestPackJdkAnnotations; import org.jetbrains.jet.codegen.forTestCompile.ForTestPackJdkAnnotations;
@@ -25,12 +24,9 @@ import org.jetbrains.jet.config.CompilerConfiguration;
import org.jetbrains.jet.utils.PathUtil; import org.jetbrains.jet.utils.PathUtil;
import org.junit.Test; import org.junit.Test;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import static org.jetbrains.jet.ConfigurationKind.ALL; import static org.jetbrains.jet.ConfigurationKind.ALL;
import static org.jetbrains.jet.ConfigurationKind.JDK_AND_ANNOTATIONS; import static org.jetbrains.jet.ConfigurationKind.JDK_AND_ANNOTATIONS;
import static org.jetbrains.jet.cli.jvm.JVMConfigurationKeys.*;
/** /**
* @author Stepan Koltsov * @author Stepan Koltsov
@@ -53,20 +49,16 @@ public class CompileCompilerDependenciesTest {
} }
public static CompilerConfiguration compilerConfigurationForTests(@NotNull ConfigurationKind configurationKind, @NotNull TestJdkKind jdkKind) { public static CompilerConfiguration compilerConfigurationForTests(@NotNull ConfigurationKind configurationKind, @NotNull TestJdkKind jdkKind) {
List<File> classpath = new ArrayList<File>();
classpath.add(jdkKind == TestJdkKind.MOCK_JDK ? JetTestUtils.findMockJdkRtJar() : PathUtil.findRtJar());
if (configurationKind == ALL) {
classpath.add(ForTestCompileRuntime.runtimeJarForTests());
}
File[] annotationsPath = new File[0];
if (configurationKind == ALL || configurationKind == JDK_AND_ANNOTATIONS) {
annotationsPath = new File[]{ForTestPackJdkAnnotations.jdkAnnotationsForTests()};
}
CompilerConfiguration configuration = new CompilerConfiguration(); CompilerConfiguration configuration = new CompilerConfiguration();
configuration.put(JVMConfigurationKeys.CLASSPATH_KEY, classpath.toArray(new File[classpath.size()])); configuration.add(CLASSPATH_KEY, jdkKind == TestJdkKind.MOCK_JDK ? JetTestUtils.findMockJdkRtJar() : PathUtil.findRtJar());
configuration.put(JVMConfigurationKeys.ANNOTATIONS_PATH_KEY, annotationsPath); if (configurationKind == ALL) {
configuration.add(CLASSPATH_KEY, ForTestCompileRuntime.runtimeJarForTests());
}
if (configurationKind == ALL || configurationKind == JDK_AND_ANNOTATIONS) {
configuration.add(ANNOTATIONS_PATH_KEY, ForTestPackJdkAnnotations.jdkAnnotationsForTests());
}
return configuration; return configuration;
} }
} }
@@ -19,7 +19,6 @@ package org.jetbrains.jet.repl;
import com.intellij.openapi.Disposable; import com.intellij.openapi.Disposable;
import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.ArrayUtil;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.CompileCompilerDependenciesTest; import org.jetbrains.jet.CompileCompilerDependenciesTest;
import org.jetbrains.jet.ConfigurationKind; import org.jetbrains.jet.ConfigurationKind;
@@ -56,9 +55,7 @@ public class ReplInterpreterTest {
private void testFile(@NotNull String relativePath) { private void testFile(@NotNull String relativePath) {
CompilerConfiguration configuration = CompilerConfiguration configuration =
CompileCompilerDependenciesTest.compilerConfigurationForTests(ConfigurationKind.JDK_ONLY, TestJdkKind.FULL_JDK); CompileCompilerDependenciesTest.compilerConfigurationForTests(ConfigurationKind.JDK_ONLY, TestJdkKind.FULL_JDK);
File[] classpath = configuration.get(JVMConfigurationKeys.CLASSPATH_KEY); configuration.add(JVMConfigurationKeys.CLASSPATH_KEY, new File("out/production/runtime"));
assert classpath != null;
configuration.put(JVMConfigurationKeys.CLASSPATH_KEY, ArrayUtil.append(classpath, new File("out/production/runtime")));
ReplInterpreter repl = new ReplInterpreter(disposable, configuration); ReplInterpreter repl = new ReplInterpreter(disposable, configuration);
ReplSessionTestFile file = ReplSessionTestFile.load(new File("compiler/testData/repl/" + relativePath)); ReplSessionTestFile file = ReplSessionTestFile.load(new File("compiler/testData/repl/" + relativePath));