diff options
Diffstat (limited to 'src/interp/buildom.boot')
-rw-r--r-- | src/interp/buildom.boot | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/interp/buildom.boot b/src/interp/buildom.boot index 508c325c..a7765057 100644 --- a/src/interp/buildom.boot +++ b/src/interp/buildom.boot @@ -481,6 +481,14 @@ coerceMap2E(x) == --% Enumeration +EnumerationCategory(:"args") == + cat := eval ['Join,$SetCategory, + ['mkCategory,quoteForm 'domain, + quoteForm [[[arg,['$],'constant],'T] for arg in args], + [], [], nil]] + canonicalForm(cat) := ['EnumerationCategory,:args] + cat + Enumeration(:"args") == nargs := #args dom := newShell(nargs + 9) @@ -498,7 +506,8 @@ Enumeration(:"args") == vectorRef(dom,3) := ["EnumerationCategory",:instantiationArgs dom] vectorRef(dom,4) := [$commonCategoryDefaults, $commonCategoryAncestors] vectorRef(dom,5) := nil - for i in $FirstParamSlot.. for a in args repeat dom.i := a + for i in $FirstParamSlot.. for a in args repeat + dom.i := a dom.($FirstParamSlot + nargs) := [function EnumEqual, :dom] dom.($FirstParamSlot + nargs + 1) := [function EnumPrint, :dom] dom.($FirstParamSlot + nargs + 2) := [function createEnum, :dom] @@ -522,8 +531,6 @@ createEnum(sym, dom) == RecordCategory(:"x") == constructorCategory ["Record",:x] -EnumerationCategory(:"x") == constructorCategory ["Enumeration",:x] - UnionCategory(:"x") == constructorCategory ["Union",:x] constructorCategory (title is [op,:.]) == |