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 5112716ba7f..eade13e398b 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 @@ -19,6 +19,7 @@ package org.jetbrains.jet.buildtools.core; import jet.modules.Module; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.cli.common.CLIConfigurationKeys; import org.jetbrains.jet.cli.common.CompilerPlugin; import org.jetbrains.jet.cli.common.messages.MessageCollector; import org.jetbrains.jet.cli.common.util.CompilerPathUtil; @@ -83,7 +84,7 @@ public class BytecodeCompiler { MessageCollector.PLAIN_TEXT_TO_SYSTEM_ERR); // lets register any compiler plugins - env.getCompilerPlugins().addAll(getCompilerPlugins()); + configuration.addAll(CLIConfigurationKeys.COMPILER_PLUGINS, getCompilerPlugins()); return env; } diff --git a/compiler/cli/src/org/jetbrains/jet/cli/common/CLICompiler.java b/compiler/cli/src/org/jetbrains/jet/cli/common/CLICompiler.java index 1ee18e963a4..8183942eae7 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/common/CLICompiler.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/common/CLICompiler.java @@ -26,9 +26,9 @@ import org.jetbrains.jet.cli.common.messages.MessageRenderer; import org.jetbrains.jet.cli.common.messages.PrintingMessageCollector; import org.jetbrains.jet.cli.jvm.compiler.CompileEnvironmentException; import org.jetbrains.jet.cli.jvm.compiler.CompileEnvironmentUtil; +import org.jetbrains.jet.config.CompilerConfiguration; import java.io.PrintStream; -import java.util.List; import static org.jetbrains.jet.cli.common.ExitCode.INTERNAL_ERROR; import static org.jetbrains.jet.cli.common.ExitCode.OK; @@ -36,7 +36,7 @@ import static org.jetbrains.jet.cli.common.ExitCode.OK; /** * @author Pavel Talanov */ -public abstract class CLICompiler { +public abstract class CLICompiler { @NotNull public ExitCode exec(@NotNull PrintStream errStream, @NotNull String... args) { @@ -90,9 +90,8 @@ public abstract class CLICompiler plugins = arguments.getCompilerPlugins(); - configuration.getCompilerPlugins().addAll(plugins); + protected void configureEnvironment(@NotNull CompilerConfiguration configuration, @NotNull A arguments) { + configuration.addAll(CLIConfigurationKeys.COMPILER_PLUGINS, arguments.getCompilerPlugins()); } @NotNull diff --git a/compiler/cli/src/org/jetbrains/jet/cli/common/CLIConfigurationKeys.java b/compiler/cli/src/org/jetbrains/jet/cli/common/CLIConfigurationKeys.java new file mode 100644 index 00000000000..71505ed2d3e --- /dev/null +++ b/compiler/cli/src/org/jetbrains/jet/cli/common/CLIConfigurationKeys.java @@ -0,0 +1,32 @@ +/* + * 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.common; + +import com.intellij.openapi.util.Key; + +import java.util.List; + +/** + * @author Evgeny Gerashchenko + * @since 7/23/12 + */ +public class CLIConfigurationKeys { + public static final Key> COMPILER_PLUGINS = Key.create("compiler plugins"); + + private CLIConfigurationKeys() { + } +} diff --git a/compiler/cli/src/org/jetbrains/jet/cli/common/CompileEnvironmentConfiguration.java b/compiler/cli/src/org/jetbrains/jet/cli/common/CompileEnvironmentConfiguration.java index 525357b7efd..ac972852224 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/common/CompileEnvironmentConfiguration.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/common/CompileEnvironmentConfiguration.java @@ -16,13 +16,10 @@ package org.jetbrains.jet.cli.common; -import com.google.common.collect.Lists; import com.intellij.openapi.util.Disposer; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.cli.common.messages.MessageCollector; -import java.util.List; - /** * @author Pavel Talanov */ @@ -30,8 +27,6 @@ public abstract class CompileEnvironmentConfiguration { @NotNull private final MessageCollector messageCollector; - @NotNull - private final List compilerPlugins = Lists.newArrayList(); /** * NOTE: It's very important to call dispose for every object of this class or there will be memory leaks. @@ -46,9 +41,4 @@ public abstract class CompileEnvironmentConfiguration { public MessageCollector getMessageCollector() { return messageCollector; } - - @NotNull - public List getCompilerPlugins() { - return compilerPlugins; - } } diff --git a/compiler/cli/src/org/jetbrains/jet/cli/js/K2JSCompiler.java b/compiler/cli/src/org/jetbrains/jet/cli/js/K2JSCompiler.java index e22fb9e7fdc..136099e8e70 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/js/K2JSCompiler.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/js/K2JSCompiler.java @@ -42,7 +42,6 @@ import org.jetbrains.k2js.analyze.AnalyzerFacadeForJS; import org.jetbrains.k2js.config.*; import org.jetbrains.k2js.facade.K2JSTranslator; import org.jetbrains.k2js.facade.MainCallParameters; -import org.jetbrains.k2js.utils.JetFileUtils; import java.io.File; import java.util.Arrays; @@ -53,7 +52,7 @@ import static org.jetbrains.jet.cli.common.messages.CompilerMessageLocation.NO_L /** * @author Pavel Talanov */ -public class K2JSCompiler extends CLICompiler { +public class K2JSCompiler extends CLICompiler { public static void main(String... args) { doMain(new K2JSCompiler(), args); 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 cbc2e9ec2cf..74d3d1dc068 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/jvm/K2JVMCompiler.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/K2JVMCompiler.java @@ -47,7 +47,7 @@ import static org.jetbrains.jet.cli.common.ExitCode.*; * @author alex.tkachman */ @SuppressWarnings("UseOfSystemOutOrSystemErr") -public class K2JVMCompiler extends CLICompiler { +public class K2JVMCompiler extends CLICompiler { public static void main(String... args) { doMain(new K2JVMCompiler(), args); @@ -108,7 +108,7 @@ public class K2JVMCompiler extends CLICompiler plugins = configuration.getCompilerPlugins(); CompilerPluginContext context = new CompilerPluginContext(project, exhaust.getBindingContext(), environment.getSourceFiles()); - for (CompilerPlugin plugin : plugins) { + for (CompilerPlugin plugin : environment.getConfiguration().getList(CLIConfigurationKeys.COMPILER_PLUGINS)) { plugin.processFiles(context); } return generationState; diff --git a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/KDocCompiler.kt b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/KDocCompiler.kt index 2a778c81e34..1f98e8e6551 100644 --- a/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/KDocCompiler.kt +++ b/libraries/tools/kdoc/src/main/kotlin/org/jetbrains/kotlin/doc/KDocCompiler.kt @@ -5,6 +5,8 @@ import org.jetbrains.jet.cli.common.CLICompiler import org.jetbrains.jet.cli.jvm.K2JVMCompiler import org.jetbrains.jet.cli.jvm.K2JVMCompilerArguments import org.jetbrains.jet.cli.jvm.compiler.K2JVMCompileEnvironmentConfiguration +import org.jetbrains.jet.config.CompilerConfiguration +import org.jetbrains.jet.cli.common.CLIConfigurationKeys /** * Main for running the KDocCompiler @@ -19,14 +21,9 @@ fun main(args: Array): Unit { */ class KDocCompiler() : K2JVMCompiler() { - protected override fun configureEnvironment(configuration : K2JVMCompileEnvironmentConfiguration, arguments : K2JVMCompilerArguments) { + protected override fun configureEnvironment(configuration : CompilerConfiguration, arguments : K2JVMCompilerArguments) { super.configureEnvironment(configuration, arguments) - val coreEnvironment = configuration.getEnvironment() - if (coreEnvironment != null) { - val kdoc = KDoc(arguments as KDocArguments) - val plugins = configuration.getCompilerPlugins() - plugins.add(kdoc); - } + configuration.add(CLIConfigurationKeys.COMPILER_PLUGINS, KDoc(arguments as KDocArguments)) } protected override fun createArguments() : K2JVMCompilerArguments {