mirror of
git://git.code.sf.net/p/sbcl/sbcl
synced 2026-09-10 07:26:40 -04:00
converted SIMPLE-/COMPLEX- -INTERSECTION to -INTERSECTION2 reviewed old SIMPLE-/COMPLEX- -INTERSECTION methods to make them OK in the new world made TYPE-INTERSECTION2 and TYPE-APPROX-INTERSECTION2 for some things which used to call TYPE-INTERSECTION made new with-&REST-list TYPE-INTERSECTION to replace MAKE-INTERSECTION-TYPE-OR-SOMETHING HIERARCHICAL-INTERSECTION is more descriptive than VANILLA-INTERSECTION. deleted unused SIMPLIFY2 stuff deleted unused TYPE-INTERSECT and VALUES-TYPE-ALLOWP Pure BOOLEAN TYPE-ENUMERABLE is too much trouble; relax to generalized boolean instead. tweaked DEFUN-CACHED so that it will work early in cold init (if some clueless bozo happens to mess up types so badly that it gets called early in cold init:-) Now the AND type translator can just use TYPE-INTERSECTION. added *SOFT-HEAP-LIMIT* removed some unused symbols in SB!UNIX tweaked /SHOW0 to automatically stringify and concatenate its arguments, to abbreviate an idiom that I use a lot wrote /HEXSTR0 to abbreviate another idiom defined /PRIMITIVE-PRINT to abbreviate another idiom DO-LOAD-TIME-CODE-FIXUP and DO-LOAD-TIME-VALUE-FIXUP are only needed at cold init. added tests/type.after-xc.lisp and tests/type.before-xc.lisp upgraded SB-XC:TYPEP to handle (TYPEP #(1 2 3) 'VECTOR) etc. Intersection with *EMPTY-TYPE* and *UNIVERSAL-TYPE* should behave (and be commutative). Guard against some type method operations on *. (easier than worrying about them, or trying to make them right..) moved STYLE-WARN and friends to SB-INT to eliminate thought about whether they're visible e.g. in ir1tran.lisp tripped over bug 84 made SB!C-CALL use SB!INT and SB!EXT so I can use /SHOW0 et al. DEF-PRIMITIVE-TYPE stuff can become !DEF-PRIMITIVE-TYPE. DEF-BOUNDED-TYPE and DEFINE-FLOAT-FORMAT can become !DEF-BOUNDED-TYPE and !DEFINE-FLOAT-FORMAT. moved DEFTYPE FLOAT-FORMAT earlier so that it's visible in early-type.lisp (for NUMERIC-TYPE FORMAT slot :TYPE) moved LIST, CONS, and NULL classes earlier in *BUILT-IN-CLASSES* to try to help with RATIO cold init problem removed pre-ANSI keyword-only stuff in ARG-INFO-KEYWORD and in various &KEY-related error messages and symbol names bug 12 fixed: (SUBTYPEP 'KEYWORD 'SYMBOL)=>T,T added INTERSECTION-TYPE support to CTYPEP
102 lines
3.2 KiB
Bash
102 lines
3.2 KiB
Bash
#!/bin/sh
|
|
|
|
# Run the regression tests in this directory.
|
|
|
|
# This software is part of the SBCL system. See the README file for
|
|
# more information.
|
|
#
|
|
# While most of SBCL is derived from the CMU CL system, the test
|
|
# files (like this one) were written from scratch after the fork
|
|
# from CMU CL.
|
|
#
|
|
# This software is in the public domain and is provided with
|
|
# absolutely no warranty. See the COPYING and CREDITS files for
|
|
# more information.
|
|
|
|
# how we invoke SBCL
|
|
sbcl=${1:-../src/runtime/sbcl --core ../output/sbcl.core --noinform --sysinit /dev/null --userinit /dev/null --noprint --noprogrammer}
|
|
|
|
# "Ten four" is the closest numerical slang I can find to "OK", so
|
|
# it's the Unix status value that we expect from a successful test.
|
|
# (Of course, zero is the usual success value, but we don't want to
|
|
# use that because SBCL returns that by default, so we might think
|
|
# we passed a test when in fact some error caused us to exit SBCL
|
|
# in a weird unexpected way. In contrast, 104 is unlikely to be
|
|
# returned unless we exit through the intended explicit "test
|
|
# successful" path.
|
|
tenfour () {
|
|
if [ $? = 104 ]; then
|
|
echo ok
|
|
else
|
|
echo test failed: $?
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# *.pure.lisp files are ordinary Lisp code with no side effects,
|
|
# and we can run them all in a single Lisp process.
|
|
echo //running '*.pure.lisp' tests
|
|
echo //i.e. *.pure.lisp
|
|
(
|
|
echo "(progn"
|
|
for f in *.pure.lisp; do
|
|
if [ -f $f ]; then
|
|
echo " (progn (format t \"//running $f test~%\") (load \"$f\"))"
|
|
fi
|
|
done
|
|
echo " (sb-ext:quit :unix-status 104)) ; Return status=success."
|
|
) | $sbcl ; tenfour
|
|
|
|
# *.impure.lisp files are Lisp code with side effects (e.g. doing DEFSTRUCT
|
|
# or DEFTYPE or DEFVAR). Each one needs to be run as a separate
|
|
# invocation of Lisp.
|
|
echo //running '*.impure.lisp' tests
|
|
for f in *.impure.lisp; do
|
|
if [ -f $f ]; then
|
|
echo //running $f test
|
|
echo "(load \"$f\")" | $sbcl ; tenfour
|
|
fi
|
|
done
|
|
|
|
# *.test.sh files are scripts to test stuff, typically stuff which can't
|
|
# so easily be tested within Lisp itself. A file foo.test.sh
|
|
# may be associated with other files foo*, e.g. foo.lisp, foo-1.lisp,
|
|
# or foo.pl.
|
|
echo //running '*.test.sh' tests
|
|
for f in *.test.sh; do
|
|
if [ -f $f ]; then
|
|
echo //running $f test
|
|
sh $f "$sbcl"; tenfour
|
|
fi
|
|
done
|
|
|
|
# *.assertoids files contain ASSERTOID statements to test things
|
|
# interpreted and at various compilation levels.
|
|
echo //running '*.assertoids' tests
|
|
for f in *.assertoids; do
|
|
if [ -f $f ]; then
|
|
echo //running $f test
|
|
echo "(load \"$f\")" | $sbcl --eval '(load "assertoid.lisp")' ; tenfour
|
|
fi
|
|
done
|
|
|
|
# *.pure-cload.lisp files want to be compiled, then loaded. They
|
|
# can all be done in the same invocation of Lisp.
|
|
echo //running '*.pure-cload.lisp' tests
|
|
for f in *.pure-cload.lisp; do
|
|
if [ -f $f ]; then
|
|
echo //running $f test
|
|
$sbcl <<EOF ; tenfour
|
|
(compile-file "$f")
|
|
(progn (load *) (sb-ext:quit :unix-status 104))
|
|
EOF
|
|
fi
|
|
done
|
|
|
|
# (*.before-xc.lisp and *.after-xc.lisp files aren't handled in this
|
|
# script at all. They're tests intended to run in the cross-compiler,
|
|
# so that some functionality can be tested even when cold init doesn't
|
|
# work.)
|
|
|
|
echo '//apparent success (reached end of run-tests.sh normally)'
|