K2JS: fix KT-5639 Exception in kotlin-js when directory is given instead of output file
#KT-5639 Fixed
This commit is contained in:
@@ -143,6 +143,13 @@ public class K2JSCompiler extends CLICompiler<K2JSCompilerArguments> {
|
||||
|
||||
OutputFileCollection outputFiles = translate(mainCallParameters, config, sourcesFiles, outputFile, outputPrefixFile, outputPostfixFile);
|
||||
|
||||
if (outputFile.isDirectory()) {
|
||||
messageCollector.report(CompilerMessageSeverity.ERROR,
|
||||
"Cannot open output file '" + outputFile.getPath() + "': is a directory",
|
||||
CompilerMessageLocation.NO_LOCATION);
|
||||
return ExitCode.COMPILATION_ERROR;
|
||||
}
|
||||
|
||||
File outputDir = outputFile.getParentFile();
|
||||
if (outputDir == null) {
|
||||
outputDir = outputFile.getAbsoluteFile().getParentFile();
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
$TESTDATA_DIR$/simple2js.kt
|
||||
-no-stdlib
|
||||
-output
|
||||
$TESTDATA_DIR$
|
||||
@@ -0,0 +1,2 @@
|
||||
ERROR: Cannot open output file 'compiler/testData/cli/js': is a directory
|
||||
COMPILATION_ERROR
|
||||
@@ -174,6 +174,12 @@ public class KotlincExecutableTestGenerated extends AbstractKotlincExecutableTes
|
||||
doJsTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("outputIsDirectory.args")
|
||||
public void testOutputIsDirectory() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/cli/js/outputIsDirectory.args");
|
||||
doJsTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("outputPostfixFileNotFound.args")
|
||||
public void testOutputPostfixFileNotFound() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/cli/js/outputPostfixFileNotFound.args");
|
||||
|
||||
@@ -30,18 +30,25 @@ public class K2JsCliTest extends CliBaseTest {
|
||||
Assert.assertTrue(new File(tmpdir.getTmpDir(), "out.js").isFile());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void outputIsDirectory() throws Exception {
|
||||
executeCompilerCompareOutputJS();
|
||||
|
||||
Assert.assertFalse(new File(tmpdir.getTmpDir(), "out.js").exists());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void outputPrefixFileNotFound() throws Exception {
|
||||
executeCompilerCompareOutputJS();
|
||||
|
||||
Assert.assertFalse(new File(tmpdir.getTmpDir(), "out.js").isFile());
|
||||
Assert.assertFalse(new File(tmpdir.getTmpDir(), "out.js").exists());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void outputPostfixFileNotFound() throws Exception {
|
||||
executeCompilerCompareOutputJS();
|
||||
|
||||
Assert.assertFalse(new File(tmpdir.getTmpDir(), "out.js").isFile());
|
||||
Assert.assertFalse(new File(tmpdir.getTmpDir(), "out.js").exists());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user