aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure18
-rw-r--r--configure.ac2
-rw-r--r--configure.ac.pamphlet2
-rw-r--r--src/interp/ChangeLog11
-rw-r--r--src/interp/nruncomp.boot3
-rw-r--r--src/interp/nrunfast.boot12
-rw-r--r--src/interp/nrungo.boot17
7 files changed, 44 insertions, 21 deletions
diff --git a/configure b/configure
index b2a7b62a..89e68761 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.1.0-2007-12-15.
+# Generated by GNU Autoconf 2.60 for OpenAxiom 1.1.0-2007-12-16.
#
# 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.1.0-2007-12-15'
-PACKAGE_STRING='OpenAxiom 1.1.0-2007-12-15'
+PACKAGE_VERSION='1.1.0-2007-12-16'
+PACKAGE_STRING='OpenAxiom 1.1.0-2007-12-16'
PACKAGE_BUGREPORT='open-axiom-bugs@lists.sf.net'
ac_unique_file="src/Makefile.pamphlet"
@@ -1388,7 +1388,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.1.0-2007-12-15 to adapt to many kinds of systems.
+\`configure' configures OpenAxiom 1.1.0-2007-12-16 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1458,7 +1458,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of OpenAxiom 1.1.0-2007-12-15:";;
+ short | recursive ) echo "Configuration of OpenAxiom 1.1.0-2007-12-16:";;
esac
cat <<\_ACEOF
@@ -1562,7 +1562,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-OpenAxiom configure 1.1.0-2007-12-15
+OpenAxiom configure 1.1.0-2007-12-16
generated by GNU Autoconf 2.60
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1576,7 +1576,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.1.0-2007-12-15, which was
+It was created by OpenAxiom $as_me 1.1.0-2007-12-16, which was
generated by GNU Autoconf 2.60. Invocation command line was
$ $0 $@
@@ -25203,7 +25203,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.1.0-2007-12-15, which was
+This file was extended by OpenAxiom $as_me 1.1.0-2007-12-16, which was
generated by GNU Autoconf 2.60. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -25252,7 +25252,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-OpenAxiom config.status 1.1.0-2007-12-15
+OpenAxiom config.status 1.1.0-2007-12-16
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 e642eade..e28c3715 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
sinclude(config/open-axiom.m4)
sinclude(config/aclocal.m4)
-AC_INIT([OpenAxiom], [1.1.0-2007-12-15],
+AC_INIT([OpenAxiom], [1.1.0-2007-12-16],
[open-axiom-bugs@lists.sf.net])
AC_CONFIG_AUX_DIR(config)
diff --git a/configure.ac.pamphlet b/configure.ac.pamphlet
index 7f229697..0924b227 100644
--- a/configure.ac.pamphlet
+++ b/configure.ac.pamphlet
@@ -1010,7 +1010,7 @@ information:
<<Autoconf init>>=
sinclude(config/open-axiom.m4)
sinclude(config/aclocal.m4)
-AC_INIT([OpenAxiom], [1.1.0-2007-12-15],
+AC_INIT([OpenAxiom], [1.1.0-2007-12-16],
[open-axiom-bugs@lists.sf.net])
@
diff --git a/src/interp/ChangeLog b/src/interp/ChangeLog
index 212bd868..97546f58 100644
--- a/src/interp/ChangeLog
+++ b/src/interp/ChangeLog
@@ -1,3 +1,14 @@
+2007-12-16 Gabriel Dos Reis <gdr@cs.tamu.edu>
+
+ * nruncomp.boot (NOTES): Encode quasiquoted values too.
+ ($lookupDefaults): Define.
+ (newLookupInDomain): Look up in the add-chain first.
+ (newLookupInCategories): Likewise.
+ (lazyMatch): Quasiquote is now like a Mapping.
+ (newExpandLocalTypeForm): Quasiquote is no longer like QUOTE.
+ * nrungo.boot (lookupInDomainAndDefaults): New.
+ (compiledLookup): Use it.
+
2007-12-15 Gabriel Dos Reis <gdr@cs.tamu.edu>
* nruncomp.boot (buildFunctor): Use $NRTbase instead of hardcoded
diff --git a/src/interp/nruncomp.boot b/src/interp/nruncomp.boot
index d986a708..b7d91c33 100644
--- a/src/interp/nruncomp.boot
+++ b/src/interp/nruncomp.boot
@@ -113,7 +113,8 @@ NRTencode(x,y) == encode(x,y,true) where encode(x,compForm,firstTime) ==
QCAR x='Record or x is ['Union,['_:,a,b],:.] =>
[QCAR x,:[['_:,a,encode(b,c,false)]
for [.,a,b] in QCDR x for [.,=a,c] in CDR compForm]]
- isQuasiquote x => x
+ (x' := isQuasiquote x) =>
+ quasiquote encode(x',isQuasiquote compForm,false)
constructor? QCAR x or MEMQ(QCAR x,'(Union Mapping)) =>
[QCAR x,:[encode(y,z,false) for y in QCDR x for z in CDR compForm]]
['NRTEVAL,NRTreplaceAllLocalReferences COPY_-TREE lispize compForm]
diff --git a/src/interp/nrunfast.boot b/src/interp/nrunfast.boot
index d791335a..6a6c3ed4 100644
--- a/src/interp/nrunfast.boot
+++ b/src/interp/nrunfast.boot
@@ -38,6 +38,9 @@ import '"c-util"
++
$doNotCompressHashTableIfTrue := false
+++
+$lookupDefaults := false
+
--=======================================================================
-- Basic Functions
--=======================================================================
@@ -222,7 +225,7 @@ newLookupInDomain(op,sig,addFormDomain,dollar,index) ==
INTEGERP KAR addFormCell =>
or/[newLookupInDomain(op,sig,addFormDomain,dollar,i) for i in addFormCell]
if null VECP addFormCell then lazyDomainSet(addFormCell,addFormDomain,index)
- lookupInDomainVector(op,sig,addFormDomain.index,dollar)
+ lookupInDomainAndDefaults(op,sig,addFormDomain.index,dollar,false)
nil
--=======================================================
@@ -368,7 +371,7 @@ newLookupInCategories1(op,sig,dom,dollar) ==
null package => nil
if $monitorNewWorld then
sayLooking1('"Looking at instantiated package ",package)
- res := lookupInDomainVector(op,sig,package,dollar) =>
+ res := lookupInDomainAndDefaults(op,sig,package,dollar,false) =>
if $monitorNewWorld = true then
sayBrightly '"candidate default package succeeds"
return res
@@ -428,9 +431,8 @@ lazyMatch(source,lazyt,dollar,domain) ==
MEMQ(op,'(Record Union)) and first argl is [":",:.] =>
and/[stag = atag and lazyMatchArg(s,a,dollar,domain)
for [.,stag,s] in sargl for [.,atag,a] in argl]
- MEMQ(op,'(Union Mapping QUOTE)) =>
+ MEMQ(op,'(Union Mapping _[_|_|_] QUOTE)) =>
and/[lazyMatchArg(s,a,dollar,domain) for s in sargl for a in argl]
- op="[||]" => source = lazyt
coSig := GETDATABASE(op,'COSIG)
NULL coSig => error ["bad Constructor op", op]
and/[lazyMatchArg2(s,a,dollar,domain,flag)
@@ -513,7 +515,7 @@ newExpandLocalTypeForm([functorName,:argl],dollar,domain) ==
for [.,tag,dom] in argl]]
MEMQ(functorName, '(Union Mapping)) =>
[functorName,:[newExpandLocalTypeArgs(a,dollar,domain,true) for a in argl]]
- functorName in '(QUOTE _[_|_|_]) => [functorName,:argl]
+ functorName = "QUOTE" => [functorName,:argl]
coSig := GETDATABASE(functorName,'COSIG)
NULL coSig => error ["bad functorName", functorName]
[functorName,:[newExpandLocalTypeArgs(a,dollar,domain,flag)
diff --git a/src/interp/nrungo.boot b/src/interp/nrungo.boot
index 968f4c09..f9b1f17f 100644
--- a/src/interp/nrungo.boot
+++ b/src/interp/nrungo.boot
@@ -57,10 +57,8 @@ compiledLookup(op,sig,dollar) ==
basicLookup(op,sig,domain,dollar) ==
domain.1 is ['lookupInDomain,:.] => lookupInDomainVector(op,sig,domain,dollar)
----------new world code follows------------
- $lookupDefaults : local := nil -- new world
- u := lookupInDomainVector(op,sig,domain,dollar) => u
- $lookupDefaults := true
- lookupInDomainVector(op,sig,domain,dollar)
+ u := lookupInDomainAndDefaults(op,sig,domain,dollar,false) => u
+ lookupInDomainAndDefaults(op,sig,domain,dollar,true)
compiledLookupCheck(op,sig,dollar) ==
fn := compiledLookup(op,sig,dollar)
@@ -194,6 +192,17 @@ lookupInDomainVector(op,sig,domain,dollar) ==
slot1 := domain.1
SPADCALL(op,sig,dollar,slot1)
+
+++ same as lookupInDomainVector except that the use of defaults
+++ (either in category packages or add-chains) is controlled
+++ by `useDefaults'.
+lookupInDomainAndDefaults(op,sig,domain,dollar,useDefaults) ==
+ savedLookupDefaults := $lookupDefaults
+ $lookupDefaults := useDefaults
+ fun := lookupInDomainVector(op,sig,domain,dollar)
+ $lookupDefaults := savedLookupDefaults
+ fun
+
--=======================================================
-- Category Default Lookup (from goGet or lookupInAddChain)
--=======================================================