mirror of
git://git.code.sf.net/p/sbcl/sbcl
synced 2026-09-10 07:26:40 -04:00
This fixes the ANSI non-compliance passed down from early
CMUCL (1991-10-31). The bug was that FDEFINITION did not return the
same value as SYMBOL-FUNCTION for symbols (lp#799533). The fix is an
incompatible change but only affects encapsulated (e.g. TRACEd and
SP-PROFILE:PROFILEd) non-generic functions.
However, encapsulations belong to the definition (the name) and not to
the function associated with the name, so (SETF (FDEFINITION NAME) FN)
strips encapsulations from FN and keeps the encapsulations of NAME.
- SB-EXT:UNENCAPSULATED-FUNCTION was added.
- Encapsulated functions are printed as
#<FUNCTION FOO ENCAPSULATED>
or, if they have no proper name, as
#<FUNCTION FOO ENCAPSULATED {B1782332}>
This is the same as for unencapsulated functions except for the
additional " ENCAPSULATED".
- Unused slots were removed from SB-PROFILE:PROFILE-INFO.
- Since generic function identity is stable in face of encapsulation,
CLOS is largely unaffected by this change.
86 lines
4.8 KiB
Bash
Executable file
86 lines
4.8 KiB
Bash
Executable file
#!/bin/sh -e
|
|
|
|
# Usage: ansi-tests.sh [options]
|
|
#
|
|
# Currently the only option with any effect is `--coverage`, which
|
|
# will collect coverage information from running the tests if the host
|
|
# SBCL is built with :sb-cover-for-internals.
|
|
|
|
if [ ! -e ansi-test ]; then
|
|
git clone --depth 1 https://github.com/sbcl/ansi-test.git
|
|
fi
|
|
|
|
cd ansi-test
|
|
rm -fr sandbox/scratch
|
|
../../run-sbcl.sh --disable-ldb --lose-on-corruption \
|
|
--no-userinit --no-sysinit \
|
|
--load gclload1.lsp --load gclload2.lsp \
|
|
--eval '(setf *default-pathname-defaults* (truename #P"sandbox/"))' \
|
|
--eval '(in-package :cl-test)' \
|
|
--eval '(disable-note :nil-vectors-are-strings)' \
|
|
--eval '(when (member "--coverage" sb-ext:*posix-argv* :test (function equal)) (require :sb-cover) (funcall (intern "RESET-COVERAGE" "SB-COVER")))' \
|
|
--eval '(time (do-tests))' \
|
|
--eval '(when (member "--coverage" sb-ext:*posix-argv* :test (function equal)) (funcall (intern "SAVE-COVERAGE-IN-FILE" "SB-COVER") "../../ansi-tests.coverage"))' \
|
|
--eval '(let* ((expected (list* "APROPOS-LIST.ERROR.2" "APROPOS.ERROR.2" "COMPILE-FILE.2"
|
|
"EXP.ERROR.10" "EXP.ERROR.11" "EXP.ERROR.8"
|
|
"EXP.ERROR.9" "EXPT.ERROR.10" "EXPT.ERROR.11" "EXPT.ERROR.8" "EXPT.ERROR.9"
|
|
"FORMAT.A.29" "FORMAT.A.57" "FORMAT.A.58" "FORMAT.B.27" "FORMAT.B.28"
|
|
"FORMAT.B.29" "FORMAT.D.27" "FORMAT.D.28" "FORMAT.D.29" "FORMAT.F.45"
|
|
"FORMAT.F.46" "FORMAT.F.46B" "FORMAT.F.5" "FORMAT.F.8" "FORMAT.O.27"
|
|
"FORMAT.O.28" "FORMAT.O.29" "FORMAT.R.37" "FORMAT.R.38" "FORMAT.S.29"
|
|
"FORMAT.E.6" "FORMAT.E.20"
|
|
"FORMAT.X.27" "FORMAT.X.28" "FORMAT.X.29" "FORMATTER.A.57" "FORMATTER.A.58"
|
|
"FORMATTER.B.27" "FORMATTER.B.28" "FORMATTER.B.29" "FORMATTER.D.27"
|
|
"FORMATTER.D.28" "FORMATTER.D.29" "FORMATTER.F.45" "FORMATTER.F.46"
|
|
"FORMATTER.F.46B" "FORMATTER.O.27" "FORMATTER.O.28" "FORMATTER.O.29"
|
|
"FORMATTER.R.37" "FORMATTER.R.38" "FORMATTER.X.27" "FORMATTER.X.28"
|
|
"FORMATTER.X.29" "LOOP.1.39" "LOOP.1.40" "LOOP.1.41" "LOOP.1.42" "LOOP.1.43"
|
|
"MACROLET.36" "MAKE-CONDITION.3" "MAKE-CONDITION.4"
|
|
"MAKE-PATHNAME-ERROR-ABSOLUTE-WILD-INFERIORS-BACK"
|
|
"MAKE-PATHNAME-ERROR-RELATIVE-WILD-INFERIORS-BACK"
|
|
"PPRINT-LOGICAL-BLOCK.ERROR.1" "PPRINT-LOGICAL-BLOCK.ERROR.1-UNSAFE"
|
|
"PPRINT-LOGICAL-BLOCK.ERROR.3" "PPRINT-LOGICAL-BLOCK.ERROR.3-UNSAFE"
|
|
"PRINT-LEVEL.8" "PRINT-LEVEL.9" "PRINT.BACKQUOTE.RANDOM.1"
|
|
"PRINT.BACKQUOTE.RANDOM.10" "PRINT.BACKQUOTE.RANDOM.11"
|
|
"PRINT.BACKQUOTE.RANDOM.13" "PRINT.BACKQUOTE.RANDOM.14"
|
|
"PRINT.BACKQUOTE.RANDOM.2" "PRINT.BACKQUOTE.RANDOM.3"
|
|
"PRINT.BACKQUOTE.RANDOM.4" "PRINT.BACKQUOTE.RANDOM.5" "PROCLAIM.ERROR.7"
|
|
"SHIFTF.7"
|
|
"SXHASH.17" "SXHASH.18" "SXHASH.19" "PRINT-STRUCTURE.1"
|
|
"UNION.FOLD.1" "SUBTYPEP-COMPLEX.8" "FORMAT./.17"
|
|
"REMOVE-DUPLICATES.FOLD.4" "REMOVE-DUPLICATES.FOLD.3"
|
|
"REMOVE-DUPLICATES.FOLD.2" "REMOVE-DUPLICATES.FOLD.1" "REMOVE-IF-NOT.FOLD.2"
|
|
"REMOVE-IF.FOLD.4" "REMOVE-IF.FOLD.3" "REMOVE-IF.FOLD.1"
|
|
"REMOVE.FOLD.4" "REMOVE.FOLD.3" "REMOVE.FOLD.2" "REMOVE.FOLD.1"
|
|
"SUBSTITUTE-IF-NOT.FOLD.2" "SUBSTITUTE-IF-NOT.FOLD.1" "SUBSTITUTE-IF.FOLD.4"
|
|
"SUBSTITUTE-IF.FOLD.3" "SUBSTITUTE-IF.FOLD.2" "SUBSTITUTE-IF.FOLD.1"
|
|
"SUBSTITUTE.FOLD.4" "SUBSTITUTE.FOLD.3" "SUBSTITUTE.FOLD.2"
|
|
"SUBSTITUTE.FOLD.1" "SUBSTITUTE-IF-NOT.FOLD.3"
|
|
"INTERSECTION.FOLD.1"
|
|
"MISC.598" "IMAGPART.4" "SHARED-INITIALIZE.ERROR.4"
|
|
(append #+x86 (list "CIS.4")
|
|
#+(or arm riscv (and arm64 (not darwin)))
|
|
(list "EXP.ERROR.4" "EXP.ERROR.5" "EXP.ERROR.6" "EXP.ERROR.7" "EXPT.ERROR.4"
|
|
"EXPT.ERROR.5" "EXPT.ERROR.6" "EXPT.ERROR.7")
|
|
#+(or riscv loongarch64) (list "LOOP.13.8")
|
|
#-sb-unicode (list "MISC.638")
|
|
(if (member :sb-fasteval sb-impl:+internal-features+)
|
|
(list "INTERSECTION.FOLD.1" "UNION.FOLD.1" "SET-DIFFERENCE.FOLD.1"
|
|
"SET-EXCLUSIVE-OR.FOLD.1"
|
|
"ALL-STRUCTURE-CLASSES-ARE-SUBTYPES-OF-STRUCTURE-OBJECT.2")
|
|
(list "MAP.48" "SYMBOL-FUNCTION.ERROR.5"
|
|
"SUBSTITUTE-IF-NOT.FOLD.4" "REMOVE-IF.FOLD.2"
|
|
"REMOVE-IF-NOT.FOLD.1" "REMOVE-IF-NOT.FOLD.3" "REMOVE-IF-NOT.FOLD.4"))
|
|
|
|
#+sb-unicode (list "BOTH-CASE-P.2" "CHAR-DOWNCASE.2" "CHAR-UPCASE.2"))))
|
|
(failing (mapcar (function string) regression-test:*failed-tests*))
|
|
(failing (set-difference failing (list "FORMAT.E.26" #+sb-devel "COMMON-LISP-PACKAGE-NICKNAMES")
|
|
:test (function equal)))
|
|
(diff1 (set-difference failing expected :test (function equal)))
|
|
(diff2 (set-difference expected failing :test (function equal))))
|
|
(cond ((or diff1 diff2)
|
|
(format t "Difference ~@[added ~a~] ~@[removed ~a~]~%" diff1 diff2)
|
|
(sb-ext:exit :code 1))
|
|
((sb-ext:exit))))' \
|
|
$*
|