Changes
http://wiki.axiom-developer.org/370ImproperCodeEmmitedByMkUnionFunListImpactsDefintrfSpad/diff
--
??changed:
-In defintrf.spad, function findRealZero, we have the following code:
+In defintrf.spad, function findRealZero, we have the following code::
??changed:
tags are being confused with free variables. This results in the following
Lisp code (thanks to
-Gregory Vanuxem for pointing this out):
+Gregory Vanuxem for pointing this out)::
??changed:
-A fix is to ensure that the code emmited when accessing a Union field properly
macroexpands type expressions so that tags are explicitly quoted, and this
recognized by the compiler as literals rather than evalable identifiers. This
amounts to the following change in buildom.boot.pamphlet, in the functions
mkUnionFunList and mkNewUnionFunList:
-
- --- buildom.boot.pamphlet 2007-07-08 14:29:00.000000000 -0400
-+++ buildom.boot.pamphlet.sxw 2007-07-08 14:29:34.000000000 -0400
-@@ -318,7 +318,7 @@
- ['XLAM,["#1"],['PROG1,['QCDR,"#1"],
- ['check_-union,['QEQCAR,"#1",i],type,"#1"]]]
+A fix is to ensure that the code emmited when accessing a Union field properly
macroexpands type expressions so that tags are explicitly quoted, and this
recognized by the compiler as literals rather than evalable identifiers. This
amounts to the following change in buildom.boot.pamphlet, in the functions
mkUnionFunList and mkNewUnionFunList::
+
+ --- buildom.boot.pamphlet 2007-07-08 14:29:00.000000000 -0400
+ +++ buildom.boot.pamphlet.sxw 2007-07-08 14:29:34.000000000 -0400
+ @@ -318,7 +318,7 @@
+ ['XLAM,["#1"],['PROG1,['QCDR,"#1"],
+ ['check_-union,['QEQCAR,"#1",i],type,"#1"]]]
['XLAM,["#1"],['PROG2,['LET,gg,"#1"],['QCDR,gg],
??changed:
['XLAM,["#1"],['PROG2,['LET,gg,"#1"],['QCDR,gg],
-- ['check_-union,['QEQCAR,gg,i],type,gg]]]
-+ ['check_-union,['QEQCAR,gg,i],MACROEXPAND type,gg]]]
- [cList,e]
-
- mkEnumerationFunList(nam,['Enumeration,:SL],e) ==
-@@ -361,7 +361,7 @@
- ref:=gg
- q:= substitute(gg,"#1",p)
- ['XLAM,["#1"],['PROG2,['LET,gg,"#1"],ref,
-- ['check_-union,q,t,gg]]]
-+ ['check_-union,q,MACROEXPAND t,gg]]]
- downFun() ==
- p is ['EQCAR,x,.] =>
- ['XLAM,["#1"],['QCDR,"#1"]]
-
-
-
-
+ - ['check_-union,['QEQCAR,gg,i],type,gg]]]
+ + ['check_-union,['QEQCAR,gg,i],MACROEXPAND type,gg]]]
+ [cList,e]
+
+ mkEnumerationFunList(nam,['Enumeration,:SL],e) ==
+ @@ -361,7 +361,7 @@
+ ref:=gg
+ q:= substitute(gg,"#1",p)
+ ['XLAM,["#1"],['PROG2,['LET,gg,"#1"],ref,
+ - ['check_-union,q,t,gg]]]
+ + ['check_-union,q,MACROEXPAND t,gg]]]
+ downFun() ==
+ p is ['EQCAR,x,.] =>
+ ['XLAM,["#1"],['QCDR,"#1"]]
+
--
forwarded from http://wiki.axiom-developer.org/[EMAIL PROTECTED]