diff --git a/LOG b/LOG index d6c1b30cdb..ce7a959639 100644 --- a/LOG +++ b/LOG @@ -1132,7 +1132,7 @@ - generated Mf-install InstallBin (InstallLib, InstallMan) now correctly indirects through InstallPrefix if the --installbin (--installlib, --installman) configure flag is not present. - src/configure + configure - removed definition of generate-procedure-source-information patch.ss - guardian tconc cells are now allocated in generation 0 in the hope @@ -1182,3 +1182,70 @@ generated config.h. Instead removed InstallPrefix entirely so it isn't an attractive hazzard. configure, makefiles/Mf-install.in +- fixed bug in inline-lists: wasn't setting multiply-referenced flag + on p to account for the procedure? check at optimize-level 2. + cpletrec.ss +- fixed bug in check-prelex-flags: was hardwiring $cpcheck-prelex-flags + "after" argument to 'uncprep rather than passing along its argument. + compile.ss +- commented out local definition of sorry! so that problems detected + by $cpcheck-prelex-flags actually result in a raised exception. + cprep.ss +- exposed the default-library-search-handler and a library-search-handler + parameter to permit more control over the search for libraries during + import, compile-whole-library, and compile-whole-program + syntax.ss, primdata.ss, + 8.ms, + libraries.stex +- added fix for whole program/library compilation bug with help from + @owaddell who originally reported the problem in issue 386. this bug + arises from the way the parts of the combined library, and their + binary dependencies, are invoked when one of the constituent libraries + is invoked. consider, for example, a combined library that contains + (A) and (B), where (B) depends on a binary library (C). depending on + the sort order of (A) and (B), which may be unconstrained in the + partial ordering established by library dependencies, invoking (A) may + result in the invoke code for (B) being run first, without (B) ever + being explicitly invoked. this can result in bindings required from + (C) by the invoke code in (B) to be unbound. even in the case where + (A) comes before (B) in the topological sort, if they are combined + into the same cluster, (B)'s invoke code will be run as part of + invoking (A). the solution is two part: first we extend the invoke + requirements of the first library in the cluster to include the binary + libraries that precede it in the topological sort and add a dependency + on the first library in the cluster to all of the other libraries in + the cluster. this means no matter which library in the cluster is + invoked first, it will cause the first library to be invoked, in turn + ensuring the binary libraries that precede it are invoked. when there + are multiple clusters, a dependency is added from each cluster to the + first library in the cluster that precedes it. this ensures that + invoking a library in a later cluster first, will still cause all of + the dependencies of the previous clusters to be invoked. ultimately, + these extra dependencies enforce an ordering on the invocation of the + source and binary libraries that matches the topological sort, even if + the topological sort was under constrained. to maintain the property + that import requirements are a superset of the invoke and visit + requirements, we also extend the import requirements to include the + extended invoke requirements. the import requirements are also added + to the dependency graph to further constrain the topological sort and + ensure that we do not introduce artificial cycles in the import graph. + compile.ss, + 7.ms, + root-experr*, patch* +- fixed failure to install examples for tarball installs + Mf-install.in +- improved packaging support: + replaced bintar script with bintar directory and make file; + tarballs are created via "make create-tarball" and are placed in + the workarea's bintar directory. added rpm directory and make + file for creating RPMs via "make create-rpm". added pkg directory + and make file for creating OSX packages via "make create-pkg". + bintar (removed), bintar/Makefile (new), rpm/Makefile (new), + pkg/Makefile (new), pkg/rmpkg (new), workarea, checkin, newrelease, + Makefile.in, Makefile-workarea.in. +- improved error message for compile-whole-program and + compile-whole-library when a top-level expression is discovered while + processing a wpo file. + compile.ss +- minor build and new-release updates + checkin, newrelease, Makefile.in, Makefile-workarea.in diff --git a/bintar b/bintar deleted file mode 100644 index 7d3654689a..0000000000 --- a/bintar +++ /dev/null @@ -1,73 +0,0 @@ -#! /bin/csh -f - -set T = "." -if ("$argv[1]" == "--target-dir") then - set T = "$argv[2]" - shift - shift -endif - -if ($#argv != 2 && $#argv != 3) then - echo "Usage: $0 [ --target-dir ] [ ]" - exit 1 -endif - -set R = $argv[1] -set M = $argv[2] -if ($#argv == 2) then - set W = $M -else - set W = $argv[3] -endif - -if (!(-d $W)) then - echo "Error: work area $W does not exist or is not a directory" - exit 1 -endif - -if (!(-e $W/boot/$M)) then - echo "Error: "$ - exit 1 -endif - -if (-e $R) then - echo "Error: $R already exists" - exit 1 -endif - -onintr error - -mkdir $R || goto error -( cd $R ; ln -s ../LICENSE ../NOTICE . ) || goto error -( cd $R ; ln -s ../$W/scheme.1.in ../$W/installsh ../$W/examples . ) || goto error -( cd $R ; ln -s ../$W/Mf-install Makefile ) || goto error -mkdir -p $R/boot/$M $R/bin/$M || goto error -( cd $R/boot/$M ; ln -s ../../../$W/boot/$M/{scheme.h,petite.boot,scheme.boot} . ) || goto error - -switch ($M) - case a6nt: - case ta6nt: - case ti3nt: - case i3nt: - ( cd $R/boot/$M ; ln -s ../../../$W/boot/$M/{csv951md.lib,csv951mt.lib,mainmd.obj,mainmt.obj,scheme.res} . ) || goto error - ( cd $R/bin/$M ; ln -s ../../../$W/bin/$M/{scheme.exe,csv951.dll,csv951.lib,vcruntime140.lib} . ) || goto error - breaksw - default: - ( cd $R/boot/$M ; ln -s ../../../$W/boot/$M/{main.o,kernel.o} . ) || goto error - ( cd $R/bin/$M ; ln -s ../../../$W/bin/$M/{scheme} . ) || goto error - breaksw -endsw - -set broken = `find -L $R -type l` -if ($#broken != 0) then - echo "Error: missing $broken" - goto error -endif - -tar -czhf $T/csv$R-$M.tar.gz $R || goto error -rm -rf $R -exit - -error: -rm -rf $R -exit 1 diff --git a/bintar/Makefile b/bintar/Makefile new file mode 100644 index 0000000000..61b323ccb0 --- /dev/null +++ b/bintar/Makefile @@ -0,0 +1,86 @@ +# Makefile +# Copyright 1984-2017 Cisco Systems, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +version = 9.5.1 +m := $(shell find ../bin/* -type d | xargs basename) + +R = csv$(version) +TARBALL = $(R)-$(m).tar.gz + +CONTENTS=\ + $(R)/LICENSE\ + $(R)/NOTICE\ + $(R)/scheme.1.in\ + $(R)/installsh\ + $(R)/Makefile\ + $(R)/examples\ + $(R)/boot\ + $(R)/bin + +$(TARBALL): $(CONTENTS) + ( BROKEN=`find -L $R -type l` ; \ + if test -n "$$BROKEN" ; then \ + echo "Error: missing $(BROKEN)" ; \ + exit 1 ; \ + fi ) + tar -czhf $(TARBALL) $R + rm -rf $(R) + +$(R)/LICENSE: $(R) + ( cd $(R) ; ln -s ../../../LICENSE . ) + +$(R)/NOTICE: $(R) + ( cd $(R) ; ln -s ../../../NOTICE . ) + +$(R)/scheme.1.in: $(R) + ( cd $(R) ; ln -s ../../scheme.1.in . ) + +$(R)/installsh: $(R) + ( cd $(R) ; ln -s ../../installsh . ) + +$(R)/Makefile: $(R) + ( cd $(R) ; ln -s ../../Mf-install Makefile ) + +$(R)/examples: $(R) + ( cd $(R) ; ln -s ../../examples . ) + +$(R)/boot: $(R) + mkdir -p $(R)/boot/$(m) + ( cd $(R)/boot/$(m) ; ln -s ../../../../boot/$(m)/{scheme.h,petite.boot,scheme.boot} . ) + case $(m) in \ + *nt) \ + ( cd $R/boot/$(m) ; ln -s ../../../../boot/$(m)/{csv951md.lib,csv951mt.lib,mainmd.obj,mainmt.obj,scheme.res} . ) \ + ;; \ + *) \ + ( cd $R/boot/$(m) ; ln -s ../../../../boot/$(m)/{main.o,kernel.o} . ) \ + ;; \ + esac + +$(R)/bin: $(R) + mkdir -p $(R)/bin/$(m) + case $(m) in \ + *nt) \ + ( cd $R/bin/$(m) ; ln -s ../../../../bin/$(m)/{scheme.exe,csv951.dll,csv951.lib,vcruntime140.lib} . ) \ + ;; \ + *) \ + ( cd $R/bin/$(m) ; ln -s ../../../../bin/$(m)/scheme . ) \ + ;; \ + esac + +$(R): + mkdir $(R) + +clean: + rm -rf $(R) $(TARBALL) diff --git a/checkin b/checkin index cb51ffaa19..6db76bcfce 100755 --- a/checkin +++ b/checkin @@ -62,7 +62,7 @@ if (-e $W/scheme.1.in) then endif endif -set tmpsdirs = (. c mats s examples unicode makefiles csug release_notes) +set tmpsdirs = (. c mats s examples unicode makefiles csug release_notes wininstall bintar rpm pkg) set sdirs = () foreach x ($tmpsdirs) if (!(-e $x)) then @@ -90,8 +90,6 @@ echo '*** running "make clean" in source directories ***' foreach x ($sdirs) switch ($x) case .: - (cd $W; /bin/rm -f petite.1 scheme.1) - (cd $W; /bin/rm -f Make.out) case unicode: case unicode/UNIDATA: case makefiles: @@ -103,7 +101,11 @@ foreach x ($sdirs) case mats: case benchmarks: case examples: - (cd $W/$x; make clean > /dev/null) + case wininstall: + case bintar: + case rpm: + case pkg: + (cd $W/$x; make clean >& /dev/null) breaksw default: echo "checkin error: unexpected sdir $x" @@ -231,13 +233,6 @@ if ($#oldsfiles != 0) then echo "" endif -foreach x ($bdirs) - set x = ./$x - if (!(-d $x)) then - mkdir -p $x || goto error - endif -end - set oldbfiles = () foreach x ($bfiles) if (-e $x) set oldbfiles = ($oldbfiles $x) @@ -291,6 +286,7 @@ if ($#bfiles != 0) then @ n = $i + 4 endif echo -n "$x " + if (!(-e $x:h)) mkdir -p $x:h || goto error mv $W/$x $x || goto error end echo "" diff --git a/csug/libraries.stex b/csug/libraries.stex index e365bc3710..a48f401c70 100644 --- a/csug/libraries.stex +++ b/csug/libraries.stex @@ -469,7 +469,7 @@ as follows. \begin{description} \item[\scheme{\var{library-spec}}:] all exports of the library identified by the Revised$^6$ Report \var{library-spec} -(Chapter~\ref{TSPL:CHPTLIBRARIES}. +(Chapter~\ref{TSPL:CHPTLIBRARIES}). \item[\scheme{\var{module-name}}:] all exports of module named by the identifier \var{module-name} @@ -998,6 +998,51 @@ When the new parameter \scheme{import-notify} is set to a true value, searches for the file containing each library it needs to load. The default value of this parameter is \scheme{#f}. +%---------------------------------------------------------------------------- +\entryheader +\formdef{library-search-handler}{\categorythreadparameter}{library-search-handler} +\listlibraries +\endentryheader + +The value of parameter must be a procedure that follows the protocol described +below for \scheme{default-library-search-handler}, which is the default value +of this parameter. + +The value of this parameter is invoked to locate the source or object code for +a library during \scheme{import}, \scheme{compile-whole-program}, or +\scheme{compile-whole-library}. + +%---------------------------------------------------------------------------- +\entryheader +\formdef{default-library-search-handler}{\categoryprocedure}{(default-library-search-handler \var{who} \var{library} \var{directories} \var{extensions})} +\returns see below +\listlibraries +\endentryheader + +This procedure is the default value of the \scheme{library-search-handler}, +which is +called to locate the source or object code for a library +during \scheme{import}, +\scheme{compile-whole-program}, or \scheme{compile-whole-library}. +\var{who} is a symbol that provides context in \scheme{import-notify} messages. +\var{library} is the name of the desired library. +\var{directories} is a list of source and object directory pairs in +the form returned by \scheme{library-directories}. +\var{extensions} is a list of source and object extension pairs in the form +returned by \scheme{library-extensions}. + +This procedure searches the specified directories until it finds a library source or +object file with one of the specified extensions. +If it finds the source file first, it constructs the corresponding +object file path and checks whether the file exists. +If it finds the object file first, the procedure looks for a corresponding +source file with one of the given source extensions in a source directory paired +with that object directory. +The procedure returns three values: +the file-system path of the library source file or \scheme{#f} if not found, +the file-system path of the corresponding object file, which may be \scheme{#f}, +and a boolean that is true if the object file exists. + \section{Library Inspection\label{SECTLIBRARYINSPECTION}} %---------------------------------------------------------------------------- diff --git a/makefiles/Makefile-workarea.in b/makefiles/Makefile-workarea.in index 504da9df2b..8aa0f98882 100644 --- a/makefiles/Makefile-workarea.in +++ b/makefiles/Makefile-workarea.in @@ -17,8 +17,8 @@ MAKEFLAGS += --no-print-directory PREFIX= build: - (cd c ; $(MAKE)) - (cd s ; $(MAKE) bootstrap) + (cd c && $(MAKE)) + (cd s && $(MAKE) bootstrap) install: build $(MAKE) -f Mf-install @@ -27,16 +27,28 @@ uninstall: $(MAKE) -f Mf-install uninstall test: build - (cd mats ; $(MAKE) allx) + (cd mats && $(MAKE) allx) @echo "test run complete. check $(PREFIX)mats/summary for errors." bootfiles: build $(MAKE) -f Mf-boot +create-bintar: build + (cd bintar && $(MAKE)) + +create-rpm: create-bintar + (cd rpm && $(MAKE)) + +create-pkg: create-bintar + (cd pkg && $(MAKE)) + clean: rm -f petite.1 scheme.1 - (cd s ; $(MAKE) clean) - (cd c ; $(MAKE) clean) - (cd mats ; $(MAKE) clean) - (cd examples ; $(MAKE) clean) + (cd s && $(MAKE) clean) + (cd c && $(MAKE) clean) + (cd mats && $(MAKE) clean) + (cd examples && $(MAKE) clean) + (cd bintar && $(MAKE) clean) + (cd rpm && $(MAKE) clean) + (cd pkg && $(MAKE) clean) rm -f Make.out diff --git a/makefiles/Makefile.in b/makefiles/Makefile.in index 3e9428999d..0308ef0492 100644 --- a/makefiles/Makefile.in +++ b/makefiles/Makefile.in @@ -34,13 +34,22 @@ docs: build (cd csug && $(MAKE) m=$(m)) (cd release_notes && $(MAKE) m=$(m)) +create-bintar: + (cd $(workarea) && $(MAKE) create-bintar) + +create-rpm: + (cd $(workarea) && $(MAKE) create-rpm) + +create-pkg: + (cd $(workarea) && $(MAKE) create-pkg) + clean: (cd $(workarea) && $(MAKE) clean) distclean: - (cd csug ; if [ -e Makefile ] ; then make reallyreallyclean ; fi) + (cd csug && if [ -e Makefile ] ; then make reallyreallyclean ; fi) rm -f csug/Makefile - (cd release_notes ; if [ -e Makefile ] ; then make reallyreallyclean ; fi) + (cd release_notes && if [ -e Makefile ] ; then make reallyreallyclean ; fi) rm -f release_notes/Makefile rm -rf $(workarea) rm -f Makefile diff --git a/makefiles/Mf-install.in b/makefiles/Mf-install.in index f7d66b086d..b40b524bd4 100644 --- a/makefiles/Mf-install.in +++ b/makefiles/Mf-install.in @@ -126,7 +126,7 @@ maninstall: scheme.1 petite.1 ${Man} if [ ${GzipManPages} = yes ] ; then gzip -f ${Man}/${InstallPetiteName}.1 ; fi liblibinstall: ${LibExamples} - $I -m 444 ../examples/* ${LibExamples} + $I -m 444 examples/* ${LibExamples} ${Lib}: $I -d -m 755 ${Lib} diff --git a/mats/7.ms b/mats/7.ms index 6fbf9139c7..cde9396d10 100644 --- a/mats/7.ms +++ b/mats/7.ms @@ -3359,6 +3359,518 @@ evaluating module init (equal? (separate-eval '(let () (import (testfile-wpo-extlib-2)) (p))) "(9 . 5)\n") + + ;; regression tests from @owaddell generated to fix problems he encountered + ;; with compile-whole-library from a test generator. + (begin + (with-output-to-file "testfile-wpo-coconut.ss" + (lambda () + (pretty-print + '(library (testfile-wpo-coconut) + (export coconut apple->coconut) + (import (scheme)) + (define $init (list '_)) + (define apple->coconut (cons 'apple->coconut $init)) + (define coconut (list 'coconut apple->coconut $init))))) + 'replace) + (with-output-to-file "testfile-wpo-banana.ss" + (lambda () + (pretty-print + '(library (testfile-wpo-banana) + (export banana apple->banana) + (import (scheme)) + (define $init (list '_)) + (define apple->banana (cons 'apple->banana $init)) + (define banana (list 'banana apple->banana $init))))) + 'replace) + (with-output-to-file "testfile-wpo-apple.ss" + (lambda () + (pretty-print + '(library (testfile-wpo-apple) + (export apple) + (import (scheme) (testfile-wpo-banana) (testfile-wpo-coconut)) + (define $init + (list + '_ + (cons 'apple->banana apple->banana) + (cons 'apple->coconut apple->coconut))) + (define apple (list 'apple $init))))) + 'replace) + (with-output-to-file "testfile-wpo-main.ss" + (lambda () + (pretty-print '(import (scheme) (testfile-wpo-banana) (testfile-wpo-coconut) (testfile-wpo-apple))) + (pretty-print '(pretty-print banana)) + (pretty-print '(pretty-print coconut)) + (pretty-print '(pretty-print apple))) + 'replace) + (separate-compile + '(lambda (x) + (parameterize ([compile-imported-libraries #t] + [generate-wpo-files #t]) + (compile-program x))) + 'wpo-main) + #t) + + (equal? + (separate-compile + '(lambda (x) + (parameterize ([generate-wpo-files #f]) + (compile-whole-library (format "~a.wpo" x) (format "~a.so" x)))) + 'wpo-coconut) + "()\n") + + (begin + (delete-file "testfile-wpo-coconut.wpo") + #t) + + (equal? + (separate-compile + '(lambda (x) + (parameterize ([generate-wpo-files #f]) + (compile-whole-library (format "~a.wpo" x) (format "~a.so" x)))) + 'wpo-apple) + "((testfile-wpo-coconut))\n") + + (begin + (delete-file "testfile-wpo-banana.wpo") + (delete-file "testfile-wpo-apple.wpo") + (delete-file "testfile-wpo-banana.so") + #t) + + (equal? + (separate-compile + '(lambda (x) + (parameterize ([library-search-handler + (let ([lsh (library-search-handler)]) + (lambda (who name dirs exts) + (lsh who (if (equal? name '(testfile-wpo-banana)) + '(testfile-wpo-apple) + name) + dirs exts)))]) + (compile-whole-program (format "~a.wpo" x) (format "~a.so" x)))) + 'wpo-main) + "((testfile-wpo-apple)\n (testfile-wpo-banana)\n (testfile-wpo-coconut))\n") + + (equal? + (separate-eval + '(parameterize ([library-search-handler + (let ([lsh (library-search-handler)]) + (lambda (who name dirs exts) + (lsh who (if (equal? name '(testfile-wpo-banana)) + '(testfile-wpo-apple) + name) + dirs exts)))]) + (load-program "testfile-wpo-main.so"))) + (string-append + "(banana (apple->banana _) (_))\n" + "(coconut (apple->coconut _) (_))\n" + "(apple\n (_ (apple->banana apple->banana _)\n (apple->coconut apple->coconut _)))\n")) + + (begin + ;; clean-up to make sure previous builds don't get in the way. + (delete-file "testfile-wpo-coconut.ss") + (delete-file "testfile-wpo-coconut.so") + (delete-file "testfile-wpo-coconut.wpo") + + (delete-file "testfile-wpo-banana.ss") + (delete-file "testfile-wpo-banana.so") + (delete-file "testfile-wpo-banana.wpo") + + (delete-file "testfile-wpo-apple.ss") + (delete-file "testfile-wpo-apple.so") + (delete-file "testfile-wpo-apple.wpo") + + (delete-file "testfile-wpo-main.ss") + (delete-file "testfile-wpo-main.so") + (delete-file "testfile-wpo-main.wpo") + + #t) + + (begin + (with-output-to-file "testfile-wpo-coconut.ss" + (lambda () + (pretty-print + '(library (testfile-wpo-coconut) + (export coconut banana->coconut apple->coconut) + (import (scheme)) + (define $init (list '_)) + (define banana->coconut (cons 'banana->coconut $init)) + (define apple->coconut (cons 'apple->coconut $init)) + (define coconut + (list 'coconut banana->coconut apple->coconut $init))))) + 'replace) + (with-output-to-file "testfile-wpo-date.ss" + (lambda () + (pretty-print + '(library (testfile-wpo-date) + (export date apple->date) + (import (scheme)) + (define $init (list '_)) + (define apple->date (cons 'apple->date $init)) + (define date (list 'date apple->date $init))))) + 'replace) + (with-output-to-file "testfile-wpo-apple.ss" + (lambda () + (pretty-print + '(library (testfile-wpo-apple) + (export apple) + (import (scheme) (testfile-wpo-date) (testfile-wpo-coconut)) + (define $init + (list + '_ + (cons 'apple->date apple->date) + (cons 'apple->coconut apple->coconut))) + (define apple (list 'apple $init))))) + 'replace) + (with-output-to-file "testfile-wpo-banana.ss" + (lambda () + (pretty-print + '(library (testfile-wpo-banana) + (export banana) + (import (scheme) (testfile-wpo-coconut)) + (define $init + (list '_ (cons 'banana->coconut banana->coconut))) + (define banana (list 'banana $init))))) + 'replace) + (with-output-to-file "testfile-wpo-main.ss" + (lambda () + (pretty-print '(import (scheme) (testfile-wpo-date) + (testfile-wpo-banana) (testfile-wpo-coconut) + (testfile-wpo-apple))) + (pretty-print '(pretty-print date)) + (pretty-print '(pretty-print banana)) + (pretty-print '(pretty-print coconut)) + (pretty-print '(pretty-print apple))) + 'replace) + (separate-compile + '(lambda (x) + (parameterize ([compile-imported-libraries #t] + [generate-wpo-files #t]) + (compile-program x))) + 'wpo-main) + #t) + + (equal? + (separate-compile + '(lambda (x) + (parameterize ([generate-wpo-files #f]) + (compile-whole-library (format "~a.wpo" x) (format "~a.so" x)))) + 'wpo-coconut) + "()\n") + + (begin + (delete-file "testfile-wpo-coconut.wpo") + #t) + + (equal? + (separate-compile + '(lambda (x) + (parameterize ([generate-wpo-files #f]) + (compile-whole-library (format "~a.wpo" x) (format "~a.so" x)))) + 'wpo-apple) + "((testfile-wpo-coconut))\n") + + (begin + (delete-file "testfile-wpo-date.wpo") + (delete-file "testfile-wpo-apple.wpo") + (delete-file "testfile-wpo-date.so") + #t) + + (equal? + (separate-compile + '(lambda (x) + (parameterize ([library-search-handler + (let ([lsh (library-search-handler)]) + (lambda (who name dirs exts) + (lsh who (if (equal? name '(testfile-wpo-date)) + '(testfile-wpo-apple) + name) + dirs exts)))]) + (compile-whole-program (format "~a.wpo" x) (format "~a.so" x)))) + 'wpo-main) + "((testfile-wpo-apple)\n (testfile-wpo-date)\n (testfile-wpo-coconut))\n") + + (equal? + (separate-eval + '(parameterize ([library-search-handler + (let ([lsh (library-search-handler)]) + (lambda (who name dirs exts) + (lsh who (if (equal? name '(testfile-wpo-date)) + '(testfile-wpo-apple) + name) + dirs exts)))]) + (load-program "testfile-wpo-main.so"))) + (string-append + "(date (apple->date _) (_))\n" + "(banana (_ (banana->coconut banana->coconut _)))\n" + "(coconut (banana->coconut _) (apple->coconut _) (_))\n" + "(apple\n" + " (_ (apple->date apple->date _)\n" + " (apple->coconut apple->coconut _)))\n")) + + (begin + ;; clean-up to make sure previous builds don't get in the way. + (delete-file "testfile-wpo-coconut.ss") + (delete-file "testfile-wpo-coconut.so") + (delete-file "testfile-wpo-coconut.wpo") + + (delete-file "testfile-wpo-date.ss") + (delete-file "testfile-wpo-date.so") + (delete-file "testfile-wpo-date.wpo") + + (delete-file "testfile-wpo-banana.ss") + (delete-file "testfile-wpo-banana.so") + (delete-file "testfile-wpo-banana.wpo") + + (delete-file "testfile-wpo-apple.ss") + (delete-file "testfile-wpo-apple.so") + (delete-file "testfile-wpo-apple.wpo") + + (delete-file "testfile-wpo-main.ss") + (delete-file "testfile-wpo-main.so") + (delete-file "testfile-wpo-main.wpo") + + #t) + + (begin + (with-output-to-file "testfile-wpo-date.ss" + (lambda () + (pretty-print + '(library (testfile-wpo-date) + (export date apple->date) + (import (scheme)) + (define $init (list '_)) + (define apple->date (cons 'apple->date $init)) + (define date (list 'date apple->date $init))))) + 'replace) + (with-output-to-file "testfile-wpo-eel.ss" + (lambda () + (pretty-print + '(library (testfile-wpo-eel) + (export eel coconut->eel apple->eel) + (import (scheme)) + (define $init (list '_)) + (define coconut->eel (cons 'coconut->eel $init)) + (define apple->eel (cons 'apple->eel $init)) + (define eel (list 'eel coconut->eel apple->eel $init))))) + 'replace) + (with-output-to-file "testfile-wpo-coconut.ss" + (lambda () + (pretty-print + '(library (testfile-wpo-coconut) + (export coconut banana->coconut apple->coconut) + (import (scheme) (testfile-wpo-eel)) + (define $init (list '_ (cons 'coconut->eel coconut->eel))) + (define banana->coconut (cons 'banana->coconut $init)) + (define apple->coconut (cons 'apple->coconut $init)) + (define coconut + (list 'coconut banana->coconut apple->coconut $init))))) + 'replace) + (with-output-to-file "testfile-wpo-apple.ss" + (lambda () + (pretty-print + '(library (testfile-wpo-apple) + (export apple) + (import (scheme) (testfile-wpo-date) (testfile-wpo-coconut) + (testfile-wpo-eel)) + (define $init + (list + '_ + (cons 'apple->date apple->date) + (cons 'apple->coconut apple->coconut) + (cons 'apple->eel apple->eel))) + (define apple (list 'apple $init))))) + 'replace) + (with-output-to-file "testfile-wpo-banana.ss" + (lambda () + (pretty-print + '(library (testfile-wpo-banana) + (export banana) + (import (scheme) (testfile-wpo-coconut)) + (define $init + (list '_ (cons 'banana->coconut banana->coconut))) + (define banana (list 'banana $init))))) + 'replace) + (with-output-to-file "testfile-wpo-main.ss" + (lambda () + (pretty-print '(import (scheme) (testfile-wpo-date) + (testfile-wpo-banana) (testfile-wpo-coconut) + (testfile-wpo-apple) (testfile-wpo-eel))) + (pretty-print '(pretty-print date)) + (pretty-print '(pretty-print banana)) + (pretty-print '(pretty-print coconut)) + (pretty-print '(pretty-print apple)) + (pretty-print '(pretty-print eel))) + 'replace) + (separate-compile + '(lambda (x) + (parameterize ([compile-imported-libraries #t] + [generate-wpo-files #t]) + (compile-program x))) + 'wpo-main) + #t) + + (equal? + (separate-compile + '(lambda (x) + (parameterize ([generate-wpo-files #f]) + (compile-whole-library (format "~a.wpo" x) (format "~a.so" x)))) + 'wpo-coconut) + "()\n") + + (begin + (delete-file "testfile-wpo-eel.wpo") + (delete-file "testfile-wpo-coconut.wpo") + (delete-file "testfile-wpo-eel.so") + #t) + + (equal? + (separate-compile + '(lambda (x) + (parameterize ([generate-wpo-files #f] + [library-search-handler + (let ([lsh (library-search-handler)]) + (lambda (who name dirs exts) + (lsh who (if (equal? name '(testfile-wpo-eel)) + '(testfile-wpo-coconut) + name) + dirs exts)))]) + (compile-whole-library (format "~a.wpo" x) (format "~a.so" x)))) + 'wpo-apple) + "((testfile-wpo-coconut) (testfile-wpo-eel))\n") + + (begin + (delete-file "testfile-wpo-date.wpo") + (delete-file "testfile-wpo-apple.wpo") + (delete-file "testfile-wpo-date.so") + #t) + + (equal? + (separate-compile + '(lambda (x) + (parameterize ([library-search-handler + (let ([lsh (library-search-handler)]) + (lambda (who name dirs exts) + (lsh who (cond + [(equal? name '(testfile-wpo-date)) '(testfile-wpo-apple)] + [(equal? name '(testfile-wpo-eel)) '(testfile-wpo-coconut)] + [else name]) + dirs exts)))]) + (compile-whole-program (format "~a.wpo" x) (format "~a.so" x)))) + 'wpo-main) + "((testfile-wpo-apple)\n (testfile-wpo-date)\n (testfile-wpo-coconut)\n (testfile-wpo-eel))\n") + + (equal? + (separate-eval + '(parameterize ([library-search-handler + (let ([lsh (library-search-handler)]) + (lambda (who name dirs exts) + (lsh who (cond + [(equal? name '(testfile-wpo-date)) '(testfile-wpo-apple)] + [(equal? name '(testfile-wpo-eel)) '(testfile-wpo-coconut)] + [else name]) + dirs exts)))]) + (load-program "testfile-wpo-main.so"))) + (string-append + "(date (apple->date _) (_))\n" + "(banana\n" + " (_ (banana->coconut\n" + " banana->coconut\n" + " _\n" + " (coconut->eel coconut->eel _))))\n" + "(coconut\n" + " (banana->coconut _ (coconut->eel coconut->eel _))\n" + " (apple->coconut _ (coconut->eel coconut->eel _))\n" + " (_ (coconut->eel coconut->eel _)))\n" + "(apple\n" + " (_ (apple->date apple->date _)\n" + " (apple->coconut\n" + " apple->coconut\n" + " _\n" + " (coconut->eel coconut->eel _))\n" + " (apple->eel apple->eel _)))\n" + "(eel (coconut->eel _) (apple->eel _) (_))\n")) + + (begin + ;; clean-up to make sure previous builds don't get in the way. + (delete-file "testfile-wpo-coconut.ss") + (delete-file "testfile-wpo-coconut.so") + (delete-file "testfile-wpo-coconut.wpo") + + (delete-file "testfile-wpo-eel.ss") + (delete-file "testfile-wpo-eel.so") + (delete-file "testfile-wpo-eel.wpo") + + (delete-file "testfile-wpo-date.ss") + (delete-file "testfile-wpo-date.so") + (delete-file "testfile-wpo-date.wpo") + + (delete-file "testfile-wpo-banana.ss") + (delete-file "testfile-wpo-banana.so") + (delete-file "testfile-wpo-banana.wpo") + + (delete-file "testfile-wpo-apple.ss") + (delete-file "testfile-wpo-apple.so") + (delete-file "testfile-wpo-apple.wpo") + + (delete-file "testfile-wpo-main.ss") + (delete-file "testfile-wpo-main.so") + (delete-file "testfile-wpo-main.wpo") + + #t) + + (begin + (with-output-to-file "testfile-deja-vu-one.ss" + (lambda () + (pretty-print + '(library (testfile-deja-vu-one) + (export a) + (import (scheme)) + (define a 3)))) + 'replace) + (with-output-to-file "testfile-deja-vu-two.ss" + (lambda () + (pretty-print + '(library (testfile-deja-vu-two) + (export b) + (import (scheme) (testfile-deja-vu-one)) + (define b (list 'b a))))) + 'replace) + (with-output-to-file "testfile-deja-vu-dup.ss" + (lambda () + (pretty-print + '(library (testfile-deja-vu-dup) + (export d) + (import (scheme) (testfile-deja-vu-one)) + (define d (list a 'd))))) + 'replace) + (with-output-to-file "testfile-deja-vu-main.ss" + (lambda () + (for-each pretty-print + '((import (scheme) (testfile-deja-vu-one) (testfile-deja-vu-two) (testfile-deja-vu-dup)) + (pretty-print (list a b d))))) + 'replace) + (separate-eval + '(parameterize ([generate-wpo-files #t]) + (compile-library "testfile-deja-vu-one") + (compile-library "testfile-deja-vu-two") + (compile-library "testfile-deja-vu-dup") + (compile-program "testfile-deja-vu-main") + (compile-whole-library "testfile-deja-vu-one.wpo" "testfile-deja-vu-one.done") + (compile-whole-library "testfile-deja-vu-two.wpo" "testfile-deja-vu-two.done") + (compile-whole-library "testfile-deja-vu-dup.wpo" "testfile-deja-vu-dup.done"))) + #t) + + (error? + (separate-eval + '(compile-whole-program "testfile-deja-vu-main.wpo" "testfile-deja-vu-main.done"))) + + (begin + (do ([stem '("one" "two" "dup" "main") (cdr stem)]) ((null? stem)) + (do ([ext '("ss" "so" "wpo" "done") (cdr ext)]) ((null? ext)) + (delete-file (format "testfile-deja-vu-~a.~a" (car stem) (car ext))))) + #t) + ) (mat maybe-compile-whole diff --git a/mats/8.ms b/mats/8.ms index 211007c0ce..9df4853d42 100644 --- a/mats/8.ms +++ b/mats/8.ms @@ -9629,6 +9629,144 @@ (equal? (library-extensions) `(,@'((".a1.sls" . ".a1.so") (".boo" . ".booso") (".crud" . ".junk")) ,@default))))) ) +(mat library-search-handler + (procedure? (library-search-handler)) + (eq? (library-search-handler) default-library-search-handler) + (error? (default-library-search-handler "not-symbol" '(lib) '() '())) + (error? (default-library-search-handler 'import 'bad-library-name '() '())) + (error? (default-library-search-handler 'import '(lib) '(("invalid" "path" "list")) '())) + (error? (default-library-search-handler 'import '(lib) '(("foo" . "bar")) '(("bad") ("extensions")))) + (error? + (parameterize ([library-search-handler + (lambda (who path dir* all-ext*) + (values '(bad source path) #f #f))]) + (eval '(import (foo))))) + (error? + (parameterize ([library-search-handler + (lambda (who path dir* all-ext*) + (values #f '(bad object path) #f))]) + (eval '(import (foo))))) + (error? + (parameterize ([library-search-handler + (lambda (who path dir* all-ext*) + (values #f #f #t))]) + (eval '(import (foo))))) + (begin + (mkdir "lsh-testdir") + (mkdir "lsh-testdir/src1") + (mkdir "lsh-testdir/src2") + (mkdir "lsh-testdir/obj") + #t) + (begin + (with-output-to-file "lsh-testdir/src1/lib.ss" + (lambda () + (pretty-print + '(library (lib) (export a) (import (scheme)) + (define a "src1 provided this a")))) + 'replace) + (with-output-to-file "lsh-testdir/src2/lib.ss" + (lambda () + (pretty-print + '(library (lib) (export a) (import (scheme)) + (define a "a from src2")))) + 'replace) + (with-output-to-file "lsh-testdir/src2/foo.ss" + (lambda () + (pretty-print + '(library (foo) (export a) (import (scheme) (lib))))) + 'replace) + (parameterize ([generate-wpo-files #t] + [compile-imported-libraries #t] + [library-directories '(("src2" . "obj"))]) + (compile-file "lsh-testdir/src2/lib.ss" "lsh-testdir/obj/lib.so") + (compile-file "lsh-testdir/src2/foo.ss" "lsh-testdir/obj/foo.so")) + #t) + (equal? + "a from src2\n" + (separate-eval + '(cd "lsh-testdir") + '(library-extensions '((".ss" . ".so"))) + '(library-directories '(("src2" . "obj") ("src1" . "obj"))) + '(library-search-handler + (lambda (who path dir* all-ext*) + (let-values ([(src-path obj-path obj-exists?) + (default-library-search-handler who path dir* all-ext*)]) + (assert (equal? src-path "src2/lib.ss")) + (assert (equal? obj-path "obj/lib.so")) + (assert obj-exists?) + (values src-path obj-path obj-exists?)))) + '(printf "~a\n" (let () (import (lib)) a)))) + (equal? + "src1 provided this a\n" + (separate-eval + '(cd "lsh-testdir") + '(library-extensions '((".ss" . ".so"))) + '(library-directories '(("src2" . "obj") ("src1" . "obj"))) + '(library-search-handler + (lambda (who path dir* all-ext*) + (assert (eq? who 'import)) + (assert (equal? path '(lib))) + (assert (equal? dir* (library-directories))) + (assert (equal? all-ext* (library-extensions))) + ;; switcheroo + (values "src1/lib.ss" #f #f))) + '(printf "~a\n" (let () (import (lib)) a)))) + (equal? + (string-append + "compiling src1/lib.ss with output to obj/lib-compiled.so\n" + "src1 provided this a\n") + (separate-eval + '(cd "lsh-testdir") + '(compile-imported-libraries #t) + '(library-search-handler + (lambda (who path dir* all-ext*) + (values "src1/lib.ss" "obj/lib-compiled.so" #f))) + '(printf "~a\n" (let () (import (lib)) a)))) + ;; the default library-search-handler finds obj/lib.wpo + ;; so no libraries are needed at run time + (equal? + "()\n" + (separate-eval + '(cd "lsh-testdir") + '(library-extensions '((".ss" . ".so"))) + '(library-directories '(("src1" . "obj") ("src2" . "obj"))) + '(compile-whole-library "obj/foo.wpo" "foo.library"))) + (equal? + "((lib))\n" + (separate-eval + '(cd "lsh-testdir") + '(library-extensions '((".ss" . ".so"))) + '(library-directories '(("src1" . "obj") ("src2" . "obj"))) + '(define (check who path dir*) + (assert (eq? who 'compile-whole-library)) + (assert (equal? path '(lib))) + (assert (equal? dir* (library-directories)))) + '(library-search-handler + (lambda (who path dir* all-ext*) + (check who path dir*) + (assert (equal? all-ext* '((".ss" . ".wpo")))) + ;; default search finds the wpo file, but ... + (let-values ([(src-path obj-path obj-exists?) + (default-library-search-handler who path dir* all-ext*)]) + ;; user reordered library-directories since compiling the wpo file + (assert (equal? src-path "src1/lib.ss")) + (assert (equal? obj-path "obj/lib.wpo")) + (assert obj-exists?)) + ;; ... we install a new handler that returns the object file instead + (library-search-handler + (lambda (who path dir* all-ext*) + (check who path dir*) + (assert (equal? all-ext* (library-extensions))) + (values #f "obj/lib.so" #t))) + ;; ... and report no .wpo file found so we fall back to the + ;; library-search-handler just installed + (values #f #f #f))) + '(compile-whole-library "obj/foo.wpo" "foo.library"))) + (begin + (rm-rf "lsh-testdir") + #t) +) + (mat compile-imported-libraries (not (compile-imported-libraries)) (begin diff --git a/mats/patch-compile-0-f-t-f b/mats/patch-compile-0-f-t-f index 09d46d10ce..c56bc76226 100644 --- a/mats/patch-compile-0-f-t-f +++ b/mats/patch-compile-0-f-t-f @@ -1,5 +1,5 @@ -*** errors-compile-0-f-f-f 2019-02-11 17:18:14.000000000 -0800 ---- errors-compile-0-f-t-f 2019-02-11 16:37:31.000000000 -0800 +*** errors-compile-0-f-f-f 2019-03-15 12:05:55.397368315 -0400 +--- errors-compile-0-f-t-f 2019-03-15 11:24:12.070638664 -0400 *************** *** 125,131 **** 3.mo:Expected error in mat dipa-letrec: "attempt to reference undefined variable a". @@ -75,7 +75,7 @@ misc.mo:Expected error in mat cpletrec: "attempt to reference undefined variable b". misc.mo:Expected error in mat cpletrec: "attempt to reference undefined variable a". *************** -*** 7169,7176 **** +*** 7170,7177 **** 7.mo:Expected error in mat bytes-allocated: "bytes-allocated: invalid space gnu". 7.mo:Expected error in mat error: "a: hit me!". 7.mo:Expected error in mat error: "f: n is 0". @@ -84,7 +84,7 @@ record.mo:Expected error in mat record2: "invalid value 3 for foreign type double-float". record.mo:Expected error in mat record2: "3 is not of type #". record.mo:Expected error in mat record2: "make-record-type: invalid field list ((immutable double-float a) . b)". ---- 7169,7176 ---- +--- 7170,7177 ---- 7.mo:Expected error in mat bytes-allocated: "bytes-allocated: invalid space gnu". 7.mo:Expected error in mat error: "a: hit me!". 7.mo:Expected error in mat error: "f: n is 0". @@ -94,7 +94,7 @@ record.mo:Expected error in mat record2: "3 is not of type #". record.mo:Expected error in mat record2: "make-record-type: invalid field list ((immutable double-float a) . b)". *************** -*** 7178,7192 **** +*** 7179,7193 **** record.mo:Expected error in mat type-descriptor: "invalid syntax (type-descriptor 3)". record.mo:Expected error in mat type-descriptor: "type-descriptor: unrecognized record car". record.mo:Expected error in mat record3: "variable set-fudge-a! is not bound". @@ -110,7 +110,7 @@ record.mo:Expected error in mat record9: "record-reader: invalid input #f". record.mo:Expected error in mat record9: "record-reader: invalid second argument fudge". record.mo:Expected error in mat record9: "record-reader: invalid second argument fudge". ---- 7178,7192 ---- +--- 7179,7193 ---- record.mo:Expected error in mat type-descriptor: "invalid syntax (type-descriptor 3)". record.mo:Expected error in mat type-descriptor: "type-descriptor: unrecognized record car". record.mo:Expected error in mat record3: "variable set-fudge-a! is not bound". @@ -127,7 +127,7 @@ record.mo:Expected error in mat record9: "record-reader: invalid second argument fudge". record.mo:Expected error in mat record9: "record-reader: invalid second argument fudge". *************** -*** 7199,7224 **** +*** 7200,7225 **** record.mo:Expected error in mat record10: "read: unresolvable cycle constructing record of type # at char 3 of #". record.mo:Expected error in mat record16: "read: unresolvable cycle constructing record of type # at char 3 of #". record.mo:Expected error in mat record16: "read: unresolvable cycle constructing record of type # at char 3 of #". @@ -154,7 +154,7 @@ record.mo:Expected error in mat foreign-data: "foreign-alloc: 0 is not a positive fixnum". record.mo:Expected error in mat foreign-data: "foreign-alloc: is not a positive fixnum". record.mo:Expected error in mat foreign-data: "foreign-alloc: -5 is not a positive fixnum". ---- 7199,7224 ---- +--- 7200,7225 ---- record.mo:Expected error in mat record10: "read: unresolvable cycle constructing record of type # at char 3 of #". record.mo:Expected error in mat record16: "read: unresolvable cycle constructing record of type # at char 3 of #". record.mo:Expected error in mat record16: "read: unresolvable cycle constructing record of type # at char 3 of #". @@ -182,7 +182,7 @@ record.mo:Expected error in mat foreign-data: "foreign-alloc: is not a positive fixnum". record.mo:Expected error in mat foreign-data: "foreign-alloc: -5 is not a positive fixnum". *************** -*** 7349,7387 **** +*** 7350,7388 **** record.mo:Expected error in mat record22: "invalid field specifier (immutable creepy q)". record.mo:Expected error in mat record22: "invalid field specifier (immutable creepy q)". record.mo:Expected error in mat record23: "make-record-type: cannot extend sealed record type #". @@ -222,7 +222,7 @@ record.mo:Expected error in mat record?: "record?: 4 is not a record type descriptor". record.mo:Expected error in mat record?: "record?: a is not a record type descriptor". record.mo:Expected error in mat record?: "record?: #(1) is not a record type descriptor". ---- 7349,7387 ---- +--- 7350,7388 ---- record.mo:Expected error in mat record22: "invalid field specifier (immutable creepy q)". record.mo:Expected error in mat record22: "invalid field specifier (immutable creepy q)". record.mo:Expected error in mat record23: "make-record-type: cannot extend sealed record type #". @@ -263,7 +263,7 @@ record.mo:Expected error in mat record?: "record?: a is not a record type descriptor". record.mo:Expected error in mat record?: "record?: #(1) is not a record type descriptor". *************** -*** 7396,7452 **** +*** 7397,7453 **** record.mo:Expected error in mat r6rs-records-procedural: "make-record-constructor-descriptor: invalid protocol flimflam". record.mo:Expected error in mat r6rs-records-procedural: "attempt to apply non-procedure not-a-procedure". record.mo:Expected error in mat r6rs-records-procedural: "attempt to apply non-procedure spam". @@ -321,7 +321,7 @@ record.mo:Expected error in mat r6rs-records-syntactic: "define-record-type: incompatible record type cpoint - different parent". record.mo:Expected error in mat r6rs-records-syntactic: "define-record-type: incompatible record type cpoint - different parent". record.mo:Expected error in mat r6rs-records-syntactic: "cannot extend define-record-type parent fratrat". ---- 7396,7452 ---- +--- 7397,7453 ---- record.mo:Expected error in mat r6rs-records-procedural: "make-record-constructor-descriptor: invalid protocol flimflam". record.mo:Expected error in mat r6rs-records-procedural: "attempt to apply non-procedure not-a-procedure". record.mo:Expected error in mat r6rs-records-procedural: "attempt to apply non-procedure spam". diff --git a/mats/patch-compile-0-t-f-f b/mats/patch-compile-0-t-f-f index 9cc6c4a0ba..1b7fdfb48f 100644 --- a/mats/patch-compile-0-t-f-f +++ b/mats/patch-compile-0-t-f-f @@ -1,5 +1,5 @@ -*** errors-compile-0-f-f-f 2019-02-11 17:18:14.000000000 -0800 ---- errors-compile-0-t-f-f 2019-02-11 16:46:49.000000000 -0800 +*** errors-compile-0-f-f-f 2019-03-15 12:05:55.397368315 -0400 +--- errors-compile-0-t-f-f 2019-03-15 11:33:18.696675715 -0400 *************** *** 93,99 **** 3.mo:Expected error in mat case-lambda: "incorrect number of arguments to #". @@ -4252,9 +4252,9 @@ 7.mo:Expected error in mat compile-whole-program: "separate-eval: Exception: library (testfile-wpo-a4) not found 7.mo:Expected error in mat compile-whole-program: "separate-eval: Exception: library (testfile-wpo-c4) not found *************** -*** 7067,7093 **** - 7.mo:Expected error in mat compile-whole-library: "separate-eval: Exception: library (testfile-cwl-c6) not found +*** 7068,7094 **** 7.mo:Expected error in mat compile-whole-library: "separate-compile: Exception in compile-whole-library: encountered visit-only run-time library (testfile-cwl-a9) while processing file "testfile-cwl-a9.wpo" + 7.mo:Expected error in mat compile-whole-library: "separate-eval: Exception in compile-whole-program: encountered library (testfile-deja-vu-one) in testfile-deja-vu-dup.wpo, but had already encountered it in testfile-deja-vu-two.wpo 7.mo:Expected error in mat top-level-value-functions: "top-level-bound?: "hello" is not a symbol". ! 7.mo:Expected error in mat top-level-value-functions: "incorrect argument count in call (top-level-bound?)". 7.mo:Expected error in mat top-level-value-functions: "top-level-bound?: 45 is not a symbol". @@ -4280,9 +4280,9 @@ 7.mo:Expected error in mat top-level-value-functions: "define-top-level-value: hello is not an environment". 7.mo:Expected error in mat top-level-value-functions: "define-top-level-value: # is not a symbol". 7.mo:Expected error in mat top-level-value-functions: "variable i-am-not-bound-i-hope is not bound". ---- 7067,7093 ---- - 7.mo:Expected error in mat compile-whole-library: "separate-eval: Exception: library (testfile-cwl-c6) not found +--- 7068,7094 ---- 7.mo:Expected error in mat compile-whole-library: "separate-compile: Exception in compile-whole-library: encountered visit-only run-time library (testfile-cwl-a9) while processing file "testfile-cwl-a9.wpo" + 7.mo:Expected error in mat compile-whole-library: "separate-eval: Exception in compile-whole-program: encountered library (testfile-deja-vu-one) in testfile-deja-vu-dup.wpo, but had already encountered it in testfile-deja-vu-two.wpo 7.mo:Expected error in mat top-level-value-functions: "top-level-bound?: "hello" is not a symbol". ! 7.mo:Expected error in mat top-level-value-functions: "incorrect number of arguments to #". 7.mo:Expected error in mat top-level-value-functions: "top-level-bound?: 45 is not a symbol". @@ -4309,7 +4309,7 @@ 7.mo:Expected error in mat top-level-value-functions: "define-top-level-value: # is not a symbol". 7.mo:Expected error in mat top-level-value-functions: "variable i-am-not-bound-i-hope is not bound". *************** -*** 7492,7602 **** +*** 7493,7603 **** hash.mo:Expected error in mat old-hash-table: "hash-table-for-each: ((a . b)) is not an eq hashtable". hash.mo:Expected error in mat old-hash-table: "incorrect number of arguments to #". hash.mo:Expected error in mat old-hash-table: "incorrect number of arguments to #". @@ -4421,7 +4421,7 @@ hash.mo:Expected error in mat hashtable-arguments: "hashtable-ephemeron?: (hash . table) is not a hashtable". hash.mo:Expected error in mat hash-return-value: "hashtable-ref: invalid hash-function # return value "oops" for any". hash.mo:Expected error in mat hash-return-value: "hashtable-ref: invalid hash-function # return value 3.5 for any". ---- 7492,7602 ---- +--- 7493,7603 ---- hash.mo:Expected error in mat old-hash-table: "hash-table-for-each: ((a . b)) is not an eq hashtable". hash.mo:Expected error in mat old-hash-table: "incorrect number of arguments to #". hash.mo:Expected error in mat old-hash-table: "incorrect number of arguments to #". @@ -4534,7 +4534,7 @@ hash.mo:Expected error in mat hash-return-value: "hashtable-ref: invalid hash-function # return value "oops" for any". hash.mo:Expected error in mat hash-return-value: "hashtable-ref: invalid hash-function # return value 3.5 for any". *************** -*** 7616,7722 **** +*** 7617,7723 **** hash.mo:Expected error in mat hash-return-value: "hashtable-delete!: invalid hash-function # return value "oops" for any". hash.mo:Expected error in mat hash-return-value: "hashtable-delete!: invalid hash-function # return value 3.5 for any". hash.mo:Expected error in mat hash-return-value: "hashtable-delete!: invalid hash-function # return value 1+2i for any". @@ -4642,7 +4642,7 @@ hash.mo:Expected error in mat eqv-hashtable-arguments: "make-ephemeron-eqv-hashtable: invalid size argument -1". hash.mo:Expected error in mat eqv-hashtable-arguments: "make-ephemeron-eqv-hashtable: invalid size argument #t". hash.mo:Expected error in mat eqv-hashtable-arguments: "make-ephemeron-eqv-hashtable: invalid size argument #f". ---- 7616,7722 ---- +--- 7617,7723 ---- hash.mo:Expected error in mat hash-return-value: "hashtable-delete!: invalid hash-function # return value "oops" for any". hash.mo:Expected error in mat hash-return-value: "hashtable-delete!: invalid hash-function # return value 3.5 for any". hash.mo:Expected error in mat hash-return-value: "hashtable-delete!: invalid hash-function # return value 1+2i for any". @@ -4751,7 +4751,7 @@ hash.mo:Expected error in mat eqv-hashtable-arguments: "make-ephemeron-eqv-hashtable: invalid size argument #t". hash.mo:Expected error in mat eqv-hashtable-arguments: "make-ephemeron-eqv-hashtable: invalid size argument #f". *************** -*** 7724,7739 **** +*** 7725,7740 **** hash.mo:Expected error in mat generic-hashtable: "hashtable-delete!: # is not mutable". hash.mo:Expected error in mat generic-hashtable: "hashtable-update!: # is not mutable". hash.mo:Expected error in mat generic-hashtable: "hashtable-update!: # is not mutable". @@ -4768,7 +4768,7 @@ hash.mo:Expected error in mat hash-functions: "string-ci-hash: hello is not a string". hash.mo:Expected error in mat fasl-other-hashtable: "fasl-write: invalid fasl object #". hash.mo:Expected error in mat fasl-other-hashtable: "fasl-write: invalid fasl object #". ---- 7724,7739 ---- +--- 7725,7740 ---- hash.mo:Expected error in mat generic-hashtable: "hashtable-delete!: # is not mutable". hash.mo:Expected error in mat generic-hashtable: "hashtable-update!: # is not mutable". hash.mo:Expected error in mat generic-hashtable: "hashtable-update!: # is not mutable". @@ -4786,7 +4786,7 @@ hash.mo:Expected error in mat fasl-other-hashtable: "fasl-write: invalid fasl object #". hash.mo:Expected error in mat fasl-other-hashtable: "fasl-write: invalid fasl object #". *************** -*** 7849,7856 **** +*** 7850,7857 **** 8.mo:Expected error in mat with-syntax: "invalid syntax a". 8.mo:Expected error in mat with-syntax: "duplicate pattern variable x in (x x)". 8.mo:Expected error in mat with-syntax: "duplicate pattern variable x in (x x)". @@ -4795,7 +4795,7 @@ 8.mo:Expected error in mat generate-temporaries: "generate-temporaries: improper list structure (a b . c)". 8.mo:Expected error in mat generate-temporaries: "generate-temporaries: cyclic list structure (a b c b c b ...)". 8.mo:Expected error in mat syntax->list: "syntax->list: invalid argument #". ---- 7849,7856 ---- +--- 7850,7857 ---- 8.mo:Expected error in mat with-syntax: "invalid syntax a". 8.mo:Expected error in mat with-syntax: "duplicate pattern variable x in (x x)". 8.mo:Expected error in mat with-syntax: "duplicate pattern variable x in (x x)". @@ -4805,7 +4805,7 @@ 8.mo:Expected error in mat generate-temporaries: "generate-temporaries: cyclic list structure (a b c b c b ...)". 8.mo:Expected error in mat syntax->list: "syntax->list: invalid argument #". *************** -*** 8439,8454 **** +*** 8447,8462 **** 8.mo:Expected error in mat rnrs-eval: "attempt to assign unbound identifier foo". 8.mo:Expected error in mat rnrs-eval: "invalid definition in immutable environment (define cons (quote #))". 8.mo:Expected error in mat top-level-syntax-functions: "top-level-syntax: "hello" is not a symbol". @@ -4822,7 +4822,7 @@ 8.mo:Expected error in mat top-level-syntax-functions: "define-top-level-syntax: hello is not an environment". 8.mo:Expected error in mat top-level-syntax-functions: "define-top-level-syntax: # is not a symbol". 8.mo:Expected error in mat top-level-syntax-functions: "define-top-level-syntax: cannot modify immutable environment #". ---- 8439,8454 ---- +--- 8447,8462 ---- 8.mo:Expected error in mat rnrs-eval: "attempt to assign unbound identifier foo". 8.mo:Expected error in mat rnrs-eval: "invalid definition in immutable environment (define cons (quote #))". 8.mo:Expected error in mat top-level-syntax-functions: "top-level-syntax: "hello" is not a symbol". @@ -4840,7 +4840,7 @@ 8.mo:Expected error in mat top-level-syntax-functions: "define-top-level-syntax: # is not a symbol". 8.mo:Expected error in mat top-level-syntax-functions: "define-top-level-syntax: cannot modify immutable environment #". *************** -*** 8547,8569 **** +*** 8555,8577 **** fx.mo:Expected error in mat fx=?: "fx=?: (a) is not a fixnum". fx.mo:Expected error in mat fx=?: "fx=?: is not a fixnum". fx.mo:Expected error in mat fx=?: "fx=?: <-int> is not a fixnum". @@ -4864,7 +4864,7 @@ fx.mo:Expected error in mat $fxu<: "incorrect number of arguments to #". fx.mo:Expected error in mat $fxu<: "incorrect number of arguments to #". fx.mo:Expected error in mat $fxu<: "$fxu<: <-int> is not a fixnum". ---- 8547,8569 ---- +--- 8555,8577 ---- fx.mo:Expected error in mat fx=?: "fx=?: (a) is not a fixnum". fx.mo:Expected error in mat fx=?: "fx=?: is not a fixnum". fx.mo:Expected error in mat fx=?: "fx=?: <-int> is not a fixnum". @@ -4889,7 +4889,7 @@ fx.mo:Expected error in mat $fxu<: "incorrect number of arguments to #". fx.mo:Expected error in mat $fxu<: "$fxu<: <-int> is not a fixnum". *************** -*** 8595,8607 **** +*** 8603,8615 **** fx.mo:Expected error in mat r6rs:fx-: "fx-: #f is not a fixnum". fx.mo:Expected error in mat r6rs:fx-: "fx-: #f is not a fixnum". fx.mo:Expected error in mat fx*: "fx*: (a . b) is not a fixnum". @@ -4903,7 +4903,7 @@ fx.mo:Expected error in mat r6rs:fx*: "fx*: is not a fixnum". fx.mo:Expected error in mat r6rs:fx*: "fx*: <-int> is not a fixnum". fx.mo:Expected error in mat r6rs:fx*: "fx*: #f is not a fixnum". ---- 8595,8607 ---- +--- 8603,8615 ---- fx.mo:Expected error in mat r6rs:fx-: "fx-: #f is not a fixnum". fx.mo:Expected error in mat r6rs:fx-: "fx-: #f is not a fixnum". fx.mo:Expected error in mat fx*: "fx*: (a . b) is not a fixnum". @@ -4918,7 +4918,7 @@ fx.mo:Expected error in mat r6rs:fx*: "fx*: <-int> is not a fixnum". fx.mo:Expected error in mat r6rs:fx*: "fx*: #f is not a fixnum". *************** -*** 8651,8663 **** +*** 8659,8671 **** fx.mo:Expected error in mat fx1+: "fx1+: <-int> is not a fixnum". fx.mo:Expected error in mat fx1+: "fx1+: is not a fixnum". fx.mo:Expected error in mat fx1+: "fx1+: a is not a fixnum". @@ -4932,7 +4932,7 @@ fx.mo:Expected error in mat fxmax: "fxmax: a is not a fixnum". fx.mo:Expected error in mat fxmax: "fxmax: is not a fixnum". fx.mo:Expected error in mat fxmax: "fxmax: <-int> is not a fixnum". ---- 8651,8663 ---- +--- 8659,8671 ---- fx.mo:Expected error in mat fx1+: "fx1+: <-int> is not a fixnum". fx.mo:Expected error in mat fx1+: "fx1+: is not a fixnum". fx.mo:Expected error in mat fx1+: "fx1+: a is not a fixnum". @@ -4947,7 +4947,7 @@ fx.mo:Expected error in mat fxmax: "fxmax: is not a fixnum". fx.mo:Expected error in mat fxmax: "fxmax: <-int> is not a fixnum". *************** -*** 8755,8764 **** +*** 8763,8772 **** fx.mo:Expected error in mat fxarithmetic-shift: "fxarithmetic-shift: fixnum overflow with arguments and 10". fx.mo:Expected error in mat fxarithmetic-shift: "fxarithmetic-shift: fixnum overflow with arguments -4097 and ". fx.mo:Expected error in mat fxarithmetic-shift: "fxarithmetic-shift: fixnum overflow with arguments <-int> and 1". @@ -4958,7 +4958,7 @@ fx.mo:Expected error in mat fxbit-field: "fxbit-field: 35.0 is not a fixnum". fx.mo:Expected error in mat fxbit-field: "fxbit-field: 5.0 is not a valid start index". fx.mo:Expected error in mat fxbit-field: "fxbit-field: 8.0 is not a valid end index". ---- 8755,8764 ---- +--- 8763,8772 ---- fx.mo:Expected error in mat fxarithmetic-shift: "fxarithmetic-shift: fixnum overflow with arguments and 10". fx.mo:Expected error in mat fxarithmetic-shift: "fxarithmetic-shift: fixnum overflow with arguments -4097 and ". fx.mo:Expected error in mat fxarithmetic-shift: "fxarithmetic-shift: fixnum overflow with arguments <-int> and 1". @@ -4970,7 +4970,7 @@ fx.mo:Expected error in mat fxbit-field: "fxbit-field: 5.0 is not a valid start index". fx.mo:Expected error in mat fxbit-field: "fxbit-field: 8.0 is not a valid end index". *************** -*** 8772,8805 **** +*** 8780,8813 **** fx.mo:Expected error in mat fxbit-field: "fxbit-field: is not a valid end index". fx.mo:Expected error in mat fxbit-field: "fxbit-field: is not a valid start index". fx.mo:Expected error in mat fxbit-field: "fxbit-field: is not a valid end index". @@ -5005,7 +5005,7 @@ fx.mo:Expected error in mat fxif: "fxif: a is not a fixnum". fx.mo:Expected error in mat fxif: "fxif: 3.4 is not a fixnum". fx.mo:Expected error in mat fxif: "fxif: (a) is not a fixnum". ---- 8772,8805 ---- +--- 8780,8813 ---- fx.mo:Expected error in mat fxbit-field: "fxbit-field: is not a valid end index". fx.mo:Expected error in mat fxbit-field: "fxbit-field: is not a valid start index". fx.mo:Expected error in mat fxbit-field: "fxbit-field: is not a valid end index". @@ -5041,7 +5041,7 @@ fx.mo:Expected error in mat fxif: "fxif: 3.4 is not a fixnum". fx.mo:Expected error in mat fxif: "fxif: (a) is not a fixnum". *************** -*** 8809,8852 **** +*** 8817,8860 **** fx.mo:Expected error in mat fxif: "fxif: <-int> is not a fixnum". fx.mo:Expected error in mat fxif: "fxif: <-int> is not a fixnum". fx.mo:Expected error in mat fxif: "fxif: <-int> is not a fixnum". @@ -5086,7 +5086,7 @@ fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: 3.4 is not a fixnum". fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: "3" is not a fixnum". fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: is not a fixnum". ---- 8809,8852 ---- +--- 8817,8860 ---- fx.mo:Expected error in mat fxif: "fxif: <-int> is not a fixnum". fx.mo:Expected error in mat fxif: "fxif: <-int> is not a fixnum". fx.mo:Expected error in mat fxif: "fxif: <-int> is not a fixnum". @@ -5132,7 +5132,7 @@ fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: "3" is not a fixnum". fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: is not a fixnum". *************** -*** 8855,8865 **** +*** 8863,8873 **** fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: invalid bit index -1". fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: invalid bit index ". fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: invalid bit index ". @@ -5144,7 +5144,7 @@ fx.mo:Expected error in mat fxcopy-bit-field: "fxcopy-bit-field: "3" is not a fixnum". fx.mo:Expected error in mat fxcopy-bit-field: "fxcopy-bit-field: 3.4 is not a valid start index". fx.mo:Expected error in mat fxcopy-bit-field: "fxcopy-bit-field: 3/4 is not a valid end index". ---- 8855,8865 ---- +--- 8863,8873 ---- fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: invalid bit index -1". fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: invalid bit index ". fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: invalid bit index ". @@ -5157,7 +5157,7 @@ fx.mo:Expected error in mat fxcopy-bit-field: "fxcopy-bit-field: 3.4 is not a valid start index". fx.mo:Expected error in mat fxcopy-bit-field: "fxcopy-bit-field: 3/4 is not a valid end index". *************** -*** 8919,8928 **** +*** 8927,8936 **** fx.mo:Expected error in mat fxdiv0-and-mod0: "fxmod0: (a) is not a fixnum". fx.mo:Expected error in mat fxdiv0-and-mod0: "fxmod0: undefined for 0". fx.mo:Expected error in mat fxdiv0-and-mod0: "fxmod0: undefined for 0". @@ -5168,7 +5168,7 @@ fx.mo:Expected error in mat fx+/carry: "fx+/carry: 1.0 is not a fixnum". fx.mo:Expected error in mat fx+/carry: "fx+/carry: 2.0 is not a fixnum". fx.mo:Expected error in mat fx+/carry: "fx+/carry: 3.0 is not a fixnum". ---- 8919,8928 ---- +--- 8927,8936 ---- fx.mo:Expected error in mat fxdiv0-and-mod0: "fxmod0: (a) is not a fixnum". fx.mo:Expected error in mat fxdiv0-and-mod0: "fxmod0: undefined for 0". fx.mo:Expected error in mat fxdiv0-and-mod0: "fxmod0: undefined for 0". @@ -5180,7 +5180,7 @@ fx.mo:Expected error in mat fx+/carry: "fx+/carry: 2.0 is not a fixnum". fx.mo:Expected error in mat fx+/carry: "fx+/carry: 3.0 is not a fixnum". *************** -*** 8938,8947 **** +*** 8946,8955 **** fx.mo:Expected error in mat fx+/carry: "fx+/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx+/carry: "fx+/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx+/carry: "fx+/carry: <-int> is not a fixnum". @@ -5191,7 +5191,7 @@ fx.mo:Expected error in mat fx-/carry: "fx-/carry: 1.0 is not a fixnum". fx.mo:Expected error in mat fx-/carry: "fx-/carry: 2.0 is not a fixnum". fx.mo:Expected error in mat fx-/carry: "fx-/carry: 3.0 is not a fixnum". ---- 8938,8947 ---- +--- 8946,8955 ---- fx.mo:Expected error in mat fx+/carry: "fx+/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx+/carry: "fx+/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx+/carry: "fx+/carry: <-int> is not a fixnum". @@ -5203,7 +5203,7 @@ fx.mo:Expected error in mat fx-/carry: "fx-/carry: 2.0 is not a fixnum". fx.mo:Expected error in mat fx-/carry: "fx-/carry: 3.0 is not a fixnum". *************** -*** 8957,8966 **** +*** 8965,8974 **** fx.mo:Expected error in mat fx-/carry: "fx-/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx-/carry: "fx-/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx-/carry: "fx-/carry: <-int> is not a fixnum". @@ -5214,7 +5214,7 @@ fx.mo:Expected error in mat fx*/carry: "fx*/carry: 1.0 is not a fixnum". fx.mo:Expected error in mat fx*/carry: "fx*/carry: 2.0 is not a fixnum". fx.mo:Expected error in mat fx*/carry: "fx*/carry: 3.0 is not a fixnum". ---- 8957,8966 ---- +--- 8965,8974 ---- fx.mo:Expected error in mat fx-/carry: "fx-/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx-/carry: "fx-/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx-/carry: "fx-/carry: <-int> is not a fixnum". @@ -5226,7 +5226,7 @@ fx.mo:Expected error in mat fx*/carry: "fx*/carry: 2.0 is not a fixnum". fx.mo:Expected error in mat fx*/carry: "fx*/carry: 3.0 is not a fixnum". *************** -*** 8976,8986 **** +*** 8984,8994 **** fx.mo:Expected error in mat fx*/carry: "fx*/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx*/carry: "fx*/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx*/carry: "fx*/carry: <-int> is not a fixnum". @@ -5238,7 +5238,7 @@ fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: a is not a fixnum". fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid start index 0.0". fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid end index 2.0". ---- 8976,8986 ---- +--- 8984,8994 ---- fx.mo:Expected error in mat fx*/carry: "fx*/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx*/carry: "fx*/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx*/carry: "fx*/carry: <-int> is not a fixnum". @@ -5251,7 +5251,7 @@ fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid start index 0.0". fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid end index 2.0". *************** -*** 9003,9012 **** +*** 9011,9020 **** fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid end index ". fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid end index ". fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: count 1 is greater than difference between end index 5 and start index 5". @@ -5262,7 +5262,7 @@ fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: a is not a fixnum". fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid start index 0.0". fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid end index 2.0". ---- 9003,9012 ---- +--- 9011,9020 ---- fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid end index ". fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid end index ". fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: count 1 is greater than difference between end index 5 and start index 5". @@ -5274,7 +5274,7 @@ fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid start index 0.0". fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid end index 2.0". *************** -*** 9022,9039 **** +*** 9030,9047 **** fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid end index ". fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid end index <-int>". fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: start index 7 is greater than end index 5". @@ -5293,7 +5293,7 @@ fl.mo:Expected error in mat fl=: "fl=: (a) is not a flonum". fl.mo:Expected error in mat fl=: "fl=: a is not a flonum". fl.mo:Expected error in mat fl=: "fl=: a is not a flonum". ---- 9022,9039 ---- +--- 9030,9047 ---- fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid end index ". fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid end index <-int>". fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: start index 7 is greater than end index 5". @@ -5313,7 +5313,7 @@ fl.mo:Expected error in mat fl=: "fl=: a is not a flonum". fl.mo:Expected error in mat fl=: "fl=: a is not a flonum". *************** -*** 9041,9047 **** +*** 9049,9055 **** fl.mo:Expected error in mat fl=: "fl=: 3 is not a flonum". fl.mo:Expected error in mat fl=: "fl=: 7/2 is not a flonum". fl.mo:Expected error in mat fl=: "fl=: 7/2 is not a flonum". @@ -5321,7 +5321,7 @@ fl.mo:Expected error in mat fl<: "fl<: (a) is not a flonum". fl.mo:Expected error in mat fl<: "fl<: a is not a flonum". fl.mo:Expected error in mat fl<: "fl<: a is not a flonum". ---- 9041,9047 ---- +--- 9049,9055 ---- fl.mo:Expected error in mat fl=: "fl=: 3 is not a flonum". fl.mo:Expected error in mat fl=: "fl=: 7/2 is not a flonum". fl.mo:Expected error in mat fl=: "fl=: 7/2 is not a flonum". @@ -5330,7 +5330,7 @@ fl.mo:Expected error in mat fl<: "fl<: a is not a flonum". fl.mo:Expected error in mat fl<: "fl<: a is not a flonum". *************** -*** 9049,9055 **** +*** 9057,9063 **** fl.mo:Expected error in mat fl<: "fl<: 3 is not a flonum". fl.mo:Expected error in mat fl<: "fl<: 7/2 is not a flonum". fl.mo:Expected error in mat fl<: "fl<: 7/2 is not a flonum". @@ -5338,7 +5338,7 @@ fl.mo:Expected error in mat fl>: "fl>: (a) is not a flonum". fl.mo:Expected error in mat fl>: "fl>: a is not a flonum". fl.mo:Expected error in mat fl>: "fl>: a is not a flonum". ---- 9049,9055 ---- +--- 9057,9063 ---- fl.mo:Expected error in mat fl<: "fl<: 3 is not a flonum". fl.mo:Expected error in mat fl<: "fl<: 7/2 is not a flonum". fl.mo:Expected error in mat fl<: "fl<: 7/2 is not a flonum". @@ -5347,7 +5347,7 @@ fl.mo:Expected error in mat fl>: "fl>: a is not a flonum". fl.mo:Expected error in mat fl>: "fl>: a is not a flonum". *************** -*** 9057,9063 **** +*** 9065,9071 **** fl.mo:Expected error in mat fl>: "fl>: 3 is not a flonum". fl.mo:Expected error in mat fl>: "fl>: 7/2 is not a flonum". fl.mo:Expected error in mat fl>: "fl>: 7/2 is not a flonum". @@ -5355,7 +5355,7 @@ fl.mo:Expected error in mat fl<=: "fl<=: (a) is not a flonum". fl.mo:Expected error in mat fl<=: "fl<=: a is not a flonum". fl.mo:Expected error in mat fl<=: "fl<=: a is not a flonum". ---- 9057,9063 ---- +--- 9065,9071 ---- fl.mo:Expected error in mat fl>: "fl>: 3 is not a flonum". fl.mo:Expected error in mat fl>: "fl>: 7/2 is not a flonum". fl.mo:Expected error in mat fl>: "fl>: 7/2 is not a flonum". @@ -5364,7 +5364,7 @@ fl.mo:Expected error in mat fl<=: "fl<=: a is not a flonum". fl.mo:Expected error in mat fl<=: "fl<=: a is not a flonum". *************** -*** 9065,9071 **** +*** 9073,9079 **** fl.mo:Expected error in mat fl<=: "fl<=: 3 is not a flonum". fl.mo:Expected error in mat fl<=: "fl<=: 7/2 is not a flonum". fl.mo:Expected error in mat fl<=: "fl<=: 7/2 is not a flonum". @@ -5372,7 +5372,7 @@ fl.mo:Expected error in mat fl>=: "fl>=: (a) is not a flonum". fl.mo:Expected error in mat fl>=: "fl>=: a is not a flonum". fl.mo:Expected error in mat fl>=: "fl>=: a is not a flonum". ---- 9065,9071 ---- +--- 9073,9079 ---- fl.mo:Expected error in mat fl<=: "fl<=: 3 is not a flonum". fl.mo:Expected error in mat fl<=: "fl<=: 7/2 is not a flonum". fl.mo:Expected error in mat fl<=: "fl<=: 7/2 is not a flonum". @@ -5381,7 +5381,7 @@ fl.mo:Expected error in mat fl>=: "fl>=: a is not a flonum". fl.mo:Expected error in mat fl>=: "fl>=: a is not a flonum". *************** -*** 9073,9112 **** +*** 9081,9120 **** fl.mo:Expected error in mat fl>=: "fl>=: 3 is not a flonum". fl.mo:Expected error in mat fl>=: "fl>=: 7/2 is not a flonum". fl.mo:Expected error in mat fl>=: "fl>=: 7/2 is not a flonum". @@ -5422,7 +5422,7 @@ fl.mo:Expected error in mat fl>=?: "fl>=?: a is not a flonum". fl.mo:Expected error in mat fl>=?: "fl>=?: a is not a flonum". fl.mo:Expected error in mat fl>=?: "fl>=?: 3 is not a flonum". ---- 9073,9112 ---- +--- 9081,9120 ---- fl.mo:Expected error in mat fl>=: "fl>=: 3 is not a flonum". fl.mo:Expected error in mat fl>=: "fl>=: 7/2 is not a flonum". fl.mo:Expected error in mat fl>=: "fl>=: 7/2 is not a flonum". @@ -5464,7 +5464,7 @@ fl.mo:Expected error in mat fl>=?: "fl>=?: a is not a flonum". fl.mo:Expected error in mat fl>=?: "fl>=?: 3 is not a flonum". *************** -*** 9116,9122 **** +*** 9124,9130 **** fl.mo:Expected error in mat fl+: "fl+: (a . b) is not a flonum". fl.mo:Expected error in mat fl+: "fl+: 1 is not a flonum". fl.mo:Expected error in mat fl+: "fl+: 2/3 is not a flonum". @@ -5472,7 +5472,7 @@ fl.mo:Expected error in mat fl-: "fl-: (a . b) is not a flonum". fl.mo:Expected error in mat fl-: "fl-: 1 is not a flonum". fl.mo:Expected error in mat fl-: "fl-: a is not a flonum". ---- 9116,9122 ---- +--- 9124,9130 ---- fl.mo:Expected error in mat fl+: "fl+: (a . b) is not a flonum". fl.mo:Expected error in mat fl+: "fl+: 1 is not a flonum". fl.mo:Expected error in mat fl+: "fl+: 2/3 is not a flonum". @@ -5481,7 +5481,7 @@ fl.mo:Expected error in mat fl-: "fl-: 1 is not a flonum". fl.mo:Expected error in mat fl-: "fl-: a is not a flonum". *************** -*** 9126,9208 **** +*** 9134,9216 **** fl.mo:Expected error in mat fl*: "fl*: (a . b) is not a flonum". fl.mo:Expected error in mat fl*: "fl*: 1 is not a flonum". fl.mo:Expected error in mat fl*: "fl*: 2/3 is not a flonum". @@ -5565,7 +5565,7 @@ fl.mo:Expected error in mat flround: "flround: a is not a flonum". fl.mo:Expected error in mat flround: "flround: 2.0+1.0i is not a flonum". fl.mo:Expected error in mat flround: "flround: 2+1i is not a flonum". ---- 9126,9208 ---- +--- 9134,9216 ---- fl.mo:Expected error in mat fl*: "fl*: (a . b) is not a flonum". fl.mo:Expected error in mat fl*: "fl*: 1 is not a flonum". fl.mo:Expected error in mat fl*: "fl*: 2/3 is not a flonum". @@ -5650,7 +5650,7 @@ fl.mo:Expected error in mat flround: "flround: 2.0+1.0i is not a flonum". fl.mo:Expected error in mat flround: "flround: 2+1i is not a flonum". *************** -*** 9222,9257 **** +*** 9230,9265 **** fl.mo:Expected error in mat flinfinite?: "flinfinite?: 3 is not a flonum". fl.mo:Expected error in mat flinfinite?: "flinfinite?: 3/4 is not a flonum". fl.mo:Expected error in mat flinfinite?: "flinfinite?: hi is not a flonum". @@ -5687,7 +5687,7 @@ fl.mo:Expected error in mat fleven?: "fleven?: a is not a flonum". fl.mo:Expected error in mat fleven?: "fleven?: 3 is not a flonum". fl.mo:Expected error in mat fleven?: "fleven?: 3.2 is not an integer". ---- 9222,9257 ---- +--- 9230,9265 ---- fl.mo:Expected error in mat flinfinite?: "flinfinite?: 3 is not a flonum". fl.mo:Expected error in mat flinfinite?: "flinfinite?: 3/4 is not a flonum". fl.mo:Expected error in mat flinfinite?: "flinfinite?: hi is not a flonum". @@ -5725,7 +5725,7 @@ fl.mo:Expected error in mat fleven?: "fleven?: 3 is not a flonum". fl.mo:Expected error in mat fleven?: "fleven?: 3.2 is not an integer". *************** -*** 9259,9266 **** +*** 9267,9274 **** fl.mo:Expected error in mat fleven?: "fleven?: 1+1i is not a flonum". fl.mo:Expected error in mat fleven?: "fleven?: +inf.0 is not an integer". fl.mo:Expected error in mat fleven?: "fleven?: +nan.0 is not an integer". @@ -5734,7 +5734,7 @@ fl.mo:Expected error in mat flodd?: "flodd?: a is not a flonum". fl.mo:Expected error in mat flodd?: "flodd?: 3 is not a flonum". fl.mo:Expected error in mat flodd?: "flodd?: 3.2 is not an integer". ---- 9259,9266 ---- +--- 9267,9274 ---- fl.mo:Expected error in mat fleven?: "fleven?: 1+1i is not a flonum". fl.mo:Expected error in mat fleven?: "fleven?: +inf.0 is not an integer". fl.mo:Expected error in mat fleven?: "fleven?: +nan.0 is not an integer". @@ -5744,7 +5744,7 @@ fl.mo:Expected error in mat flodd?: "flodd?: 3 is not a flonum". fl.mo:Expected error in mat flodd?: "flodd?: 3.2 is not an integer". *************** -*** 9268,9274 **** +*** 9276,9282 **** fl.mo:Expected error in mat flodd?: "flodd?: 3+1i is not a flonum". fl.mo:Expected error in mat flodd?: "flodd?: +inf.0 is not an integer". fl.mo:Expected error in mat flodd?: "flodd?: +nan.0 is not an integer". @@ -5752,7 +5752,7 @@ fl.mo:Expected error in mat flmin: "flmin: a is not a flonum". fl.mo:Expected error in mat flmin: "flmin: a is not a flonum". fl.mo:Expected error in mat flmin: "flmin: a is not a flonum". ---- 9268,9274 ---- +--- 9276,9282 ---- fl.mo:Expected error in mat flodd?: "flodd?: 3+1i is not a flonum". fl.mo:Expected error in mat flodd?: "flodd?: +inf.0 is not an integer". fl.mo:Expected error in mat flodd?: "flodd?: +nan.0 is not an integer". @@ -5761,7 +5761,7 @@ fl.mo:Expected error in mat flmin: "flmin: a is not a flonum". fl.mo:Expected error in mat flmin: "flmin: a is not a flonum". *************** -*** 9276,9282 **** +*** 9284,9290 **** fl.mo:Expected error in mat flmin: "flmin: a is not a flonum". fl.mo:Expected error in mat flmin: "flmin: 0.0+1.0i is not a flonum". fl.mo:Expected error in mat flmin: "flmin: 0+1i is not a flonum". @@ -5769,7 +5769,7 @@ fl.mo:Expected error in mat flmax: "flmax: a is not a flonum". fl.mo:Expected error in mat flmax: "flmax: a is not a flonum". fl.mo:Expected error in mat flmax: "flmax: 3 is not a flonum". ---- 9276,9282 ---- +--- 9284,9290 ---- fl.mo:Expected error in mat flmin: "flmin: a is not a flonum". fl.mo:Expected error in mat flmin: "flmin: 0.0+1.0i is not a flonum". fl.mo:Expected error in mat flmin: "flmin: 0+1i is not a flonum". @@ -5778,7 +5778,7 @@ fl.mo:Expected error in mat flmax: "flmax: a is not a flonum". fl.mo:Expected error in mat flmax: "flmax: 3 is not a flonum". *************** -*** 9284,9297 **** +*** 9292,9305 **** fl.mo:Expected error in mat flmax: "flmax: a is not a flonum". fl.mo:Expected error in mat flmax: "flmax: 0.0+1.0i is not a flonum". fl.mo:Expected error in mat flmax: "flmax: 0+1i is not a flonum". @@ -5793,7 +5793,7 @@ fl.mo:Expected error in mat fldenominator: "fldenominator: a is not a flonum". fl.mo:Expected error in mat fldenominator: "fldenominator: 3 is not a flonum". fl.mo:Expected error in mat fldenominator: "fldenominator: 0+1i is not a flonum". ---- 9284,9297 ---- +--- 9292,9305 ---- fl.mo:Expected error in mat flmax: "flmax: a is not a flonum". fl.mo:Expected error in mat flmax: "flmax: 0.0+1.0i is not a flonum". fl.mo:Expected error in mat flmax: "flmax: 0+1i is not a flonum". @@ -5809,7 +5809,7 @@ fl.mo:Expected error in mat fldenominator: "fldenominator: 3 is not a flonum". fl.mo:Expected error in mat fldenominator: "fldenominator: 0+1i is not a flonum". *************** -*** 9337,9343 **** +*** 9345,9351 **** cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum". cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum". cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum". @@ -5817,7 +5817,7 @@ cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum". cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum". cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum". ---- 9337,9343 ---- +--- 9345,9351 ---- cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum". cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum". cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum". @@ -5826,7 +5826,7 @@ cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum". cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum". *************** -*** 9347,9360 **** +*** 9355,9368 **** cfl.mo:Expected error in mat cfl/: "cfl/: a is not a cflonum". cfl.mo:Expected error in mat cfl/: "cfl/: a is not a cflonum". cfl.mo:Expected error in mat cfl/: "cfl/: a is not a cflonum". @@ -5841,7 +5841,7 @@ foreign.mo:Expected error in mat load-shared-object: "load-shared-object: invalid path 3". foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: no entry for "i do not exist"". foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: no entry for "i do not exist"". ---- 9347,9360 ---- +--- 9355,9368 ---- cfl.mo:Expected error in mat cfl/: "cfl/: a is not a cflonum". cfl.mo:Expected error in mat cfl/: "cfl/: a is not a cflonum". cfl.mo:Expected error in mat cfl/: "cfl/: a is not a cflonum". @@ -5857,7 +5857,7 @@ foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: no entry for "i do not exist"". foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: no entry for "i do not exist"". *************** -*** 9389,9396 **** +*** 9397,9404 **** foreign.mo:Expected error in mat foreign-procedure: "id: invalid foreign-procedure argument foo". foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: invalid foreign procedure handle abcde". foreign.mo:Expected error in mat foreign-procedure: "float_id: invalid foreign-procedure argument 0". @@ -5866,7 +5866,7 @@ foreign.mo:Expected error in mat foreign-sizeof: "foreign-sizeof: invalid foreign type specifier i-am-not-a-type". foreign.mo:Expected error in mat foreign-sizeof: "foreign-sizeof: invalid foreign type specifier 1". foreign.mo:Expected error in mat foreign-bytevectors: "u8*->u8*: invalid foreign-procedure argument "hello"". ---- 9389,9396 ---- +--- 9397,9404 ---- foreign.mo:Expected error in mat foreign-procedure: "id: invalid foreign-procedure argument foo". foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: invalid foreign procedure handle abcde". foreign.mo:Expected error in mat foreign-procedure: "float_id: invalid foreign-procedure argument 0". @@ -5876,7 +5876,7 @@ foreign.mo:Expected error in mat foreign-sizeof: "foreign-sizeof: invalid foreign type specifier 1". foreign.mo:Expected error in mat foreign-bytevectors: "u8*->u8*: invalid foreign-procedure argument "hello"". *************** -*** 9888,9900 **** +*** 9896,9908 **** unix.mo:Expected error in mat file-operations: "file-access-time: failed for "testlink": no such file or directory". unix.mo:Expected error in mat file-operations: "file-change-time: failed for "testlink": no such file or directory". unix.mo:Expected error in mat file-operations: "file-modification-time: failed for "testlink": no such file or directory". @@ -5890,7 +5890,7 @@ windows.mo:Expected error in mat registry: "get-registry: pooh is not a string". windows.mo:Expected error in mat registry: "put-registry!: 3 is not a string". windows.mo:Expected error in mat registry: "put-registry!: 3 is not a string". ---- 9888,9900 ---- +--- 9896,9908 ---- unix.mo:Expected error in mat file-operations: "file-access-time: failed for "testlink": no such file or directory". unix.mo:Expected error in mat file-operations: "file-change-time: failed for "testlink": no such file or directory". unix.mo:Expected error in mat file-operations: "file-modification-time: failed for "testlink": no such file or directory". @@ -5905,7 +5905,7 @@ windows.mo:Expected error in mat registry: "put-registry!: 3 is not a string". windows.mo:Expected error in mat registry: "put-registry!: 3 is not a string". *************** -*** 9922,9993 **** +*** 9930,10001 **** ieee.mo:Expected error in mat flonum->fixnum: "flonum->fixnum: result for -inf.0 would be outside of fixnum range". ieee.mo:Expected error in mat flonum->fixnum: "flonum->fixnum: result for +nan.0 would be outside of fixnum range". ieee.mo:Expected error in mat fllp: "fllp: 3 is not a flonum". @@ -5978,7 +5978,7 @@ date.mo:Expected error in mat time: "time>=?: 3 is not a time record". date.mo:Expected error in mat time: "time>=?: # is not a time record". date.mo:Expected error in mat time: "time>=?: types of