summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorAndrea Corallo <akrl@sdf.org>2020-11-12 23:38:01 +0100
committerAndrea Corallo <akrl@sdf.org>2020-11-12 23:58:15 +0100
commitc412d396b0e714c604b3386369b64f0c7e762fe8 (patch)
tree2c1f2c0d52e45d2216a2ea0f4057c42f24e4886d /lisp/emacs-lisp
parenta37cc95e21675e4f8865a9c20c8acfc158a9827a (diff)
downloademacs-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')
-rw-r--r--lisp/emacs-lisp/comp.el24
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.