diff options
author | Andrea Corallo <akrl@sdf.org> | 2020-11-12 23:38:01 +0100 |
---|---|---|
committer | Andrea Corallo <akrl@sdf.org> | 2020-11-12 23:58:15 +0100 |
commit | c412d396b0e714c604b3386369b64f0c7e762fe8 (patch) | |
tree | 2c1f2c0d52e45d2216a2ea0f4057c42f24e4886d /lisp/emacs-lisp/comp.el | |
parent | a37cc95e21675e4f8865a9c20c8acfc158a9827a (diff) | |
download | emacs-c412d396b0e714c604b3386369b64f0c7e762fe8.tar.gz emacs-c412d396b0e714c604b3386369b64f0c7e762fe8.tar.bz2 emacs-c412d396b0e714c604b3386369b64f0c7e762fe8.zip |
* lisp/emacs-lisp/comp.el (comp-mvar-value-vld-p): Fix logic.
Diffstat (limited to 'lisp/emacs-lisp/comp.el')
-rw-r--r-- | lisp/emacs-lisp/comp.el | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index 583a3364dfa..217eec1b568 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -456,15 +456,21 @@ Interg values are handled in the `range' slot.") (defun comp-mvar-value-vld-p (mvar) "Return t if one single value can be extracted by the MVAR constrains." - (or (= (length (comp-mvar-valset mvar)) 1) - (let ((r (comp-mvar-range mvar))) - (and (= (length r) 1) - (let ((low (caar r)) - (high (cdar r))) - (and - (integerp low) - (integerp high) - (= low high))))))) + (when (null (comp-mvar-typeset mvar)) + (let* ((v (comp-mvar-valset mvar)) + (r (comp-mvar-range mvar)) + (valset-len (length v)) + (range-len (length r))) + (if (and (= valset-len 1) + (= range-len 0)) + t + (when (and (= valset-len 0) + (= range-len 1)) + (let* ((low (caar r)) + (high (cdar r))) + (and (integerp low) + (integerp high) + (= low high)))))))) (defun comp-mvar-value (mvar) "Return the constant value of MVAR. |