Mercurial > hg > xemacs-beta
changeset 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 | 4141aeddc55b |
children | 6f10ac29bf40 |
files | src/ChangeLog src/bytecode.c tests/ChangeLog tests/automated/byte-compiler-tests.el tests/automated/lisp-tests.el |
diffstat | 5 files changed, 45 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog Thu Mar 10 19:14:25 2011 +0000 +++ b/src/ChangeLog Fri Mar 11 20:40:01 2011 +0000 @@ -1,3 +1,10 @@ +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(). + 2011-02-24 Aidan Kehoe <kehoea@parhasard.net> * fns.c (Fsubstring_no_properties):
--- a/src/bytecode.c Thu Mar 10 19:14:25 2011 +0000 +++ b/src/bytecode.c Fri Mar 11 20:40:01 2011 +0000 @@ -1961,11 +1961,14 @@ wtaerror ("attempt to set non-symbol", val); if (EQ (val, Qnil) || EQ (val, Qt)) signal_error (Qsetting_constant, 0, val); +#ifdef NEED_TO_HANDLE_21_4_CODE /* Ignore assignments to keywords by converting to Bdiscard. - For backward compatibility only - we'd like to make this an error. */ + For backward compatibility only - we'd like to make this an + error. */ if (SYMBOL_IS_KEYWORD (val)) REWRITE_OPCODE (Bdiscard); else +#endif WRITE_NARGS (Bvarset); break;
--- a/tests/ChangeLog Thu Mar 10 19:14:25 2011 +0000 +++ b/tests/ChangeLog Fri Mar 11 20:40:01 2011 +0000 @@ -1,3 +1,18 @@ +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. + 2011-02-24 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el (substring-no-properties):
--- a/tests/automated/byte-compiler-tests.el Thu Mar 10 19:14:25 2011 +0000 +++ b/tests/automated/byte-compiler-tests.el Fri Mar 11 20:40:01 2011 +0000 @@ -45,7 +45,7 @@ (check-byte-compiler-message "Attempt to set non-symbol" (setq 1 1)) (check-byte-compiler-message "Attempt to set constant symbol" (setq t 1)) (check-byte-compiler-message "Attempt to set constant symbol" (setq nil 1)) -(check-byte-compiler-message "^$" (defconst :foo 1)) +(check-byte-compiler-message "Attempt to set constant symbol" (defconst :foo 1)) (check-byte-compiler-message "Attempt to let-bind non-symbol" (let ((1 'x)) 1)) (check-byte-compiler-message "Attempt to let-bind constant symbol" (let ((t 'x)) (foo))) @@ -60,12 +60,16 @@ (check-byte-compiler-message "reference to free variable" (car free-variable)) (check-byte-compiler-message "called with 2 args, but requires 1" (car 'x 'y)) -(check-byte-compiler-message "^$" (setq :foo 1)) (let ((fun '(lambda () (setq :foo 1)))) (fset 'test-byte-compiler-fun fun)) (Check-Error setting-constant (test-byte-compiler-fun)) -(byte-compile 'test-byte-compiler-fun) -(Check-Error setting-constant (test-byte-compiler-fun)) +(Check-Message "Attempt to set constant symbol" + (byte-compile 'test-byte-compiler-fun)) + +;; Once NEED_TO_HANDLE_21_4_CODE is no longer defined in C, this will error +;; correctly. It's disabled because the packages are compiled by 21.4. +(Known-Bug-Expect-Failure + (Check-Error setting-constant (test-byte-compiler-fun))) (eval-when-compile (defvar setq-test-foo nil) (defvar setq-test-bar nil)) (progn
--- a/tests/automated/lisp-tests.el Thu Mar 10 19:14:25 2011 +0000 +++ b/tests/automated/lisp-tests.el Fri Mar 11 20:40:01 2011 +0000 @@ -1339,9 +1339,17 @@ (Check-Error args-out-of-range (subseq [1 2 3] -42)) (Check-Error args-out-of-range (subseq [1 2 3] 0 42)) -(Check-Error wrong-type-argument (substring-no-properties nil 4)) -(Check-Error wrong-type-argument (substring-no-properties "hi there" pi)) -(Check-Error wrong-type-argument (substring-no-properties "hi there" 0)) +(let ((string "hi there")) + (Assert (equal (substring-no-properties "123" 0) "123")) + (Assert (equal (substring-no-properties "1234" -3 -1) "23")) + (Assert (equal (substring-no-properties "hi there" 0) "hi there")) + (put-text-property 0 (length string) 'foo 'bar string) + (Assert (eq 'bar (get-text-property 0 'foo string))) + (Assert (not + (get-text-property 0 'foo (substring-no-properties "hi there" 0)))) + (Check-Error wrong-type-argument (substring-no-properties nil 4)) + (Check-Error wrong-type-argument (substring-no-properties "hi there" pi)) + (Check-Error wrong-type-argument (substring-no-properties "hi there" 0.0))) ;;----------------------------------------------------- ;; Time-related tests