From 167b6c8a5aa234b04f75d038c1744488c9ad1646 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Thu, 26 Jan 2012 19:11:12 +0400 Subject: [PATCH] A command-line option to ignore compilation errors and generate byte code anyway. Needed for: building jdk-headers --- .../cli/src/org/jetbrains/jet/cli/KotlinCompiler.java | 4 ++++ .../org/jetbrains/jet/compiler/CompileEnvironment.java | 10 ++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/jet/cli/KotlinCompiler.java b/compiler/cli/src/org/jetbrains/jet/cli/KotlinCompiler.java index 6756cd5a7c3..2db7d09a465 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/KotlinCompiler.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/KotlinCompiler.java @@ -37,6 +37,9 @@ public class KotlinCompiler { @Argument(value = "help", alias = "h", description = "show help") public boolean help; + + @Argument(value = "ignoreErrors", description = "Emit byte code even if there are compilation errors (not recommended)") + public boolean ignoreErrors; } private static void usage(PrintStream target) { @@ -77,6 +80,7 @@ public class KotlinCompiler { } CompileEnvironment environment = new CompileEnvironment(); + environment.setIgnoreErrors(arguments.ignoreErrors); if (arguments.stdlib != null) { environment.setStdlib(arguments.stdlib); diff --git a/compiler/cli/src/org/jetbrains/jet/compiler/CompileEnvironment.java b/compiler/cli/src/org/jetbrains/jet/compiler/CompileEnvironment.java index 92a05e64133..9cdd93b6340 100644 --- a/compiler/cli/src/org/jetbrains/jet/compiler/CompileEnvironment.java +++ b/compiler/cli/src/org/jetbrains/jet/compiler/CompileEnvironment.java @@ -37,6 +37,8 @@ public class CompileEnvironment { private PrintStream myErrorStream = System.out; private URL myStdlib; + private boolean ignoreErrors = false; + public CompileEnvironment() { myRootDisposable = new Disposable() { @Override @@ -50,6 +52,10 @@ public class CompileEnvironment { myErrorStream = errorStream; } + public void setIgnoreErrors(boolean ignoreErrors) { + this.ignoreErrors = ignoreErrors; + } + public void dispose() { Disposer.dispose(myRootDisposable); } @@ -199,7 +205,7 @@ public class CompileEnvironment { ensureRuntime(); - if (!moduleCompileSession.analyze(myErrorStream)) { + if (!moduleCompileSession.analyze(myErrorStream) && !ignoreErrors) { return null; } return moduleCompileSession.generate(); @@ -296,7 +302,7 @@ public class CompileEnvironment { ensureRuntime(); - if (!session.analyze(myErrorStream)) { + if (!session.analyze(myErrorStream) && !ignoreErrors) { return false; }