]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/emacs-lisp/comp.el (comp-mvar-value-vld-p): Fix logic.
authorAndrea Corallo <akrl@sdf.org>
Thu, 12 Nov 2020 22:38:01 +0000 (23:38 +0100)
committerAndrea Corallo <akrl@sdf.org>
Thu, 12 Nov 2020 22:58:15 +0000 (23:58 +0100)
lisp/emacs-lisp/comp.el

index 583a3364dfaf312633b3d3c6dcf29dc15b9fa99b..217eec1b5682eeeca28a90f0628f7fc1f6b8b809 100644 (file)
@@ -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.