diff options
Diffstat (limited to 'lisp/emacs-lisp/comp.el')
-rw-r--r-- | lisp/emacs-lisp/comp.el | 12 |
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. |