aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog9
-rw-r--r--src/boot/utility.boot2
-rw-r--r--src/interp/Makefile.in6
-rw-r--r--src/interp/i-coerce.boot11
-rw-r--r--src/interp/i-coerfn.boot7
5 files changed, 21 insertions, 14 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 4004f4b7..e4f5760b 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,12 @@
+2012-08-20 Gabriel Dos Reis <gdr@cs.tamu.edu>
+
+ * interp/i-coerfn.boot: Do not import i-coerce. Import i-analy
+ and i-resolv intead.
+ ($CoerceTable): Fix embarrassing thinko.
+ * interp/i-coerce.boot: Import i-coerfn.
+ (coerceIntTableOrFunction): Tidy.
+ * boot/utility.boot (objectAssoc): Tidy.
+
2012-08-19 Gabriel Dos Reis <gdr@cs.tamu.edu>
* interp/util.lisp (BUILD-INTERPSYS): loadDelayedFFI early.
diff --git a/src/boot/utility.boot b/src/boot/utility.boot
index ec51df12..cdc6d05d 100644
--- a/src/boot/utility.boot
+++ b/src/boot/utility.boot
@@ -227,7 +227,7 @@ symbolAssoc(s,l) ==
objectAssoc(x,l) ==
repeat
l isnt [p,:l] => return nil
- p is [.,:.] and sameObject?(first p,x) => return p
+ p is [.,:.] and sameObject?(x,first p) => return p
--% substitution
diff --git a/src/interp/Makefile.in b/src/interp/Makefile.in
index e67fbd37..b222b8da 100644
--- a/src/interp/Makefile.in
+++ b/src/interp/Makefile.in
@@ -92,7 +92,7 @@ OBJS= boot-pkg.$(FASLEXT) types.$(FASLEXT) \
g-error.$(FASLEXT) ggreater.$(FASLEXT) \
hypertex.$(FASLEXT) i-object.$(FASLEXT) \
i-analy.$(FASLEXT) i-resolv.$(FASLEXT) \
- i-coerce.$(FASLEXT) i-coerfn.$(FASLEXT) \
+ i-coerfn.$(FASLEXT) i-coerce.$(FASLEXT) \
i-eval.$(FASLEXT) i-funsel.$(FASLEXT) \
i-intern.$(FASLEXT) i-map.$(FASLEXT) \
i-output.$(FASLEXT) i-special.$(FASLEXT) \
@@ -291,8 +291,8 @@ i-special.$(FASLEXT): i-analy.$(FASLEXT)
i-funsel.$(FASLEXT): i-coerfn.$(FASLEXT)
i-map.$(FASLEXT): i-object.$(FASLEXT)
i-eval.$(FASLEXT): i-analy.$(FASLEXT)
-i-coerfn.$(FASLEXT): i-coerce.$(FASLEXT)
-i-coerce.$(FASLEXT): i-analy.$(FASLEXT) i-resolv.$(FASLEXT)
+i-coerce.$(FASLEXT): i-coerfn.$(FASLEXT)
+i-coerfn.$(FASLEXT): i-analy.$(FASLEXT) i-resolv.$(FASLEXT)
i-resolv.$(FASLEXT): i-object.$(FASLEXT)
i-analy.$(FASLEXT): i-object.$(FASLEXT)
i-intern.$(FASLEXT): i-object.$(FASLEXT) ptrees.$(FASLEXT)
diff --git a/src/interp/i-coerce.boot b/src/interp/i-coerce.boot
index 919a6979..4cddcbc7 100644
--- a/src/interp/i-coerce.boot
+++ b/src/interp/i-coerce.boot
@@ -32,8 +32,7 @@
-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-import i_-analy
-import i_-resolv
+import i_-coerfn
namespace BOOT
$useCoerceOrCroak := true
@@ -1133,13 +1132,13 @@ coerceIntTableOrFunction(triple,t2) ==
null isValidType t2 => nil -- added 9-18-85 by RSS
null isLegitimateMode(t2,nil,nil) => nil -- added 6-28-87 by RSS
t1 := objMode triple
- p := objectAssoc(first t1,$CoerceTable)
- p and objectAssoc(first t2,rest p) is [.,:[tag,fun]] =>
+ p := symbolAssoc(first t1,$CoerceTable)
+ p and symbolTarget(first t2,rest p) is [tag,fun] =>
val := objVal triple
fun='Identity => objNew(val,t2)
tag='total =>
- coerceByTable(fun,val,t1,t2,'T) or coerceByFunction(triple,t2)
- coerceByTable(fun,val,t1,t2,nil) or coerceByFunction(triple,t2)
+ coerceByTable(fun,val,t1,t2,true) or coerceByFunction(triple,t2)
+ coerceByTable(fun,val,t1,t2,false) or coerceByFunction(triple,t2)
coerceByFunction(triple,t2)
coerceCommuteTest(t1,t2) ==
diff --git a/src/interp/i-coerfn.boot b/src/interp/i-coerfn.boot
index 36d5772b..bef965fc 100644
--- a/src/interp/i-coerfn.boot
+++ b/src/interp/i-coerfn.boot
@@ -32,7 +32,8 @@
-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-import i_-coerce
+import i_-analy
+import i_-resolv
namespace BOOT
$coerceFailure := gensym()
@@ -1976,9 +1977,7 @@ $CoerceTable == '( _
(Tuple indeterm L2Tuple) _
(Vector indeterm L2V) _
))_
- )
-$CoerceTable == append!($CoerceTable,'( _
(Matrix . ( _
(List indeterm M2L) _
(RectangularMatrix partial M2Rm) _
@@ -2099,7 +2098,7 @@ $CoerceTable == append!($CoerceTable,'( _
(SquareMatrix indeterm V2Sm) _
(Stream indeterm Agg2Agg) _
) ) _
- ) )
+ )
-- this list is too long for the parser, so it has to be split into parts
-- specifies the commute functions