summaryrefslogtreecommitdiff
path: root/lisp/cedet/semantic/wisent/comp.el
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2019-06-18 16:05:08 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2019-06-18 16:05:08 +0200
commitf21ec24524c705e18674a2e9e4db37b11fa3ebab (patch)
tree4d3f1ad27a88122e2e2a965dfd05edcdbb2e8a55 /lisp/cedet/semantic/wisent/comp.el
parent90b44f336caf7d70721f44ac2497a38ff69d6c7d (diff)
downloademacs-f21ec24524c705e18674a2e9e4db37b11fa3ebab.tar.gz
Add a mechanism to specify expected shift/reduce .wy conflicts
* admin/grammars/python.wy: Set the expected number of shift/reduce conflicts to four. * lisp/cedet/semantic/grammar.el (semantic-grammar-expected-conflicts): New function. * lisp/cedet/semantic/wisent/comp.el (wisent-total-conflicts): Use it to suppress warnings about the expected number of shift/reduce conflicts.
Diffstat (limited to 'lisp/cedet/semantic/wisent/comp.el')
-rw-r--r--lisp/cedet/semantic/wisent/comp.el18
1 files changed, 11 insertions, 7 deletions
diff --git a/lisp/cedet/semantic/wisent/comp.el b/lisp/cedet/semantic/wisent/comp.el
index 051b898ed78..ff434f555da 100644
--- a/lisp/cedet/semantic/wisent/comp.el
+++ b/lisp/cedet/semantic/wisent/comp.el
@@ -2264,24 +2264,28 @@ there are any reduce/reduce conflicts."
:group 'wisent
:type '(choice (const nil) integer))
+(declare-function semantic-grammar-expected-conflicts "semantic/grammar")
+
(defun wisent-total-conflicts ()
"Report the total number of conflicts."
+ (require 'semantic/grammar)
(unless (and (zerop rrc-total)
(or (zerop src-total)
(= src-total (or wisent-expected-conflicts 0))))
(let* ((src (wisent-source))
(src (if src (concat " in " src) ""))
(msg (format "Grammar%s contains" src)))
- (if (> src-total 0)
- (setq msg (format "%s %d shift/reduce conflict%s"
- msg src-total (if (> src-total 1)
- "s" ""))))
+ (when (and (> src-total 0)
+ (not (= rrc-total (semantic-grammar-expected-conflicts))))
+ (setq msg (format "%s %d shift/reduce conflict%s"
+ msg src-total (if (> src-total 1)
+ "s" ""))))
(if (and (> src-total 0) (> rrc-total 0))
(setq msg (format "%s and" msg)))
(if (> rrc-total 0)
- (setq msg (format "%s %d reduce/reduce conflict%s"
- msg rrc-total (if (> rrc-total 1)
- "s" ""))))
+ (setq msg (format "%s %d reduce/reduce conflict%s"
+ msg rrc-total (if (> rrc-total 1)
+ "s" ""))))
(message msg))))
(defun wisent-print-conflicts ()