From 672988e961744750d3ea40904807355336116c3f Mon Sep 17 00:00:00 2001 From: Andrea Corallo Date: Tue, 22 Dec 2020 20:39:24 +0100 Subject: [PATCH] Symplify (not t) => nil and (not nil) => t * lisp/emacs-lisp/comp-cstr.el (comp-cstr-negation): Symplify (not t) => nil and (not nil) => t. * test/lisp/emacs-lisp/comp-cstr-tests.el (comp-cstr-typespec-tests-alist): Add two tests. --- lisp/emacs-lisp/comp-cstr.el | 25 +++++++++++++++++++++---- test/lisp/emacs-lisp/comp-cstr-tests.el | 6 +++++- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/lisp/emacs-lisp/comp-cstr.el b/lisp/emacs-lisp/comp-cstr.el index 8b5639c8a4d..19905950b5a 100644 --- a/lisp/emacs-lisp/comp-cstr.el +++ b/lisp/emacs-lisp/comp-cstr.el @@ -695,10 +695,27 @@ DST is returned." "Negate SRC setting the result in DST. DST is returned." (with-comp-cstr-accessors - (setf (typeset dst) (typeset src) - (valset dst) (valset src) - (range dst) (range src) - (neg dst) (not (neg src))) + (cond + ((and (null (valset src)) + (null (range src)) + (null (neg src)) + (equal (typeset src) '(t))) + (setf (typeset dst) () + (valset dst) () + (range dst) nil + (neg dst) nil)) + ((and (null (valset src)) + (null (range src)) + (null (neg src)) + (null (typeset src))) + (setf (typeset dst) '(t) + (valset dst) () + (range dst) nil + (neg dst) nil)) + (t (setf (typeset dst) (typeset src) + (valset dst) (valset src) + (range dst) (range src) + (neg dst) (not (neg src))))) dst)) (defun comp-cstr-value-negation (dst src) diff --git a/test/lisp/emacs-lisp/comp-cstr-tests.el b/test/lisp/emacs-lisp/comp-cstr-tests.el index 834f4401d9f..1e1376b363b 100644 --- a/test/lisp/emacs-lisp/comp-cstr-tests.el +++ b/test/lisp/emacs-lisp/comp-cstr-tests.el @@ -203,7 +203,11 @@ ;; 81 ((and t (not t)) . nil) ;; 82 - ((or (integer 1 1) (not (integer 1 1))) . t)) + ((or (integer 1 1) (not (integer 1 1))) . t) + ;; 83 + ((not t) . nil) + ;; 84 + ((not nil) . t)) "Alist type specifier -> expected type specifier.")) (defmacro comp-cstr-synthesize-tests () -- 2.39.5