diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java b/compiler/cli/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java index 86c84ac2f2f..0d4b2ee1898 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java @@ -45,7 +45,6 @@ import org.jetbrains.kotlin.cli.jvm.config.JVMConfigurationKeys; import org.jetbrains.kotlin.config.CompilerConfiguration; import org.jetbrains.kotlin.config.ContentRootsKt; import org.jetbrains.kotlin.config.Services; -import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus; import org.jetbrains.kotlin.js.analyze.TopDownAnalyzerFacadeForJS; import org.jetbrains.kotlin.js.analyzer.JsAnalysisResult; import org.jetbrains.kotlin.js.config.Config; @@ -54,6 +53,7 @@ import org.jetbrains.kotlin.js.config.LibrarySourcesConfig; import org.jetbrains.kotlin.js.facade.K2JSTranslator; import org.jetbrains.kotlin.js.facade.MainCallParameters; import org.jetbrains.kotlin.js.facade.TranslationResult; +import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus; import org.jetbrains.kotlin.psi.KtFile; import org.jetbrains.kotlin.utils.PathUtil; @@ -88,8 +88,11 @@ public class K2JSCompiler extends CLICompiler { final MessageSeverityCollector messageSeverityCollector = new MessageSeverityCollector(messageCollector); if (arguments.freeArgs.isEmpty()) { + if (arguments.version) { + return OK; + } messageSeverityCollector.report(CompilerMessageSeverity.ERROR, "Specify at least one source file or directory", NO_LOCATION); - return ExitCode.COMPILATION_ERROR; + return COMPILATION_ERROR; } CompilerConfiguration configuration = new CompilerConfiguration(); diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt index f44d08184d9..172c7d83521 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt @@ -185,6 +185,9 @@ public open class K2JVMCompiler : CLICompiler() { if (messageSeverityCollector.anyReported(CompilerMessageSeverity.ERROR)) return COMPILATION_ERROR if (environment.getSourceFiles().isEmpty()) { + if (arguments.version) { + return OK + } messageSeverityCollector.report(CompilerMessageSeverity.ERROR, "No source files", CompilerMessageLocation.NO_LOCATION) return COMPILATION_ERROR } diff --git a/compiler/testData/cli/js/version.args b/compiler/testData/cli/js/version.args new file mode 100644 index 00000000000..409f4ea47a7 --- /dev/null +++ b/compiler/testData/cli/js/version.args @@ -0,0 +1 @@ +-version diff --git a/compiler/testData/cli/js/version.out b/compiler/testData/cli/js/version.out new file mode 100644 index 00000000000..77295403a32 --- /dev/null +++ b/compiler/testData/cli/js/version.out @@ -0,0 +1,2 @@ +info: Kotlin Compiler version $VERSION$ +OK diff --git a/compiler/testData/cli/jvm/version.args b/compiler/testData/cli/jvm/version.args new file mode 100644 index 00000000000..409f4ea47a7 --- /dev/null +++ b/compiler/testData/cli/jvm/version.args @@ -0,0 +1 @@ +-version diff --git a/compiler/testData/cli/jvm/version.out b/compiler/testData/cli/jvm/version.out new file mode 100644 index 00000000000..77295403a32 --- /dev/null +++ b/compiler/testData/cli/jvm/version.out @@ -0,0 +1,2 @@ +info: Kotlin Compiler version $VERSION$ +OK diff --git a/compiler/tests/org/jetbrains/kotlin/cli/CliBaseTest.java b/compiler/tests/org/jetbrains/kotlin/cli/CliBaseTest.java index 3f13da98931..497bdb57f41 100644 --- a/compiler/tests/org/jetbrains/kotlin/cli/CliBaseTest.java +++ b/compiler/tests/org/jetbrains/kotlin/cli/CliBaseTest.java @@ -26,6 +26,7 @@ import kotlin.io.FilesKt; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.cli.common.CLICompiler; import org.jetbrains.kotlin.cli.common.ExitCode; +import org.jetbrains.kotlin.cli.common.KotlinVersion; import org.jetbrains.kotlin.cli.js.K2JSCompiler; import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler; import org.jetbrains.kotlin.load.java.JvmAbi; @@ -72,7 +73,8 @@ public class CliBaseTest { String normalizedOutputWithoutExitCode = pureOutput .replace(new File(testDataDir).getAbsolutePath(), "$TESTDATA_DIR$") .replace("expected ABI version is " + JvmAbi.VERSION, "expected ABI version is $ABI_VERSION$") - .replace("\\", "/"); + .replace("\\", "/") + .replace(KotlinVersion.VERSION, "$VERSION$"); return removePerfOutput(normalizedOutputWithoutExitCode) + exitCode; } diff --git a/compiler/tests/org/jetbrains/kotlin/cli/KotlincExecutableTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/cli/KotlincExecutableTestGenerated.java index 7fd67054e8c..09662097b1a 100644 --- a/compiler/tests/org/jetbrains/kotlin/cli/KotlincExecutableTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/cli/KotlincExecutableTestGenerated.java @@ -223,6 +223,12 @@ public class KotlincExecutableTestGenerated extends AbstractKotlincExecutableTes doJvmTest(fileName); } + @TestMetadata("version.args") + public void testVersion() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/version.args"); + doJvmTest(fileName); + } + @TestMetadata("warningsInDummy.args") public void testWarningsInDummy() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/warningsInDummy.args"); @@ -364,6 +370,12 @@ public class KotlincExecutableTestGenerated extends AbstractKotlincExecutableTes doJsTest(fileName); } + @TestMetadata("version.args") + public void testVersion() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/version.args"); + doJsTest(fileName); + } + @TestMetadata("withFolderAsLib.args") public void testWithFolderAsLib() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/withFolderAsLib.args");