diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.kt
index 06ff899b34f..8abbeef97bc 100644
--- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.kt
+++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.kt
@@ -26,9 +26,7 @@ import org.jetbrains.kotlin.cli.common.ExitCode.*
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
import org.jetbrains.kotlin.cli.common.environment.setIdeaIoUseFallback
import org.jetbrains.kotlin.cli.common.messages.*
-import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.ERROR
-import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.INFO
-import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.LOGGING
+import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.*
import org.jetbrains.kotlin.cli.jvm.plugins.PluginCliParser
import org.jetbrains.kotlin.cli.plugins.processCompilerPluginsOptions
import org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor
@@ -48,13 +46,15 @@ import java.io.PrintStream
abstract class CLICompiler : CLITool() {
companion object {
- const val SCRIPT_PLUGIN_REGISTRAR_NAME = "org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingCompilerConfigurationComponentRegistrar"
+ const val SCRIPT_PLUGIN_REGISTRAR_NAME =
+ "org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingCompilerConfigurationComponentRegistrar"
const val SCRIPT_PLUGIN_COMMANDLINE_PROCESSOR_NAME = "org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingCommandLineProcessor"
}
abstract val defaultPerformanceManager: CommonCompilerPerformanceManager
- protected open fun createPerformanceManager(arguments: A, services: Services): CommonCompilerPerformanceManager = defaultPerformanceManager
+ protected open fun createPerformanceManager(arguments: A, services: Services): CommonCompilerPerformanceManager =
+ defaultPerformanceManager
// Used in CompilerRunnerUtil#invokeExecMethod, in Eclipse plugin (KotlinCLICompiler) and in kotlin-gradle-plugin (GradleCompilerRunner)
fun execAndOutputXml(errStream: PrintStream, services: Services, vararg args: String): ExitCode {
@@ -179,23 +179,37 @@ abstract class CLICompiler : CLITool() {
}
}
- if (pluginConfigurations.isNotEmpty() && (pluginClasspaths.isNotEmpty() || pluginOptions.isNotEmpty())) {
- val message = buildString {
- appendLine("Mixing legacy and modern plugin arguments is prohibited. Please use only one syntax")
- appendLine("Legacy arguments:")
- if (pluginClasspaths.isNotEmpty()) {
- appendLine(" -Xplugin=${pluginClasspaths.joinToString(",")}")
- }
- pluginOptions.forEach {
- appendLine(" -P $it")
- }
- appendLine("Modern arguments:")
- pluginConfigurations.forEach {
- appendLine(" -Xcompiler-plugin=$it")
- }
+ if (pluginConfigurations.isNotEmpty()) {
+ var hasErrors = false
+ messageCollector.report(WARNING, "Argument -Xcompiler-plugin is experimental")
+ if (!arguments.useK2) {
+ hasErrors = true
+ messageCollector.report(
+ ERROR,
+ "-Xcompiler-plugin argument is allowed only for for K2 compiler. Please use -Xplugin argument or enable -Xuse-k2"
+ )
+ }
+ if (pluginClasspaths.isNotEmpty() || pluginOptions.isNotEmpty()) {
+ hasErrors = true
+ val message = buildString {
+ appendLine("Mixing legacy and modern plugin arguments is prohibited. Please use only one syntax")
+ appendLine("Legacy arguments:")
+ if (pluginClasspaths.isNotEmpty()) {
+ appendLine(" -Xplugin=${pluginClasspaths.joinToString(",")}")
+ }
+ pluginOptions.forEach {
+ appendLine(" -P $it")
+ }
+ appendLine("Modern arguments:")
+ pluginConfigurations.forEach {
+ appendLine(" -Xcompiler-plugin=$it")
+ }
+ }
+ messageCollector.report(ERROR, message)
+ }
+ if (hasErrors) {
+ return INTERNAL_ERROR
}
- messageCollector.report(ERROR, message)
- return INTERNAL_ERROR
}
if (!arguments.disableDefaultScriptingPlugin) {
diff --git a/compiler/testData/cli/jvm/plugins/firAllOpenPlugin_modern.args b/compiler/testData/cli/jvm/plugins/firAllOpenPlugin_modern.args
index 764570e5f68..dfbb0b8aafc 100644
--- a/compiler/testData/cli/jvm/plugins/firAllOpenPlugin_modern.args
+++ b/compiler/testData/cli/jvm/plugins/firAllOpenPlugin_modern.args
@@ -1,4 +1,5 @@
-d
$TEMP_DIR$
+-Xuse-k2
-Xcompiler-plugin=dist/kotlinc/lib/allopen-compiler-plugin.jar=annotation=foo.AllOpen
$TESTDATA_DIR$/firAllOpenPlugin.kt
diff --git a/compiler/testData/cli/jvm/plugins/firAllOpenPlugin_modern.out b/compiler/testData/cli/jvm/plugins/firAllOpenPlugin_modern.out
index d86bac9de59..f4b5c860a5b 100644
--- a/compiler/testData/cli/jvm/plugins/firAllOpenPlugin_modern.out
+++ b/compiler/testData/cli/jvm/plugins/firAllOpenPlugin_modern.out
@@ -1 +1,5 @@
+warning: argument -Xcompiler-plugin is experimental
+warning: ATTENTION!
+ This build uses experimental K2 compiler:
+ -Xuse-k2
OK
diff --git a/compiler/testData/cli/jvm/plugins/mixingModernAndLegacyArgs.args b/compiler/testData/cli/jvm/plugins/mixingModernAndLegacyArgs.args
index dbe83513c0c..543642899dd 100644
--- a/compiler/testData/cli/jvm/plugins/mixingModernAndLegacyArgs.args
+++ b/compiler/testData/cli/jvm/plugins/mixingModernAndLegacyArgs.args
@@ -1,6 +1,7 @@
-d
$TEMP_DIR$
-Xcompiler-plugin=dist/kotlinc/lib/noarg-compiler-plugin.jar=annotation=foo.NoArg
+-Xuse-k2
-Xplugin=dist/kotlinc/lib/allopen-compiler-plugin.jar
-P
diff --git a/compiler/testData/cli/jvm/plugins/multipleOptionsForOnePlugin.args b/compiler/testData/cli/jvm/plugins/multipleOptionsForOnePlugin.args
index 5f76fb11b84..c0e9149c866 100644
--- a/compiler/testData/cli/jvm/plugins/multipleOptionsForOnePlugin.args
+++ b/compiler/testData/cli/jvm/plugins/multipleOptionsForOnePlugin.args
@@ -1,4 +1,5 @@
-d
$TEMP_DIR$
+-Xuse-k2
-Xcompiler-plugin=dist/kotlinc/lib/allopen-compiler-plugin.jar=annotation=foo.AllOpen1,annotation=foo.AllOpen2
$TESTDATA_DIR$/multipleOptionsForOnePlugin.kt
diff --git a/compiler/testData/cli/jvm/plugins/multipleOptionsForOnePlugin.out b/compiler/testData/cli/jvm/plugins/multipleOptionsForOnePlugin.out
index d86bac9de59..f4b5c860a5b 100644
--- a/compiler/testData/cli/jvm/plugins/multipleOptionsForOnePlugin.out
+++ b/compiler/testData/cli/jvm/plugins/multipleOptionsForOnePlugin.out
@@ -1 +1,5 @@
+warning: argument -Xcompiler-plugin is experimental
+warning: ATTENTION!
+ This build uses experimental K2 compiler:
+ -Xuse-k2
OK
diff --git a/compiler/testData/cli/jvm/plugins/multiplePlugins.args b/compiler/testData/cli/jvm/plugins/multiplePlugins.args
index 032033a4983..dfcb30800fe 100644
--- a/compiler/testData/cli/jvm/plugins/multiplePlugins.args
+++ b/compiler/testData/cli/jvm/plugins/multiplePlugins.args
@@ -1,5 +1,6 @@
-d
$TEMP_DIR$
+-Xuse-k2
-Xcompiler-plugin=dist/kotlinc/lib/allopen-compiler-plugin.jar=annotation=foo.AllOpen
-Xcompiler-plugin=dist/kotlinc/lib/noarg-compiler-plugin.jar=annotation=foo.NoArg
$TESTDATA_DIR$/multiplePlugins.kt
diff --git a/compiler/testData/cli/jvm/plugins/multiplePlugins.out b/compiler/testData/cli/jvm/plugins/multiplePlugins.out
index 294392adc37..1ec5c3c01b7 100644
--- a/compiler/testData/cli/jvm/plugins/multiplePlugins.out
+++ b/compiler/testData/cli/jvm/plugins/multiplePlugins.out
@@ -1,4 +1,7 @@
-compiler/testData/cli/jvm/plugins/multiplePlugins.kt:11:17: error: noarg constructor generation is not possible for inner classes
+warning: ATTENTION!
+ This build uses experimental K2 compiler:
+ -Xuse-k2
+compiler/testData/cli/jvm/plugins/multiplePlugins.kt:11:17: error:
inner class Inner(val s: String)
^
COMPILATION_ERROR
diff --git a/compiler/testData/cli/jvm/plugins/multiplePluginsInSameArg.args b/compiler/testData/cli/jvm/plugins/multiplePluginsInSameArg.args
index 3858669e48b..a4cdba77296 100644
--- a/compiler/testData/cli/jvm/plugins/multiplePluginsInSameArg.args
+++ b/compiler/testData/cli/jvm/plugins/multiplePluginsInSameArg.args
@@ -1,4 +1,5 @@
-d
$TEMP_DIR$
+-Xuse-k2
-Xcompiler-plugin=dist/kotlinc/lib/allopen-compiler-plugin.jar,dist/kotlinc/lib/noarg-compiler-plugin.jar=annotation=foo.AllOpen
$TESTDATA_DIR$/multiplePluginsInSameArg.kt
diff --git a/compiler/testData/cli/jvm/plugins/noPluginInClasspath.args b/compiler/testData/cli/jvm/plugins/noPluginInClasspath.args
index dd7a39fe7a7..71a93787fd3 100644
--- a/compiler/testData/cli/jvm/plugins/noPluginInClasspath.args
+++ b/compiler/testData/cli/jvm/plugins/noPluginInClasspath.args
@@ -1,4 +1,5 @@
-d
$TEMP_DIR$
+-Xuse-k2
-Xcompiler-plugin=dist/kotlinc/lib/kotlin-reflect.jar
$TESTDATA_DIR$/noPluginInClasspath.kt
diff --git a/compiler/testData/cli/jvm/plugins/pluginSimple_modern.out b/compiler/testData/cli/jvm/plugins/pluginSimple_modern.out
deleted file mode 100644
index d86bac9de59..00000000000
--- a/compiler/testData/cli/jvm/plugins/pluginSimple_modern.out
+++ /dev/null
@@ -1 +0,0 @@
-OK
diff --git a/compiler/testData/cli/jvm/plugins/pluginSimple_modern.args b/compiler/testData/cli/jvm/plugins/pluginSimple_modern_noK2.args
similarity index 100%
rename from compiler/testData/cli/jvm/plugins/pluginSimple_modern.args
rename to compiler/testData/cli/jvm/plugins/pluginSimple_modern_noK2.args
diff --git a/compiler/testData/cli/jvm/plugins/pluginSimple_modern_noK2.out b/compiler/testData/cli/jvm/plugins/pluginSimple_modern_noK2.out
new file mode 100644
index 00000000000..09389a9824c
--- /dev/null
+++ b/compiler/testData/cli/jvm/plugins/pluginSimple_modern_noK2.out
@@ -0,0 +1,2 @@
+error: -Xcompiler-plugin argument is allowed only for for K2 compiler. Please use -Xplugin argument or enable -Xuse-k2
+COMPILATION_ERROR
diff --git a/compiler/tests-gen/org/jetbrains/kotlin/cli/CliTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/cli/CliTestGenerated.java
index 20a2f8c1f26..50ba7bf7bb4 100644
--- a/compiler/tests-gen/org/jetbrains/kotlin/cli/CliTestGenerated.java
+++ b/compiler/tests-gen/org/jetbrains/kotlin/cli/CliTestGenerated.java
@@ -109,9 +109,9 @@ public class CliTestGenerated extends AbstractCliTest {
runTest("compiler/testData/cli/jvm/plugins/pluginSimple_legacy.args");
}
- @TestMetadata("pluginSimple_modern.args")
- public void testPluginSimple_modern() throws Exception {
- runTest("compiler/testData/cli/jvm/plugins/pluginSimple_modern.args");
+ @TestMetadata("pluginSimple_modern_noK2.args")
+ public void testPluginSimple_modern_noK2() throws Exception {
+ runTest("compiler/testData/cli/jvm/plugins/pluginSimple_modern_noK2.args");
}
@TestMetadata("pluginWithK2Error_legacy.args")