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:
commit
b8d3ae78c5
194 changed files with 5165 additions and 2633 deletions
6
test/lisp/emacs-lisp/bytecomp-resources/foo-inlinable.el
Normal file
6
test/lisp/emacs-lisp/bytecomp-resources/foo-inlinable.el
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
;; -*- lexical-binding: t; -*-
|
||||
|
||||
(defsubst foo-inlineable (foo-var)
|
||||
(+ foo-var 2))
|
||||
|
||||
(provide 'foo-inlinable)
|
||||
|
|
@ -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))
|
||||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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 ()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue