From 6e82ab70bc97d9457b21607b9636ebd49d3d06f8 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Wed, 4 Jul 2012 16:25:42 +0400 Subject: [PATCH] Got rid of using CompilerDependencies in JetCoreEnvironment. CompilerConfiguration is passed instead. --- build-tools/build-tools.iml | 1 + .../jet/buildtools/core/BytecodeCompiler.java | 33 ++++++++---- .../jet/cli/jvm/CompilerConfigurationUtl.java | 52 +++++++++++++++++++ .../jetbrains/jet/cli/jvm/K2JVMCompiler.java | 37 ++----------- .../jvm/compiler/CompileEnvironmentUtil.java | 9 ++-- .../cli/jvm/compiler/JetCoreEnvironment.java | 42 ++++++--------- .../jet/cli/jvm/repl/ReplFromTerminal.java | 13 ++--- .../jet/cli/jvm/repl/ReplInterpreter.java | 17 ++---- .../tests/org/jetbrains/jet/JetTestUtils.java | 8 +-- ...solveDescriptorsFromExternalLibraries.java | 15 +++--- .../resolve/lazy/AbstractLazyResolveTest.java | 7 ++- .../jet/repl/ReplInterpreterTest.java | 4 +- .../k2js/test/TestWithEnvironment.java | 8 +-- 13 files changed, 132 insertions(+), 114 deletions(-) create mode 100644 compiler/cli/src/org/jetbrains/jet/cli/jvm/CompilerConfigurationUtl.java diff --git a/build-tools/build-tools.iml b/build-tools/build-tools.iml index fde16f7bfd8..ee9779446f1 100644 --- a/build-tools/build-tools.iml +++ b/build-tools/build-tools.iml @@ -21,6 +21,7 @@ + diff --git a/build-tools/core/src/org/jetbrains/jet/buildtools/core/BytecodeCompiler.java b/build-tools/core/src/org/jetbrains/jet/buildtools/core/BytecodeCompiler.java index 0dd913806c1..b474a4a4f72 100644 --- a/build-tools/core/src/org/jetbrains/jet/buildtools/core/BytecodeCompiler.java +++ b/build-tools/core/src/org/jetbrains/jet/buildtools/core/BytecodeCompiler.java @@ -20,10 +20,13 @@ import jet.modules.Module; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.cli.common.CompilerPlugin; +import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys; import org.jetbrains.jet.cli.jvm.compiler.*; import org.jetbrains.jet.cli.common.messages.MessageCollector; +import org.jetbrains.jet.config.CompilerConfiguration; import org.jetbrains.jet.lang.resolve.java.CompilerDependencies; import org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode; +import org.jetbrains.jet.utils.PathUtil; import java.io.File; import java.util.ArrayList; @@ -50,20 +53,28 @@ public class BytecodeCompiler { * @return compile environment instance */ private K2JVMCompileEnvironmentConfiguration env( String stdlib, String[] classpath ) { - CompilerDependencies dependencies = CompilerDependencies.compilerDependenciesForProduction(CompilerSpecialMode.REGULAR); - JetCoreEnvironment environment = new JetCoreEnvironment(CompileEnvironmentUtil.createMockDisposable(), dependencies); + List classpathItems = new ArrayList(); + classpathItems.add(PathUtil.findRtJar()); + if ((stdlib != null) && (stdlib.trim().length() > 0)) { + classpathItems.add(new File(stdlib)); + } + else { + classpathItems.add(PathUtil.getDefaultRuntimePath()); + } + if ((classpath != null) && (classpath.length > 0)) { + for (String path : classpath) { + classpathItems.add(new File(path)); + } + } + CompilerConfiguration configuration = new CompilerConfiguration(); + configuration.putUserData(JVMConfigurationKeys.CLASSPATH_KEY, classpathItems.toArray(new File[classpathItems.size()])); + configuration.putUserData(JVMConfigurationKeys.ANNOTATIONS_PATH_KEY, new File[]{PathUtil.getJdkAnnotationsPath()}); + + JetCoreEnvironment environment = new JetCoreEnvironment(CompileEnvironmentUtil.createMockDisposable(), configuration, + CompilerSpecialMode.REGULAR); K2JVMCompileEnvironmentConfiguration env = new K2JVMCompileEnvironmentConfiguration(environment, MessageCollector.PLAIN_TEXT_TO_SYSTEM_ERR, false); - if (( stdlib != null ) && ( stdlib.trim().length() > 0 )) { - File file = new File(stdlib); - CompileEnvironmentUtil.addToClasspath(env.getEnvironment(), file); - } - - if (( classpath != null ) && ( classpath.length > 0 )) { - CompileEnvironmentUtil.addToClasspath(env.getEnvironment(), classpath); - } - // lets register any compiler plugins env.getCompilerPlugins().addAll(getCompilerPlugins()); diff --git a/compiler/cli/src/org/jetbrains/jet/cli/jvm/CompilerConfigurationUtl.java b/compiler/cli/src/org/jetbrains/jet/cli/jvm/CompilerConfigurationUtl.java new file mode 100644 index 00000000000..449af0229cd --- /dev/null +++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/CompilerConfigurationUtl.java @@ -0,0 +1,52 @@ +/* + * Copyright 2010-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.jet.cli.jvm; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.config.CompilerConfiguration; +import org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode; +import org.jetbrains.jet.utils.PathUtil; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Evgeny Gerashchenko + * @since 7/4/12 + */ +public class CompilerConfigurationUtl { + // TODO merge with similar K2JVMCompiler method + public static CompilerConfiguration getDefaultConfiguration(@NotNull CompilerSpecialMode compilerSpecialMode) { + List classpath = new ArrayList(); + if (compilerSpecialMode.includeJdk()) { + classpath.add(PathUtil.findRtJar()); + } + if (compilerSpecialMode.includeKotlinRuntime()) { + classpath.add(PathUtil.getDefaultRuntimePath()); + } + File[] annotationsPath = new File[0]; + if (compilerSpecialMode.includeJdkAnnotations()) { + annotationsPath = new File[]{PathUtil.getJdkAnnotationsPath()}; + } + + CompilerConfiguration configuration = new CompilerConfiguration(); + configuration.putUserData(JVMConfigurationKeys.CLASSPATH_KEY, classpath.toArray(new File[classpath.size()])); + configuration.putUserData(JVMConfigurationKeys.ANNOTATIONS_PATH_KEY, annotationsPath); + return configuration; + } +} diff --git a/compiler/cli/src/org/jetbrains/jet/cli/jvm/K2JVMCompiler.java b/compiler/cli/src/org/jetbrains/jet/cli/jvm/K2JVMCompiler.java index 06fe83adc6f..c7990d8a1a7 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/jvm/K2JVMCompiler.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/K2JVMCompiler.java @@ -55,36 +55,8 @@ public class K2JVMCompiler extends CLICompiler argumentsSourceDirs = arguments.getSourceDirs(); if (!arguments.script && @@ -93,12 +65,13 @@ public class K2JVMCompiler extends CLICompileremptyList()); - injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module, - compilerDependencies.getCompilerSpecialMode()); + injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module, mode); List classpath = Lists.newArrayList(); diff --git a/compiler/tests/org/jetbrains/jet/JetTestUtils.java b/compiler/tests/org/jetbrains/jet/JetTestUtils.java index 36a532aa712..6d0c9220a35 100644 --- a/compiler/tests/org/jetbrains/jet/JetTestUtils.java +++ b/compiler/tests/org/jetbrains/jet/JetTestUtils.java @@ -180,8 +180,9 @@ public class JetTestUtils { } public static JetCoreEnvironment createEnvironmentWithMockJdkAndIdeaAnnotations(Disposable disposable, @NotNull CompilerSpecialMode compilerSpecialMode) { - JetCoreEnvironment environment = - new JetCoreEnvironment(disposable, CompileCompilerDependenciesTest.compilerDependenciesForTests(compilerSpecialMode, true)); + JetCoreEnvironment environment = new JetCoreEnvironment(disposable, + CompileCompilerDependenciesTest.compilerConfigurationForTests(compilerSpecialMode, true), + compilerSpecialMode); environment.addToClasspath(getAnnotationsJar()); return environment; } @@ -253,7 +254,8 @@ public class JetTestUtils { public static JetCoreEnvironment createEnvironmentWithFullJdk(Disposable disposable) { return new JetCoreEnvironment(disposable, - CompileCompilerDependenciesTest.compilerDependenciesForTests(CompilerSpecialMode.REGULAR, false)); + CompileCompilerDependenciesTest.compilerConfigurationForTests(CompilerSpecialMode.REGULAR, false), + CompilerSpecialMode.REGULAR); } public static PsiFile createFile(@NonNls String name, String text, @NotNull Project project) { diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/longTest/ResolveDescriptorsFromExternalLibraries.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/longTest/ResolveDescriptorsFromExternalLibraries.java index 7e77680b06a..19fec3af536 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/longTest/ResolveDescriptorsFromExternalLibraries.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/longTest/ResolveDescriptorsFromExternalLibraries.java @@ -30,19 +30,15 @@ import org.jetbrains.jet.CompileCompilerDependenciesTest; import org.jetbrains.jet.JetTestUtils; import org.jetbrains.jet.TimeUtils; import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment; +import org.jetbrains.jet.config.CompilerConfiguration; import org.jetbrains.jet.di.InjectorForJavaSemanticServices; import org.jetbrains.jet.lang.descriptors.ClassDescriptor; -import org.jetbrains.jet.lang.resolve.name.FqName; -import org.jetbrains.jet.lang.resolve.java.CompilerDependencies; import org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode; import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule; +import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.utils.PathUtil; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; +import java.io.*; import java.util.Arrays; import java.util.List; import java.util.zip.ZipEntry; @@ -153,8 +149,9 @@ public class ResolveDescriptorsFromExternalLibraries { jetCoreEnvironment.addToClasspath(jar); } else { - CompilerDependencies compilerDependencies = CompileCompilerDependenciesTest.compilerDependenciesForTests(CompilerSpecialMode.STDLIB, false); - jetCoreEnvironment = JetCoreEnvironment.createCoreEnvironmentForJVM(junk, compilerDependencies); + CompilerConfiguration configuration = + CompileCompilerDependenciesTest.compilerConfigurationForTests(CompilerSpecialMode.STDLIB, false); + jetCoreEnvironment = JetCoreEnvironment.createCoreEnvironmentForJVM(junk, configuration, CompilerSpecialMode.STDLIB); if (!PathUtil.findRtJar().equals(jar)) { throw new RuntimeException("rt.jar mismatch: " + jar + ", " + PathUtil.findRtJar()); } diff --git a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveTest.java b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveTest.java index b4999530d1d..bf0f34908a2 100644 --- a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveTest.java +++ b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/AbstractLazyResolveTest.java @@ -29,7 +29,6 @@ import org.jetbrains.jet.lang.psi.JetPsiFactory; import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter; import org.jetbrains.jet.lang.resolve.BindingTraceContext; import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters; -import org.jetbrains.jet.lang.resolve.java.CompilerDependencies; import org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode; import org.jetbrains.jet.lang.resolve.name.Name; import org.junit.After; @@ -47,9 +46,9 @@ public abstract class AbstractLazyResolveTest { } }; - protected final CompilerDependencies - compilerDependencies = CompileCompilerDependenciesTest.compilerDependenciesForTests(CompilerSpecialMode.JDK_HEADERS, true); - protected final JetCoreEnvironment jetCoreEnvironment = new JetCoreEnvironment(rootDisposable, compilerDependencies); + protected final JetCoreEnvironment jetCoreEnvironment = new JetCoreEnvironment(rootDisposable, + CompileCompilerDependenciesTest.compilerConfigurationForTests(CompilerSpecialMode.JDK_HEADERS, true), + CompilerSpecialMode.JDK_HEADERS); protected final Project project = jetCoreEnvironment.getProject(); @BeforeClass diff --git a/compiler/tests/org/jetbrains/jet/repl/ReplInterpreterTest.java b/compiler/tests/org/jetbrains/jet/repl/ReplInterpreterTest.java index a2b8b814b8b..93d8b6ec827 100644 --- a/compiler/tests/org/jetbrains/jet/repl/ReplInterpreterTest.java +++ b/compiler/tests/org/jetbrains/jet/repl/ReplInterpreterTest.java @@ -25,7 +25,6 @@ import org.jetbrains.jet.CompileCompilerDependenciesTest; import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys; import org.jetbrains.jet.cli.jvm.repl.ReplInterpreter; import org.jetbrains.jet.config.CompilerConfiguration; -import org.jetbrains.jet.lang.resolve.java.CompilerDependencies; import org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode; import org.junit.After; import org.junit.Assert; @@ -54,13 +53,12 @@ public class ReplInterpreterTest { } private void testFile(@NotNull String relativePath) { - CompilerDependencies compilerDependencies = CompileCompilerDependenciesTest.compilerDependenciesForTests(CompilerSpecialMode.JDK_HEADERS, false); CompilerConfiguration configuration = CompileCompilerDependenciesTest.compilerConfigurationForTests(CompilerSpecialMode.JDK_HEADERS, false); File[] classpath = configuration.getUserData(JVMConfigurationKeys.CLASSPATH_KEY); assert classpath != null; configuration.putUserData(JVMConfigurationKeys.CLASSPATH_KEY, ArrayUtil.append(classpath, new File("out/production/runtime"))); - ReplInterpreter repl = new ReplInterpreter(disposable, compilerDependencies, configuration); + ReplInterpreter repl = new ReplInterpreter(disposable, configuration, CompilerSpecialMode.JDK_HEADERS); ReplSessionTestFile file = ReplSessionTestFile.load(new File("compiler/testData/repl/" + relativePath)); for (ReplSessionTestFile.OneLine t : file.getLines()) { diff --git a/js/js.tests/test/org/jetbrains/k2js/test/TestWithEnvironment.java b/js/js.tests/test/org/jetbrains/k2js/test/TestWithEnvironment.java index 38474a2eea2..0460c54c264 100644 --- a/js/js.tests/test/org/jetbrains/k2js/test/TestWithEnvironment.java +++ b/js/js.tests/test/org/jetbrains/k2js/test/TestWithEnvironment.java @@ -51,9 +51,9 @@ public abstract class TestWithEnvironment extends UsefulTestCase { } protected void createEnvironmentWithMockJdkAndIdeaAnnotations() { - myEnvironment = JetCoreEnvironment.createCoreEnvironmentForJVM(getTestRootDisposable(), - CompileCompilerDependenciesTest.compilerDependenciesForTests( - CompilerSpecialMode.JS, - true)); + myEnvironment = JetCoreEnvironment.createCoreEnvironmentForJVM( + getTestRootDisposable(), + CompileCompilerDependenciesTest.compilerConfigurationForTests(CompilerSpecialMode.JS, true), + CompilerSpecialMode.JS); } }