toolcontext: call only `errors_info` once at the end
authorJean Privat <jean@pryen.org>
Fri, 3 Apr 2015 02:47:05 +0000 (09:47 +0700)
committerJean Privat <jean@pryen.org>
Fri, 3 Apr 2015 06:09:36 +0000 (13:09 +0700)
Thus only display one total of errors/warnings, not one per call of `check_errors`

Signed-off-by: Jean Privat <jean@pryen.org>

src/modelbuilder.nit
src/phase.nit
src/toolcontext.nit

index 38db14a..23f7d49 100644 (file)
@@ -59,6 +59,9 @@ redef class ToolContext
                                phase.process_mainmodule(mainmodule, mmodules)
                        end
                end
                                phase.process_mainmodule(mainmodule, mmodules)
                        end
                end
+
+               check_errors
+               errors_info
        end
 end
 
        end
 end
 
index bdec532..502d817 100644 (file)
@@ -147,7 +147,7 @@ redef class ToolContext
                var time1 = get_time
                self.info("*** END SEMANTIC ANALYSIS: {time1-time0} ***", 2)
 
                var time1 = get_time
                self.info("*** END SEMANTIC ANALYSIS: {time1-time0} ***", 2)
 
-               errors_info
+               self.check_errors
        end
 
        # Process the given `phase` on the `npropdef`
        end
 
        # Process the given `phase` on the `npropdef`
index 62c184a..92a4824 100644 (file)
@@ -134,13 +134,13 @@ class ToolContext
                return tags.has("all") or tags.has(tag)
        end
 
                return tags.has("all") or tags.has(tag)
        end
 
-       # Output all current stacked messages and display total error informations
+       # Output all current stacked messages
        #
        # Return true if no errors occurred.
        #
        # If some errors occurred, the behavior depends on the value of `keep_going`.
        #
        # Return true if no errors occurred.
        #
        # If some errors occurred, the behavior depends on the value of `keep_going`.
-       # If `keep_going` is false, then the program exits.
-       # Else, the error count and the warning count are reset and false is returned.
+       # If `keep_going` is false, then the total error informations is displayed and the program exits.
+       # Else, false is returned.
        fun check_errors: Bool
        do
                if messages.length > 0 then
        fun check_errors: Bool
        do
                if messages.length > 0 then
@@ -158,21 +158,21 @@ class ToolContext
                end
 
                if error_count > 0 then
                end
 
                if error_count > 0 then
-                       errors_info
-                       if not keep_going then exit(1)
+                       if not keep_going then
+                               errors_info
+                               exit(1)
+                       end
                        return false
                end
                return true
        end
 
                        return false
                end
                return true
        end
 
-       # Display (and reset) total error informations
+       # Display total error informations
        fun errors_info
        do
                if error_count == 0 and warning_count == 0 then return
                if opt_no_color.value then return
                sys.stderr.write "Errors: {error_count}. Warnings: {warning_count}.\n"
        fun errors_info
        do
                if error_count == 0 and warning_count == 0 then return
                if opt_no_color.value then return
                sys.stderr.write "Errors: {error_count}. Warnings: {warning_count}.\n"
-               error_count = 0
-               warning_count = 0
        end
 
        # Display an error
        end
 
        # Display an error