]> granicus.if.org Git - re2c/commitdiff
Don't use '-Werror-nondeterministic-tags' with '-T, --tags'.
authorUlya Trofimovich <skvadrik@gmail.com>
Wed, 11 May 2016 15:49:59 +0000 (16:49 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Wed, 11 May 2016 15:49:59 +0000 (16:49 +0100)
If tags are explicitly enabled, re2c should always fail with error
on nondeterministic tags. There's no good in '-Werror-nondeterministic-tags'
diagnostic --- the user cannot reset it anyway.

This commit fixes unsuccessful attempt 2bfe75d57c71c7102dd6e7b4e5f7139411c7c080
"Restore user warnings after temporarily enforcing a warning.", which
resulted in hiding tag errors if '-Wnondeterministic-tags' is not set.

re2c/src/conf/warn.cc
re2c/test/tags/nondet_alt1.--tags.c
re2c/test/tags/nondet_alt2.--tags.c
re2c/test/tags/nondet_cat1.--tags.c
re2c/test/tags/nondet_cat2.c
re2c/test/tags/nondet_cat4.--tags.c
re2c/test/tags/nondet_iter.--tags.c

index 0599d1672b8f88b19824e9aec99ac60693940de6..5810f129a82a503c7cddd02a6cc8ee4a9f93ae03 100644 (file)
@@ -124,18 +124,18 @@ void Warn::nondeterministic_tags(
        const std::string &cond,
        const std::string *tagname)
 {
-       if (mask[NONDETERMINISTIC_TAGS] & WARNING)
-       {
-               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;
+       if (opts->tags) {
+               error_accuml = true;
+               if (tagname == NULL) {
+                       re2c::error("line %u: trailing context %sis nondeterministic",
+                               line, incond(cond).c_str());
+               } else {
+                       re2c::error("line %u: tag '%s' %sis nondeterministic",
+                               line, tagname->c_str(), incond(cond).c_str());
                }
-
+       } else if (mask[NONDETERMINISTIC_TAGS] & WARNING) {
+               bool e = mask[NONDETERMINISTIC_TAGS] & ERROR;
                error_accuml |= e;
-
                if (tagname == NULL) {
                        warning(names[NONDETERMINISTIC_TAGS], line, e,
                                "trailing context %sis nondeterministic",
index 47a58ddd130898f222e2dcdab17ff203d32337c6..fc1e74c7518c7c4a9cac062cc319ded34d6259ee 100644 (file)
@@ -1 +1 @@
-re2c: error: line 2: tag 'p' is nondeterministic [-Werror-nondeterministic-tags]
+re2c: error: line 2: tag 'p' is nondeterministic
index 47a58ddd130898f222e2dcdab17ff203d32337c6..fc1e74c7518c7c4a9cac062cc319ded34d6259ee 100644 (file)
@@ -1 +1 @@
-re2c: error: line 2: tag 'p' is nondeterministic [-Werror-nondeterministic-tags]
+re2c: error: line 2: tag 'p' is nondeterministic
index 47a58ddd130898f222e2dcdab17ff203d32337c6..fc1e74c7518c7c4a9cac062cc319ded34d6259ee 100644 (file)
@@ -1 +1 @@
-re2c: error: line 2: tag 'p' is nondeterministic [-Werror-nondeterministic-tags]
+re2c: error: line 2: tag 'p' is nondeterministic
index d9137ba0e1a540992bdd2c152341b8137df1a426..05c883802b6d04d055efa9fc1404733437d68188 100644 (file)
@@ -1,2 +1,2 @@
-re2c: error: line 7: trailing context is nondeterministic [-Werror-nondeterministic-tags]
+re2c: error: line 7: trailing context is nondeterministic
 re2c: warning: line 13: trailing context is nondeterministic [-Wnondeterministic-tags]
index 3da022eb456c02f0d77a88382c722323992d9469..d2fc84aa4a560051a7e481ea27c54c2ee60198da 100644 (file)
@@ -1 +1 @@
-re2c: error: line 4: tag 'p' is nondeterministic [-Werror-nondeterministic-tags]
+re2c: error: line 4: tag 'p' is nondeterministic
index 759a4fc68c97044b547b8286a494dc7024ffd948..661c10de9f7b76425a4128f40710120b94392f7d 100644 (file)
@@ -1,7 +1,7 @@
-re2c: error: line 5: tag 'b' is nondeterministic [-Werror-nondeterministic-tags]
-re2c: error: line 6: tag 'e' is nondeterministic [-Werror-nondeterministic-tags]
-re2c: error: line 8: tag 'c' is nondeterministic [-Werror-nondeterministic-tags]
-re2c: error: line 9: tag 'f' is nondeterministic [-Werror-nondeterministic-tags]
+re2c: error: line 5: tag 'b' is nondeterministic
+re2c: error: line 6: tag 'e' is nondeterministic
+re2c: error: line 8: tag 'c' is nondeterministic
+re2c: error: line 9: tag 'f' is nondeterministic
 re2c: warning: line 2: rule matches empty string [-Wmatch-empty-string]
 re2c: warning: line 3: rule matches empty string [-Wmatch-empty-string]
 re2c: warning: line 5: rule matches empty string [-Wmatch-empty-string]