summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/comp-cstr.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/emacs-lisp/comp-cstr.el')
-rw-r--r--lisp/emacs-lisp/comp-cstr.el54
1 files changed, 27 insertions, 27 deletions
diff --git a/lisp/emacs-lisp/comp-cstr.el b/lisp/emacs-lisp/comp-cstr.el
index 52ed73ff5c3..67c72c8ce2b 100644
--- a/lisp/emacs-lisp/comp-cstr.el
+++ b/lisp/emacs-lisp/comp-cstr.el
@@ -89,10 +89,10 @@ Integer values are handled in the `range' slot.")
"Return all non built-in type names currently defined."
(let (res)
(mapatoms (lambda (x)
- (when-let ((class (cl-find-class x))
- ;; Ignore EIEIO classes as they can be
- ;; redefined at runtime.
- (gate (not (eq 'eieio--class (type-of class)))))
+ (when-let* ((class (cl-find-class x))
+ ;; Ignore EIEIO classes as they can be
+ ;; redefined at runtime.
+ (gate (not (eq 'eieio--class (type-of class)))))
(push x res)))
obarray)
res))
@@ -216,7 +216,7 @@ Return them as multiple value."
collect cstr into positives
finally return (cl-values positives negatives)))
-;; So we can load comp-cstr.el and comp.el in non native compiled
+;; So we can load comp-cstr.el and comp.el in non natively compiled
;; builds.
(defvar comp-ctxt nil)
@@ -448,12 +448,12 @@ Return them as multiple value."
do
(when (zerop nest)
(setf low i))
- (cl-incf nest)
+ (incf nest)
else
do
(when (= nest 1)
(push `(,(comp-range-1+ low) . ,i) res))
- (cl-decf nest)
+ (decf nest)
finally return (reverse res)))
(defun comp--range-intersection (&rest ranges)
@@ -477,7 +477,7 @@ Return them as multiple value."
(cl-return '()))
if (eq x 'l)
do
- (cl-incf nest)
+ (incf nest)
(when (= nest n-ranges)
(setf low i))
else
@@ -485,7 +485,7 @@ Return them as multiple value."
(when (= nest n-ranges)
(push `(,low . ,i)
res))
- (cl-decf nest)
+ (decf nest)
finally return (reverse res)))
(defun comp--range-negation (range)
@@ -528,8 +528,8 @@ Return them as multiple value."
`(with-comp-cstr-accessors
(if (or (neg src1) (neg src2))
(setf (typeset ,dst) '(number))
- (when-let ((r1 (range ,src1))
- (r2 (range ,src2)))
+ (when-let* ((r1 (range ,src1))
+ (r2 (range ,src2)))
(let* ((l1 (comp-cstr-smallest-in-range r1))
(l2 (comp-cstr-smallest-in-range r2))
(h1 (comp-cstr-greatest-in-range r1))
@@ -620,7 +620,7 @@ DST is returned."
;; Check first if we are in the simple case of all input non-negate
;; or negated so we don't have to cons.
- (when-let ((res (comp--cstrs-homogeneous srcs)))
+ (when-let* ((res (comp--cstrs-homogeneous srcs)))
(apply #'comp--cstr-union-homogeneous range dst srcs)
(cl-return-from comp--cstr-union-1-no-mem dst))
@@ -805,7 +805,7 @@ Non memoized version of `comp-cstr-intersection-no-mem'."
(range dst) ()
(neg dst) nil)
(cl-return-from comp-cstr-intersection-no-mem dst)))
- (when-let ((res (comp--cstrs-homogeneous srcs)))
+ (when-let* ((res (comp--cstrs-homogeneous srcs)))
(if (eq res 'neg)
(apply #'comp--cstr-union-homogeneous t dst srcs)
(apply #'comp-cstr-intersection-homogeneous dst srcs))
@@ -917,7 +917,7 @@ Non memoized version of `comp-cstr-intersection-no-mem'."
(when (and (null (neg cstr))
(null (valset cstr))
(null (typeset cstr)))
- (when-let (range (range cstr))
+ (when-let* ((range (range cstr)))
(let* ((low (caar range))
(high (cdar (last range))))
(unless (or (eq low '-)
@@ -926,15 +926,6 @@ Non memoized version of `comp-cstr-intersection-no-mem'."
(> high most-positive-fixnum))
t))))))
-(defun comp-cstr-symbol-p (cstr)
- "Return t if CSTR is certainly a symbol."
- (with-comp-cstr-accessors
- (and (null (range cstr))
- (null (neg cstr))
- (and (or (null (typeset cstr))
- (equal (typeset cstr) '(symbol)))
- (cl-every #'symbolp (valset cstr))))))
-
(defsubst comp-cstr-cons-p (cstr)
"Return t if CSTR is certainly a cons."
(with-comp-cstr-accessors
@@ -945,6 +936,8 @@ Non memoized version of `comp-cstr-intersection-no-mem'."
(defun comp-cstr-type-p (cstr type)
"Return t if CSTR is certainly of type TYPE."
+ ;; Only basic types are valid input.
+ (cl-assert (symbolp type))
(when
(with-comp-cstr-accessors
(cl-case type
@@ -956,15 +949,22 @@ Non memoized version of `comp-cstr-intersection-no-mem'."
(or (null (typeset cstr))
(equal (typeset cstr) '(integer)))))))
(t
- (if-let ((pred (get type 'cl-deftype-satisfies)))
+ (if-let* ((pred (get type 'cl-deftype-satisfies)))
(and (null (range cstr))
(null (neg cstr))
- (and (or (null (typeset cstr))
- (equal (typeset cstr) `(,type)))
- (cl-every pred (valset cstr))))
+ (if (null (typeset cstr))
+ (and (valset cstr)
+ (cl-every pred (valset cstr)))
+ (when (equal (typeset cstr) `(,type))
+ ;; (valset cstr) can be nil as well.
+ (cl-every pred (valset cstr)))))
(error "Unknown predicate for type %s" type)))))
t))
+(defun comp-cstr-symbol-p (cstr)
+ "Return t if CSTR is certainly a symbol."
+ (comp-cstr-type-p cstr 'symbol))
+
;; Move to comp.el?
(defsubst comp-cstr-cl-tag-p (cstr)
"Return non-nil if CSTR is a CL tag."