fixed bug for OCaml bigints
authorhaftmann
Thu, 25 Jan 2007 09:32:56 +0100
changeset 22186 5203eb387a0c
parent 22185 24bf0e403526
child 22187 a2c4861363d5
fixed bug for OCaml bigints
src/Pure/Tools/codegen_serializer.ML
--- a/src/Pure/Tools/codegen_serializer.ML	Thu Jan 25 09:32:51 2007 +0100
+++ b/src/Pure/Tools/codegen_serializer.ML	Thu Jan 25 09:32:56 2007 +0100
@@ -621,7 +621,11 @@
             val (ps, vars') = fold_map pr binds vars;
           in brackets (str "fun" :: ps @ str "->" @@ pr_term vars' NOBR t') end
       | pr_term vars fxy (INum n) =
-          brackets [str "Big_int.big_int_of_int", (str o IntInf.toString) n]
+          if n > 0 then
+            brackify fxy [str "Big_int.big_int_of_int", (str o IntInf.toString) n]
+          else
+            brackify fxy [str "Big_int.big_int_of_int",
+              (str o enclose "(" ")" o prefix "-" o IntInf.toString o op ~) n]
       | pr_term vars _ (IChar c) =
           (str o enclose "'" "'")
             (let val i = ord c