Mercurial > hg > xemacs-beta
diff tests/automated/byte-compiler-tests.el @ 398:74fd4e045ea6 r21-2-29
Import from CVS: tag r21-2-29
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:13:30 +0200 |
parents | 8626e4521993 |
children | 697ef44129c6 |
line wrap: on
line diff
--- a/tests/automated/byte-compiler-tests.el Mon Aug 13 11:12:06 2007 +0200 +++ b/tests/automated/byte-compiler-tests.el Mon Aug 13 11:13:30 2007 +0200 @@ -22,7 +22,7 @@ ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ;; 02111-1307, USA. -;;; Synched up with: not in FSF Emacs. +;;; Synched up with: Not in FSF. ;;; Commentary: @@ -91,3 +91,30 @@ error "`let' bindings can have only one value-form" (eval '(let* ((x 1 2)) 3))) +(defmacro before-and-after-compile-equal (&rest form) + `(Assert (equal (funcall (quote (lambda () ,@form))) + (funcall (byte-compile (quote (lambda () ,@form))))))) + +(defvar simplyamarker (point-min-marker)) + +;; The byte optimizer must be careful with +/- with a single argument. + +(before-and-after-compile-equal (+)) +(before-and-after-compile-equal (+ 2 2)) +(before-and-after-compile-equal (+ 2 1)) +(before-and-after-compile-equal (+ 1 2)) +;; (+ 1) is OK. but (+1) signals an error. +(before-and-after-compile-equal (+ 1)) +(before-and-after-compile-equal (+ 3)) +(before-and-after-compile-equal (+ simplyamarker 1)) +;; The optimization (+ m) --> m is invalid when m is a marker. +;; Currently the following test fails - controversial. +;; (before-and-after-compile-equal (+ simplyamarker)) +;; Same tests for minus. +(before-and-after-compile-equal (- 2 2)) +(before-and-after-compile-equal (- 2 1)) +(before-and-after-compile-equal (- 1 2)) +(before-and-after-compile-equal (- 1)) +(before-and-after-compile-equal (- 3)) +(before-and-after-compile-equal (- simplyamarker 1)) +(before-and-after-compile-equal (- simplyamarker))