From 8dfa3d8ce99f7e09f02eeb977500bed3810aa4b9 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Mon, 23 Jul 2012 18:01:27 +0400 Subject: [PATCH] Moved everything but environment and messageCollector from K2JVMCompileEnvironmentConfiguration to CompilerConfiguration. --- .../jet/buildtools/core/BytecodeCompiler.java | 10 +---- .../jet/cli/jvm/JVMConfigurationKeys.java | 8 ++++ .../jetbrains/jet/cli/jvm/K2JVMCompiler.java | 17 ++++++--- .../jvm/compiler/CompileEnvironmentUtil.java | 10 +---- .../K2JVMCompileEnvironmentConfiguration.java | 37 +------------------ .../compiler/KotlinToJVMBytecodeCompiler.java | 33 +++++++++-------- .../jet/config/CompilerConfiguration.java | 6 +++ .../jetbrains/jet/codegen/TestlibTest.java | 9 +---- 8 files changed, 50 insertions(+), 80 deletions(-) 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 a83baa9a00e..5112716ba7f 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 @@ -22,19 +22,14 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.cli.common.CompilerPlugin; import org.jetbrains.jet.cli.common.messages.MessageCollector; import org.jetbrains.jet.cli.common.util.CompilerPathUtil; -import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys; import org.jetbrains.jet.cli.jvm.compiler.*; -import org.jetbrains.jet.codegen.BuiltinToJavaTypesMapping; import org.jetbrains.jet.config.CommonConfigurationKeys; import org.jetbrains.jet.config.CompilerConfiguration; -import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode; -import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter; import org.jetbrains.jet.utils.PathUtil; import java.io.File; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.List; import static org.jetbrains.jet.cli.jvm.JVMConfigurationKeys.ANNOTATIONS_PATH_KEY; @@ -84,9 +79,8 @@ public class BytecodeCompiler { configuration.addAll(CommonConfigurationKeys.SOURCE_ROOTS_KEY, Arrays.asList(sourceRoots)); JetCoreEnvironment environment = new JetCoreEnvironment(CompileEnvironmentUtil.createMockDisposable(), configuration); - K2JVMCompileEnvironmentConfiguration - env = new K2JVMCompileEnvironmentConfiguration(environment, MessageCollector.PLAIN_TEXT_TO_SYSTEM_ERR, Collections.emptyList(), - BuiltinsScopeExtensionMode.ALL, false, BuiltinToJavaTypesMapping.ENABLED); + K2JVMCompileEnvironmentConfiguration env = new K2JVMCompileEnvironmentConfiguration(environment, + MessageCollector.PLAIN_TEXT_TO_SYSTEM_ERR); // lets register any compiler plugins env.getCompilerPlugins().addAll(getCompilerPlugins()); diff --git a/compiler/cli/src/org/jetbrains/jet/cli/jvm/JVMConfigurationKeys.java b/compiler/cli/src/org/jetbrains/jet/cli/jvm/JVMConfigurationKeys.java index 3c353e5a9a6..1f72ae403a7 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/jvm/JVMConfigurationKeys.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/JVMConfigurationKeys.java @@ -17,6 +17,9 @@ package org.jetbrains.jet.cli.jvm; import com.intellij.openapi.util.Key; +import org.jetbrains.jet.codegen.BuiltinToJavaTypesMapping; +import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode; +import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter; import java.io.File; import java.util.List; @@ -31,4 +34,9 @@ public class JVMConfigurationKeys { public static final Key> CLASSPATH_KEY = Key.create("classpath"); public static final Key> ANNOTATIONS_PATH_KEY = Key.create("annotations path"); + + public static final Key> SCRIPT_PARAMETERS = Key.create("script"); + public static final Key BUILTINS_SCOPE_EXTENSION_MODE_KEY = Key.create("builtins scope extension mode"); + public static final Key STUBS = Key.create("stubs"); + public static final Key BUILTIN_TO_JAVA_TYPES_MAPPING_KEY = Key.create("builtin to java types mapping"); } 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 316e88357da..cbc2e9ec2cf 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/jvm/K2JVMCompiler.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/K2JVMCompiler.java @@ -37,7 +37,6 @@ import org.jetbrains.jet.utils.PathUtil; import java.io.File; import java.io.PrintStream; -import java.util.Collection; import java.util.Collections; import java.util.List; @@ -94,11 +93,17 @@ public class K2JVMCompiler extends CLICompileremptyList(), - builtins ? BuiltinsScopeExtensionMode.ONLY_STANDARD_CLASSES : BuiltinsScopeExtensionMode.ALL, - builtins, - builtins ? BuiltinToJavaTypesMapping.DISABLED : BuiltinToJavaTypesMapping.ENABLED); + + compilerConfiguration.put(JVMConfigurationKeys.SCRIPT_PARAMETERS, arguments.script + ? CommandLineScriptUtils.scriptParameters() + : Collections.emptyList()); + compilerConfiguration.put(JVMConfigurationKeys.BUILTINS_SCOPE_EXTENSION_MODE_KEY, + builtins? BuiltinsScopeExtensionMode.ONLY_STANDARD_CLASSES : BuiltinsScopeExtensionMode.ALL); + compilerConfiguration.put(JVMConfigurationKeys.STUBS, builtins); + compilerConfiguration.put(JVMConfigurationKeys.BUILTIN_TO_JAVA_TYPES_MAPPING_KEY, + builtins ? BuiltinToJavaTypesMapping.DISABLED : BuiltinToJavaTypesMapping.ENABLED); + + K2JVMCompileEnvironmentConfiguration configuration = new K2JVMCompileEnvironmentConfiguration(environment, messageCollector); messageCollector.report(CompilerMessageSeverity.LOGGING, "Configuring the compilation environment", CompilerMessageLocation.NO_LOCATION); diff --git a/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/CompileEnvironmentUtil.java b/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/CompileEnvironmentUtil.java index 5ae08b8c6af..015e592af8c 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/CompileEnvironmentUtil.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/CompileEnvironmentUtil.java @@ -27,14 +27,11 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.cli.common.messages.MessageCollector; import org.jetbrains.jet.cli.common.util.CompilerPathUtil; import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys; -import org.jetbrains.jet.codegen.BuiltinToJavaTypesMapping; import org.jetbrains.jet.codegen.ClassFileFactory; import org.jetbrains.jet.codegen.GeneratedClassLoader; import org.jetbrains.jet.codegen.GenerationState; import org.jetbrains.jet.config.CommonConfigurationKeys; import org.jetbrains.jet.config.CompilerConfiguration; -import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode; -import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter; import org.jetbrains.jet.lang.resolve.java.JvmAbi; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.utils.PathUtil; @@ -48,7 +45,6 @@ import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.jar.*; @@ -104,10 +100,8 @@ public class CompileEnvironmentUtil { configuration.add(CommonConfigurationKeys.SOURCE_ROOTS_KEY, moduleScriptFile); JetCoreEnvironment scriptEnvironment = JetCoreEnvironment.createCoreEnvironmentForJVM(disposable, configuration); - GenerationState generationState = KotlinToJVMBytecodeCompiler - .analyzeAndGenerate(new K2JVMCompileEnvironmentConfiguration(scriptEnvironment, messageCollector, Collections.emptyList(), - BuiltinsScopeExtensionMode.ALL, false, - BuiltinToJavaTypesMapping.ENABLED), false); + GenerationState generationState = KotlinToJVMBytecodeCompiler.analyzeAndGenerate( + new K2JVMCompileEnvironmentConfiguration(scriptEnvironment, messageCollector), false); if (generationState == null) { throw new CompileEnvironmentException("Module script " + moduleScriptFile + " analyze failed"); } diff --git a/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/K2JVMCompileEnvironmentConfiguration.java b/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/K2JVMCompileEnvironmentConfiguration.java index 29dda4baccd..97dc704fd99 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/K2JVMCompileEnvironmentConfiguration.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/K2JVMCompileEnvironmentConfiguration.java @@ -20,58 +20,25 @@ import com.intellij.openapi.util.Disposer; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.cli.common.CompileEnvironmentConfiguration; import org.jetbrains.jet.cli.common.messages.MessageCollector; -import org.jetbrains.jet.codegen.BuiltinToJavaTypesMapping; -import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode; -import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter; - -import java.util.List; /** * @author abreslav */ public class K2JVMCompileEnvironmentConfiguration extends CompileEnvironmentConfiguration { private final JetCoreEnvironment environment; - private final List scriptParameters; - private final BuiltinsScopeExtensionMode builtinsScopeExtensionMode; - private final boolean stubs; - private final BuiltinToJavaTypesMapping builtinToJavaTypesMapping; /** * NOTE: It's very important to call dispose for every object of this class or there will be memory leaks. * * @see Disposer */ - public K2JVMCompileEnvironmentConfiguration(@NotNull JetCoreEnvironment environment, @NotNull MessageCollector messageCollector, - List scriptParameters, BuiltinsScopeExtensionMode builtinsScopeExtensionMode, boolean stubs, BuiltinToJavaTypesMapping builtinToJavaTypesMapping) { + public K2JVMCompileEnvironmentConfiguration(@NotNull JetCoreEnvironment environment, + @NotNull MessageCollector messageCollector) { super(messageCollector); this.environment = environment; - this.scriptParameters = scriptParameters; - this.builtinsScopeExtensionMode = builtinsScopeExtensionMode; - this.stubs = stubs; - this.builtinToJavaTypesMapping = builtinToJavaTypesMapping; } public JetCoreEnvironment getEnvironment() { return environment; } - - public boolean isScript() { - return scriptParameters != null; - } - - public List getScript() { - return scriptParameters; - } - - public BuiltinsScopeExtensionMode getBuiltinsScopeExtensionMode() { - return builtinsScopeExtensionMode; - } - - public boolean isStubs() { - return stubs; - } - - public BuiltinToJavaTypesMapping getBuiltinToJavaTypesMapping() { - return builtinToJavaTypesMapping; - } } diff --git a/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.java b/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.java index 5737728c8f5..21033c2c584 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.java @@ -37,7 +37,6 @@ import org.jetbrains.jet.codegen.*; import org.jetbrains.jet.config.CommonConfigurationKeys; import org.jetbrains.jet.config.CompilerConfiguration; import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode; -import org.jetbrains.jet.lang.parsing.JetParserDefinition; import org.jetbrains.jet.lang.parsing.JetScriptDefinition; import org.jetbrains.jet.lang.parsing.JetScriptDefinitionProvider; import org.jetbrains.jet.lang.psi.JetFile; @@ -51,7 +50,10 @@ import org.jetbrains.jet.plugin.JetMainDetector; import org.jetbrains.jet.utils.ExceptionUtils; import org.jetbrains.jet.utils.Progress; -import java.io.*; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; import java.net.URL; import java.net.URLClassLoader; import java.util.Collection; @@ -114,9 +116,8 @@ public class KotlinToJVMBytecodeCompiler { K2JVMCompileEnvironmentConfiguration currentK2JVMConfiguration = new K2JVMCompileEnvironmentConfiguration( - environment, configuration.getMessageCollector(), Collections.emptyList(), - configuration.getBuiltinsScopeExtensionMode(), configuration.isStubs(), - configuration.getBuiltinToJavaTypesMapping()); + environment, configuration.getMessageCollector() + ); GenerationState generationState = analyzeAndGenerate(currentK2JVMConfiguration); if (generationState == null) { return null; @@ -278,7 +279,8 @@ public class KotlinToJVMBytecodeCompiler { @Nullable public static GenerationState analyzeAndGenerate(K2JVMCompileEnvironmentConfiguration configuration) { - return analyzeAndGenerate(configuration, configuration.isStubs(), configuration.getScript()); + return analyzeAndGenerate(configuration, configuration.getEnvironment().getConfiguration().get(JVMConfigurationKeys.STUBS, false), + configuration.getEnvironment().getConfiguration().getList(JVMConfigurationKeys.SCRIPT_PARAMETERS)); } @Nullable @@ -286,9 +288,8 @@ public class KotlinToJVMBytecodeCompiler { K2JVMCompileEnvironmentConfiguration configuration, boolean stubs ) { - return analyzeAndGenerate(configuration, stubs, configuration.isScript() - ? CommandLineScriptUtils.scriptParameters() - : Collections.emptyList()); + return analyzeAndGenerate(configuration, stubs, + configuration.getEnvironment().getConfiguration().getList(JVMConfigurationKeys.SCRIPT_PARAMETERS)); } @Nullable @@ -327,7 +328,8 @@ public class KotlinToJVMBytecodeCompiler { environment.getSourceFiles(), scriptParameters, filesToAnalyzeCompletely, - configuration.getBuiltinsScopeExtensionMode()); + environment.getConfiguration().get(JVMConfigurationKeys.BUILTINS_SCOPE_EXTENSION_MODE_KEY, + BuiltinsScopeExtensionMode.ALL)); } }, environment.getSourceFiles() ); @@ -350,7 +352,9 @@ public class KotlinToJVMBytecodeCompiler { }; GenerationState generationState = new GenerationState(project, ClassBuilderFactories.binaries(stubs), backendProgress, exhaust, environment.getSourceFiles(), - configuration.getBuiltinToJavaTypesMapping()); + environment.getConfiguration().get( + JVMConfigurationKeys.BUILTIN_TO_JAVA_TYPES_MAPPING_KEY, + BuiltinToJavaTypesMapping.ENABLED)); generationState.compileCorrectFiles(CompilationErrorHandler.THROW_EXCEPTION); List plugins = configuration.getCompilerPlugins(); @@ -377,13 +381,10 @@ public class KotlinToJVMBytecodeCompiler { compilerConfiguration.add(CommonConfigurationKeys.SOURCE_ROOTS_KEY, scriptPath); compilerConfiguration.addAll(CommonConfigurationKeys.SCRIPT_DEFINITIONS_KEY, scriptDefinitions != null ? scriptDefinitions : Collections.emptyList()); + compilerConfiguration.put(JVMConfigurationKeys.SCRIPT_PARAMETERS, scriptParameters); JetCoreEnvironment environment = JetCoreEnvironment.createCoreEnvironmentForJVM(rootDisposable, compilerConfiguration); - K2JVMCompileEnvironmentConfiguration configuration = new K2JVMCompileEnvironmentConfiguration( - environment, messageCollector, scriptParameters != null ? scriptParameters : Collections.emptyList(), - BuiltinsScopeExtensionMode.ALL, - false, - BuiltinToJavaTypesMapping.ENABLED); + K2JVMCompileEnvironmentConfiguration configuration = new K2JVMCompileEnvironmentConfiguration(environment, messageCollector); try { JetScriptDefinitionProvider.getInstance(environment.getProject()).markFileAsScript(environment.getSourceFiles().get(0)); diff --git a/compiler/frontend/src/org/jetbrains/jet/config/CompilerConfiguration.java b/compiler/frontend/src/org/jetbrains/jet/config/CompilerConfiguration.java index 2f785b40f7c..c247b35f847 100644 --- a/compiler/frontend/src/org/jetbrains/jet/config/CompilerConfiguration.java +++ b/compiler/frontend/src/org/jetbrains/jet/config/CompilerConfiguration.java @@ -38,6 +38,12 @@ public class CompilerConfiguration { return holder.getUserData(key); } + @NotNull + public T get(@NotNull Key key, @NotNull T defaultValue) { + T data = holder.getUserData(key); + return data == null ? defaultValue : data; + } + @NotNull public List getList(@NotNull Key> key) { List data = holder.getUserData(key); diff --git a/compiler/tests/org/jetbrains/jet/codegen/TestlibTest.java b/compiler/tests/org/jetbrains/jet/codegen/TestlibTest.java index 304eee26aba..ada710870d7 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/TestlibTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/TestlibTest.java @@ -32,12 +32,10 @@ import org.jetbrains.jet.cli.jvm.compiler.KotlinToJVMBytecodeCompiler; import org.jetbrains.jet.codegen.forTestCompile.ForTestCompileRuntime; import org.jetbrains.jet.config.CommonConfigurationKeys; import org.jetbrains.jet.config.CompilerConfiguration; -import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode; import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.psi.JetClass; import org.jetbrains.jet.lang.psi.JetDeclaration; import org.jetbrains.jet.lang.psi.JetFile; -import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.types.JetType; @@ -49,7 +47,6 @@ import java.lang.reflect.Constructor; import java.lang.reflect.Modifier; import java.net.URL; import java.net.URLClassLoader; -import java.util.Collections; import java.util.Set; /** @@ -81,10 +78,8 @@ public class TestlibTest extends CodegenTestCase { private TestSuite doBuildSuite() { try { - GenerationState generationState = KotlinToJVMBytecodeCompiler - .analyzeAndGenerate(new K2JVMCompileEnvironmentConfiguration(myEnvironment, MessageCollector.PLAIN_TEXT_TO_SYSTEM_ERR, - Collections.emptyList(), BuiltinsScopeExtensionMode.ALL, false, - BuiltinToJavaTypesMapping.ENABLED), false); + GenerationState generationState = KotlinToJVMBytecodeCompiler.analyzeAndGenerate( + new K2JVMCompileEnvironmentConfiguration(myEnvironment, MessageCollector.PLAIN_TEXT_TO_SYSTEM_ERR), false); if (generationState == null) { throw new RuntimeException("There were compilation errors");