aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure18
-rw-r--r--configure.ac2
-rw-r--r--configure.ac.pamphlet2
-rw-r--r--src/ChangeLog41
-rw-r--r--src/algebra/Makefile.in16
-rw-r--r--src/algebra/Makefile.pamphlet16
-rw-r--r--src/algebra/ffcat.spad.pamphlet3
-rw-r--r--src/algebra/fff.spad.pamphlet4
-rw-r--r--src/algebra/groebsol.spad.pamphlet8
-rw-r--r--src/algebra/intfact.spad.pamphlet6
-rw-r--r--src/algebra/mkfunc.spad.pamphlet2
-rw-r--r--src/algebra/numtheor.spad.pamphlet3
-rw-r--r--src/algebra/permgrps.spad.pamphlet5
-rw-r--r--src/algebra/random.spad.pamphlet1
-rw-r--r--src/algebra/sgcf.spad.pamphlet2
-rw-r--r--src/algebra/triset.spad.pamphlet1
-rw-r--r--src/algebra/twofact.spad.pamphlet1
-rw-r--r--src/interp/compiler.boot2
-rw-r--r--src/interp/g-error.boot21
-rw-r--r--src/interp/iterator.boot5
-rw-r--r--src/interp/wi1.boot5
21 files changed, 115 insertions, 49 deletions
diff --git a/configure b/configure
index 3a1eeb8a..d138b211 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.60 for OpenAxiom 1.2.0-2008-05-08.
+# Generated by GNU Autoconf 2.60 for OpenAxiom 1.2.0-2008-05-10.
#
# Report bugs to <open-axiom-bugs@lists.sf.net>.
#
@@ -713,8 +713,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='OpenAxiom'
PACKAGE_TARNAME='openaxiom'
-PACKAGE_VERSION='1.2.0-2008-05-08'
-PACKAGE_STRING='OpenAxiom 1.2.0-2008-05-08'
+PACKAGE_VERSION='1.2.0-2008-05-10'
+PACKAGE_STRING='OpenAxiom 1.2.0-2008-05-10'
PACKAGE_BUGREPORT='open-axiom-bugs@lists.sf.net'
ac_unique_file="src/Makefile.pamphlet"
@@ -1402,7 +1402,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures OpenAxiom 1.2.0-2008-05-08 to adapt to many kinds of systems.
+\`configure' configures OpenAxiom 1.2.0-2008-05-10 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1472,7 +1472,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of OpenAxiom 1.2.0-2008-05-08:";;
+ short | recursive ) echo "Configuration of OpenAxiom 1.2.0-2008-05-10:";;
esac
cat <<\_ACEOF
@@ -1576,7 +1576,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-OpenAxiom configure 1.2.0-2008-05-08
+OpenAxiom configure 1.2.0-2008-05-10
generated by GNU Autoconf 2.60
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1590,7 +1590,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by OpenAxiom $as_me 1.2.0-2008-05-08, which was
+It was created by OpenAxiom $as_me 1.2.0-2008-05-10, which was
generated by GNU Autoconf 2.60. Invocation command line was
$ $0 $@
@@ -26078,7 +26078,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by OpenAxiom $as_me 1.2.0-2008-05-08, which was
+This file was extended by OpenAxiom $as_me 1.2.0-2008-05-10, which was
generated by GNU Autoconf 2.60. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -26127,7 +26127,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-OpenAxiom config.status 1.2.0-2008-05-08
+OpenAxiom config.status 1.2.0-2008-05-10
configured by $0, generated by GNU Autoconf 2.60,
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
diff --git a/configure.ac b/configure.ac
index 4b12d5b4..980afddd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
sinclude(config/open-axiom.m4)
sinclude(config/aclocal.m4)
-AC_INIT([OpenAxiom], [1.2.0-2008-05-08],
+AC_INIT([OpenAxiom], [1.2.0-2008-05-10],
[open-axiom-bugs@lists.sf.net])
AC_CONFIG_AUX_DIR(config)
diff --git a/configure.ac.pamphlet b/configure.ac.pamphlet
index e07b0d50..f02caafc 100644
--- a/configure.ac.pamphlet
+++ b/configure.ac.pamphlet
@@ -1108,7 +1108,7 @@ information:
<<Autoconf init>>=
sinclude(config/open-axiom.m4)
sinclude(config/aclocal.m4)
-AC_INIT([OpenAxiom], [1.2.0-2008-05-08],
+AC_INIT([OpenAxiom], [1.2.0-2008-05-10],
[open-axiom-bugs@lists.sf.net])
@
diff --git a/src/ChangeLog b/src/ChangeLog
index c3c975ba..9f26d1d3 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,44 @@
+2008-05-10 Gabriel Dos Reis <gdr@cs.tamu.edu>
+
+ * interp/iterator.boot (compRepeatOrCollect): Don't iterator
+ variables and variables declared in a loop are local to that loop.
+ * interp/g-error.boot (needsToSplitMessage): New.
+ (errorSupervisor): Use it.
+ * interp/compiler.boot (compSymbol): Highlight erron=eous symbol.
+ * interp/wi1.boot (stackMessage): Remove duplicate.
+ * algebra/ffcat.spad.pamphlet (FiniteFieldCategory): Tidy.
+ * algebra/fff.spad.pamphlet (FiniteFieldFunctions): Likewie.
+ * algebra/groebsol.spad.pamphlet (GroebnerSolve): Likewise.
+ * algebra/intfact.spad.pamphlet (IntegerRoots): Likewise.
+ * algebra/mkfunc.spad.pamphlet (InputForm): Likewise.
+ * algebra/numtheor.spad.pamphlet (IntegerNumberTheoryFunctions):
+ Likewise.
+ * algebra/permgrps.spad.pamphlet (PermutationGroup): Likewise.
+ * algebra/random.spad.pamphlet (RandomFloatDistributions): Likewise.
+ * algebra/sgcf.spad.pamphlet
+ (SymmetricGroupCombinatoricFunctions): Likewise.
+ * algebra/triset.spad.pamphlet (PolynomialSetUtilitiesPackage):
+ Likewise.
+ * algebra/twofact.spad.pamphlet (TwoFactorize): Likewise.
+
+ * interp/apply.boot: Miscellanous cleanup.
+ * interp/compiler.boot: Likewise.
+ * interp/c-util.boot: Likewise.
+ * interp/define.boot: Likewise.
+ * interp/format.boot: Likewise.
+ * interp/functor.boot: Likewise.
+ * interp/i-output.boot: Likewise.
+ * interp/info.boot: Likewise.
+ * interp/i-toplev.boot: Likewise.
+ * interp/int-top.boot: Likewise.
+ * interp/iterator.boot: Likewise.
+ * interp/lisplib.boot: Likewise.
+ * interp/modemap.boot: Likewise.
+ * interp/msgdb.boot: Likewise.
+ * interp/nrunopt.boot: Likewise.
+ * interp/package.boot: Likewise.
+ * interp/sys-driver.boot: Likewise.
+
2008-05-09 Gabriel Dos Reis <gdr@cs.tamu.edu>
* interp/as.boot: Remove Old Boot semantics.
diff --git a/src/algebra/Makefile.in b/src/algebra/Makefile.in
index 361f341b..b39027df 100644
--- a/src/algebra/Makefile.in
+++ b/src/algebra/Makefile.in
@@ -571,7 +571,7 @@ axiom_algebra_layer_13 = \
ODESYS ODETOOLS ORDFUNS PERMAN \
PFECAT PFECAT- POINT PSEUDLIN \
PTPACK REP2 SETMN SEX \
- SYMFUNC VECTOR2 CHAR
+ SYMFUNC VECTOR2 CHAR
axiom_algebra_layer_13_nrlibs = \
$(addsuffix .NRLIB/code.$(FASLEXT),$(axiom_algebra_layer_13))
@@ -596,7 +596,7 @@ axiom_algebra_layer_14 = \
FFCGX FFHOM FFNB FFNBX \
FFPOLY FFX FFSLPE FGLMICPK \
FILE FINAALG FINAALG- FINRALG \
- FINRALG- FFF FLOATRP FNAME \
+ FINRALG- FLOATRP FNAME \
FOP FORMULA FORT FRAC \
FTEM GENEEZ GENMFACT GENPGCD \
GALFACTU GALPOLYU GB GBEUCLID \
@@ -638,7 +638,7 @@ axiom_algebra_layer_14 = \
VOID WEIER WP \
EQTBL GSTBL HASHTBL \
INTABL INTFTBL STBL STRTBL\
- TABLE
+ TABLE FST SYMS SYMTAB
axiom_algebra_layer_14_nrlibs = \
@@ -652,7 +652,7 @@ axiom_algebra_layer_15 = \
FRAMALG FRAMALG- MDAGG ODPOL \
PLOT RMCAT2 ROIRC SDPOL \
SMATCAT SMATCAT- TUBETOOL UPXSCCA \
- UPXSCCA- JAVACODE
+ UPXSCCA- JAVACODE POLY
axiom_algebra_layer_15_nrlibs = \
$(addsuffix .NRLIB/code.$(FASLEXT),$(axiom_algebra_layer_15))
@@ -665,7 +665,7 @@ axiom_algebra_layer_16 = \
FRIDEAL2 FRMOD \
IBATOOL INTFACT \
MSETAGG MONOGEN MONOGEN- NFINTBAS \
- SPACE3
+ SPACE3 FFF
axiom_algebra_layer_16_nrlibs = \
$(addsuffix .NRLIB/code.$(FASLEXT),$(axiom_algebra_layer_16))
@@ -708,7 +708,7 @@ axiom_algebra_layer_19 = \
FFCAT FFCAT- FFCGP FFNBP \
FFP FLOAT FPARFRAC FR \
FRNAALG FRNAALG- \
- FST FUNCTION GDMP HACKPI \
+ FUNCTION GDMP HACKPI \
IDEAL INFORM INFORM1 IPRNTPK \
IR ISUPS KERNEL LIB \
LMDICT LODOOPS MATRIX MKFLCFN \
@@ -718,13 +718,13 @@ axiom_algebra_layer_19 = \
NREP NUMFMT OC OC- \
ODEPACK ODERAT OMERR OMERRK \
OPTPACK OSI PATTERN OVAR \
- PMKERNEL PMSYM POLY PRIMELT \
+ PMKERNEL PMSYM PRIMELT \
QALGSET2 QEQUAT RECLOS REP1 \
RESULT QUATCAT QUATCAT- RFFACT \
RMATRIX ROMAN ROUTINE RPOLCAT \
RPOLCAT- RULECOLD SAOS SEGBIND \
SET SPECOUT SQMATRIX SWITCH \
- SYMS SYMTAB SYSSOLP UTSCAT \
+ SYSSOLP UTSCAT \
UTSCAT- VARIABLE WFFINTBS SPADPRSR \
PARSER PROPFRML
diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet
index 417a0713..2a69bec4 100644
--- a/src/algebra/Makefile.pamphlet
+++ b/src/algebra/Makefile.pamphlet
@@ -594,7 +594,7 @@ axiom_algebra_layer_13 = \
ODESYS ODETOOLS ORDFUNS PERMAN \
PFECAT PFECAT- POINT PSEUDLIN \
PTPACK REP2 SETMN SEX \
- SYMFUNC VECTOR2 CHAR
+ SYMFUNC VECTOR2 CHAR
axiom_algebra_layer_13_nrlibs = \
$(addsuffix .NRLIB/code.$(FASLEXT),$(axiom_algebra_layer_13))
@@ -716,7 +716,7 @@ axiom_algebra_layer_14 = \
FFCGX FFHOM FFNB FFNBX \
FFPOLY FFX FFSLPE FGLMICPK \
FILE FINAALG FINAALG- FINRALG \
- FINRALG- FFF FLOATRP FNAME \
+ FINRALG- FLOATRP FNAME \
FOP FORMULA FORT FRAC \
FTEM GENEEZ GENMFACT GENPGCD \
GALFACTU GALPOLYU GB GBEUCLID \
@@ -758,7 +758,7 @@ axiom_algebra_layer_14 = \
VOID WEIER WP \
EQTBL GSTBL HASHTBL \
INTABL INTFTBL STBL STRTBL\
- TABLE
+ TABLE FST SYMS SYMTAB
axiom_algebra_layer_14_nrlibs = \
@@ -785,7 +785,7 @@ axiom_algebra_layer_15 = \
FRAMALG FRAMALG- MDAGG ODPOL \
PLOT RMCAT2 ROIRC SDPOL \
SMATCAT SMATCAT- TUBETOOL UPXSCCA \
- UPXSCCA- JAVACODE
+ UPXSCCA- JAVACODE POLY
axiom_algebra_layer_15_nrlibs = \
$(addsuffix .NRLIB/code.$(FASLEXT),$(axiom_algebra_layer_15))
@@ -811,7 +811,7 @@ axiom_algebra_layer_16 = \
FRIDEAL2 FRMOD \
IBATOOL INTFACT \
MSETAGG MONOGEN MONOGEN- NFINTBAS \
- SPACE3
+ SPACE3 FFF
axiom_algebra_layer_16_nrlibs = \
$(addsuffix .NRLIB/code.$(FASLEXT),$(axiom_algebra_layer_16))
@@ -966,7 +966,7 @@ axiom_algebra_layer_19 = \
FFCAT FFCAT- FFCGP FFNBP \
FFP FLOAT FPARFRAC FR \
FRNAALG FRNAALG- \
- FST FUNCTION GDMP HACKPI \
+ FUNCTION GDMP HACKPI \
IDEAL INFORM INFORM1 IPRNTPK \
IR ISUPS KERNEL LIB \
LMDICT LODOOPS MATRIX MKFLCFN \
@@ -976,13 +976,13 @@ axiom_algebra_layer_19 = \
NREP NUMFMT OC OC- \
ODEPACK ODERAT OMERR OMERRK \
OPTPACK OSI PATTERN OVAR \
- PMKERNEL PMSYM POLY PRIMELT \
+ PMKERNEL PMSYM PRIMELT \
QALGSET2 QEQUAT RECLOS REP1 \
RESULT QUATCAT QUATCAT- RFFACT \
RMATRIX ROMAN ROUTINE RPOLCAT \
RPOLCAT- RULECOLD SAOS SEGBIND \
SET SPECOUT SQMATRIX SWITCH \
- SYMS SYMTAB SYSSOLP UTSCAT \
+ SYSSOLP UTSCAT \
UTSCAT- VARIABLE WFFINTBS SPADPRSR \
PARSER PROPFRML
diff --git a/src/algebra/ffcat.spad.pamphlet b/src/algebra/ffcat.spad.pamphlet
index fa336a5d..fea2d28a 100644
--- a/src/algebra/ffcat.spad.pamphlet
+++ b/src/algebra/ffcat.spad.pamphlet
@@ -585,8 +585,9 @@ FiniteFieldCategory() : Category ==_
representationType = "polynomial" => characteristic()::Integer
1
found : Boolean := false
+ e : $
for i in start.. while not found repeat
- e : $ := index(i::PositiveInteger)
+ e := index(i::PositiveInteger)
found := (order(e) = sm1)
e
primitive? a ==
diff --git a/src/algebra/fff.spad.pamphlet b/src/algebra/fff.spad.pamphlet
index 0cfca8d4..3eb3d683 100644
--- a/src/algebra/fff.spad.pamphlet
+++ b/src/algebra/fff.spad.pamphlet
@@ -115,10 +115,12 @@ FiniteFieldFunctions(GF): Exports == Implementation where
p:=characteristic()$GF
-- search of a suitable parameter k
k:NNI:=0
+ a:NNI
+ t1: PF(k*n+1) -- all that matters is the syntax of the type
for i in 1..n-1 while (k=0) repeat
if prime?(i*n+1) and not(p = (i*n+1)) then
primitive?(q::PF(i*n+1))$PF(i*n+1) =>
- a:NNI:=1
+ a := 1
k:=i
t1:PF(k*n+1):=(q::PF(k*n+1))**n
gcd(n,a:=discreteLog(q::PF(n*i+1))$PF(n*i+1))$I = 1 =>
diff --git a/src/algebra/groebsol.spad.pamphlet b/src/algebra/groebsol.spad.pamphlet
index 482c960f..a25c60d5 100644
--- a/src/algebra/groebsol.spad.pamphlet
+++ b/src/algebra/groebsol.spad.pamphlet
@@ -107,12 +107,16 @@ GroebnerSolve(lv,F,R) : C == T
lnp:=[dmpToHdmp(f) for f in lp]
x := first rlvar;rlvar:=rest rlvar
testfail:=true
+ ranvals: L I
+ gb: L HDPoly
+ gbt: L DPoly
+ gb1: Union(L DPoly,"failed")
for count in 1.. while testfail repeat
- ranvals:L I:=[1+(random()$I rem (count*(# lvar))) for vv in rlvar]
+ ranvals := [1+(random()$I rem (count*(# lvar))) for vv in rlvar]
val:=+/[rv*(vv::HDPoly)
for vv in rlvar for rv in ranvals]
val:=val+x::HDPoly
- gb:L HDPoly:= [elt(univariate(p,x),val) for p in lnp]
+ gb := [elt(univariate(p,x),val) for p in lnp]
gb:=groebner gb
gbt:=totolex gb
(gb1:=testGenPos(gbt,lvar)) case "failed"=>"try again"
diff --git a/src/algebra/intfact.spad.pamphlet b/src/algebra/intfact.spad.pamphlet
index 316da86a..f5485d51 100644
--- a/src/algebra/intfact.spad.pamphlet
+++ b/src/algebra/intfact.spad.pamphlet
@@ -304,6 +304,7 @@ IntegerRoots(I:IntegerNumberSystem): Exports == Implementation where
y := max(two, shift(1, (n::I+l-1) quo (n::I)))
z:I := 1
n1:= (n-1)::NNI
+ x: I
while z > 0 repeat
x := y
xn:= x**n1
@@ -401,12 +402,15 @@ IntegerFactorizationPackage(I): Exports == Implementation where
r:I := 1
q:I := 1
G:I := 1
+ ys: I
+ x: I
until G > 1 repeat
x := y
+ k: I
for i in 1..convert(r)@Integer repeat
y := (y*y+5::I) rem n
q := (q*abs(x-y)) rem n
- k:I := 0
+ k := 0
until (k>=r) or (G>1) repeat
ys := y
for i in 1..convert(min(m,r-k))@Integer repeat
diff --git a/src/algebra/mkfunc.spad.pamphlet b/src/algebra/mkfunc.spad.pamphlet
index 770cfd42..8e7f6c39 100644
--- a/src/algebra/mkfunc.spad.pamphlet
+++ b/src/algebra/mkfunc.spad.pamphlet
@@ -129,7 +129,7 @@ InputForm():
strsym s ==
string? s => string s
symbol? s => string symbol s
- error "strsym: form is neither a string or symbol"
+ error ["strsym: form", s, "is neither a string or symbol"]
unparse x ==
atom?(s:% := form2String(x)$Lisp) => strsym s
diff --git a/src/algebra/numtheor.spad.pamphlet b/src/algebra/numtheor.spad.pamphlet
index 6df112a7..907bb9f7 100644
--- a/src/algebra/numtheor.spad.pamphlet
+++ b/src/algebra/numtheor.spad.pamphlet
@@ -435,8 +435,9 @@ IntegerNumberTheoryFunctions(): Exports == Implementation where
divisors n ==
oldList : List Integer := concat(1,nil())
+ newList : List Integer
for f in factors factor n repeat
- newList : List Integer := nil()
+ newList := nil()
for k in 0..f.exponent repeat
pow := f.factor ** k
for m in oldList repeat
diff --git a/src/algebra/permgrps.spad.pamphlet b/src/algebra/permgrps.spad.pamphlet
index ee97d7ed..2014f7b4 100644
--- a/src/algebra/permgrps.spad.pamphlet
+++ b/src/algebra/permgrps.spad.pamphlet
@@ -342,6 +342,8 @@ PermutationGroup(S:SetCategory): public == private where
bsgs1 (group:L V NNI,number1:NNI,words:L L NNI,maxLoops:I,gp:%,diff:I)_
: NNI ==
-- try to get a good approximation for the strong generators and base
+ ort: REC
+ k1: NNI
for i in number1..degree repeat
ort := orbitWithSvc ( group , i )
k := ort.orb
@@ -484,6 +486,7 @@ PermutationGroup(S:SetCategory): public == private where
kkk : I := 1
newGroup := reverse newGroup
noAnswer : B := true
+ z: V NNI
while noAnswer repeat
reduceGenerators kkk
-- *** Here is former "bsgs2" *** --
@@ -494,6 +497,8 @@ PermutationGroup(S:SetCategory): public == private where
sgs := append ( sgs , out.i )
if wordProblem then wordlist := append ( wordlist , outword.i )
noresult : B := true
+ word3: L NNI
+ word: L NNI
for i in kkk..#baseOfGroup while noresult repeat
sgs := append ( sgs , out.i )
if wordProblem then wordlist := append ( wordlist , outword.i )
diff --git a/src/algebra/random.spad.pamphlet b/src/algebra/random.spad.pamphlet
index 9699789c..b4459bb2 100644
--- a/src/algebra/random.spad.pamphlet
+++ b/src/algebra/random.spad.pamphlet
@@ -265,6 +265,7 @@ RandomFloatDistributions(): Cat == Body where
-- This method is correct but slow.
normal01() ==
s := 2::Float
+ v1: Float
while s >= 1 repeat
v1 := 2 * uniform01() - 1
v2 := 2 * uniform01() - 1
diff --git a/src/algebra/sgcf.spad.pamphlet b/src/algebra/sgcf.spad.pamphlet
index c871cb18..a86554a0 100644
--- a/src/algebra/sgcf.spad.pamphlet
+++ b/src/algebra/sgcf.spad.pamphlet
@@ -210,6 +210,7 @@ SymmetricGroupCombinatoricFunctions(): public == private where
error"there are not so many partitions"
for t in 0..(m-2) repeat
s : I := 0
+ sOld: I
for y in 0..n repeat
sOld := s
s := s + numberOfImproperPartitions(n-y,m-t-1)
@@ -237,6 +238,7 @@ SymmetricGroupCombinatoricFunctions(): public == private where
while n ~= 0 repeat
s : I := 0
cm := cm - 1
+ sOld : I
for y in n..1 by -1 repeat --determination of the next son
sOld := s -- remember old s
-- this functions counts the number of elements in a subtree
diff --git a/src/algebra/triset.spad.pamphlet b/src/algebra/triset.spad.pamphlet
index e86987ca..0d4f93ca 100644
--- a/src/algebra/triset.spad.pamphlet
+++ b/src/algebra/triset.spad.pamphlet
@@ -2279,6 +2279,7 @@ PolynomialSetUtilitiesPackage (R,E,V,P) : Exports == Implementation where
rec := roughBasicSet(lp)
contradiction := (rec case "failed")@B
finished : B := false
+ rs: LP
while (not finished) and (not contradiction) repeat
bs := (rec::RBT).bas
rs := (rec::RBT).top
diff --git a/src/algebra/twofact.spad.pamphlet b/src/algebra/twofact.spad.pamphlet
index 541157b7..68f48bf9 100644
--- a/src/algebra/twofact.spad.pamphlet
+++ b/src/algebra/twofact.spad.pamphlet
@@ -224,6 +224,7 @@ TwoFactorize(F) : C == T
i:Integer:=0
lcm := leadingCoefficient m
umv : R
+ vval : F
while look and i < try repeat
vval := random()$F
i:=i+1
diff --git a/src/interp/compiler.boot b/src/interp/compiler.boot
index 0a8162d3..b120fc9d 100644
--- a/src/interp/compiler.boot
+++ b/src/interp/compiler.boot
@@ -333,7 +333,7 @@ compSymbol(s,m,e) ==
not isFunction(s,e) and null ($compForModeIfTrue=true) then errorRef s
[s,m',e] --s is a declared argument
MEMQ(s,$FormalMapVariableList) =>
- stackMessage('"no mode found for %1",[s])
+ stackMessage('"no mode found for %1b",[s])
m = $OutputForm or m = $Symbol => [['QUOTE,s],m,e]
not isFunction(s,e) => errorRef s
diff --git a/src/interp/g-error.boot b/src/interp/g-error.boot
index c3bcdf5a..32ed1d72 100644
--- a/src/interp/g-error.boot
+++ b/src/interp/g-error.boot
@@ -78,6 +78,12 @@ queryUser msg ==
errorSupervisor(errorType,errorMsg) ==
errorSupervisor1(errorType,errorMsg,$BreakMode)
+needsToSplitMessage msg ==
+ member("%b", msg) or member('"%b",msg) => false
+ member("%d",msg) or member('"%d",msg) => false
+ member("%l",msg) or member('"%l",msg) => false
+ true
+
errorSupervisor1(errorType,errorMsg,$BreakMode) ==
BUMPERRORCOUNT "semantic"
errorLabel :=
@@ -90,11 +96,7 @@ errorSupervisor1(errorType,errorMsg,$BreakMode) ==
msg :=
errorMsg is ['mathprint, :.] => errorMsg
not PAIRP errorMsg => ['" ", errorMsg]
- splitmsg := true
- if member('%b,errorMsg) then splitmsg := nil
- else if member('%d,errorMsg) then splitmsg := nil
- else if member('%l,errorMsg) then splitmsg := nil
- splitmsg => CDR [:['%l,'" ",u] for u in errorMsg]
+ needsToSplitMessage errorMsg => rest [:['%l,'" ",u] for u in errorMsg]
['" ",:errorMsg]
sayErrorly(errorLabel, msg)
handleLispBreakLoop($BreakMode)
@@ -170,14 +172,17 @@ sayErrorly1(errorLabel, msg) ==
sayBrightly msg
-- systemError is being phased out. Please use keyedSystemError.
-systemError(:x) == errorSupervisor($SystemError,IFCAR x)
+systemError(:x) ==
+ errorSupervisor($SystemError,IFCAR x)
-- unexpectedSystemError() ==
-- systemError '"Oh, no. Unexpected internal error."
-userError x == errorSupervisor($UserError,x)
+userError x ==
+ errorSupervisor($UserError,x)
-error(x) == errorSupervisor($AlgebraError,x)
+error(x) ==
+ errorSupervisor($AlgebraError,x)
IdentityError(op) ==
error(["No identity element for reduce of empty list using operation",op])
diff --git a/src/interp/iterator.boot b/src/interp/iterator.boot
index 70a52f6d..d62f4939 100644
--- a/src/interp/iterator.boot
+++ b/src/interp/iterator.boot
@@ -132,7 +132,10 @@ compRepeatOrCollect(form,m,e) ==
(u:=modeIsAggregateOf('Vector,targetMode,e)) => CAR u
["Vector",m']
m'
- coerceExit([form',m'',e'],targetMode)
+ T := coerceExit([form',m'',e'],targetMode) or return nil
+ -- iterator variables and other variables declared in
+ -- in a loop are local to the loop.
+ [T.expr,T.mode,e]
--constructByModemap([x,source,e],target) ==
-- u:=
diff --git a/src/interp/wi1.boot b/src/interp/wi1.boot
index 7d327fa4..02f0c892 100644
--- a/src/interp/wi1.boot
+++ b/src/interp/wi1.boot
@@ -56,11 +56,6 @@ tr fn ==
CATCH("SPAD__READER",compiler [INTERN sfn])
SHUT $outStream
-stackMessage msg ==
---if msg isnt ["cannot coerce: ",:.] then foobum msg
- $compErrorMessageStack:= [msg,:$compErrorMessageStack]
- nil
-
ppFull x ==
SETQ(_*PRINT_-LEVEL_*,nil)
SETQ(_*PRINT_-LENGTH_*,nil)