From aa3e615e84e3e8844fd5537ef84c38d5d18298ab Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Sat, 2 Jan 2016 10:43:51 -0500 Subject: Finishing the last change in final handling of enumerated types --- src/cjr_print.sml | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/cjr_print.sml b/src/cjr_print.sml index ee7792a5..bbbe5c8b 100644 --- a/src/cjr_print.sml +++ b/src/cjr_print.sml @@ -2603,18 +2603,19 @@ fun p_file env (ds, ps) = global_initializers := []) (* First, pull out all of the enumerated types, to be declared first. *) - val (ds, enums) = ListUtil.foldlMap (fn (d, enums) => - case #1 d of - DDatatype dts => - let - val (enum, other) = List.partition (fn (Enum, _, _, _) => true - | _ => false) dts - in - ((DDatatype other, #2 d), - List.revAppend (enum, enums)) - end - | _ => (d, enums)) - [] ds + val (ds, enums) = ListUtil.foldlMapPartial (fn (d, enums) => + case #1 d of + DDatatype dts => + let + val (enum, other) = List.partition (fn (Enum, _, _, _) => true + | _ => false) dts + in + (SOME (DDatatype other, #2 d), + List.revAppend (enum, enums)) + end + | DDatatypeForward (Enum, _, _) => (NONE, enums) + | _ => (SOME d, enums)) + [] ds val ds = (DDatatype enums, ErrorMsg.dummySpan) :: ds -- cgit v1.2.3