]> git.eshelyaron.com Git - emacs.git/commitdiff
Merge from origin/emacs-26
authorGlenn Morris <rgm@gnu.org>
Fri, 15 Feb 2019 21:25:30 +0000 (13:25 -0800)
committerGlenn Morris <rgm@gnu.org>
Fri, 15 Feb 2019 21:25:30 +0000 (13:25 -0800)
3f4b8e9 * src/data.c (Fmake_local_variable): Fix bug#34318
b384996 Minor fixes in ELisp manual wrt syntax-table properties
71fc6d2 * admin/notes/emba: New file.
3aaa2d2 Fix Hunspell invocation for discovering its dictionaries

# Conflicts:
# test/src/data-tests.el

1  2 
doc/lispref/syntax.texi
lisp/textmodes/ispell.el
src/data.c
test/src/data-tests.el

Simple merge
Simple merge
diff --cc src/data.c
Simple merge
index bc77a7be94ead84b4dcb0887256055e766fe6b55,f3b4262de4bc3aa54c6ae353f2b34676aad89650..a9d48e29a8ab8c9f18784ff4a1a13736b7a1c106
@@@ -525,148 -508,22 +525,166 @@@ comparing the subr with a much slower l
                         (bound-and-true-p data-tests-foo2)
                         (bound-and-true-p data-tests-foo3)))))))
  
 +(ert-deftest data-tests-bignum ()
 +  (should (bignump (+ most-positive-fixnum 1)))
 +  (let ((f0 (+ (float most-positive-fixnum) 1))
 +        (f-1 (- (float most-negative-fixnum) 1))
 +        (b0 (+ most-positive-fixnum 1))
 +        (b-1 (- most-negative-fixnum 1)))
 +    (should (> b0 -1))
 +    (should (> b0 f-1))
 +    (should (> b0 b-1))
 +    (should (>= b0 -1))
 +    (should (>= b0 f-1))
 +    (should (>= b0 b-1))
 +    (should (>= b-1 b-1))
 +
 +    (should (< -1 b0))
 +    (should (< f-1 b0))
 +    (should (< b-1 b0))
 +    (should (<= -1 b0))
 +    (should (<= f-1 b0))
 +    (should (<= b-1 b0))
 +    (should (<= b-1 b-1))
 +
 +    (should (= (+ f0 b0) (+ b0 f0)))
 +    (should (= (+ f0 b-1) (+ b-1 f0)))
 +    (should (= (+ f-1 b0) (+ b0 f-1)))
 +    (should (= (+ f-1 b-1) (+ b-1 f-1)))
 +
 +    (should (= (* f0 b0) (* b0 f0)))
 +    (should (= (* f0 b-1) (* b-1 f0)))
 +    (should (= (* f-1 b0) (* b0 f-1)))
 +    (should (= (* f-1 b-1) (* b-1 f-1)))
 +
 +    (should (= b0 f0))
 +    (should (= b0 b0))
 +
 +    (should (/= b0 f-1))
 +    (should (/= b0 b-1))
 +
 +    (should (/= b0 0.0e+NaN))
 +    (should (/= b-1 0.0e+NaN))))
 +
 +(ert-deftest data-tests-+ ()
 +  (should-not (fixnump (+ most-positive-fixnum most-positive-fixnum)))
 +  (should (> (+ most-positive-fixnum most-positive-fixnum) most-positive-fixnum))
 +  (should (eq (- (+ most-positive-fixnum most-positive-fixnum)
 +                 (+ most-positive-fixnum most-positive-fixnum))
 +              0)))
 +
 +(ert-deftest data-tests-/ ()
 +  (let* ((x (* most-positive-fixnum 8))
 +         (y (* most-negative-fixnum 8))
 +         (z (- y)))
 +    (should (= most-positive-fixnum (/ x 8)))
 +    (should (= most-negative-fixnum (/ y 8)))
 +    (should (= -1 (/ y z)))
 +    (should (= -1 (/ z y)))
 +    (should (= 0 (/ x (* 2 x))))
 +    (should (= 0 (/ y (* 2 y))))
 +    (should (= 0 (/ z (* 2 z))))))
 +
 +(ert-deftest data-tests-number-predicates ()
 +  (should (fixnump 0))
 +  (should (fixnump most-negative-fixnum))
 +  (should (fixnump most-positive-fixnum))
 +  (should (integerp (+ most-positive-fixnum 1)))
 +  (should (integer-or-marker-p (+ most-positive-fixnum 1)))
 +  (should (numberp (+ most-positive-fixnum 1)))
 +  (should (number-or-marker-p (+ most-positive-fixnum 1)))
 +  (should (natnump (+ most-positive-fixnum 1)))
 +  (should-not (fixnump (+ most-positive-fixnum 1)))
 +  (should (bignump (+ most-positive-fixnum 1))))
 +
 +(ert-deftest data-tests-number-to-string ()
 +  (let* ((s "99999999999999999999999999999")
 +         (v (read s)))
 +    (should (equal (number-to-string v) s))))
 +
 +(ert-deftest data-tests-1+ ()
 +  (should (> (1+ most-positive-fixnum) most-positive-fixnum))
 +  (should (fixnump (1+ (1- most-negative-fixnum)))))
 +
 +(ert-deftest data-tests-1- ()
 +  (should (< (1- most-negative-fixnum) most-negative-fixnum))
 +  (should (fixnump (1- (1+ most-positive-fixnum)))))
 +
 +(ert-deftest data-tests-logand ()
 +  (should (= -1 (logand) (logand -1) (logand -1 -1)))
 +  (let ((n (1+ most-positive-fixnum)))
 +    (should (= (logand -1 n) n)))
 +  (let ((n (* 2 most-negative-fixnum)))
 +    (should (= (logand -1 n) n))))
 +
 +(ert-deftest data-tests-logcount ()
 +  (should (= (logcount (read "#xffffffffffffffffffffffffffffffff")) 128)))
 +
 +(ert-deftest data-tests-logior ()
 +  (should (= -1 (logior -1) (logior -1 -1)))
 +  (should (= -1 (logior most-positive-fixnum most-negative-fixnum))))
 +
 +(ert-deftest data-tests-logxor ()
 +  (should (= -1 (logxor -1) (logxor -1 -1 -1)))
 +  (let ((n (1+ most-positive-fixnum)))
 +    (should (= (logxor -1 n) (lognot n)))))
 +
 +(ert-deftest data-tests-minmax ()
 +  (let ((a (- most-negative-fixnum 1))
 +        (b (+ most-positive-fixnum 1))
 +        (c 0))
 +    (should (= (min a b c) a))
 +    (should (= (max a b c) b))))
 +
 +(defun data-tests-check-sign (x y)
 +  (should (eq (cl-signum x) (cl-signum y))))
 +
 +(ert-deftest data-tests-%-mod ()
 +  (let* ((b1 (+ most-positive-fixnum 1))
 +         (nb1 (- b1))
 +         (b3 (+ most-positive-fixnum 3))
 +         (nb3 (- b3)))
 +    (data-tests-check-sign (% 1 3) (% b1 b3))
 +    (data-tests-check-sign (mod 1 3) (mod b1 b3))
 +    (data-tests-check-sign (% 1 -3) (% b1 nb3))
 +    (data-tests-check-sign (mod 1 -3) (mod b1 nb3))
 +    (data-tests-check-sign (% -1 3) (% nb1 b3))
 +    (data-tests-check-sign (mod -1 3) (mod nb1 b3))
 +    (data-tests-check-sign (% -1 -3) (% nb1 nb3))
 +    (data-tests-check-sign (mod -1 -3) (mod nb1 nb3))))
 +
 +(ert-deftest data-tests-ash-lsh ()
 +  (should (= (ash most-negative-fixnum 1)
 +             (* most-negative-fixnum 2)))
 +  (should (= (ash 0 (* 2 most-positive-fixnum)) 0))
 +  (should (= (ash 1000 (* 2 most-negative-fixnum)) 0))
 +  (should (= (ash -1000 (* 2 most-negative-fixnum)) -1))
 +  (should (= (ash (* 2 most-negative-fixnum) (* 2 most-negative-fixnum)) -1))
 +  (should (= (lsh most-negative-fixnum 1)
 +             (* most-negative-fixnum 2)))
 +  (should (= (ash (* 2 most-negative-fixnum) -1)
 +           most-negative-fixnum))
 +  (should (= (lsh most-positive-fixnum -1) (/ most-positive-fixnum 2)))
 +  (should (= (lsh most-negative-fixnum -1) (lsh (- most-negative-fixnum) -1)))
 +  (should (= (lsh -1 -1) most-positive-fixnum))
 +  (should-error (lsh (1- most-negative-fixnum) -1)))
 +
+ (ert-deftest data-tests-make-local-forwarded-var () ;bug#34318
+   ;; Boy, this bug is tricky to trigger.  You need to:
+   ;; - call make-local-variable on a forwarded var (i.e. one that
+   ;;   has a corresponding C var linked via DEFVAR_(LISP|INT|BOOL))
+   ;; - cause the C code to modify this variable from the C side of the
+   ;;   forwarding, but this needs to happen before the var is accessed
+   ;;   from the Lisp side and before we switch to another buffer.
+   ;; The trigger in bug#34318 doesn't exist any more because the C code has
+   ;; changes.  Instead I found the trigger below.
+   (with-temp-buffer
+     (setq last-coding-system-used 'bug34318)
+     (make-local-variable 'last-coding-system-used)
+     ;; This should set last-coding-system-used to `no-conversion'.
+     (decode-coding-string "hello" nil)
+     (should (equal (list last-coding-system-used
+                          (default-value 'last-coding-system-used))
+                    '(no-conversion bug34318)))))
  ;;; data-tests.el ends here