mirror of
https://github.com/ocaml/ocaml.git
synced 2026-07-30 17:37:15 +08:00
The debugger and toplevels let users install printers for their data types. To make sure the provided printers have the right type, both the debugger and the toplevel need to know the internal OCaml representation of the expected types. So far, both the debugger and the toplevels used to extract the expected representatioons from topdirs.cmi which they were reading at runtime. This creates problems (e.g. when the compiler has not yet been installed) and yields not so easy to read code. In this commit, the type of the printers are defined in strings as they would be written in OCaml in topdirs.ml. These strings are parsed at runtime and the corresponding typing declarations are added to the environment.
48 lines
2.0 KiB
OCaml
48 lines
2.0 KiB
OCaml
(**************************************************************************)
|
|
(* *)
|
|
(* OCaml *)
|
|
(* *)
|
|
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
|
|
(* *)
|
|
(* Copyright 1996 Institut National de Recherche en Informatique et *)
|
|
(* en Automatique. *)
|
|
(* *)
|
|
(* All rights reserved. This file is distributed under the terms of *)
|
|
(* the GNU Lesser General Public License version 2.1, with the *)
|
|
(* special exception on linking described in the file LICENSE. *)
|
|
(* *)
|
|
(**************************************************************************)
|
|
|
|
(* The toplevel directives. *)
|
|
|
|
open Format
|
|
|
|
val dir_quit : unit -> unit
|
|
val dir_directory : string -> unit
|
|
val dir_remove_directory : string -> unit
|
|
val dir_cd : string -> unit
|
|
val dir_load : formatter -> string -> unit
|
|
val dir_use : formatter -> string -> unit
|
|
val dir_use_output : formatter -> string -> unit
|
|
val dir_install_printer : formatter -> Longident.t -> unit
|
|
val dir_remove_printer : formatter -> Longident.t -> unit
|
|
|
|
(* These are now injected from [Topeval], for the bytecode toplevel only:
|
|
val dir_trace : formatter -> Longident.t -> unit
|
|
val dir_untrace : formatter -> Longident.t -> unit
|
|
val dir_untrace_all : formatter -> unit -> unit
|
|
*)
|
|
|
|
val section_general : string
|
|
val section_run : string
|
|
val section_env : string
|
|
|
|
val section_print : string
|
|
val section_trace : string
|
|
val section_options : string
|
|
|
|
val section_undocumented : string
|
|
|
|
(* Here for backwards compatibility, use [Toploop.load_file]. *)
|
|
val[@deprecated] load_file : formatter -> string -> bool
|