Implement the --fatal-errors command line option
authorOndrej Certik <ondrej@certik.cz>
Sat, 4 Dec 2010 03:26:14 +0000 (19:26 -0800)
committerOndrej Certik <ondrej@certik.cz>
Sat, 4 Dec 2010 03:56:45 +0000 (19:56 -0800)
If enabled, it will abort on the first error occured. Just like "gcc
-Wfatal-errors".

Signed-off-by: Ondrej Certik <ondrej@certik.cz>
Cython/Compiler/CmdLine.py
Cython/Compiler/Errors.py
Cython/Compiler/Options.py

index 320690b0f2c00dc3932e63175fd53ce7ba3fd55a..0b0c8244bedc529729f00b9360951bd00fc7c6a1 100644 (file)
@@ -35,6 +35,7 @@ Options:
   --embed                        Embed the Python interpreter in a main() method.
   -2                             Compile based on Python-2 syntax and code semantics.
   -3                             Compile based on Python-3 syntax and code semantics.
+  --fatal-errors                 Abort the compilation on the first error
   -X, --directive <name>=<value>[,<name=value,...] Overrides a compiler directive
 """
 
@@ -117,6 +118,8 @@ def parse_command_line(args):
                 options.language_level = 2
             elif option == '-3':
                 options.language_level = 3
+            elif option == "--fatal-errors":
+                Options.fatal_errors = True
             elif option in ("-X", "--directive"):
                 try:
                     options.compiler_directives = Options.parse_directive_list(
index 5e7a6d87b2fc263c8aa5684bd4584be8a565d526..39c8097dd629e4320f8e18ef73f65f4f3b4224cb 100644 (file)
@@ -5,6 +5,7 @@
 import sys
 from Cython.Utils import open_new_file
 from DebugFlags import debug_exception_on_error
+import Options
 
 
 class PyrexError(Exception):
@@ -138,6 +139,8 @@ def report_error(err):
             except UnicodeEncodeError:
                 echo_file.write(line.encode('ASCII', 'replace'))
         num_errors = num_errors + 1
+        if Options.fatal_errors:
+            sys.exit(1)
 
 def error(position, message):
     #print "Errors.error:", repr(position), repr(message) ###
index 45da9ffb674c50d2eca689b37e573e646aa51c63..9709dc38ef9f35bacb546f37d013a9b6d806b9d2 100644 (file)
@@ -18,6 +18,10 @@ generate_cleanup_code = 0
 
 annotate = 0
 
+# This will abort the compilation on the first error occured rather than trying
+# to keep going and printing further error messages.
+fatal_errors = False
+
 # This will convert statements of the form "for i in range(...)" 
 # to "for i from ..." when i is a cdef'd integer type, and the direction
 # (i.e. sign of step) can be determined.