From 430b973458d98889625b88451a75bc5b691b8d4a Mon Sep 17 00:00:00 2001 From: Stepan Koltsov Date: Fri, 6 Jan 2012 21:22:50 +0400 Subject: [PATCH] better error reporting in commandline compiler --- .../jet/compiler/CompileEnvironment.java | 7 ++++--- .../org/jetbrains/jet/cli/KotlinCompiler.java | 19 +++++++++++++++---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/compiler/CompileEnvironment.java b/compiler/backend/src/org/jetbrains/jet/compiler/CompileEnvironment.java index 1eab1a0e29b..277273aa0ee 100644 --- a/compiler/backend/src/org/jetbrains/jet/compiler/CompileEnvironment.java +++ b/compiler/backend/src/org/jetbrains/jet/compiler/CompileEnvironment.java @@ -120,7 +120,7 @@ public class CompileEnvironment { rtJar = findActiveRtJar(failOnError); if ((rtJar == null || !rtJar.exists())) { - throw new CompileEnvironmentException("No rt.jar found under JAVA_HOME=" + javaHome); + throw new CompileEnvironmentException("No JDK rt.jar found under JAVA_HOME=" + javaHome); } } return rtJar; @@ -337,7 +337,7 @@ public class CompileEnvironment { } } - public void compileBunchOfSources(String sourceFileOrDir, String jar, String outputDir, boolean includeRuntime) { + public boolean compileBunchOfSources(String sourceFileOrDir, String jar, String outputDir, boolean includeRuntime) { CompileSession session = new CompileSession(myEnvironment); session.addSources(sourceFileOrDir); session.addStdLibSources(false); @@ -350,7 +350,7 @@ public class CompileEnvironment { } } if (!session.analyze(myErrorStream)) { - return; + return false; } ClassFileFactory factory = session.generate(); @@ -367,6 +367,7 @@ public class CompileEnvironment { else { throw new CompileEnvironmentException("Output directory or jar file is not specified - no files will be saved to the disk"); } + return true; } public static void writeToOutputDirectory(ClassFileFactory factory, final String outputDir) { diff --git a/compiler/cli/src/org/jetbrains/jet/cli/KotlinCompiler.java b/compiler/cli/src/org/jetbrains/jet/cli/KotlinCompiler.java index 56db85a522d..e752317b947 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/KotlinCompiler.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/KotlinCompiler.java @@ -33,9 +33,14 @@ public class KotlinCompiler { try { Args.parse(arguments, args); } - catch (Throwable t) { + catch (IllegalArgumentException e) { System.out.println("Usage: KotlinCompiler [-output |-jar ] [-src |-module ] [-includeRuntime]"); + System.exit(1); + return; + } + catch (Throwable t) { t.printStackTrace(); + System.exit(1); return; } @@ -44,7 +49,8 @@ public class KotlinCompiler { try { environment.setJavaRuntime(CompileEnvironment.findRtJar(true)); if (!environment.initializeKotlinRuntime()) { - System.out.println("No runtime library found"); + System.err.println("No Kotlin runtime library found"); + System.exit(1); return; } @@ -53,10 +59,15 @@ public class KotlinCompiler { return; } else { - environment.compileBunchOfSources(arguments.src, arguments.jar, arguments.outputDir, arguments.includeRuntime); + if (!environment.compileBunchOfSources(arguments.src, arguments.jar, arguments.outputDir, arguments.includeRuntime)) { + System.exit(1); + return; + } } } catch (CompileEnvironmentException e) { - System.out.println(e.getMessage()); + System.err.println(e.getMessage()); + System.exit(1); + return; } }