aboutsummaryrefslogtreecommitdiff
path: root/src/interp/compiler.boot
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2009-06-10 09:34:58 +0000
committerdos-reis <gdr@axiomatics.org>2009-06-10 09:34:58 +0000
commitc020ac99c5016824cfe8fab756a15f73264c38d0 (patch)
tree9eadb72c266c508efea9f775452d41a4ff10b29d /src/interp/compiler.boot
parent879b9de5aaa0c3e717e3799c35af483816bac0da (diff)
downloadopen-axiom-c020ac99c5016824cfe8fab756a15f73264c38d0.tar.gz
* interp/parse.boot (parseHas): Preserve unnamed category forms.
* interp/i-funsel.boot (hasCaty): Recursively look into Joins. * interp/interop.boot (newHasCategory): Likewise. * interp/compiler.boot (compHasFormat): Handle unnamed categories. * interp/info.boot (knownInfo): Likewise.
Diffstat (limited to 'src/interp/compiler.boot')
-rw-r--r--src/interp/compiler.boot2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/interp/compiler.boot b/src/interp/compiler.boot
index 357e8564..201e925f 100644
--- a/src/interp/compiler.boot
+++ b/src/interp/compiler.boot
@@ -1162,6 +1162,8 @@ compHasFormat (pred is ["has",olda,b]) ==
b is ["SIGNATURE",op,sig,:.] =>
["HasSignature",a,
mkList [MKQ op,mkList [mkTypeForm type for type in sig]]]
+ b is ["Join",:l] or b is ["CATEGORY",.,:l] =>
+ ["AND",:[compHasFormat ["has",olda,c] for c in l]]
isCategoryForm(b,$e) => ["HasCategory",a,mkTypeForm b]
stackAndThrow('"Second argument to %1b must be a category, or a signature or an attribute",["has"])