diff options
| author | Pierre-Marie Pédrot | 2014-04-25 14:36:19 +0200 |
|---|---|---|
| committer | Pierre-Marie Pédrot | 2014-04-25 14:39:15 +0200 |
| commit | 38d2881dcd1917a93b202c16a55d57d51006ee88 (patch) | |
| tree | c3995446d077b16a55367e52af4d45013707b805 /lib/future.ml | |
| parent | b35edb34769fecd4dbdf7030222ba3078eab1c93 (diff) | |
Adding a debug printer for futures.
Diffstat (limited to 'lib/future.ml')
| -rw-r--r-- | lib/future.ml | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/future.ml b/lib/future.ml index 1e878ac32c..1f68061efe 100644 --- a/lib/future.ml +++ b/lib/future.ml @@ -191,3 +191,17 @@ let map2 ?greedy f x l = with Failure _ | Invalid_argument _ -> Errors.anomaly (Pp.str "Future.map2 length mismatch")) in f xi y) 0 l + +let print f kx = + let open Pp in + let (uid, _, x) = get kx in + let uid = + if UUID.equal uid UUID.invalid then str "[#]" + else str "[" ++ int uid ++ str "]" + in + match !x with + | Delegated _ -> str "Delegated" ++ uid + | Closure _ -> str "Closure" ++ uid + | Val (x, None) -> str "PureVal" ++ uid ++ spc () ++ hov 0 (f x) + | Val (x, Some _) -> str "StateVal" ++ uid ++ spc () ++ hov 0 (f x) + | Exn e -> str "Exn" ++ uid ++ spc () ++ hov 0 (str (Printexc.to_string e)) |
