]> granicus.if.org Git - re2c/commitdiff
Improved warning messages with '-Werror'.
authorUlya Trofimovich <skvadrik@gmail.com>
Mon, 27 Jul 2015 20:29:03 +0000 (21:29 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Mon, 27 Jul 2015 20:29:03 +0000 (21:29 +0100)
Report an error rather than a warning (at least GCC does so).

re2c/src/conf/msg.cc
re2c/src/conf/msg.h
re2c/src/conf/warn.cc

index b8a20c69b24c1f4cfbf8004323d3fa734a8691cf..a69ac45944c79f8234abea5491b38a65dfbbd21f 100644 (file)
@@ -24,16 +24,18 @@ void error_encoding ()
        error ("only one of switches -e, -w, -x, -u and -8 must be set");
 }
 
-void warning (const char * type, uint32_t line, const char * fmt, ...)
+void warning (const char * type, uint32_t line, bool error, const char * fmt, ...)
 {
-       fprintf (stderr, "re2c: warning: line %u: ", line);
+       static const char * msg = error ? "error" : "warning";
+       fprintf (stderr, "re2c: %s: line %u: ", msg, line);
 
        va_list args;
        va_start (args, fmt);
        vfprintf (stderr, fmt, args);
        va_end (args);
 
-       fprintf (stderr, " [-W%s]\n", type);
+       const char * prefix = error ? "error-" : "";
+       fprintf (stderr, " [-W%s%s]\n", prefix, type);
 }
 
 void usage ()
index c3eed6087238cfd7a6173cc4adffeca542294ff5..1034131fa5bee972752c84b6d88fdecb9ecdf1e2 100644 (file)
@@ -8,7 +8,7 @@ namespace re2c {
 
 void error (const char * fmt, ...) RE2C_GXX_ATTRIBUTE ((format (printf, 1, 2)));
 void error_encoding ();
-void warning (const char * type, uint32_t line, const char * fmt, ...) RE2C_GXX_ATTRIBUTE ((format (printf, 3, 4)));
+void warning (const char * type, uint32_t line, bool error, const char * fmt, ...) RE2C_GXX_ATTRIBUTE ((format (printf, 4, 5)));
 void usage ();
 void vernum ();
 void version ();
index 54b3cce25340f5162ad87dfa109091cb41f28cdc..f06263be506c8a78fa926c25d785c19efb092d4b 100644 (file)
@@ -66,11 +66,9 @@ void Warn::empty_class (uint32_t line)
 {
        if (mask[EMPTY_CHARACTER_CLASS] & WARNING)
        {
-               if (mask[EMPTY_CHARACTER_CLASS] & ERROR)
-               {
-                       error_accuml = true;
-               }
-               warning (names[EMPTY_CHARACTER_CLASS], line, "empty character class");
+               const bool e = mask[EMPTY_CHARACTER_CLASS] & ERROR;
+               error_accuml |= e;
+               warning (names[EMPTY_CHARACTER_CLASS], line, e, "empty character class");
        }
 }
 
@@ -78,11 +76,9 @@ void Warn::match_empty_string (uint32_t line)
 {
        if (mask[MATCH_EMPTY_STRING] & WARNING)
        {
-               if (mask[MATCH_EMPTY_STRING] & ERROR)
-               {
-                       error_accuml = true;
-               }
-               warning (names[MATCH_EMPTY_STRING], line, "rule matches empty string");
+               const bool e = mask[MATCH_EMPTY_STRING] & ERROR;
+               error_accuml |= e;
+               warning (names[MATCH_EMPTY_STRING], line, e, "rule matches empty string");
        }
 }
 
@@ -90,10 +86,8 @@ void Warn::naked_default (uint32_t line, const std::vector<std::pair<uint32_t, u
 {
        if (mask[NAKED_DEFAULT] & WARNING)
        {
-               if (mask[NAKED_DEFAULT] & ERROR)
-               {
-                       error_accuml = true;
-               }
+               const bool e = mask[NAKED_DEFAULT] & ERROR;
+               error_accuml |= e;
                std::ostringstream cunits;
                for (uint32_t i = 0; i < stray_cunits.size (); ++i)
                {
@@ -105,6 +99,7 @@ void Warn::naked_default (uint32_t line, const std::vector<std::pair<uint32_t, u
                warning
                        ( names[NAKED_DEFAULT]
                        , line
+                       , e
                        , "naked default case%s%s (stray code units: %s), better add default rule *"
                        , cond_prefix
                        , cond.c_str ()