Mercurial > hg > xemacs-beta
comparison tests/automated/byte-compiler-tests.el @ 5370:4c4b96b13f70
Address the easy test failures in tests/automated.
src/ChangeLog addition:
2011-03-11 Aidan Kehoe <kehoea@parhasard.net>
* bytecode.c (optimize_byte_code):
Only transform assignments to keywords to Bdiscard if
NEED_TO_HANDLE_21_4_CODE is turned on. Cf. similar code in
reject_constant_symbols().
tests/ChangeLog addition:
2011-03-11 Aidan Kehoe <kehoea@parhasard.net>
* automated/byte-compiler-tests.el:
(defconst :foo 1) now gives a warning when byte-compiled, check
for that.
(setq :foo 1) now errors with interpreted code, but succeeds with
byte-compiled code; check for the former, wrap a
Known-Bug-Expect-Failure around a check for the error in the
latter case, we can't yet remove this behaviour while we're using
packages compiled by 21.4.
* automated/lisp-tests.el (wrong-type-argument):
Integer zero is a valid argument to #'substring-no-properties, use
Assert not Check-Error for it. Check some other aspects of the
functionality of #'substring-no-properties in passing.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Fri, 11 Mar 2011 20:40:01 +0000 |
parents | 0f66906b6e37 |
children | ac37a5f7e5be |
comparison
equal
deleted
inserted
replaced
5369:4141aeddc55b | 5370:4c4b96b13f70 |
---|---|
43 `(Check-Message ,message-regexp (byte-compile '(lambda () ,@body)))) | 43 `(Check-Message ,message-regexp (byte-compile '(lambda () ,@body)))) |
44 | 44 |
45 (check-byte-compiler-message "Attempt to set non-symbol" (setq 1 1)) | 45 (check-byte-compiler-message "Attempt to set non-symbol" (setq 1 1)) |
46 (check-byte-compiler-message "Attempt to set constant symbol" (setq t 1)) | 46 (check-byte-compiler-message "Attempt to set constant symbol" (setq t 1)) |
47 (check-byte-compiler-message "Attempt to set constant symbol" (setq nil 1)) | 47 (check-byte-compiler-message "Attempt to set constant symbol" (setq nil 1)) |
48 (check-byte-compiler-message "^$" (defconst :foo 1)) | 48 (check-byte-compiler-message "Attempt to set constant symbol" (defconst :foo 1)) |
49 | 49 |
50 (check-byte-compiler-message "Attempt to let-bind non-symbol" (let ((1 'x)) 1)) | 50 (check-byte-compiler-message "Attempt to let-bind non-symbol" (let ((1 'x)) 1)) |
51 (check-byte-compiler-message "Attempt to let-bind constant symbol" (let ((t 'x)) (foo))) | 51 (check-byte-compiler-message "Attempt to let-bind constant symbol" (let ((t 'x)) (foo))) |
52 (check-byte-compiler-message "Attempt to let-bind constant symbol" (let ((nil 'x)) (foo))) | 52 (check-byte-compiler-message "Attempt to let-bind constant symbol" (let ((nil 'x)) (foo))) |
53 (check-byte-compiler-message "Attempt to let-bind constant symbol" (let ((:foo 'x)) (foo))) | 53 (check-byte-compiler-message "Attempt to let-bind constant symbol" (let ((:foo 'x)) (foo))) |
58 (Assert (boundp 'byte-compile-warnings)) | 58 (Assert (boundp 'byte-compile-warnings)) |
59 (check-byte-compiler-message "assignment to free variable" (setq free-variable 1)) | 59 (check-byte-compiler-message "assignment to free variable" (setq free-variable 1)) |
60 (check-byte-compiler-message "reference to free variable" (car free-variable)) | 60 (check-byte-compiler-message "reference to free variable" (car free-variable)) |
61 (check-byte-compiler-message "called with 2 args, but requires 1" (car 'x 'y)) | 61 (check-byte-compiler-message "called with 2 args, but requires 1" (car 'x 'y)) |
62 | 62 |
63 (check-byte-compiler-message "^$" (setq :foo 1)) | |
64 (let ((fun '(lambda () (setq :foo 1)))) | 63 (let ((fun '(lambda () (setq :foo 1)))) |
65 (fset 'test-byte-compiler-fun fun)) | 64 (fset 'test-byte-compiler-fun fun)) |
66 (Check-Error setting-constant (test-byte-compiler-fun)) | 65 (Check-Error setting-constant (test-byte-compiler-fun)) |
67 (byte-compile 'test-byte-compiler-fun) | 66 (Check-Message "Attempt to set constant symbol" |
68 (Check-Error setting-constant (test-byte-compiler-fun)) | 67 (byte-compile 'test-byte-compiler-fun)) |
68 | |
69 ;; Once NEED_TO_HANDLE_21_4_CODE is no longer defined in C, this will error | |
70 ;; correctly. It's disabled because the packages are compiled by 21.4. | |
71 (Known-Bug-Expect-Failure | |
72 (Check-Error setting-constant (test-byte-compiler-fun))) | |
69 | 73 |
70 (eval-when-compile (defvar setq-test-foo nil) (defvar setq-test-bar nil)) | 74 (eval-when-compile (defvar setq-test-foo nil) (defvar setq-test-bar nil)) |
71 (progn | 75 (progn |
72 (check-byte-compiler-message "set called with 1 arg, but requires 2" (setq setq-test-foo)) | 76 (check-byte-compiler-message "set called with 1 arg, but requires 2" (setq setq-test-foo)) |
73 (check-byte-compiler-message "set called with 1 arg, but requires 2" (setq setq-test-foo 1 setq-test-bar)) | 77 (check-byte-compiler-message "set called with 1 arg, but requires 2" (setq setq-test-foo 1 setq-test-bar)) |