nitcc: improve error messages
authorJean Privat <jean@pryen.org>
Fri, 18 Oct 2013 01:31:09 +0000 (21:31 -0400)
committerJean Privat <jean@pryen.org>
Fri, 18 Oct 2013 01:31:09 +0000 (21:31 -0400)
Signed-off-by: Jean Privat <jean@pryen.org>

contrib/nitcc/src/nitcc.nit
contrib/nitcc/src/nitcc_semantic.nit
contrib/nitcc/tests/sav/lexer-c-comment.res
contrib/nitcc/tests/sav/lexer-errors.alt1.res
contrib/nitcc/tests/sav/lexer-errors.alt5.res
contrib/nitcc/tests/sav/lexer-errors.alt8.res
contrib/nitcc/tests/sav/lexer-errors.res
contrib/nitcc/tests/sav/lexer-precedences.alt4.res
contrib/nitcc/tests/sav/lexer-precedences.res
contrib/nitcc/tests/sav/lexer_conflict_token.res
contrib/nitcc/tests/sav/lexer_empty_token.res

index 3d172ef..bc2e8b3 100644 (file)
@@ -114,12 +114,14 @@ nfa.to_dot("{name}.nfa.dot")
 
 var dfa = nfa.to_dfa
 if dfa.tags.has_key(dfa.start) then
-       print "ERROR: Empty tokens {dfa.tags[dfa.start].join(" ")}"
+       print "Error: Empty tokens {dfa.tags[dfa.start].join(" ")}"
+       exit(1)
 end
 dfa.solve_token_inclusion
 for s, tks in dfa.tags do
        if tks.length <= 1 then continue
-       print "ERROR: Conflicting tokens: {tks.join(" ")}"
+       print "Error: Conflicting tokens: {tks.join(" ")}"
+       exit(1)
 end
 print "DFA automaton: {dfa.states.length} states (see {name}.dfa.dot)"
 dfa.to_dot("{name}.dfa.dot")
index 8713da0..39546d8 100644 (file)
@@ -213,13 +213,13 @@ redef class Nre_id
                var id = children.first.as(Nid)
                var name = id.text
                if not v.v1.names.has_key(name) then
-                       print "Error: unknown name {name}"
+                       print "{id.position} Error: unknown name {name}"
                        exit(1)
                        abort
                end
                var node = v.v1.names[name]
                if node isa Nprod then
-                       print "Error: cannot use production {name} in a regular expression"
+                       print "{id.position} Error: cannot use production {name} in a regular expression"
                        exit(1)
                        abort
                else if not node isa Nexpr then
@@ -243,14 +243,14 @@ redef class Nign
                var id = children[1].as(Nid)
                var name = id.text
                if not v.v1.names.has_key(name) then
-                       print "Error: unknown name {name}"
+                       print "{id.position} Error: unknown name {name}"
                        exit(1)
                        abort
                end
                var node = v.v1.names[name]
                var elem: nullable Element
                if node isa Nprod then
-                       print "Error cannot ignore a production"
+                       print "{id.position} Error: cannot ignore a production"
                        exit(1)
                        abort
                else if node isa Nexpr then
@@ -412,7 +412,7 @@ redef class Nelem_id
                var id = children.first.as(Nid)
                var name = id.text
                if not v.v1.names.has_key(name) then
-                       print "Error: unknown name {name}"
+                       print "{id.position} Error: unknown name {name}"
                        exit(1)
                        abort
                end
index f66dc98..6518794 100644 (file)
@@ -1 +1 @@
-ERROR: Conflicting tokens: com1 com2
+Error: Conflicting tokens: com1 com2
index 866a8f6..85df7b1 100644 (file)
@@ -1 +1 @@
-Error: unknown name a
+15:5-15:6 Error: unknown name a