summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/comp.el12
1 files changed, 9 insertions, 3 deletions
diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el
index 498aae183a5..13f9beb5f96 100644
--- a/lisp/emacs-lisp/comp.el
+++ b/lisp/emacs-lisp/comp.el
@@ -550,12 +550,18 @@ CFG is mutated by a pass.")
(defun comp-mvar-symbol-p (mvar)
"Return t if MVAR is certainly a symbol."
- (or (equal (comp-mvar-typeset mvar) '(symbol))
- (cl-every #'symbolp (comp-mvar-valset mvar))))
+ (and (null (comp-mvar-range mvar))
+ (or (and (null (comp-mvar-valset mvar))
+ (equal (comp-mvar-typeset mvar) '(symbol)))
+ (and (or (null (comp-mvar-typeset mvar))
+ (equal (comp-mvar-typeset mvar) '(symbol)))
+ (cl-every #'symbolp (comp-mvar-valset mvar))))))
(defsubst comp-mvar-cons-p (mvar)
"Return t if MVAR is certainly a cons."
- (equal (comp-mvar-typeset mvar) '(cons)))
+ (and (null (comp-mvar-valset mvar))
+ (null (comp-mvar-range mvar))
+ (equal (comp-mvar-typeset mvar) '(cons))))
(defun comp-mvar-type-hint-match-p (mvar type-hint)
"Match MVAR against TYPE-HINT.