diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 1996-09-10 12:44:14 +0000 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 1996-09-10 12:44:14 +0000 |
commit | 1109a9dd32132d454e82ca9a68f247e4c687af26 (patch) | |
tree | d7b13d30a1662dd1ac7f605e0717ede2d3c2e19a | |
parent | 4a6ea1c013f5f3b742f91d4a9ccae59853c8d58c (diff) |
Expanser les abreviations dans le type d'une fonction tracee (au cas
ou le type contiendrait une abreviation pour un type fleche).
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@979 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r-- | toplevel/topdirs.ml | 3 | ||||
-rw-r--r-- | toplevel/trace.ml | 6 | ||||
-rw-r--r-- | toplevel/trace.mli | 2 |
3 files changed, 6 insertions, 5 deletions
diff --git a/toplevel/topdirs.ml b/toplevel/topdirs.ml index 42c97a764..c8bfc1852 100644 --- a/toplevel/topdirs.ml +++ b/toplevel/topdirs.ml @@ -233,7 +233,8 @@ let dir_trace lid = closure = clos; initial_closure = old_clos; instrumented_fun = - instrument_closure lid (Ctype.instance desc.val_type) + instrument_closure !toplevel_env lid + (Ctype.instance desc.val_type) old_clos} :: !traced_functions; (* Redirect the code field of the old closure *) diff --git a/toplevel/trace.ml b/toplevel/trace.ml index 86d9836c9..5e14f585f 100644 --- a/toplevel/trace.ml +++ b/toplevel/trace.ml @@ -52,15 +52,15 @@ let overwrite_closure dst src = (* Return a closure that performs as the given closure, but also traces its execution. *) -let rec instrument_closure name clos_typ = - match (Ctype.repr clos_typ).desc with +let rec instrument_closure env name clos_typ = + match (Ctype.repr(Ctype.expand_root env clos_typ)).desc with Tarrow(t1, t2) -> let starred_name = match name with Lident s -> Lident(s ^ "*") | Ldot(lid, s) -> Ldot(lid, s ^ "*") | Lapply(l1, l2) -> fatal_error "Trace.instrument_closure" in - let trace_res = instrument_closure starred_name t2 in + let trace_res = instrument_closure env starred_name t2 in (fun clos_val -> Obj.repr(fun arg -> open_hovbox 2; diff --git a/toplevel/trace.mli b/toplevel/trace.mli index d9ebe1b05..149b2849d 100644 --- a/toplevel/trace.mli +++ b/toplevel/trace.mli @@ -24,5 +24,5 @@ val is_traced: Obj.t -> Path.t option val copy_closure: Obj.t -> Obj.t val overwrite_closure: Obj.t -> Obj.t -> unit val instrument_closure: - Longident.t -> Typedtree.type_expr -> Obj.t -> Obj.t + Env.t -> Longident.t -> Typedtree.type_expr -> Obj.t -> Obj.t val print_trace: Obj.t -> Obj.t -> Obj.t |