aboutsummaryrefslogtreecommitdiff
path: root/src/interp/buildom.boot
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2008-01-27 17:52:17 +0000
committerdos-reis <gdr@axiomatics.org>2008-01-27 17:52:17 +0000
commit58cae19381750526539e986ca1de122803ac2293 (patch)
tree24c77cb7e745a5072eac5dde2503820de3c376f9 /src/interp/buildom.boot
parenta388d36abab4b55733a8e2c19b1a8ec882274fa8 (diff)
downloadopen-axiom-58cae19381750526539e986ca1de122803ac2293.tar.gz
Fix SF/1872551
* interp/c-util.boot (dollarIfRepHack): New. (RepIfRepHack): Likewise. (substituteDollarIfRepHack): Likewise. (isSubset): Dollar is subset of Rep only in old semantics. * interp/buildom.boot (mkMappingFunList): Substitute dollar for Rep only when appropriate. (mkRecordFunList): Likewise. (mkNewUnionFunList): Likewise. (mkUnionFunList): Likewise. * interp/compiler.boot (compNoStacking): Likewise. (compNoStacking1): Likewise. (getConstructorFormOfMode): Likewise. (isUnionMode): Likewise. (coerce): Likewise. (coerceSubset): Likewise. * interp/modemap.boot (addModemap1): Likewise. (isSuperDomain): Likewise. * interp/define.boot (maybeInsertViewMorphisms): New. (compCapsule): Use it. (compCategoryItem): Don't allow exports of rep and per. * interp/sys-globals.boot ($useRepresentationHack): New.
Diffstat (limited to 'src/interp/buildom.boot')
-rw-r--r--src/interp/buildom.boot13
1 files changed, 5 insertions, 8 deletions
diff --git a/src/interp/buildom.boot b/src/interp/buildom.boot
index 228ef863..cacced1b 100644
--- a/src/interp/buildom.boot
+++ b/src/interp/buildom.boot
@@ -1,6 +1,6 @@
-- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-- All rights reserved.
--- Copyright (C) 2007, Gabriel Dos Reis.
+-- Copyright (C) 2007-2008, Gabriel Dos Reis.
-- All rights reserved.
--
-- Redistribution and use in source and binary forms, with or without
@@ -270,7 +270,7 @@ mkMappingFunList(nam,mapForm,e) ==
sigFunAlist:=
[["_=",[["Boolean"],nam ,nam],["ELT",dc,6]],
["coerce",[$OutputForm,nam],["ELT",dc,7]]]
- [substitute(nam,dc,substitute("$",'Rep,sigFunAlist)),e]
+ [substitute(nam,dc,substituteDollarIfRepHack sigFunAlist),e]
mkRecordFunList(nam,["Record",:Alist],e) ==
len:= #Alist
@@ -294,11 +294,11 @@ mkRecordFunList(nam,["Record",:Alist],e) ==
for i in 0.. for [.,a,A] in Alist],:
[["copy",[nam,nam],["XLAM",["$1"],["RECORDCOPY",
"$1",len]]]]]
- [substitute(nam,dc,substitute("$","Rep",sigFunAlist)),e]
+ [substitute(nam,dc,substituteDollarIfRepHack sigFunAlist),e]
mkNewUnionFunList(name,form is ["Union",:listOfEntries],e) ==
dc := name
- if name = "Rep" then name := "$"
+ m := dollarIfRepHack name
--2. create coercions from subtypes to subUnion
cList:=
[["_=",[["Boolean"],name ,name],["ELT",dc,6]],
@@ -367,9 +367,6 @@ mkUnionFunList(op,form is ["Union",:listOfEntries],e) ==
p is ["EQCAR",x,n] =>
["XLAM",["#1"],["QEQCAR",x,n]]
["XLAM",["#1"],p]
- op:=
- op="Rep" => "$"
- op
- cList:= substitute(op,g,cList)
+ cList:= substitute(dollarIfRepHack op,g,cList)
[cList,e]