diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java index a2b1e17912b..a94a2e74e52 100644 --- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java +++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java @@ -172,6 +172,10 @@ public class K2JSCompiler extends CLICompiler { @Nullable KotlinPaths paths ) { MessageCollector messageCollector = configuration.getNotNull(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY); + if (configuration.getBoolean(CommonConfigurationKeys.USE_FIR)) { + messageCollector.report(ERROR, "K2 does not support JS target right now", null); + return ExitCode.COMPILATION_ERROR; + } ExitCode exitCode = OK; diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt index b6d531ddbc2..e95c7491889 100644 --- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt +++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt @@ -87,6 +87,10 @@ class K2JsIrCompiler : CLICompiler() { paths: KotlinPaths? ): ExitCode { val messageCollector = configuration.getNotNull(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY) + if (configuration.getBoolean(CommonConfigurationKeys.USE_FIR)) { + messageCollector.report(ERROR, "K2 does not support JS target right now") + return ExitCode.COMPILATION_ERROR + } val pluginLoadResult = loadPlugins(paths, arguments, configuration) if (pluginLoadResult != ExitCode.OK) return pluginLoadResult diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataCompiler.kt index 72ed91ab4d5..c8c3440f42e 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataCompiler.kt @@ -58,6 +58,10 @@ class K2MetadataCompiler : CLICompiler() { paths: KotlinPaths? ): ExitCode { val collector = configuration.getNotNull(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY) + if (configuration.getBoolean(CommonConfigurationKeys.USE_FIR)) { + collector.report(ERROR, "K2 does not support compilation to metadata right now") + return ExitCode.COMPILATION_ERROR + } val performanceManager = configuration.getNotNull(CLIConfigurationKeys.PERF_MANAGER) val pluginLoadResult = loadPlugins(paths, arguments, configuration) diff --git a/compiler/testData/cli/js/fir.args b/compiler/testData/cli/js/fir.args new file mode 100644 index 00000000000..89ec64d69d8 --- /dev/null +++ b/compiler/testData/cli/js/fir.args @@ -0,0 +1,4 @@ +$TESTDATA_DIR$/fir.kt +-Xuse-fir +-output +$TEMP_DIR$ diff --git a/compiler/testData/cli/js/fir.kt b/compiler/testData/cli/js/fir.kt new file mode 100644 index 00000000000..c2b5a4ae9ca --- /dev/null +++ b/compiler/testData/cli/js/fir.kt @@ -0,0 +1,3 @@ +package test + +class Some diff --git a/compiler/testData/cli/js/fir.out b/compiler/testData/cli/js/fir.out new file mode 100644 index 00000000000..1b2b1689ca9 --- /dev/null +++ b/compiler/testData/cli/js/fir.out @@ -0,0 +1,2 @@ +error: k2 does not support JS target right now +COMPILATION_ERROR diff --git a/compiler/testData/cli/metadata/fir.args b/compiler/testData/cli/metadata/fir.args new file mode 100644 index 00000000000..71e85bf191a --- /dev/null +++ b/compiler/testData/cli/metadata/fir.args @@ -0,0 +1,4 @@ +$TESTDATA_DIR$/fir.kt +-Xuse-fir +-d +$TEMP_DIR$ diff --git a/compiler/testData/cli/metadata/fir.kt b/compiler/testData/cli/metadata/fir.kt new file mode 100644 index 00000000000..369872f2b25 --- /dev/null +++ b/compiler/testData/cli/metadata/fir.kt @@ -0,0 +1,3 @@ +package test + +expect class Some diff --git a/compiler/testData/cli/metadata/fir.out b/compiler/testData/cli/metadata/fir.out new file mode 100644 index 00000000000..d3f786619d3 --- /dev/null +++ b/compiler/testData/cli/metadata/fir.out @@ -0,0 +1,2 @@ +error: k2 does not support compilation to metadata right now +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 00e894a46b0..2018b9fa35d 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/cli/CliTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/cli/CliTestGenerated.java @@ -1112,6 +1112,11 @@ public class CliTestGenerated extends AbstractCliTest { runTest("compiler/testData/cli/js/emptySources.args"); } + @TestMetadata("fir.args") + public void testFir() throws Exception { + runTest("compiler/testData/cli/js/fir.args"); + } + @TestMetadata("inlineCycle.args") public void testInlineCycle() throws Exception { runTest("compiler/testData/cli/js/inlineCycle.args"); @@ -1363,6 +1368,11 @@ public class CliTestGenerated extends AbstractCliTest { runTest("compiler/testData/cli/metadata/anonymousObjectType.args"); } + @TestMetadata("fir.args") + public void testFir() throws Exception { + runTest("compiler/testData/cli/metadata/fir.args"); + } + @TestMetadata("inheritorOfExpectSealedClass.args") public void testInheritorOfExpectSealedClass() throws Exception { runTest("compiler/testData/cli/metadata/inheritorOfExpectSealedClass.args"); diff --git a/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt b/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt index 690233f698e..b03bc1a1cdc 100644 --- a/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt +++ b/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt @@ -62,6 +62,10 @@ class K2Native : CLICompiler() { configuration, EnvironmentConfigFiles.NATIVE_CONFIG_FILES) val project = environment.project val messageCollector = configuration.get(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY) ?: MessageCollector.NONE + if (configuration.getBoolean(CommonConfigurationKeys.USE_FIR)) { + messageCollector.report(ERROR, "K2 does not support Native target right now") + return ExitCode.COMPILATION_ERROR + } configuration.put(CLIConfigurationKeys.PHASE_CONFIG, createPhaseConfig(toplevelPhase, arguments, messageCollector)) val enoughArguments = arguments.freeArgs.isNotEmpty() || arguments.isUsefulWithoutFreeArgs