]> granicus.if.org Git - re2c/commitdiff
Restore user warnings after temporarily enforcing a warning.
authorUlya Trofimovich <skvadrik@gmail.com>
Wed, 11 May 2016 12:17:20 +0000 (13:17 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Wed, 11 May 2016 12:17:20 +0000 (13:17 +0100)
This is a temporary (and quite inconvenient) hack; in fact,
warnings should be handled in the same way as options (via
user config / real config that are synced on each read access
just in case user config has been changed).

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

index ec13c0ac7c7f5d8d8a4d6d77c93e7f897a726e09..c9cbd4e554010abb38919c48afbb66ea80a8e263 100644 (file)
@@ -31,7 +31,7 @@ void error_arg (const char * option)
 
 void warning_start (uint32_t line, bool error)
 {
-       static const char * msg = error ? "error" : "warning";
+       const char * msg = error ? "error" : "warning";
        fprintf (stderr, "re2c: %s: line %u: ", msg, line);
 }
 
index ed8e6246ad1c99b6d1dc5674ab7f73d45d89c2fd..42596ea15bdda0e4e61891c915d9c0fe4288a12d 100644 (file)
@@ -226,9 +226,6 @@ void opt_t::fix ()
                default:
                        break;
        }
-       if (tags) {
-               warn.set(Warn::NONDETERMINISTIC_TAGS, Warn::WERROR);
-       }
        if (bFlag)
        {
                sFlag = true;
index 484a3850535747649378b0372906c87f54a6d981..0599d1672b8f88b19824e9aec99ac60693940de6 100644 (file)
@@ -7,6 +7,7 @@
 #include "src/conf/warn.h"
 #include "src/ir/skeleton/path.h"
 #include "src/ir/skeleton/skeleton.h"
+#include "src/globals.h"
 
 namespace re2c {
 
@@ -125,7 +126,14 @@ void Warn::nondeterministic_tags(
 {
        if (mask[NONDETERMINISTIC_TAGS] & WARNING)
        {
-               const bool e = mask[NONDETERMINISTIC_TAGS] & ERROR;
+               bool e = mask[NONDETERMINISTIC_TAGS] & ERROR;
+
+               // a very bad hack to temporarily turn on -Werror
+               // TODO: userwarn/realwarn (like useropt/realopt)
+               if (opts->tags) {
+                       e = true;
+               }
+
                error_accuml |= e;
 
                if (tagname == NULL) {