From ba3e01e524907d85f5cba6af62083fcdee606f33 Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Sat, 13 Jun 2009 14:29:36 -0400 Subject: inside ; fix Specialize bug with datatype decls generating other mutually-recursive datatype decls --- src/specialize.sml | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'src/specialize.sml') diff --git a/src/specialize.sml b/src/specialize.sml index b740ec8c..43c634c7 100644 --- a/src/specialize.sml +++ b/src/specialize.sml @@ -246,15 +246,12 @@ fun specialize file = let (*val () = Print.preface ("decl:", CorePrint.p_decl CoreEnv.empty all)*) val (d, st) = specDecl st d - - val ds = - case #decls st of - [] => [] - | dts => [(DDatatype dts, #2 d)] in case #1 d of DDatatype dts => - (rev (d :: ds), + ((case #decls st of + [] => [d] + | dts' => [(DDatatype (dts' @ dts), #2 d)]), {count = #count st, datatypes = foldl (fn ((x, n, xs, xnts), dts) => IM.insert (dts, n, @@ -270,7 +267,9 @@ fun specialize file = (#constructors st) dts, decls = []}) | _ => - (rev (d :: ds), + (case #decls st of + [] => [d] + | dts => [(DDatatype dts, #2 d), d], {count = #count st, datatypes = #datatypes st, constructors = #constructors st, @@ -286,5 +285,4 @@ fun specialize file = ds end - end -- cgit v1.2.3