1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-23 06:00:41 -08:00

Merge remote-tracking branch 'savannah/master' into native-comp

This commit is contained in:
Andrea Corallo 2021-01-24 21:05:33 +01:00
commit b8d3ae78c5
194 changed files with 5165 additions and 2633 deletions

View file

@ -0,0 +1,6 @@
;; -*- lexical-binding: t; -*-
(defsubst foo-inlineable (foo-var)
(+ foo-var 2))
(provide 'foo-inlinable)

View file

@ -0,0 +1,17 @@
;; -*- lexical-binding: t; -*-
;; In this test, we try and make sure that inlined functions's code isn't
;; mistakenly re-interpreted in the caller's context: we import an
;; inlinable function from another file where `foo-var' is a normal
;; lexical variable, and then call(inline) it in a function where
;; `foo-var' is a dynamically-scoped variable.
(require 'foo-inlinable
(expand-file-name "foo-inlinable.el"
(file-name-directory
(or byte-compile-current-file load-file-name))))
(defvar foo-var)
(defun foo-fun ()
(+ (foo-inlineable 5) 1))

View file

@ -617,13 +617,13 @@ Subtests signal errors if something goes wrong."
(make-obsolete-variable 'bytecomp--tests-obsolete-var nil "99.99")
(bytecomp--define-warning-file-test "warn-obsolete-hook.el"
"bytecomp--tests-obs.*obsolete.*99.99")
"bytecomp--tests-obs.*obsolete[^z-a]*99.99")
(bytecomp--define-warning-file-test "warn-obsolete-variable-same-file.el"
"foo-obs.*obsolete.*99.99" t)
(bytecomp--define-warning-file-test "warn-obsolete-variable.el"
"bytecomp--tests-obs.*obsolete.*99.99")
"bytecomp--tests-obs.*obsolete[^z-a]*99.99")
(bytecomp--define-warning-file-test "warn-obsolete-variable-bound.el"
"bytecomp--tests-obs.*obsolete.*99.99" t)
@ -713,6 +713,10 @@ Subtests signal errors if something goes wrong."
"warn-wide-docstring-multiline.el"
"defvar.*foo.*wider than.*characters")
(bytecomp--define-warning-file-test
"nowarn-inline-after-defvar.el"
"Lexical argument shadows" 'reverse)
;;;; Macro expansion.

View file

@ -543,15 +543,7 @@
(apply (lambda (x) (+ x 1)) (list 8)))))
'(5 (6 5) (6 6) 9))))
(defun cl-lib-tests--dummy-function ()
;; Dummy function to see if the file is compiled.
t)
(ert-deftest cl-lib-defstruct-record ()
;; This test fails when compiled, see Bug#24402/27718.
:expected-result (if (byte-code-function-p
(symbol-function 'cl-lib-tests--dummy-function))
:failed :passed)
(cl-defstruct foo x)
(let ((x (make-foo :x 42)))
(should (recordp x))
@ -566,6 +558,7 @@
(should (eq (type-of x) 'vector))
(cl-old-struct-compat-mode 1)
(defvar cl-struct-foo)
(let ((cl-struct-foo (cl--struct-get-class 'foo)))
(setf (symbol-function 'cl-struct-foo) :quick-object-witness-check)
(should (eq (type-of x) 'foo))

View file

@ -32,6 +32,10 @@
(should (equal (pcase '(2 . 3) ;bug#18554
(`(,hd . ,(and (pred atom) tl)) (list hd tl))
((pred consp) nil))
'(2 3)))
(should (equal (pcase '(2 . 3)
(`(,hd . ,(and (pred (not consp)) tl)) (list hd tl))
((pred consp) nil))
'(2 3))))
(pcase-defmacro pcase-tests-plus (pat n)

View file

@ -29,6 +29,9 @@
(require 'ert)
(require 'seq)
(eval-when-compile
(require 'cl-lib))
(defmacro with-test-sequences (spec &rest body)
"Successively bind VAR to a list, vector, and string built from SEQ.
Evaluate BODY for each created sequence.
@ -108,16 +111,12 @@ Evaluate BODY for each created sequence.
'((a 0) (b 1) (c 2) (d 3)))))
(ert-deftest test-seq-do-indexed ()
(let ((result nil))
(seq-do-indexed (lambda (elt i)
(add-to-list 'result (list elt i)))
nil)
(should (equal result nil)))
(let (result)
(seq-do-indexed (lambda (elt i) (push (list elt i) result)) ())
(should-not result))
(with-test-sequences (seq '(4 5 6))
(let ((result nil))
(seq-do-indexed (lambda (elt i)
(add-to-list 'result (list elt i)))
seq)
(let (result)
(seq-do-indexed (lambda (elt i) (push (list elt i) result)) seq)
(should (equal (seq-elt result 0) '(6 2)))
(should (equal (seq-elt result 1) '(5 1)))
(should (equal (seq-elt result 2) '(4 0))))))
@ -410,12 +409,10 @@ Evaluate BODY for each created sequence.
(ert-deftest test-seq-random-elt-take-all ()
(let ((seq '(a b c d e))
(elts '()))
(should (= 0 (length elts)))
elts)
(dotimes (_ 1000)
(let ((random-elt (seq-random-elt seq)))
(add-to-list 'elts
random-elt)))
(cl-pushnew random-elt elts)))
(should (= 5 (length elts)))))
(ert-deftest test-seq-random-elt-signal-on-empty ()