diff --git a/gap/gaptypes.g b/gap/gaptypes.g index a07c60f3e9ea9dbcf15a16fff86f8c4a28f28fe0..f28fb405b36c4a827d89bce4819d114dbed42150 100644 --- a/gap/gaptypes.g +++ b/gap/gaptypes.g @@ -31,8 +31,8 @@ GAPAndFilterUnpack := function(t) then Add(res, NAME_FUNC(t)); else - Append(res, GAPTypeUnpack(FLAG1_FILTER(t))); - Append(res, GAPTypeUnpack(FLAG2_FILTER(t))); + Append(res, GAPAndFilterUnpack(FLAG1_FILTER(t))); + Append(res, GAPAndFilterUnpack(FLAG2_FILTER(t))); fi; fi; return res; @@ -43,7 +43,7 @@ end; GAPTypesInfo := function() local res, lres, i, f, ff; - res := rec(); + res := []; for i in [1..Length(FILTERS)] do if IsBound(FILTERS[i]) then @@ -53,23 +53,26 @@ GAPTypesInfo := function() lres.type := GAPFilterToFilterType(i); # if the filter is an attribute and FLAG1_FILTER of the filter # is not equal to it, then this is a tester. + ff := TRUES_FLAGS(WITH_IMPS_FLAGS(FLAGS_FILTER(FILTERS[i]))); + ff := List(ff, function(f) + if IsBound(FILTERS[f]) then + return NAME_FUNC(FILTERS[f]); + else + return "<<unknown>>"; + fi; + end); if lres.type = "GAP_Attribute" then - if - (FLAG1_FILTER(f)) <> 0 and (FLAG1_FILTER(f) <> i) then + if (FLAG1_FILTER(f)) <> 0 and (FLAG1_FILTER(f) <> i) then lres.testerfor := NAME_FUNC(FILTERS[FLAG1_FILTER(f)]); fi; + lres.filters := ff; + elif lres.type = "GAP_Property" then + lres.filters := ff; + else + lres.implied := ff; fi; - - ff := TRUES_FLAGS(WITH_IMPS_FLAGS(FLAGS_FILTER(FILTERS[i]))); - lres.implied := List(ff, - function(f) - if IsBound(FILTERS[f]) then - return NAME_FUNC(FILTERS[f]); - else - return "<<unknown>>"; - fi; - end); - res.(NAME_FUNC(FILTERS[i])) := lres; + lres.name := (NAME_FUNC(FILTERS[i])); + Add(res, lres); fi; od; for i in [1..Length(ATTRIBUTES)] do @@ -77,7 +80,8 @@ GAPTypesInfo := function() lres.type := "GAP_Attribute"; lres.filters := GAPAndFilterUnpack(ATTRIBUTES[i][2]); - res.(ATTRIBUTES[i][1]) := lres; + lres.name := ATTRIBUTES[i][1]; + Add(res, lres); od; return res; end;