fusion des changements 3.09.2 -> 3.09.3
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@7619 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02master
parent
403f1e1a34
commit
fbea66a95e
50
.depend
50
.depend
|
@ -62,8 +62,8 @@ typing/includeclass.cmi: typing/types.cmi typing/typedtree.cmi typing/env.cmi \
|
|||
typing/ctype.cmi
|
||||
typing/includecore.cmi: typing/types.cmi typing/typedtree.cmi \
|
||||
typing/ident.cmi typing/env.cmi
|
||||
typing/includemod.cmi: typing/types.cmi typing/typedtree.cmi typing/ident.cmi \
|
||||
typing/env.cmi typing/ctype.cmi
|
||||
typing/includemod.cmi: typing/types.cmi typing/typedtree.cmi typing/path.cmi \
|
||||
typing/ident.cmi typing/env.cmi typing/ctype.cmi
|
||||
typing/mtype.cmi: typing/types.cmi typing/path.cmi typing/ident.cmi \
|
||||
typing/env.cmi
|
||||
typing/oprint.cmi: typing/outcometree.cmi
|
||||
|
@ -112,11 +112,11 @@ typing/datarepr.cmx: typing/types.cmx typing/predef.cmx utils/misc.cmx \
|
|||
typing/env.cmo: typing/types.cmi utils/tbl.cmi typing/subst.cmi \
|
||||
typing/predef.cmi typing/path.cmi utils/misc.cmi parsing/longident.cmi \
|
||||
typing/ident.cmi typing/datarepr.cmi utils/consistbl.cmi utils/config.cmi \
|
||||
typing/btype.cmi parsing/asttypes.cmi typing/env.cmi
|
||||
utils/clflags.cmi typing/btype.cmi parsing/asttypes.cmi typing/env.cmi
|
||||
typing/env.cmx: typing/types.cmx utils/tbl.cmx typing/subst.cmx \
|
||||
typing/predef.cmx typing/path.cmx utils/misc.cmx parsing/longident.cmx \
|
||||
typing/ident.cmx typing/datarepr.cmx utils/consistbl.cmx utils/config.cmx \
|
||||
typing/btype.cmx parsing/asttypes.cmi typing/env.cmi
|
||||
utils/clflags.cmx typing/btype.cmx parsing/asttypes.cmi typing/env.cmi
|
||||
typing/ident.cmo: typing/ident.cmi
|
||||
typing/ident.cmx: typing/ident.cmi
|
||||
typing/includeclass.cmo: typing/types.cmi typing/printtyp.cmi \
|
||||
|
@ -443,8 +443,8 @@ asmcomp/asmlink.cmi: asmcomp/compilenv.cmi
|
|||
asmcomp/clambda.cmi: bytecomp/lambda.cmi typing/ident.cmi \
|
||||
parsing/asttypes.cmi
|
||||
asmcomp/closure.cmi: bytecomp/lambda.cmi asmcomp/clambda.cmi
|
||||
asmcomp/cmmgen.cmi: asmcomp/cmm.cmi asmcomp/clambda.cmi
|
||||
asmcomp/cmm.cmi: typing/ident.cmi
|
||||
asmcomp/cmmgen.cmi: asmcomp/cmm.cmi asmcomp/clambda.cmi
|
||||
asmcomp/codegen.cmi: asmcomp/cmm.cmi
|
||||
asmcomp/comballoc.cmi: asmcomp/mach.cmi
|
||||
asmcomp/compilenv.cmi: typing/ident.cmi asmcomp/clambda.cmi
|
||||
|
@ -458,8 +458,8 @@ asmcomp/printlinear.cmi: asmcomp/linearize.cmi
|
|||
asmcomp/printmach.cmi: asmcomp/reg.cmi asmcomp/mach.cmi
|
||||
asmcomp/proc.cmi: asmcomp/reg.cmi asmcomp/mach.cmi
|
||||
asmcomp/reg.cmi: asmcomp/cmm.cmi
|
||||
asmcomp/reloadgen.cmi: asmcomp/reg.cmi asmcomp/mach.cmi
|
||||
asmcomp/reload.cmi: asmcomp/mach.cmi
|
||||
asmcomp/reloadgen.cmi: asmcomp/reg.cmi asmcomp/mach.cmi
|
||||
asmcomp/schedgen.cmi: asmcomp/mach.cmi asmcomp/linearize.cmi
|
||||
asmcomp/scheduling.cmi: asmcomp/linearize.cmi
|
||||
asmcomp/selectgen.cmi: utils/tbl.cmi asmcomp/reg.cmi asmcomp/mach.cmi \
|
||||
|
@ -523,6 +523,8 @@ asmcomp/closure.cmx: utils/tbl.cmx bytecomp/switch.cmx typing/primitive.cmx \
|
|||
utils/misc.cmx bytecomp/lambda.cmx typing/ident.cmx asmcomp/compilenv.cmx \
|
||||
utils/clflags.cmx asmcomp/clambda.cmx parsing/asttypes.cmi \
|
||||
asmcomp/closure.cmi
|
||||
asmcomp/cmm.cmo: typing/ident.cmi asmcomp/arch.cmo asmcomp/cmm.cmi
|
||||
asmcomp/cmm.cmx: typing/ident.cmx asmcomp/arch.cmx asmcomp/cmm.cmi
|
||||
asmcomp/cmmgen.cmo: typing/types.cmi bytecomp/switch.cmi asmcomp/proc.cmi \
|
||||
typing/primitive.cmi utils/misc.cmi bytecomp/lambda.cmi typing/ident.cmi \
|
||||
utils/config.cmi asmcomp/compilenv.cmi asmcomp/cmm.cmi utils/clflags.cmi \
|
||||
|
@ -533,8 +535,6 @@ asmcomp/cmmgen.cmx: typing/types.cmx bytecomp/switch.cmx asmcomp/proc.cmx \
|
|||
utils/config.cmx asmcomp/compilenv.cmx asmcomp/cmm.cmx utils/clflags.cmx \
|
||||
asmcomp/clambda.cmx parsing/asttypes.cmi asmcomp/arch.cmx \
|
||||
asmcomp/cmmgen.cmi
|
||||
asmcomp/cmm.cmo: typing/ident.cmi asmcomp/arch.cmo asmcomp/cmm.cmi
|
||||
asmcomp/cmm.cmx: typing/ident.cmx asmcomp/arch.cmx asmcomp/cmm.cmi
|
||||
asmcomp/codegen.cmo: asmcomp/split.cmi asmcomp/spill.cmi asmcomp/reload.cmi \
|
||||
asmcomp/reg.cmi asmcomp/printmach.cmi asmcomp/printlinear.cmi \
|
||||
asmcomp/printcmm.cmi asmcomp/liveness.cmi asmcomp/linearize.cmi \
|
||||
|
@ -555,16 +555,16 @@ asmcomp/compilenv.cmo: utils/misc.cmi typing/ident.cmi typing/env.cmi \
|
|||
utils/config.cmi asmcomp/clambda.cmi asmcomp/compilenv.cmi
|
||||
asmcomp/compilenv.cmx: utils/misc.cmx typing/ident.cmx typing/env.cmx \
|
||||
utils/config.cmx asmcomp/clambda.cmx asmcomp/compilenv.cmi
|
||||
asmcomp/emitaux.cmo: asmcomp/emitaux.cmi
|
||||
asmcomp/emitaux.cmx: asmcomp/emitaux.cmi
|
||||
asmcomp/emit.cmo: asmcomp/reg.cmi asmcomp/proc.cmi utils/misc.cmi \
|
||||
asmcomp/mach.cmi parsing/location.cmi asmcomp/linearize.cmi \
|
||||
asmcomp/emitaux.cmi utils/config.cmi asmcomp/compilenv.cmi \
|
||||
asmcomp/cmm.cmi utils/clflags.cmi asmcomp/arch.cmo asmcomp/emit.cmi
|
||||
asmcomp/cmm.cmi asmcomp/arch.cmo asmcomp/emit.cmi
|
||||
asmcomp/emit.cmx: asmcomp/reg.cmx asmcomp/proc.cmx utils/misc.cmx \
|
||||
asmcomp/mach.cmx parsing/location.cmx asmcomp/linearize.cmx \
|
||||
asmcomp/emitaux.cmx utils/config.cmx asmcomp/compilenv.cmx \
|
||||
asmcomp/cmm.cmx utils/clflags.cmx asmcomp/arch.cmx asmcomp/emit.cmi
|
||||
asmcomp/cmm.cmx asmcomp/arch.cmx asmcomp/emit.cmi
|
||||
asmcomp/emitaux.cmo: asmcomp/emitaux.cmi
|
||||
asmcomp/emitaux.cmx: asmcomp/emitaux.cmi
|
||||
asmcomp/interf.cmo: asmcomp/reg.cmi asmcomp/proc.cmi utils/misc.cmi \
|
||||
asmcomp/mach.cmi asmcomp/interf.cmi
|
||||
asmcomp/interf.cmx: asmcomp/reg.cmx asmcomp/proc.cmx utils/misc.cmx \
|
||||
|
@ -599,34 +599,32 @@ asmcomp/proc.cmx: asmcomp/reg.cmx utils/misc.cmx asmcomp/mach.cmx \
|
|||
asmcomp/arch.cmx asmcomp/proc.cmi
|
||||
asmcomp/reg.cmo: asmcomp/cmm.cmi asmcomp/reg.cmi
|
||||
asmcomp/reg.cmx: asmcomp/cmm.cmx asmcomp/reg.cmi
|
||||
asmcomp/reload.cmo: asmcomp/reloadgen.cmi asmcomp/reload.cmi
|
||||
asmcomp/reload.cmx: asmcomp/reloadgen.cmx asmcomp/reload.cmi
|
||||
asmcomp/reloadgen.cmo: asmcomp/reg.cmi utils/misc.cmi asmcomp/mach.cmi \
|
||||
asmcomp/reloadgen.cmi
|
||||
asmcomp/reloadgen.cmx: asmcomp/reg.cmx utils/misc.cmx asmcomp/mach.cmx \
|
||||
asmcomp/reloadgen.cmi
|
||||
asmcomp/reload.cmo: asmcomp/reloadgen.cmi asmcomp/reg.cmi asmcomp/mach.cmi \
|
||||
asmcomp/cmm.cmi asmcomp/arch.cmo asmcomp/reload.cmi
|
||||
asmcomp/reload.cmx: asmcomp/reloadgen.cmx asmcomp/reg.cmx asmcomp/mach.cmx \
|
||||
asmcomp/cmm.cmx asmcomp/arch.cmx asmcomp/reload.cmi
|
||||
asmcomp/schedgen.cmo: asmcomp/reg.cmi utils/misc.cmi asmcomp/mach.cmi \
|
||||
asmcomp/linearize.cmi asmcomp/cmm.cmi asmcomp/arch.cmo \
|
||||
asmcomp/schedgen.cmi
|
||||
asmcomp/schedgen.cmx: asmcomp/reg.cmx utils/misc.cmx asmcomp/mach.cmx \
|
||||
asmcomp/linearize.cmx asmcomp/cmm.cmx asmcomp/arch.cmx \
|
||||
asmcomp/schedgen.cmi
|
||||
asmcomp/scheduling.cmo: asmcomp/schedgen.cmi asmcomp/scheduling.cmi
|
||||
asmcomp/scheduling.cmx: asmcomp/schedgen.cmx asmcomp/scheduling.cmi
|
||||
asmcomp/scheduling.cmo: asmcomp/schedgen.cmi asmcomp/mach.cmi \
|
||||
asmcomp/arch.cmo asmcomp/scheduling.cmi
|
||||
asmcomp/scheduling.cmx: asmcomp/schedgen.cmx asmcomp/mach.cmx \
|
||||
asmcomp/arch.cmx asmcomp/scheduling.cmi
|
||||
asmcomp/selectgen.cmo: utils/tbl.cmi asmcomp/reg.cmi asmcomp/proc.cmi \
|
||||
utils/misc.cmi asmcomp/mach.cmi typing/ident.cmi asmcomp/cmm.cmi \
|
||||
asmcomp/arch.cmo asmcomp/selectgen.cmi
|
||||
asmcomp/selectgen.cmx: utils/tbl.cmx asmcomp/reg.cmx asmcomp/proc.cmx \
|
||||
utils/misc.cmx asmcomp/mach.cmx typing/ident.cmx asmcomp/cmm.cmx \
|
||||
asmcomp/arch.cmx asmcomp/selectgen.cmi
|
||||
asmcomp/selection.cmo: asmcomp/selectgen.cmi asmcomp/reg.cmi asmcomp/proc.cmi \
|
||||
utils/misc.cmi asmcomp/mach.cmi asmcomp/cmm.cmi asmcomp/arch.cmo \
|
||||
asmcomp/selection.cmi
|
||||
asmcomp/selection.cmx: asmcomp/selectgen.cmx asmcomp/reg.cmx asmcomp/proc.cmx \
|
||||
utils/misc.cmx asmcomp/mach.cmx asmcomp/cmm.cmx asmcomp/arch.cmx \
|
||||
asmcomp/selection.cmi
|
||||
asmcomp/selection.cmo: asmcomp/selectgen.cmi asmcomp/reg.cmi utils/misc.cmi \
|
||||
asmcomp/mach.cmi asmcomp/cmm.cmi asmcomp/arch.cmo asmcomp/selection.cmi
|
||||
asmcomp/selection.cmx: asmcomp/selectgen.cmx asmcomp/reg.cmx utils/misc.cmx \
|
||||
asmcomp/mach.cmx asmcomp/cmm.cmx asmcomp/arch.cmx asmcomp/selection.cmi
|
||||
asmcomp/spill.cmo: asmcomp/reg.cmi asmcomp/proc.cmi utils/misc.cmi \
|
||||
asmcomp/mach.cmi asmcomp/spill.cmi
|
||||
asmcomp/spill.cmx: asmcomp/reg.cmx asmcomp/proc.cmx utils/misc.cmx \
|
||||
|
@ -665,8 +663,6 @@ driver/errors.cmx: utils/warnings.cmx typing/typetexp.cmx typing/typemod.cmx \
|
|||
parsing/location.cmx parsing/lexer.cmx typing/includemod.cmx \
|
||||
typing/env.cmx typing/ctype.cmx bytecomp/bytepackager.cmx \
|
||||
bytecomp/bytelink.cmx bytecomp/bytelibrarian.cmx driver/errors.cmi
|
||||
driver/main_args.cmo: driver/main_args.cmi
|
||||
driver/main_args.cmx: driver/main_args.cmi
|
||||
driver/main.cmo: utils/warnings.cmi utils/misc.cmi driver/main_args.cmi \
|
||||
driver/errors.cmi utils/config.cmi driver/compile.cmi utils/clflags.cmi \
|
||||
bytecomp/bytepackager.cmi bytecomp/bytelink.cmi \
|
||||
|
@ -675,6 +671,8 @@ driver/main.cmx: utils/warnings.cmx utils/misc.cmx driver/main_args.cmx \
|
|||
driver/errors.cmx utils/config.cmx driver/compile.cmx utils/clflags.cmx \
|
||||
bytecomp/bytepackager.cmx bytecomp/bytelink.cmx \
|
||||
bytecomp/bytelibrarian.cmx driver/main.cmi
|
||||
driver/main_args.cmo: driver/main_args.cmi
|
||||
driver/main_args.cmx: driver/main_args.cmi
|
||||
driver/optcompile.cmo: utils/warnings.cmi typing/unused_var.cmi \
|
||||
typing/typemod.cmi typing/typedtree.cmi bytecomp/translmod.cmi \
|
||||
bytecomp/simplif.cmi typing/printtyp.cmi bytecomp/printlambda.cmi \
|
||||
|
|
39
Changes
39
Changes
|
@ -7,6 +7,43 @@ Language features:
|
|||
definition replaces the old one, rather than creating a new
|
||||
variable.
|
||||
|
||||
|
||||
Objective Caml 3.09.3:
|
||||
----------------------
|
||||
|
||||
Bug fixes:
|
||||
- ocamldoc: -using modtype constraint to filter module elements displayed
|
||||
in doc PR#4016
|
||||
- ocamldoc: error in merging of top dependencies of modules PR#4007
|
||||
- ocamldoc: -dot-colors has no effect PR#3981
|
||||
- ocamdloc: missing crossref in text from intro files PR#4066
|
||||
- compilers: segfault with recursive modules PR#4008
|
||||
- compilers: infinite loop when compiling objects PR#4018
|
||||
- compilers: bad error message when signature mismatch PR#4001
|
||||
- compilers: infinite loop with -rectypes PR#3999
|
||||
- compilers: contravariance bug in private rows
|
||||
- compilers: unsafe cast with polymorphic exception PR#4002
|
||||
- native compiler: bad assembly code generated for AMD64 PR#4067
|
||||
- native compiler: stack alignment problems on MacOSX/i386 PR#4036
|
||||
- stdlib: crash in marshalling PR#4030
|
||||
- stdlib: crash when closing a channel twice PR#4039
|
||||
- stdlib: memory leak in Sys.readdir PR#4093
|
||||
- C interface: better definition of CAMLreturn PR#4068
|
||||
- otherlibs/unix: crash in gethostbyname PR#3043
|
||||
- tools: subtle problem with unset in makefile PR#4048
|
||||
- camlp4: install pa_o_fast.o PR#3812
|
||||
- camlp4: install more modules PR#3689
|
||||
|
||||
New features:
|
||||
- ocamldoc: name resolution in cross-referencing {!name}: if name is not
|
||||
found, then it is searched in the parent module/class, and in the parent
|
||||
of the parent, and so on until it is found.
|
||||
- ocamldoc: new option -short-functors to use a short form to display
|
||||
functors in html generator PR#4017
|
||||
- ocamlprof: added "-version" option
|
||||
|
||||
|
||||
|
||||
Objective Caml 3.09.2:
|
||||
----------------------
|
||||
|
||||
|
@ -31,7 +68,7 @@ Bug fixes:
|
|||
- stdlib: Filename.dirname/basename wrong on Win32 PR#3933
|
||||
- stdlib: incomplete documentation of Pervasives.abs PR#3967
|
||||
- stdlib: Printf bugs PR#3902, PR#3955
|
||||
- tools/checkstack.c missing include
|
||||
- tools/checkstack.c: missing include
|
||||
- yacc: crash when given argument "-" PR#3956
|
||||
|
||||
New features:
|
||||
|
|
25
README
25
README
|
@ -22,10 +22,10 @@ native-code compiler currently runs on the following platforms:
|
|||
Tier 1 (actively used and maintained by the core Caml team):
|
||||
|
||||
AMD64 (Opteron) Linux
|
||||
IA32 (Pentium) Linux, FreeBSD, MS Windows
|
||||
IA32 (Pentium) Linux, FreeBSD, MacOS X, MS Windows
|
||||
PowerPC MacOS X
|
||||
|
||||
Tier 2 (maintained but less actively, with help from users):
|
||||
Tier 2 (maintained when possible, with help from users):
|
||||
|
||||
Alpha Digital Unix/Compaq Tru64, Linux, all BSD
|
||||
AMD64 FreeBSD, OpenBSD
|
||||
|
@ -78,9 +78,9 @@ CONTENTS:
|
|||
COPYRIGHT:
|
||||
|
||||
All files marked "Copyright INRIA" in this distribution are copyright
|
||||
1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Institut National de
|
||||
Recherche en Informatique et en Automatique (INRIA) and distributed
|
||||
under the conditions stated in file LICENSE.
|
||||
1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||
Institut National de Recherche en Informatique et en Automatique
|
||||
(INRIA) and distributed under the conditions stated in file LICENSE.
|
||||
|
||||
INSTALLATION:
|
||||
|
||||
|
@ -112,11 +112,9 @@ Messages to the list should be sent to:
|
|||
|
||||
caml-list@inria.fr
|
||||
|
||||
If you wish to subscribe to this list, please send a message to:
|
||||
You can subscribe to this list via the Web interface at
|
||||
|
||||
caml-list-request@inria.fr
|
||||
|
||||
with the single word "subscribe" in the body of the message.
|
||||
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
|
||||
|
||||
Archives of the list are available on the Web site http://caml.inria.fr/
|
||||
|
||||
|
@ -126,11 +124,7 @@ including Caml.
|
|||
|
||||
BUG REPORTS AND USER FEEDBACK:
|
||||
|
||||
Send your bug reports by E-mail to:
|
||||
|
||||
caml-bugs@inria.fr
|
||||
|
||||
or report them using the Web interface to the bug-tracking system
|
||||
Please report bugs using the Web interface to the bug-tracking system
|
||||
at http://caml.inria.fr/bin/caml-bugs
|
||||
|
||||
To be effective, bug reports should include a complete program
|
||||
|
@ -139,3 +133,6 @@ configuration you are using (machine type, etc).
|
|||
|
||||
You can also contact the implementors directly at caml@inria.fr.
|
||||
|
||||
|
||||
----
|
||||
$Id$
|
||||
|
|
89
README.win32
89
README.win32
|
@ -43,24 +43,20 @@ The remainder of this document gives more information on each port.
|
|||
REQUIREMENTS:
|
||||
|
||||
This port runs under MS Windows NT, 2000 and XP.
|
||||
Windows 95, 98 and ME are also supported, but less reliably.
|
||||
Windows 95, 98 and ME are no longer supported.
|
||||
|
||||
The base bytecode system (ocamlc, ocaml, ocamllex, ocamlyacc, ...)
|
||||
runs without any additional tools.
|
||||
|
||||
Statically linking Caml bytecode with C code (ocamlc -custom) requires the
|
||||
Microsoft Visual C++ compiler. Dynamic loading of DLLs is
|
||||
supported out of the box, without additional software.
|
||||
Microsoft Visual C++ compiler (items [1] and [2] in the section
|
||||
"third-party software" below). Dynamic loading of DLLs is supported
|
||||
out of the box, without additional software.
|
||||
|
||||
The native-code compiler (ocamlopt) requires Visual C++ and the
|
||||
Microsoft assembler MASM version 6.11 or later. MASM can be
|
||||
downloaded for free from Microsoft's Web site; for directions, see
|
||||
http://www.easystreet.com/~jkirwan/pctools.html
|
||||
or http://www2.dgsys.com/~raymoon/faq/masm.html
|
||||
or the comp.lang.asm.x86 FAQ.
|
||||
The native-code compiler (ocamlopt) requires Visual C++ (items [1], [2])
|
||||
and the Microsoft assembler MASM (item [3]).
|
||||
|
||||
The LablTk GUI requires Tcl/Tk 8.3. Windows binaries are
|
||||
available from http://prdownloads.sourceforge.net/tcl/tcl832.exe.
|
||||
The LablTk GUI requires Tcl/Tk 8.3 (item [4]).
|
||||
|
||||
|
||||
INSTALLATION:
|
||||
|
@ -68,20 +64,6 @@ INSTALLATION:
|
|||
The binary distribution is a self-installing executable archive.
|
||||
Just run it and it should install OCaml automatically.
|
||||
|
||||
If you are using Windows 95, 98 or ME, you need to adjust environment
|
||||
variables as follows:
|
||||
- add the "bin" subdirectory of the OCaml installation directory
|
||||
to the PATH variable;
|
||||
- set the OCAMLLIB variable to the "lib" subdirectory of the
|
||||
OCaml installation directory.
|
||||
For instance, if you installed OCaml in C:\Program Files\Objective Caml,
|
||||
add the following two lines at the end of C:\autoexec.bat:
|
||||
|
||||
set PATH=%PATH%;"C:\Program Files\Objective Caml\bin"
|
||||
set OCAMLLIB=C:\Program Files\Objective Caml\lib
|
||||
|
||||
No such tweaking of environment variables is needed under NT, 2000 and XP.
|
||||
|
||||
To run programs that use the LablTK GUI, the directory where the
|
||||
DLLs tk83.dll and tcl83.dll were installed (by the Tcl/Tk
|
||||
installer) must be added to the PATH environment variable.
|
||||
|
@ -93,6 +75,26 @@ environment variable. E.g. if Tcl/Tk was installed in C:\tcl, add
|
|||
"C:\tcl\lib" to the LIB environment variable.
|
||||
|
||||
|
||||
THIRD-PARTY SOFTWARE:
|
||||
|
||||
[1] Visual C++ version 6 or later. We use Visual C++ 2003.
|
||||
The free download Visual C++ 2005 Express Edition works under
|
||||
Windows 2000, but not under Windows XP because of the "manifest"
|
||||
annotations on DLLs, which are not yet supported by OCaml.
|
||||
So, please stick with the 2003 edition for the time being.
|
||||
|
||||
[2] Windows header files and development libraries. We found them in
|
||||
the Microsoft Windows Server 2003 SP1 Platform SDK, which can
|
||||
be downloaded for free from http://www.microsoft.com/.
|
||||
|
||||
[3] MASM version 6.11 or later. MASM can be
|
||||
downloaded for free from Microsoft's Web site; for directions, see
|
||||
http://users.easystreet.com/jkirwan/new/pctools.html.
|
||||
|
||||
[4] TCL/TK version 8.3. Windows binaries are available from
|
||||
http://prdownloads.sourceforge.net/tcl/tcl832.exe.
|
||||
|
||||
|
||||
RECOMPILATION FROM THE SOURCES:
|
||||
|
||||
The command-line tools can be recompiled from the Unix source
|
||||
|
@ -100,11 +102,9 @@ distribution (ocaml-X.YZ.tar.gz), which also contains the files modified
|
|||
for Windows.
|
||||
|
||||
You will need the following software components to perform the recompilation:
|
||||
- Windows NT, 2000, or XP (we advise against compiling under Windows 95/98/ME)
|
||||
- Visual C++ version 6 or 7
|
||||
- MASM version 6.11 (see above)
|
||||
- The Cygwin port of GNU tools, available from http://cygwin.com/
|
||||
- TCL/TK version 8.3 (for the LablTK GUI) (see above).
|
||||
- Windows NT, 2000, or XP.
|
||||
- Items [1], [2], [3] and [4] from the list of recommended software above.
|
||||
- The Cygwin port of GNU tools, available from http://www.cygwin.com/
|
||||
|
||||
Remember to add the directory where the libraries tk83.lib and
|
||||
tcl83.lib were installed (by the Tcl/Tk installer) to the LIB variable
|
||||
|
@ -127,6 +127,7 @@ Finally, use "make -f Makefile.nt" to build the system, e.g.
|
|||
make -f Makefile.nt world
|
||||
make -f Makefile.nt bootstrap
|
||||
make -f Makefile.nt opt
|
||||
make -f Makefile.nt opt.opt
|
||||
make -f Makefile.nt install
|
||||
|
||||
|
||||
|
@ -167,8 +168,9 @@ runs without any additional tools.
|
|||
The native-code compiler (ocamlopt), as well as static linking of
|
||||
Caml bytecode with C code (ocamlc -custom), require
|
||||
the Cygwin development tools, available at
|
||||
http://sources.redhat.com/cygwin/
|
||||
You will need to install at least the following Cygwin packages:
|
||||
http://www.cygwin.com/
|
||||
You will need to install at least the following Cygwin packages (use
|
||||
the Setup tool from Cygwin):
|
||||
binutils, gcc-core, gcc-mingw-core, mingw-runtime, w32-api.
|
||||
|
||||
Do *not* install the Mingw/MSYS development tools from www.mingw.org:
|
||||
|
@ -184,20 +186,6 @@ INSTALLATION:
|
|||
The binary distribution is a self-installing executable archive.
|
||||
Just run it and it should install OCaml automatically.
|
||||
|
||||
If you are using Windows 95, 98 or ME, you need to adjust environment
|
||||
variables as follows:
|
||||
- add the "bin" subdirectory of the OCaml installation directory
|
||||
to the PATH variable;
|
||||
- set the OCAMLLIB variable to the "lib" subdirectory of the
|
||||
OCaml installation directory.
|
||||
For instance, if you installed OCaml in C:\Program Files\Objective Caml,
|
||||
add the following two lines at the end of C:\autoexec.bat:
|
||||
|
||||
set PATH=%PATH%;"C:\Program Files\Objective Caml\bin"
|
||||
set OCAMLLIB=C:\Program Files\Objective Caml\lib
|
||||
|
||||
No such tweaking of environment variables is needed under NT, 2000 and XP.
|
||||
|
||||
To run programs that use the LablTK GUI, the directory where the
|
||||
DLLs tk83.dll and tcl83.dll were installed (by the Tcl/Tk
|
||||
installer) must be added to the PATH environment variable.
|
||||
|
@ -212,7 +200,7 @@ environment variable. E.g. if Tcl/Tk was installed in C:\tcl, add
|
|||
RECOMPILATION FROM THE SOURCES:
|
||||
|
||||
You will need the following software components to perform the recompilation:
|
||||
- Windows NT, 2000, or XP (we advise against compiling under Windows 95/98/ME)
|
||||
- Windows NT, 2000, or XP.
|
||||
- Cygwin: http://sourceware.cygnus.com/cygwin/
|
||||
- TCL/TK version 8.3 (see above).
|
||||
|
||||
|
@ -258,15 +246,16 @@ REQUIREMENTS:
|
|||
|
||||
This port requires the Cygwin environment from Cygnus/RedHat, which
|
||||
is freely available at:
|
||||
http://sources.redhat.com/cygwin/
|
||||
http://www.cygwin.com/
|
||||
|
||||
This port runs under all versions of MS Windows supported by Cygwin.
|
||||
|
||||
|
||||
INSTALLATION:
|
||||
|
||||
For technical reasons, no binary distribution of this port is available.
|
||||
You need to recompile from the source distribution.
|
||||
We do not distribute binaries for this port, but they can be found
|
||||
in the Cygwin distribution (use the Setup tool from Cygwin and select
|
||||
the OCaml packages). Alternatively, recompile from the source distribution.
|
||||
|
||||
|
||||
RECOMPILATION FROM THE SOURCES:
|
||||
|
|
|
@ -19,7 +19,7 @@ open Mach
|
|||
|
||||
(* Reloading for the AMD64 *)
|
||||
|
||||
(* Summary of instruction set constraints:
|
||||
(* Summary of instruction set constraints:
|
||||
"S" means either stack or register, "R" means register only.
|
||||
Operation Res Arg1 Arg2
|
||||
Imove R S
|
||||
|
@ -73,12 +73,6 @@ method reload_operation op arg res =
|
|||
(* This add will be turned into a lea; args and results must be
|
||||
in registers *)
|
||||
super#reload_operation op arg res
|
||||
| Iconst_symbol _ ->
|
||||
if !pic_code
|
||||
then super#reload_operation op arg res
|
||||
else (arg, res)
|
||||
| Iconst_int n when n >= -0x80000000n && n <= 0x7FFFFFFFn ->
|
||||
(arg, res)
|
||||
| Iintop(Idiv | Imod | Ilsl | Ilsr | Iasr)
|
||||
| Iintop_imm(_, _) ->
|
||||
(* The argument(s) and results can be either in register or on stack *)
|
||||
|
@ -94,6 +88,14 @@ method reload_operation op arg res =
|
|||
| Ifloatofint | Iintoffloat ->
|
||||
(* Result must be in register, but argument can be on stack *)
|
||||
(arg, (if stackp res.(0) then [| self#makereg res.(0) |] else res))
|
||||
| Iconst_int n ->
|
||||
if n <= 0x7FFFFFFFn && n >= -0x80000000n
|
||||
then (arg, res)
|
||||
else super#reload_operation op arg res
|
||||
| Iconst_symbol _ ->
|
||||
if !pic_code
|
||||
then super#reload_operation op arg res
|
||||
else (arg, res)
|
||||
| _ -> (* Other operations: all args and results in registers *)
|
||||
super#reload_operation op arg res
|
||||
|
||||
|
|
|
@ -124,7 +124,7 @@ let calling_conventions first_int last_int first_float last_float make_stack
|
|||
ofs := !ofs + size_float
|
||||
end
|
||||
done;
|
||||
(loc, max 0 !ofs)
|
||||
(loc, Misc.align stack_alignment (max 0 !ofs))
|
||||
|
||||
let incoming ofs = Incoming ofs
|
||||
let outgoing ofs = Outgoing ofs
|
||||
|
|
1471
asmrun/.depend
1471
asmrun/.depend
File diff suppressed because it is too large
Load Diff
|
@ -181,9 +181,8 @@ clean::
|
|||
rm -f *.o *.a *~
|
||||
|
||||
depend: $(COBJS:.o=.c) ${LINKEDFILES}
|
||||
gcc -MM $(FLAGS) *.c > .depend
|
||||
-gcc -MM $(FLAGS) *.c > .depend
|
||||
gcc -MM $(FLAGS) -DDEBUG *.c | sed -e 's/\.o/.d.o/' >> .depend
|
||||
gcc -MM $(FLAGS) -DDEBUG *.c | sed -e 's/\.o/.p.o/' >> .depend
|
||||
|
||||
include .depend
|
||||
|
||||
|
|
|
@ -89,6 +89,7 @@ LBL(105):
|
|||
pushl %ebx
|
||||
pushl %eax
|
||||
movl %esp, G(caml_gc_regs)
|
||||
/* MacOSX note: 16-alignment of stack preserved at this point */
|
||||
/* Call the garbage collector */
|
||||
call G(caml_garbage_collection)
|
||||
/* Restore all regs used by the code generator */
|
||||
|
@ -116,7 +117,13 @@ LBL(100):
|
|||
movl %eax, G(caml_last_return_address)
|
||||
leal 4(%esp), %eax
|
||||
movl %eax, G(caml_bottom_of_stack)
|
||||
#ifdef SYS_macosx
|
||||
subl $12, %esp /* 16-alignment */
|
||||
#endif
|
||||
call LBL(105)
|
||||
#ifdef SYS_macosx
|
||||
addl $12, %esp /* undo 16-alignment */
|
||||
#endif
|
||||
jmp G(caml_alloc1)
|
||||
|
||||
.align FUNCTION_ALIGN
|
||||
|
@ -133,7 +140,13 @@ LBL(101):
|
|||
movl %eax, G(caml_last_return_address)
|
||||
leal 4(%esp), %eax
|
||||
movl %eax, G(caml_bottom_of_stack)
|
||||
#ifdef SYS_macosx
|
||||
subl $12, %esp /* 16-alignment */
|
||||
#endif
|
||||
call LBL(105)
|
||||
#ifdef SYS_macosx
|
||||
addl $12, %esp /* undo 16-alignment */
|
||||
#endif
|
||||
jmp G(caml_alloc2)
|
||||
|
||||
.align FUNCTION_ALIGN
|
||||
|
@ -150,7 +163,13 @@ LBL(102):
|
|||
movl %eax, G(caml_last_return_address)
|
||||
leal 4(%esp), %eax
|
||||
movl %eax, G(caml_bottom_of_stack)
|
||||
#ifdef SYS_macosx
|
||||
subl $12, %esp /* 16-alignment */
|
||||
#endif
|
||||
call LBL(105)
|
||||
#ifdef SYS_macosx
|
||||
addl $12, %esp /* undo 16-alignment */
|
||||
#endif
|
||||
jmp G(caml_alloc3)
|
||||
|
||||
.align FUNCTION_ALIGN
|
||||
|
@ -171,7 +190,13 @@ LBL(103):
|
|||
movl %eax, G(caml_last_return_address)
|
||||
leal 8(%esp), %eax
|
||||
movl %eax, G(caml_bottom_of_stack)
|
||||
#ifdef SYS_macosx
|
||||
subl $8, %esp /* 16-alignment */
|
||||
#endif
|
||||
call LBL(105)
|
||||
#ifdef SYS_macosx
|
||||
addl $8, %esp /* undo 16-alignment */
|
||||
#endif
|
||||
popl %eax /* recover desired size */
|
||||
jmp G(caml_allocN)
|
||||
|
||||
|
|
|
@ -312,7 +312,7 @@ value caml_install_signal_handler(value signal_number, value action) /* ML */
|
|||
CAMLlocal1 (res);
|
||||
|
||||
sig = caml_convert_signal_number(Int_val(signal_number));
|
||||
if (sig < 0 || sig >= NSIG)
|
||||
if (sig < 0 || sig >= NSIG)
|
||||
caml_invalid_argument("Sys.signal: unavailable signal");
|
||||
#ifdef POSIX_SIGNALS
|
||||
switch(action) {
|
||||
|
|
BIN
boot/ocamlc
BIN
boot/ocamlc
Binary file not shown.
BIN
boot/ocamllex
BIN
boot/ocamllex
Binary file not shown.
|
@ -77,7 +77,8 @@ major_gc.o: major_gc.c compact.h config.h ../config/m.h ../config/s.h \
|
|||
compatibility.h misc.h custom.h mlvalues.h fail.h finalise.h roots.h \
|
||||
memory.h gc.h major_gc.h freelist.h minor_gc.h gc_ctrl.h weak.h
|
||||
md5.o: md5.c alloc.h compatibility.h misc.h config.h ../config/m.h \
|
||||
../config/s.h mlvalues.h fail.h md5.h io.h reverse.h
|
||||
../config/s.h mlvalues.h fail.h md5.h io.h memory.h gc.h major_gc.h \
|
||||
freelist.h minor_gc.h reverse.h
|
||||
memory.o: memory.c fail.h compatibility.h misc.h config.h ../config/m.h \
|
||||
../config/s.h mlvalues.h freelist.h gc.h gc_ctrl.h major_gc.h memory.h \
|
||||
minor_gc.h signals.h
|
||||
|
@ -127,11 +128,8 @@ unix.o: unix.c config.h ../config/m.h ../config/s.h compatibility.h \
|
|||
memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h minor_gc.h \
|
||||
osdeps.h
|
||||
weak.o: weak.c alloc.h compatibility.h misc.h config.h ../config/m.h \
|
||||
../config/s.h mlvalues.h fail.h memory.h gc.h major_gc.h freelist.h \
|
||||
../config/s.h mlvalues.h fail.h major_gc.h freelist.h memory.h gc.h \
|
||||
minor_gc.h
|
||||
win32.o: win32.c memory.h compatibility.h config.h ../config/m.h \
|
||||
../config/s.h gc.h mlvalues.h misc.h major_gc.h freelist.h minor_gc.h \
|
||||
osdeps.h signals.h
|
||||
alloc.d.o: alloc.c alloc.h compatibility.h misc.h config.h ../config/m.h \
|
||||
../config/s.h mlvalues.h custom.h major_gc.h freelist.h memory.h gc.h \
|
||||
minor_gc.h stacks.h
|
||||
|
@ -213,7 +211,8 @@ major_gc.d.o: major_gc.c compact.h config.h ../config/m.h ../config/s.h \
|
|||
compatibility.h misc.h custom.h mlvalues.h fail.h finalise.h roots.h \
|
||||
memory.h gc.h major_gc.h freelist.h minor_gc.h gc_ctrl.h weak.h
|
||||
md5.d.o: md5.c alloc.h compatibility.h misc.h config.h ../config/m.h \
|
||||
../config/s.h mlvalues.h fail.h md5.h io.h reverse.h
|
||||
../config/s.h mlvalues.h fail.h md5.h io.h memory.h gc.h major_gc.h \
|
||||
freelist.h minor_gc.h reverse.h
|
||||
memory.d.o: memory.c fail.h compatibility.h misc.h config.h ../config/m.h \
|
||||
../config/s.h mlvalues.h freelist.h gc.h gc_ctrl.h major_gc.h memory.h \
|
||||
minor_gc.h signals.h
|
||||
|
@ -263,8 +262,5 @@ unix.d.o: unix.c config.h ../config/m.h ../config/s.h compatibility.h \
|
|||
memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h minor_gc.h \
|
||||
osdeps.h
|
||||
weak.d.o: weak.c alloc.h compatibility.h misc.h config.h ../config/m.h \
|
||||
../config/s.h mlvalues.h fail.h memory.h gc.h major_gc.h freelist.h \
|
||||
../config/s.h mlvalues.h fail.h major_gc.h freelist.h memory.h gc.h \
|
||||
minor_gc.h
|
||||
win32.d.o: win32.c memory.h compatibility.h config.h ../config/m.h \
|
||||
../config/s.h gc.h mlvalues.h misc.h major_gc.h freelist.h minor_gc.h \
|
||||
osdeps.h signals.h
|
||||
|
|
|
@ -115,7 +115,7 @@ version.h : ../stdlib/sys.ml
|
|||
@ if test -f $*.f.o; then mv $*.f.o $*.o; else :; fi
|
||||
|
||||
depend : prims.c opnames.h jumptbl.h version.h
|
||||
gcc -MM $(BYTECCCOMPOPTS) *.c > .depend
|
||||
gcc -MM $(BYTECCCOMPOPTS) -DDEBUG *.c | sed -e 's/\.o/.d.o/' >> .depend
|
||||
-gcc -MM $(BYTECCCOMPOPTS) *.c > .depend
|
||||
-gcc -MM $(BYTECCCOMPOPTS) -DDEBUG *.c | sed -e 's/\.o/.d.o/' >> .depend
|
||||
|
||||
include .depend
|
||||
|
|
|
@ -401,7 +401,7 @@ static void extern_rec(value v)
|
|||
void (*serialize)(value v, uintnat * wsize_32,
|
||||
uintnat * wsize_64)
|
||||
= Custom_ops_val(v)->serialize;
|
||||
if (serialize == NULL)
|
||||
if (serialize == NULL)
|
||||
extern_invalid_argument("output_value: abstract value (Custom)");
|
||||
Write(CODE_CUSTOM);
|
||||
writeblock(ident, strlen(ident) + 1);
|
||||
|
@ -536,17 +536,23 @@ CAMLprim value caml_output_value_to_string(value v, value flags)
|
|||
{
|
||||
intnat len, ofs;
|
||||
value res;
|
||||
struct output_block * blk;
|
||||
struct output_block * blk, * nextblk;
|
||||
|
||||
init_extern_output();
|
||||
len = extern_value(v, flags);
|
||||
/* PR#4030: it is prudent to save extern_output_first before allocating
|
||||
the result, as in caml_output_val */
|
||||
blk = extern_output_first;
|
||||
res = caml_alloc_string(len);
|
||||
for (ofs = 0, blk = extern_output_first; blk != NULL; blk = blk->next) {
|
||||
ofs = 0;
|
||||
while (blk != NULL) {
|
||||
int n = blk->end - blk->data;
|
||||
memmove(&Byte(res, ofs), blk->data, n);
|
||||
ofs += n;
|
||||
nextblk = blk->next;
|
||||
free(blk);
|
||||
blk = nextblk;
|
||||
}
|
||||
free_extern_output();
|
||||
return res;
|
||||
}
|
||||
|
||||
|
@ -701,7 +707,7 @@ CAMLexport void caml_serialize_block_float_8(void * data, intnat len)
|
|||
memmove(extern_ptr, data, len * 8);
|
||||
extern_ptr += len * 8;
|
||||
#elif ARCH_FLOAT_ENDIANNESS == 0x76543210
|
||||
{
|
||||
{
|
||||
unsigned char * p;
|
||||
char * q;
|
||||
for (p = data, q = extern_ptr; len > 0; len--, p += 8, q += 8)
|
||||
|
@ -709,7 +715,7 @@ CAMLexport void caml_serialize_block_float_8(void * data, intnat len)
|
|||
extern_ptr = q;
|
||||
}
|
||||
#else
|
||||
{
|
||||
{
|
||||
unsigned char * p;
|
||||
char * q;
|
||||
for (p = data, q = extern_ptr; len > 0; len--, p += 8, q += 8)
|
||||
|
|
|
@ -278,8 +278,9 @@ CAMLextern struct caml__roots_block *caml_local_roots; /* defined in roots.c */
|
|||
}while (0)
|
||||
|
||||
#define CAMLreturn(result) do{ \
|
||||
value caml__temp_result = (result); \
|
||||
caml_local_roots = caml__frame; \
|
||||
return (result); \
|
||||
return (caml__temp_result); \
|
||||
}while(0)
|
||||
|
||||
#define CAMLnoreturn ((void) caml__frame)
|
||||
|
|
|
@ -72,7 +72,7 @@ CAMLexport void caml_sys_error(value arg)
|
|||
CAMLparam1 (arg);
|
||||
char * err;
|
||||
CAMLlocal1 (str);
|
||||
|
||||
|
||||
if (errno == EAGAIN || errno == EWOULDBLOCK) {
|
||||
caml_raise_sys_blocked_io();
|
||||
} else {
|
||||
|
@ -233,7 +233,7 @@ CAMLprim value caml_sys_system_command(value command)
|
|||
int status, retcode;
|
||||
char *buf;
|
||||
intnat len;
|
||||
|
||||
|
||||
len = caml_string_length (command);
|
||||
buf = caml_stat_alloc (len + 1);
|
||||
memmove (buf, String_val (command), len + 1);
|
||||
|
@ -311,7 +311,10 @@ CAMLprim value caml_sys_read_directory(value path)
|
|||
struct ext_table tbl;
|
||||
|
||||
caml_ext_table_init(&tbl, 50);
|
||||
if (caml_read_directory(String_val(path), &tbl) == -1) caml_sys_error(path);
|
||||
if (caml_read_directory(String_val(path), &tbl) == -1){
|
||||
caml_ext_table_free(&tbl, 1);
|
||||
caml_sys_error(path);
|
||||
}
|
||||
caml_ext_table_add(&tbl, NULL);
|
||||
result = caml_copy_string_array((char const **) tbl.contents);
|
||||
caml_ext_table_free(&tbl, 1);
|
||||
|
|
|
@ -1,3 +1,15 @@
|
|||
#########################################################################
|
||||
# #
|
||||
# Objective Caml #
|
||||
# #
|
||||
# Nicolas Pouillard, projet Gallium, INRIA Rocquencourt #
|
||||
# #
|
||||
# Copyright 2006 Institut National de Recherche en Informatique et #
|
||||
# en Automatique. All rights reserved. This file is distributed #
|
||||
# under the terms of the Q Public License version 1.0. #
|
||||
# #
|
||||
#########################################################################
|
||||
|
||||
# $Id$
|
||||
|
||||
OCAMLRUN=CAML_LD_LIBRARY_PATH=../otherlibs/unix ../boot/ocamlrun
|
||||
|
@ -31,6 +43,8 @@ uninstall:
|
|||
rm -rf "$(LIBDIR)/camlp4"
|
||||
cd "$(BINDIR)"; rm -f *camlp4*
|
||||
|
||||
depend:
|
||||
|
||||
# Normal bootstrap
|
||||
|
||||
bootstrap: backup promote clean all compare
|
||||
|
@ -52,5 +66,5 @@ compare:
|
|||
fi
|
||||
|
||||
.PHONY: clean install all uninstall backup restore boot-clean promote-debug \
|
||||
promote compare opt doc cleanall all-local clean-local
|
||||
promote compare opt doc cleanall all-local clean-local depend
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ EXE=.exe
|
|||
########## Configuration for the bytecode compiler
|
||||
|
||||
### Which C compiler to use for the bytecode interpreter.
|
||||
BYTECC=cl /nologo
|
||||
BYTECC=cl /nologo -D_CRT_SECURE_NO_DEPRECATE
|
||||
|
||||
### Additional compile-time options for $(BYTECC). (For static linking.)
|
||||
BYTECCCOMPOPTS=/Ox /MT
|
||||
|
@ -67,7 +67,7 @@ CPP=cl /nologo /EP
|
|||
MKDLL=link /nologo /dll /out:$(1) /implib:$(2) $(3)
|
||||
|
||||
### How to build a static library
|
||||
MKLIB=link /lib /nologo /debugtype:CV /out:$(1) $(2)
|
||||
MKLIB=link /lib /nologo /out:$(1) $(2)
|
||||
|
||||
### Canonicalize the name of a system library
|
||||
SYSLIB=$(1).lib
|
||||
|
@ -90,7 +90,7 @@ MODEL=default
|
|||
SYSTEM=win32
|
||||
|
||||
### Which C compiler to use for the native-code compiler.
|
||||
NATIVECC=cl /nologo
|
||||
NATIVECC=cl /nologo -D_CRT_SECURE_NO_DEPRECATE
|
||||
|
||||
### Additional compile-time options for $(NATIVECC).
|
||||
NATIVECCCOMPOPTS=/Ox /MT
|
||||
|
@ -99,7 +99,7 @@ NATIVECCCOMPOPTS=/Ox /MT
|
|||
NATIVECCLINKOPTS=/MT
|
||||
|
||||
### Build partially-linked object file
|
||||
PARTIALLD=lib /nologo /debugtype:cv
|
||||
PARTIALLD=lib /nologo
|
||||
PACKLD=ld -r --oformat pe-i386
|
||||
|
||||
############# Configuration for the contributed libraries
|
||||
|
|
320
debugger/.depend
320
debugger/.depend
|
@ -1,60 +1,64 @@
|
|||
breakpoints.cmi: primitives.cmi ../bytecomp/instruct.cmi
|
||||
checkpoints.cmi: primitives.cmi debugcom.cmi
|
||||
debugcom.cmi: primitives.cmi
|
||||
breakpoints.cmi: ./primitives.cmi ../bytecomp/instruct.cmi
|
||||
checkpoints.cmi: ./primitives.cmi ./debugcom.cmi
|
||||
debugcom.cmi: ./primitives.cmi
|
||||
envaux.cmi: ../typing/path.cmi ../bytecomp/instruct.cmi ../typing/env.cmi
|
||||
eval.cmi: ../typing/types.cmi ../typing/path.cmi parser_aux.cmi \
|
||||
eval.cmi: ../typing/types.cmi ../typing/path.cmi ./parser_aux.cmi \
|
||||
../parsing/longident.cmi ../bytecomp/instruct.cmi ../typing/ident.cmi \
|
||||
../typing/env.cmi debugcom.cmi
|
||||
../typing/env.cmi ./debugcom.cmi
|
||||
events.cmi: ../bytecomp/instruct.cmi
|
||||
frames.cmi: primitives.cmi ../bytecomp/instruct.cmi
|
||||
input_handling.cmi: primitives.cmi
|
||||
lexer.cmi: parser.cmi
|
||||
loadprinter.cmi: ../parsing/longident.cmi dynlink.cmi
|
||||
parser_aux.cmi: primitives.cmi ../parsing/longident.cmi
|
||||
parser.cmi: parser_aux.cmi ../parsing/longident.cmi
|
||||
pattern_matching.cmi: ../typing/typedtree.cmi parser_aux.cmi debugcom.cmi
|
||||
frames.cmi: ./primitives.cmi ../bytecomp/instruct.cmi
|
||||
input_handling.cmi: ./primitives.cmi
|
||||
lexer.cmi: ./parser.cmi
|
||||
loadprinter.cmi: ../parsing/longident.cmi ./dynlink.cmi
|
||||
parser.cmi: ./parser_aux.cmi ../parsing/longident.cmi
|
||||
parser_aux.cmi: ./primitives.cmi ../parsing/longident.cmi
|
||||
pattern_matching.cmi: ../typing/typedtree.cmi ./parser_aux.cmi ./debugcom.cmi
|
||||
pos.cmi: ../bytecomp/instruct.cmi
|
||||
primitives.cmi: ../otherlibs/unix/unix.cmi
|
||||
printval.cmi: ../typing/types.cmi ../typing/path.cmi parser_aux.cmi \
|
||||
../typing/env.cmi debugcom.cmi
|
||||
program_loading.cmi: primitives.cmi
|
||||
printval.cmi: ../typing/types.cmi ../typing/path.cmi ./parser_aux.cmi \
|
||||
../typing/env.cmi ./debugcom.cmi
|
||||
program_loading.cmi: ./primitives.cmi
|
||||
show_information.cmi: ../bytecomp/instruct.cmi
|
||||
show_source.cmi: ../bytecomp/instruct.cmi
|
||||
symbols.cmi: ../bytecomp/instruct.cmi
|
||||
time_travel.cmi: primitives.cmi
|
||||
time_travel.cmi: ./primitives.cmi
|
||||
unix_tools.cmi: ../otherlibs/unix/unix.cmi
|
||||
breakpoints.cmo: symbols.cmi source.cmi primitives.cmi pos.cmi \
|
||||
../bytecomp/instruct.cmi exec.cmi debugcom.cmi checkpoints.cmi \
|
||||
breakpoints.cmo: ./symbols.cmi ./source.cmi ./primitives.cmi ./pos.cmi \
|
||||
../bytecomp/instruct.cmi ./exec.cmi ./debugcom.cmi ./checkpoints.cmi \
|
||||
breakpoints.cmi
|
||||
breakpoints.cmx: symbols.cmx source.cmx primitives.cmx pos.cmx \
|
||||
../bytecomp/instruct.cmx exec.cmx debugcom.cmx checkpoints.cmx \
|
||||
breakpoints.cmx: ./symbols.cmx ./source.cmx ./primitives.cmx ./pos.cmx \
|
||||
../bytecomp/instruct.cmx ./exec.cmx ./debugcom.cmx ./checkpoints.cmx \
|
||||
breakpoints.cmi
|
||||
checkpoints.cmo: primitives.cmi int64ops.cmi debugcom.cmi checkpoints.cmi
|
||||
checkpoints.cmx: primitives.cmx int64ops.cmx debugcom.cmx checkpoints.cmi
|
||||
command_line.cmo: unix_tools.cmi ../otherlibs/unix/unix.cmi \
|
||||
../typing/types.cmi time_travel.cmi symbols.cmi source.cmi \
|
||||
show_source.cmi show_information.cmi program_management.cmi \
|
||||
program_loading.cmi printval.cmi primitives.cmi pos.cmi parser_aux.cmi \
|
||||
parser.cmi parameters.cmi ../utils/misc.cmi ../parsing/location.cmi \
|
||||
loadprinter.cmi lexer.cmi int64ops.cmi ../bytecomp/instruct.cmi \
|
||||
input_handling.cmi history.cmi frames.cmi events.cmi eval.cmi envaux.cmi \
|
||||
debugger_config.cmi debugcom.cmi ../typing/ctype.cmi ../utils/config.cmi \
|
||||
checkpoints.cmi breakpoints.cmi command_line.cmi
|
||||
command_line.cmx: unix_tools.cmx ../otherlibs/unix/unix.cmx \
|
||||
../typing/types.cmx time_travel.cmx symbols.cmx source.cmx \
|
||||
show_source.cmx show_information.cmx program_management.cmx \
|
||||
program_loading.cmx printval.cmx primitives.cmx pos.cmx parser_aux.cmi \
|
||||
parser.cmx parameters.cmx ../utils/misc.cmx ../parsing/location.cmx \
|
||||
loadprinter.cmx lexer.cmx int64ops.cmx ../bytecomp/instruct.cmx \
|
||||
input_handling.cmx history.cmx frames.cmx events.cmx eval.cmx envaux.cmx \
|
||||
debugger_config.cmx debugcom.cmx ../typing/ctype.cmx ../utils/config.cmx \
|
||||
checkpoints.cmx breakpoints.cmx command_line.cmi
|
||||
debugcom.cmo: primitives.cmi ../utils/misc.cmi int64ops.cmi \
|
||||
input_handling.cmi debugcom.cmi
|
||||
debugcom.cmx: primitives.cmx ../utils/misc.cmx int64ops.cmx \
|
||||
input_handling.cmx debugcom.cmi
|
||||
debugger_config.cmo: int64ops.cmi debugger_config.cmi
|
||||
debugger_config.cmx: int64ops.cmx debugger_config.cmi
|
||||
checkpoints.cmo: ./primitives.cmi ./int64ops.cmi ./debugcom.cmi \
|
||||
checkpoints.cmi
|
||||
checkpoints.cmx: ./primitives.cmx ./int64ops.cmx ./debugcom.cmx \
|
||||
checkpoints.cmi
|
||||
command_line.cmo: ./unix_tools.cmi ../otherlibs/unix/unix.cmi \
|
||||
../typing/types.cmi ./time_travel.cmi ./symbols.cmi ./source.cmi \
|
||||
./show_source.cmi ./show_information.cmi ./program_management.cmi \
|
||||
./program_loading.cmi ./printval.cmi ./primitives.cmi ./pos.cmi \
|
||||
./parser_aux.cmi ./parser.cmi ./parameters.cmi ../utils/misc.cmi \
|
||||
../parsing/location.cmi ./loadprinter.cmi ./lexer.cmi ./int64ops.cmi \
|
||||
../bytecomp/instruct.cmi ./input_handling.cmi ./history.cmi ./frames.cmi \
|
||||
./events.cmi ./eval.cmi ./envaux.cmi ./debugger_config.cmi ./debugcom.cmi \
|
||||
../typing/ctype.cmi ../utils/config.cmi ./checkpoints.cmi \
|
||||
./breakpoints.cmi command_line.cmi
|
||||
command_line.cmx: ./unix_tools.cmx ../otherlibs/unix/unix.cmx \
|
||||
../typing/types.cmx ./time_travel.cmx ./symbols.cmx ./source.cmx \
|
||||
./show_source.cmx ./show_information.cmx ./program_management.cmx \
|
||||
./program_loading.cmx ./printval.cmx ./primitives.cmx ./pos.cmx \
|
||||
./parser_aux.cmi ./parser.cmx ./parameters.cmx ../utils/misc.cmx \
|
||||
../parsing/location.cmx ./loadprinter.cmx ./lexer.cmx ./int64ops.cmx \
|
||||
../bytecomp/instruct.cmx ./input_handling.cmx ./history.cmx ./frames.cmx \
|
||||
./events.cmx ./eval.cmx ./envaux.cmx ./debugger_config.cmx ./debugcom.cmx \
|
||||
../typing/ctype.cmx ../utils/config.cmx ./checkpoints.cmx \
|
||||
./breakpoints.cmx command_line.cmi
|
||||
debugcom.cmo: ./primitives.cmi ../utils/misc.cmi ./int64ops.cmi \
|
||||
./input_handling.cmi debugcom.cmi
|
||||
debugcom.cmx: ./primitives.cmx ../utils/misc.cmx ./int64ops.cmx \
|
||||
./input_handling.cmx debugcom.cmi
|
||||
debugger_config.cmo: ./int64ops.cmi debugger_config.cmi
|
||||
debugger_config.cmx: ./int64ops.cmx debugger_config.cmi
|
||||
dynlink.cmo: ../bytecomp/symtable.cmi ../bytecomp/opcodes.cmo \
|
||||
../utils/misc.cmi ../bytecomp/meta.cmi ../bytecomp/dll.cmi \
|
||||
../utils/consistbl.cmi ../utils/config.cmi ../bytecomp/cmo_format.cmi \
|
||||
|
@ -69,137 +73,145 @@ envaux.cmo: ../typing/types.cmi ../typing/printtyp.cmi ../typing/path.cmi \
|
|||
envaux.cmx: ../typing/types.cmx ../typing/printtyp.cmx ../typing/path.cmx \
|
||||
../typing/mtype.cmx ../utils/misc.cmx ../bytecomp/instruct.cmx \
|
||||
../typing/env.cmx envaux.cmi
|
||||
eval.cmo: ../typing/types.cmi ../bytecomp/symtable.cmi printval.cmi \
|
||||
eval.cmo: ../typing/types.cmi ../bytecomp/symtable.cmi ./printval.cmi \
|
||||
../typing/printtyp.cmi ../typing/predef.cmi ../typing/path.cmi \
|
||||
parser_aux.cmi ../utils/misc.cmi ../parsing/longident.cmi \
|
||||
../bytecomp/instruct.cmi ../typing/ident.cmi frames.cmi ../typing/env.cmi \
|
||||
debugger_config.cmi debugcom.cmi ../typing/ctype.cmi ../typing/btype.cmi \
|
||||
eval.cmi
|
||||
eval.cmx: ../typing/types.cmx ../bytecomp/symtable.cmx printval.cmx \
|
||||
./parser_aux.cmi ../utils/misc.cmi ../parsing/longident.cmi \
|
||||
../bytecomp/instruct.cmi ../typing/ident.cmi ./frames.cmi \
|
||||
../typing/env.cmi ./debugger_config.cmi ./debugcom.cmi \
|
||||
../typing/ctype.cmi ../typing/btype.cmi eval.cmi
|
||||
eval.cmx: ../typing/types.cmx ../bytecomp/symtable.cmx ./printval.cmx \
|
||||
../typing/printtyp.cmx ../typing/predef.cmx ../typing/path.cmx \
|
||||
parser_aux.cmi ../utils/misc.cmx ../parsing/longident.cmx \
|
||||
../bytecomp/instruct.cmx ../typing/ident.cmx frames.cmx ../typing/env.cmx \
|
||||
debugger_config.cmx debugcom.cmx ../typing/ctype.cmx ../typing/btype.cmx \
|
||||
eval.cmi
|
||||
events.cmo: primitives.cmi ../parsing/location.cmi ../bytecomp/instruct.cmi \
|
||||
checkpoints.cmi events.cmi
|
||||
events.cmx: primitives.cmx ../parsing/location.cmx ../bytecomp/instruct.cmx \
|
||||
checkpoints.cmx events.cmi
|
||||
./parser_aux.cmi ../utils/misc.cmx ../parsing/longident.cmx \
|
||||
../bytecomp/instruct.cmx ../typing/ident.cmx ./frames.cmx \
|
||||
../typing/env.cmx ./debugger_config.cmx ./debugcom.cmx \
|
||||
../typing/ctype.cmx ../typing/btype.cmx eval.cmi
|
||||
events.cmo: ./primitives.cmi ../parsing/location.cmi ../bytecomp/instruct.cmi \
|
||||
./checkpoints.cmi events.cmi
|
||||
events.cmx: ./primitives.cmx ../parsing/location.cmx ../bytecomp/instruct.cmx \
|
||||
./checkpoints.cmx events.cmi
|
||||
exec.cmo: exec.cmi
|
||||
exec.cmx: exec.cmi
|
||||
frames.cmo: symbols.cmi primitives.cmi ../utils/misc.cmi \
|
||||
../bytecomp/instruct.cmi events.cmi debugcom.cmi checkpoints.cmi \
|
||||
frames.cmo: ./symbols.cmi ./primitives.cmi ../utils/misc.cmi \
|
||||
../bytecomp/instruct.cmi ./events.cmi ./debugcom.cmi ./checkpoints.cmi \
|
||||
frames.cmi
|
||||
frames.cmx: symbols.cmx primitives.cmx ../utils/misc.cmx \
|
||||
../bytecomp/instruct.cmx events.cmx debugcom.cmx checkpoints.cmx \
|
||||
frames.cmx: ./symbols.cmx ./primitives.cmx ../utils/misc.cmx \
|
||||
../bytecomp/instruct.cmx ./events.cmx ./debugcom.cmx ./checkpoints.cmx \
|
||||
frames.cmi
|
||||
history.cmo: primitives.cmi ../utils/misc.cmi int64ops.cmi \
|
||||
debugger_config.cmi checkpoints.cmi history.cmi
|
||||
history.cmx: primitives.cmx ../utils/misc.cmx int64ops.cmx \
|
||||
debugger_config.cmx checkpoints.cmx history.cmi
|
||||
input_handling.cmo: ../otherlibs/unix/unix.cmi primitives.cmi lexer.cmi \
|
||||
history.cmo: ./primitives.cmi ../utils/misc.cmi ./int64ops.cmi \
|
||||
./debugger_config.cmi ./checkpoints.cmi history.cmi
|
||||
history.cmx: ./primitives.cmx ../utils/misc.cmx ./int64ops.cmx \
|
||||
./debugger_config.cmx ./checkpoints.cmx history.cmi
|
||||
input_handling.cmo: ../otherlibs/unix/unix.cmi ./primitives.cmi ./lexer.cmi \
|
||||
input_handling.cmi
|
||||
input_handling.cmx: ../otherlibs/unix/unix.cmx primitives.cmx lexer.cmx \
|
||||
input_handling.cmx: ../otherlibs/unix/unix.cmx ./primitives.cmx ./lexer.cmx \
|
||||
input_handling.cmi
|
||||
int64ops.cmo: int64ops.cmi
|
||||
int64ops.cmx: int64ops.cmi
|
||||
lexer.cmo: primitives.cmi parser.cmi lexer.cmi
|
||||
lexer.cmx: primitives.cmx parser.cmx lexer.cmi
|
||||
loadprinter.cmo: ../typing/types.cmi ../bytecomp/symtable.cmi printval.cmi \
|
||||
lexer.cmo: ./primitives.cmi ./parser.cmi lexer.cmi
|
||||
lexer.cmx: ./primitives.cmx ./parser.cmx lexer.cmi
|
||||
loadprinter.cmo: ../typing/types.cmi ../bytecomp/symtable.cmi ./printval.cmi \
|
||||
../typing/printtyp.cmi ../typing/path.cmi ../utils/misc.cmi \
|
||||
../parsing/longident.cmi ../typing/ident.cmi ../typing/env.cmi \
|
||||
dynlink.cmi debugger_config.cmi ../typing/ctype.cmi ../utils/config.cmi \
|
||||
loadprinter.cmi
|
||||
loadprinter.cmx: ../typing/types.cmx ../bytecomp/symtable.cmx printval.cmx \
|
||||
./dynlink.cmi ./debugger_config.cmi ../typing/ctype.cmi \
|
||||
../utils/config.cmi loadprinter.cmi
|
||||
loadprinter.cmx: ../typing/types.cmx ../bytecomp/symtable.cmx ./printval.cmx \
|
||||
../typing/printtyp.cmx ../typing/path.cmx ../utils/misc.cmx \
|
||||
../parsing/longident.cmx ../typing/ident.cmx ../typing/env.cmx \
|
||||
dynlink.cmx debugger_config.cmx ../typing/ctype.cmx ../utils/config.cmx \
|
||||
loadprinter.cmi
|
||||
main.cmo: unix_tools.cmi ../otherlibs/unix/unix.cmi time_travel.cmi \
|
||||
show_information.cmi program_management.cmi primitives.cmi parameters.cmi \
|
||||
../utils/misc.cmi input_handling.cmi frames.cmi exec.cmi \
|
||||
../typing/env.cmi debugger_config.cmi ../utils/config.cmi \
|
||||
command_line.cmi checkpoints.cmi
|
||||
main.cmx: unix_tools.cmx ../otherlibs/unix/unix.cmx time_travel.cmx \
|
||||
show_information.cmx program_management.cmx primitives.cmx parameters.cmx \
|
||||
../utils/misc.cmx input_handling.cmx frames.cmx exec.cmx \
|
||||
../typing/env.cmx debugger_config.cmx ../utils/config.cmx \
|
||||
command_line.cmx checkpoints.cmx
|
||||
parameters.cmo: primitives.cmi ../utils/misc.cmi envaux.cmi \
|
||||
./dynlink.cmx ./debugger_config.cmx ../typing/ctype.cmx \
|
||||
../utils/config.cmx loadprinter.cmi
|
||||
main.cmo: ./unix_tools.cmi ../otherlibs/unix/unix.cmi ./time_travel.cmi \
|
||||
./show_information.cmi ./program_management.cmi ./primitives.cmi \
|
||||
./parameters.cmi ../utils/misc.cmi ./input_handling.cmi ./frames.cmi \
|
||||
./exec.cmi ../typing/env.cmi ./debugger_config.cmi ../utils/config.cmi \
|
||||
./command_line.cmi ./checkpoints.cmi
|
||||
main.cmx: ./unix_tools.cmx ../otherlibs/unix/unix.cmx ./time_travel.cmx \
|
||||
./show_information.cmx ./program_management.cmx ./primitives.cmx \
|
||||
./parameters.cmx ../utils/misc.cmx ./input_handling.cmx ./frames.cmx \
|
||||
./exec.cmx ../typing/env.cmx ./debugger_config.cmx ../utils/config.cmx \
|
||||
./command_line.cmx ./checkpoints.cmx
|
||||
parameters.cmo: ./primitives.cmi ../utils/misc.cmi ./envaux.cmi \
|
||||
../utils/config.cmi parameters.cmi
|
||||
parameters.cmx: primitives.cmx ../utils/misc.cmx envaux.cmx \
|
||||
parameters.cmx: ./primitives.cmx ../utils/misc.cmx ./envaux.cmx \
|
||||
../utils/config.cmx parameters.cmi
|
||||
parser.cmo: primitives.cmi parser_aux.cmi ../parsing/longident.cmi \
|
||||
int64ops.cmi input_handling.cmi parser.cmi
|
||||
parser.cmx: primitives.cmx parser_aux.cmi ../parsing/longident.cmx \
|
||||
int64ops.cmx input_handling.cmx parser.cmi
|
||||
pattern_matching.cmo: ../typing/typedtree.cmi parser_aux.cmi \
|
||||
../utils/misc.cmi debugger_config.cmi debugcom.cmi ../typing/ctype.cmi \
|
||||
pattern_matching.cmi
|
||||
pattern_matching.cmx: ../typing/typedtree.cmx parser_aux.cmi \
|
||||
../utils/misc.cmx debugger_config.cmx debugcom.cmx ../typing/ctype.cmx \
|
||||
pattern_matching.cmi
|
||||
pos.cmo: source.cmi primitives.cmi ../parsing/location.cmi \
|
||||
parser.cmo: ./primitives.cmi ./parser_aux.cmi ../parsing/longident.cmi \
|
||||
./int64ops.cmi ./input_handling.cmi parser.cmi
|
||||
parser.cmx: ./primitives.cmx ./parser_aux.cmi ../parsing/longident.cmx \
|
||||
./int64ops.cmx ./input_handling.cmx parser.cmi
|
||||
pattern_matching.cmo: ../typing/typedtree.cmi ./parser_aux.cmi \
|
||||
../utils/misc.cmi ./debugger_config.cmi ./debugcom.cmi \
|
||||
../typing/ctype.cmi pattern_matching.cmi
|
||||
pattern_matching.cmx: ../typing/typedtree.cmx ./parser_aux.cmi \
|
||||
../utils/misc.cmx ./debugger_config.cmx ./debugcom.cmx \
|
||||
../typing/ctype.cmx pattern_matching.cmi
|
||||
pos.cmo: ./source.cmi ./primitives.cmi ../parsing/location.cmi \
|
||||
../bytecomp/instruct.cmi pos.cmi
|
||||
pos.cmx: source.cmx primitives.cmx ../parsing/location.cmx \
|
||||
pos.cmx: ./source.cmx ./primitives.cmx ../parsing/location.cmx \
|
||||
../bytecomp/instruct.cmx pos.cmi
|
||||
primitives.cmo: ../otherlibs/unix/unix.cmi primitives.cmi
|
||||
primitives.cmx: ../otherlibs/unix/unix.cmx primitives.cmi
|
||||
printval.cmo: ../typing/types.cmi ../bytecomp/symtable.cmi \
|
||||
../typing/printtyp.cmi ../typing/path.cmi parser_aux.cmi \
|
||||
../typing/printtyp.cmi ../typing/path.cmi ./parser_aux.cmi \
|
||||
../typing/outcometree.cmi ../typing/oprint.cmi ../utils/misc.cmi \
|
||||
../toplevel/genprintval.cmi debugcom.cmi printval.cmi
|
||||
../toplevel/genprintval.cmi ./debugcom.cmi printval.cmi
|
||||
printval.cmx: ../typing/types.cmx ../bytecomp/symtable.cmx \
|
||||
../typing/printtyp.cmx ../typing/path.cmx parser_aux.cmi \
|
||||
../typing/printtyp.cmx ../typing/path.cmx ./parser_aux.cmi \
|
||||
../typing/outcometree.cmi ../typing/oprint.cmx ../utils/misc.cmx \
|
||||
../toplevel/genprintval.cmx debugcom.cmx printval.cmi
|
||||
program_loading.cmo: unix_tools.cmi ../otherlibs/unix/unix.cmi primitives.cmi \
|
||||
parameters.cmi ../utils/misc.cmi input_handling.cmi debugger_config.cmi \
|
||||
program_loading.cmi
|
||||
program_loading.cmx: unix_tools.cmx ../otherlibs/unix/unix.cmx primitives.cmx \
|
||||
parameters.cmx ../utils/misc.cmx input_handling.cmx debugger_config.cmx \
|
||||
program_loading.cmi
|
||||
program_management.cmo: unix_tools.cmi ../otherlibs/unix/unix.cmi \
|
||||
time_travel.cmi symbols.cmi program_loading.cmi primitives.cmi \
|
||||
parameters.cmi ../utils/misc.cmi int64ops.cmi ../bytecomp/instruct.cmi \
|
||||
input_handling.cmi history.cmi debugger_config.cmi debugcom.cmi \
|
||||
breakpoints.cmi program_management.cmi
|
||||
program_management.cmx: unix_tools.cmx ../otherlibs/unix/unix.cmx \
|
||||
time_travel.cmx symbols.cmx program_loading.cmx primitives.cmx \
|
||||
parameters.cmx ../utils/misc.cmx int64ops.cmx ../bytecomp/instruct.cmx \
|
||||
input_handling.cmx history.cmx debugger_config.cmx debugcom.cmx \
|
||||
breakpoints.cmx program_management.cmi
|
||||
show_information.cmo: symbols.cmi show_source.cmi printval.cmi primitives.cmi \
|
||||
../utils/misc.cmi ../bytecomp/instruct.cmi frames.cmi events.cmi \
|
||||
debugcom.cmi checkpoints.cmi breakpoints.cmi show_information.cmi
|
||||
show_information.cmx: symbols.cmx show_source.cmx printval.cmx primitives.cmx \
|
||||
../utils/misc.cmx ../bytecomp/instruct.cmx frames.cmx events.cmx \
|
||||
debugcom.cmx checkpoints.cmx breakpoints.cmx show_information.cmi
|
||||
show_source.cmo: source.cmi primitives.cmi parameters.cmi ../utils/misc.cmi \
|
||||
../parsing/location.cmi ../bytecomp/instruct.cmi events.cmi \
|
||||
debugger_config.cmi show_source.cmi
|
||||
show_source.cmx: source.cmx primitives.cmx parameters.cmx ../utils/misc.cmx \
|
||||
../parsing/location.cmx ../bytecomp/instruct.cmx events.cmx \
|
||||
debugger_config.cmx show_source.cmi
|
||||
source.cmo: primitives.cmi ../utils/misc.cmi ../utils/config.cmi source.cmi
|
||||
source.cmx: primitives.cmx ../utils/misc.cmx ../utils/config.cmx source.cmi
|
||||
symbols.cmo: ../bytecomp/symtable.cmi primitives.cmi ../bytecomp/instruct.cmi \
|
||||
events.cmi debugger_config.cmi debugcom.cmi checkpoints.cmi \
|
||||
../bytecomp/bytesections.cmi symbols.cmi
|
||||
symbols.cmx: ../bytecomp/symtable.cmx primitives.cmx ../bytecomp/instruct.cmx \
|
||||
events.cmx debugger_config.cmx debugcom.cmx checkpoints.cmx \
|
||||
../bytecomp/bytesections.cmx symbols.cmi
|
||||
time_travel.cmo: trap_barrier.cmi symbols.cmi program_loading.cmi \
|
||||
primitives.cmi ../utils/misc.cmi int64ops.cmi ../bytecomp/instruct.cmi \
|
||||
input_handling.cmi exec.cmi events.cmi debugger_config.cmi debugcom.cmi \
|
||||
checkpoints.cmi breakpoints.cmi time_travel.cmi
|
||||
time_travel.cmx: trap_barrier.cmx symbols.cmx program_loading.cmx \
|
||||
primitives.cmx ../utils/misc.cmx int64ops.cmx ../bytecomp/instruct.cmx \
|
||||
input_handling.cmx exec.cmx events.cmx debugger_config.cmx debugcom.cmx \
|
||||
checkpoints.cmx breakpoints.cmx time_travel.cmi
|
||||
trap_barrier.cmo: exec.cmi debugcom.cmi checkpoints.cmi trap_barrier.cmi
|
||||
trap_barrier.cmx: exec.cmx debugcom.cmx checkpoints.cmx trap_barrier.cmi
|
||||
unix_tools.cmo: ../otherlibs/unix/unix.cmi primitives.cmi ../utils/misc.cmi \
|
||||
../toplevel/genprintval.cmx ./debugcom.cmx printval.cmi
|
||||
program_loading.cmo: ./unix_tools.cmi ../otherlibs/unix/unix.cmi \
|
||||
./primitives.cmi ./parameters.cmi ../utils/misc.cmi ./input_handling.cmi \
|
||||
./debugger_config.cmi program_loading.cmi
|
||||
program_loading.cmx: ./unix_tools.cmx ../otherlibs/unix/unix.cmx \
|
||||
./primitives.cmx ./parameters.cmx ../utils/misc.cmx ./input_handling.cmx \
|
||||
./debugger_config.cmx program_loading.cmi
|
||||
program_management.cmo: ./unix_tools.cmi ../otherlibs/unix/unix.cmi \
|
||||
./time_travel.cmi ./symbols.cmi ./program_loading.cmi ./primitives.cmi \
|
||||
./parameters.cmi ../utils/misc.cmi ./int64ops.cmi \
|
||||
../bytecomp/instruct.cmi ./input_handling.cmi ./history.cmi \
|
||||
./debugger_config.cmi ./debugcom.cmi ./breakpoints.cmi \
|
||||
program_management.cmi
|
||||
program_management.cmx: ./unix_tools.cmx ../otherlibs/unix/unix.cmx \
|
||||
./time_travel.cmx ./symbols.cmx ./program_loading.cmx ./primitives.cmx \
|
||||
./parameters.cmx ../utils/misc.cmx ./int64ops.cmx \
|
||||
../bytecomp/instruct.cmx ./input_handling.cmx ./history.cmx \
|
||||
./debugger_config.cmx ./debugcom.cmx ./breakpoints.cmx \
|
||||
program_management.cmi
|
||||
show_information.cmo: ./symbols.cmi ./show_source.cmi ./printval.cmi \
|
||||
./primitives.cmi ../utils/misc.cmi ../bytecomp/instruct.cmi ./frames.cmi \
|
||||
./events.cmi ./debugcom.cmi ./checkpoints.cmi ./breakpoints.cmi \
|
||||
show_information.cmi
|
||||
show_information.cmx: ./symbols.cmx ./show_source.cmx ./printval.cmx \
|
||||
./primitives.cmx ../utils/misc.cmx ../bytecomp/instruct.cmx ./frames.cmx \
|
||||
./events.cmx ./debugcom.cmx ./checkpoints.cmx ./breakpoints.cmx \
|
||||
show_information.cmi
|
||||
show_source.cmo: ./source.cmi ./primitives.cmi ./parameters.cmi \
|
||||
../utils/misc.cmi ../parsing/location.cmi ../bytecomp/instruct.cmi \
|
||||
./events.cmi ./debugger_config.cmi show_source.cmi
|
||||
show_source.cmx: ./source.cmx ./primitives.cmx ./parameters.cmx \
|
||||
../utils/misc.cmx ../parsing/location.cmx ../bytecomp/instruct.cmx \
|
||||
./events.cmx ./debugger_config.cmx show_source.cmi
|
||||
source.cmo: ./primitives.cmi ../utils/misc.cmi ../utils/config.cmi source.cmi
|
||||
source.cmx: ./primitives.cmx ../utils/misc.cmx ../utils/config.cmx source.cmi
|
||||
symbols.cmo: ../bytecomp/symtable.cmi ./primitives.cmi \
|
||||
../bytecomp/instruct.cmi ./events.cmi ./debugger_config.cmi \
|
||||
./debugcom.cmi ./checkpoints.cmi ../bytecomp/bytesections.cmi symbols.cmi
|
||||
symbols.cmx: ../bytecomp/symtable.cmx ./primitives.cmx \
|
||||
../bytecomp/instruct.cmx ./events.cmx ./debugger_config.cmx \
|
||||
./debugcom.cmx ./checkpoints.cmx ../bytecomp/bytesections.cmx symbols.cmi
|
||||
time_travel.cmo: ./trap_barrier.cmi ./symbols.cmi ./program_loading.cmi \
|
||||
./primitives.cmi ../utils/misc.cmi ./int64ops.cmi \
|
||||
../bytecomp/instruct.cmi ./input_handling.cmi ./exec.cmi ./events.cmi \
|
||||
./debugger_config.cmi ./debugcom.cmi ./checkpoints.cmi ./breakpoints.cmi \
|
||||
time_travel.cmi
|
||||
time_travel.cmx: ./trap_barrier.cmx ./symbols.cmx ./program_loading.cmx \
|
||||
./primitives.cmx ../utils/misc.cmx ./int64ops.cmx \
|
||||
../bytecomp/instruct.cmx ./input_handling.cmx ./exec.cmx ./events.cmx \
|
||||
./debugger_config.cmx ./debugcom.cmx ./checkpoints.cmx ./breakpoints.cmx \
|
||||
time_travel.cmi
|
||||
trap_barrier.cmo: ./exec.cmi ./debugcom.cmi ./checkpoints.cmi \
|
||||
trap_barrier.cmi
|
||||
trap_barrier.cmx: ./exec.cmx ./debugcom.cmx ./checkpoints.cmx \
|
||||
trap_barrier.cmi
|
||||
unix_tools.cmo: ../otherlibs/unix/unix.cmi ./primitives.cmi ../utils/misc.cmi \
|
||||
unix_tools.cmi
|
||||
unix_tools.cmx: ../otherlibs/unix/unix.cmx primitives.cmx ../utils/misc.cmx \
|
||||
unix_tools.cmx: ../otherlibs/unix/unix.cmx ./primitives.cmx ../utils/misc.cmx \
|
||||
unix_tools.cmi
|
||||
|
|
56
lex/.depend
56
lex/.depend
|
@ -1,32 +1,32 @@
|
|||
common.cmi: syntax.cmi lexgen.cmi
|
||||
compact.cmi: lexgen.cmi
|
||||
lexer.cmi: parser.cmi
|
||||
lexgen.cmi: syntax.cmi
|
||||
output.cmi: syntax.cmi lexgen.cmi compact.cmi common.cmi
|
||||
outputbis.cmi: syntax.cmi lexgen.cmi common.cmi
|
||||
parser.cmi: syntax.cmi
|
||||
syntax.cmi: cset.cmi
|
||||
common.cmo: syntax.cmi lexgen.cmi common.cmi
|
||||
common.cmx: syntax.cmx lexgen.cmx common.cmi
|
||||
compact.cmo: table.cmi lexgen.cmi compact.cmi
|
||||
compact.cmx: table.cmx lexgen.cmx compact.cmi
|
||||
common.cmi: ./syntax.cmi ./lexgen.cmi
|
||||
compact.cmi: ./lexgen.cmi
|
||||
lexer.cmi: ./parser.cmi
|
||||
lexgen.cmi: ./syntax.cmi
|
||||
output.cmi: ./syntax.cmi ./lexgen.cmi ./compact.cmi ./common.cmi
|
||||
outputbis.cmi: ./syntax.cmi ./lexgen.cmi ./common.cmi
|
||||
parser.cmi: ./syntax.cmi
|
||||
syntax.cmi: ./cset.cmi
|
||||
common.cmo: ./syntax.cmi ./lexgen.cmi common.cmi
|
||||
common.cmx: ./syntax.cmx ./lexgen.cmx common.cmi
|
||||
compact.cmo: ./table.cmi ./lexgen.cmi compact.cmi
|
||||
compact.cmx: ./table.cmx ./lexgen.cmx compact.cmi
|
||||
cset.cmo: cset.cmi
|
||||
cset.cmx: cset.cmi
|
||||
lexer.cmo: syntax.cmi parser.cmi lexer.cmi
|
||||
lexer.cmx: syntax.cmx parser.cmx lexer.cmi
|
||||
lexgen.cmo: table.cmi syntax.cmi cset.cmi lexgen.cmi
|
||||
lexgen.cmx: table.cmx syntax.cmx cset.cmx lexgen.cmi
|
||||
main.cmo: syntax.cmi parser.cmi outputbis.cmi output.cmi lexgen.cmi lexer.cmi \
|
||||
cset.cmi compact.cmi common.cmi
|
||||
main.cmx: syntax.cmx parser.cmx outputbis.cmx output.cmx lexgen.cmx lexer.cmx \
|
||||
cset.cmx compact.cmx common.cmx
|
||||
output.cmo: syntax.cmi lexgen.cmi compact.cmi common.cmi output.cmi
|
||||
output.cmx: syntax.cmx lexgen.cmx compact.cmx common.cmx output.cmi
|
||||
outputbis.cmo: syntax.cmi lexgen.cmi common.cmi outputbis.cmi
|
||||
outputbis.cmx: syntax.cmx lexgen.cmx common.cmx outputbis.cmi
|
||||
parser.cmo: syntax.cmi cset.cmi parser.cmi
|
||||
parser.cmx: syntax.cmx cset.cmx parser.cmi
|
||||
syntax.cmo: cset.cmi syntax.cmi
|
||||
syntax.cmx: cset.cmx syntax.cmi
|
||||
lexer.cmo: ./syntax.cmi ./parser.cmi lexer.cmi
|
||||
lexer.cmx: ./syntax.cmx ./parser.cmx lexer.cmi
|
||||
lexgen.cmo: ./table.cmi ./syntax.cmi ./cset.cmi lexgen.cmi
|
||||
lexgen.cmx: ./table.cmx ./syntax.cmx ./cset.cmx lexgen.cmi
|
||||
main.cmo: ./syntax.cmi ./parser.cmi ./outputbis.cmi ./output.cmi ./lexgen.cmi \
|
||||
./lexer.cmi ./cset.cmi ./compact.cmi ./common.cmi
|
||||
main.cmx: ./syntax.cmx ./parser.cmx ./outputbis.cmx ./output.cmx ./lexgen.cmx \
|
||||
./lexer.cmx ./cset.cmx ./compact.cmx ./common.cmx
|
||||
output.cmo: ./syntax.cmi ./lexgen.cmi ./compact.cmi ./common.cmi output.cmi
|
||||
output.cmx: ./syntax.cmx ./lexgen.cmx ./compact.cmx ./common.cmx output.cmi
|
||||
outputbis.cmo: ./syntax.cmi ./lexgen.cmi ./common.cmi outputbis.cmi
|
||||
outputbis.cmx: ./syntax.cmx ./lexgen.cmx ./common.cmx outputbis.cmi
|
||||
parser.cmo: ./syntax.cmi ./cset.cmi parser.cmi
|
||||
parser.cmx: ./syntax.cmx ./cset.cmx parser.cmi
|
||||
syntax.cmo: ./cset.cmi syntax.cmi
|
||||
syntax.cmx: ./cset.cmx syntax.cmi
|
||||
table.cmo: table.cmi
|
||||
table.cmx: table.cmi
|
||||
|
|
397
ocamldoc/.depend
397
ocamldoc/.depend
|
@ -1,233 +1,242 @@
|
|||
odoc.cmo: ../typing/typedtree.cmi odoc_texi.cmo odoc_messages.cmo \
|
||||
odoc_man.cmo odoc_latex.cmo odoc_info.cmi odoc_html.cmo odoc_global.cmi \
|
||||
odoc_dot.cmo odoc_config.cmi odoc_args.cmi odoc_analyse.cmi \
|
||||
../utils/misc.cmi ../utils/config.cmi ../utils/clflags.cmo
|
||||
odoc.cmx: ../typing/typedtree.cmx odoc_texi.cmx odoc_messages.cmx \
|
||||
odoc_man.cmx odoc_latex.cmx odoc_info.cmx odoc_html.cmx odoc_global.cmx \
|
||||
odoc_dot.cmx odoc_config.cmx odoc_args.cmx odoc_analyse.cmx \
|
||||
../utils/misc.cmx ../utils/config.cmx ../utils/clflags.cmx
|
||||
odoc.cmo: ../typing/typedtree.cmi ./odoc_texi.cmo ./odoc_messages.cmo \
|
||||
./odoc_man.cmo ./odoc_latex.cmo ./odoc_info.cmi ./odoc_html.cmo \
|
||||
./odoc_global.cmi ./odoc_dot.cmo ./odoc_config.cmi ./odoc_args.cmi \
|
||||
./odoc_analyse.cmi ../utils/misc.cmi ../utils/config.cmi \
|
||||
../utils/clflags.cmi
|
||||
odoc.cmx: ../typing/typedtree.cmx ./odoc_texi.cmx ./odoc_messages.cmx \
|
||||
./odoc_man.cmx ./odoc_latex.cmx ./odoc_info.cmx ./odoc_html.cmx \
|
||||
./odoc_global.cmx ./odoc_dot.cmx ./odoc_config.cmx ./odoc_args.cmx \
|
||||
./odoc_analyse.cmx ../utils/misc.cmx ../utils/config.cmx \
|
||||
../utils/clflags.cmx
|
||||
odoc_analyse.cmo: ../utils/warnings.cmi ../typing/typetexp.cmi \
|
||||
../typing/types.cmi ../typing/typemod.cmi ../typing/typedtree.cmi \
|
||||
../typing/typedecl.cmi ../typing/typecore.cmi ../typing/typeclass.cmi \
|
||||
../bytecomp/translcore.cmi ../bytecomp/translclass.cmi \
|
||||
../parsing/syntaxerr.cmi ../parsing/parse.cmi odoc_types.cmi \
|
||||
odoc_text.cmi odoc_sig.cmi odoc_module.cmo odoc_misc.cmi \
|
||||
odoc_messages.cmo odoc_merge.cmi odoc_global.cmi odoc_dep.cmo \
|
||||
odoc_cross.cmi odoc_comments.cmi odoc_class.cmo odoc_ast.cmi \
|
||||
odoc_args.cmi ../utils/misc.cmi ../parsing/location.cmi \
|
||||
../parsing/syntaxerr.cmi ../parsing/parse.cmi ./odoc_types.cmi \
|
||||
./odoc_text.cmi ./odoc_sig.cmi ./odoc_module.cmo ./odoc_misc.cmi \
|
||||
./odoc_messages.cmo ./odoc_merge.cmi ./odoc_global.cmi ./odoc_dep.cmo \
|
||||
./odoc_cross.cmi ./odoc_comments.cmi ./odoc_class.cmo ./odoc_ast.cmi \
|
||||
./odoc_args.cmi ../utils/misc.cmi ../parsing/location.cmi \
|
||||
../parsing/lexer.cmi ../typing/includemod.cmi ../typing/env.cmi \
|
||||
../typing/ctype.cmi ../utils/config.cmi ../utils/clflags.cmo \
|
||||
../typing/ctype.cmi ../utils/config.cmi ../utils/clflags.cmi \
|
||||
../utils/ccomp.cmi odoc_analyse.cmi
|
||||
odoc_analyse.cmx: ../utils/warnings.cmx ../typing/typetexp.cmx \
|
||||
../typing/types.cmx ../typing/typemod.cmx ../typing/typedtree.cmx \
|
||||
../typing/typedecl.cmx ../typing/typecore.cmx ../typing/typeclass.cmx \
|
||||
../bytecomp/translcore.cmx ../bytecomp/translclass.cmx \
|
||||
../parsing/syntaxerr.cmx ../parsing/parse.cmx odoc_types.cmx \
|
||||
odoc_text.cmx odoc_sig.cmx odoc_module.cmx odoc_misc.cmx \
|
||||
odoc_messages.cmx odoc_merge.cmx odoc_global.cmx odoc_dep.cmx \
|
||||
odoc_cross.cmx odoc_comments.cmx odoc_class.cmx odoc_ast.cmx \
|
||||
odoc_args.cmx ../utils/misc.cmx ../parsing/location.cmx \
|
||||
../parsing/syntaxerr.cmx ../parsing/parse.cmx ./odoc_types.cmx \
|
||||
./odoc_text.cmx ./odoc_sig.cmx ./odoc_module.cmx ./odoc_misc.cmx \
|
||||
./odoc_messages.cmx ./odoc_merge.cmx ./odoc_global.cmx ./odoc_dep.cmx \
|
||||
./odoc_cross.cmx ./odoc_comments.cmx ./odoc_class.cmx ./odoc_ast.cmx \
|
||||
./odoc_args.cmx ../utils/misc.cmx ../parsing/location.cmx \
|
||||
../parsing/lexer.cmx ../typing/includemod.cmx ../typing/env.cmx \
|
||||
../typing/ctype.cmx ../utils/config.cmx ../utils/clflags.cmx \
|
||||
../utils/ccomp.cmx odoc_analyse.cmi
|
||||
odoc_args.cmo: odoc_types.cmi odoc_module.cmo odoc_messages.cmo \
|
||||
odoc_global.cmi odoc_config.cmi ../utils/misc.cmi ../utils/config.cmi \
|
||||
../utils/clflags.cmo odoc_args.cmi
|
||||
odoc_args.cmx: odoc_types.cmx odoc_module.cmx odoc_messages.cmx \
|
||||
odoc_global.cmx odoc_config.cmx ../utils/misc.cmx ../utils/config.cmx \
|
||||
odoc_args.cmo: ./odoc_types.cmi ./odoc_module.cmo ./odoc_messages.cmo \
|
||||
./odoc_global.cmi ./odoc_config.cmi ../utils/misc.cmi ../utils/config.cmi \
|
||||
../utils/clflags.cmi odoc_args.cmi
|
||||
odoc_args.cmx: ./odoc_types.cmx ./odoc_module.cmx ./odoc_messages.cmx \
|
||||
./odoc_global.cmx ./odoc_config.cmx ../utils/misc.cmx ../utils/config.cmx \
|
||||
../utils/clflags.cmx odoc_args.cmi
|
||||
odoc_ast.cmo: ../typing/types.cmi ../typing/typedtree.cmi \
|
||||
../typing/predef.cmi ../typing/path.cmi ../parsing/parsetree.cmi \
|
||||
odoc_value.cmo odoc_types.cmi odoc_type.cmo odoc_sig.cmi \
|
||||
odoc_parameter.cmo odoc_name.cmi odoc_module.cmo odoc_messages.cmo \
|
||||
odoc_global.cmi odoc_exception.cmo odoc_env.cmi odoc_class.cmo \
|
||||
odoc_args.cmi ../utils/misc.cmi ../parsing/location.cmi \
|
||||
../parsing/asttypes.cmi odoc_ast.cmi
|
||||
./odoc_value.cmo ./odoc_types.cmi ./odoc_type.cmo ./odoc_sig.cmi \
|
||||
./odoc_parameter.cmo ./odoc_name.cmi ./odoc_module.cmo \
|
||||
./odoc_messages.cmo ./odoc_global.cmi ./odoc_exception.cmo ./odoc_env.cmi \
|
||||
./odoc_class.cmo ./odoc_args.cmi ../utils/misc.cmi \
|
||||
../parsing/location.cmi ../typing/ident.cmi ../parsing/asttypes.cmi \
|
||||
odoc_ast.cmi
|
||||
odoc_ast.cmx: ../typing/types.cmx ../typing/typedtree.cmx \
|
||||
../typing/predef.cmx ../typing/path.cmx ../parsing/parsetree.cmi \
|
||||
odoc_value.cmx odoc_types.cmx odoc_type.cmx odoc_sig.cmx \
|
||||
odoc_parameter.cmx odoc_name.cmx odoc_module.cmx odoc_messages.cmx \
|
||||
odoc_global.cmx odoc_exception.cmx odoc_env.cmx odoc_class.cmx \
|
||||
odoc_args.cmx ../utils/misc.cmx ../parsing/location.cmx \
|
||||
../parsing/asttypes.cmi odoc_ast.cmi
|
||||
odoc_class.cmo: ../typing/types.cmi odoc_value.cmo odoc_types.cmi \
|
||||
odoc_parameter.cmo odoc_name.cmi
|
||||
odoc_class.cmx: ../typing/types.cmx odoc_value.cmx odoc_types.cmx \
|
||||
odoc_parameter.cmx odoc_name.cmx
|
||||
odoc_comments.cmo: odoc_types.cmi odoc_text.cmi odoc_see_lexer.cmo \
|
||||
odoc_parser.cmi odoc_misc.cmi odoc_messages.cmo odoc_lexer.cmo \
|
||||
odoc_global.cmi odoc_comments_global.cmi odoc_comments.cmi
|
||||
odoc_comments.cmx: odoc_types.cmx odoc_text.cmx odoc_see_lexer.cmx \
|
||||
odoc_parser.cmx odoc_misc.cmx odoc_messages.cmx odoc_lexer.cmx \
|
||||
odoc_global.cmx odoc_comments_global.cmx odoc_comments.cmi
|
||||
./odoc_value.cmx ./odoc_types.cmx ./odoc_type.cmx ./odoc_sig.cmx \
|
||||
./odoc_parameter.cmx ./odoc_name.cmx ./odoc_module.cmx \
|
||||
./odoc_messages.cmx ./odoc_global.cmx ./odoc_exception.cmx ./odoc_env.cmx \
|
||||
./odoc_class.cmx ./odoc_args.cmx ../utils/misc.cmx \
|
||||
../parsing/location.cmx ../typing/ident.cmx ../parsing/asttypes.cmi \
|
||||
odoc_ast.cmi
|
||||
odoc_class.cmo: ../typing/types.cmi ./odoc_value.cmo ./odoc_types.cmi \
|
||||
./odoc_parameter.cmo ./odoc_name.cmi
|
||||
odoc_class.cmx: ../typing/types.cmx ./odoc_value.cmx ./odoc_types.cmx \
|
||||
./odoc_parameter.cmx ./odoc_name.cmx
|
||||
odoc_comments.cmo: ./odoc_types.cmi ./odoc_text.cmi ./odoc_see_lexer.cmo \
|
||||
./odoc_parser.cmi ./odoc_misc.cmi ./odoc_messages.cmo ./odoc_lexer.cmo \
|
||||
./odoc_global.cmi ./odoc_cross.cmi ./odoc_comments_global.cmi \
|
||||
odoc_comments.cmi
|
||||
odoc_comments.cmx: ./odoc_types.cmx ./odoc_text.cmx ./odoc_see_lexer.cmx \
|
||||
./odoc_parser.cmx ./odoc_misc.cmx ./odoc_messages.cmx ./odoc_lexer.cmx \
|
||||
./odoc_global.cmx ./odoc_cross.cmx ./odoc_comments_global.cmx \
|
||||
odoc_comments.cmi
|
||||
odoc_comments_global.cmo: odoc_comments_global.cmi
|
||||
odoc_comments_global.cmx: odoc_comments_global.cmi
|
||||
odoc_config.cmo: ../utils/config.cmi odoc_config.cmi
|
||||
odoc_config.cmx: ../utils/config.cmx odoc_config.cmi
|
||||
odoc_cross.cmo: odoc_value.cmo odoc_types.cmi odoc_type.cmo odoc_search.cmi \
|
||||
odoc_scan.cmo odoc_parameter.cmo odoc_name.cmi odoc_module.cmo \
|
||||
odoc_misc.cmi odoc_messages.cmo odoc_exception.cmo odoc_class.cmo \
|
||||
odoc_cross.cmi
|
||||
odoc_cross.cmx: odoc_value.cmx odoc_types.cmx odoc_type.cmx odoc_search.cmx \
|
||||
odoc_scan.cmx odoc_parameter.cmx odoc_name.cmx odoc_module.cmx \
|
||||
odoc_misc.cmx odoc_messages.cmx odoc_exception.cmx odoc_class.cmx \
|
||||
odoc_cross.cmi
|
||||
odoc_dag2html.cmo: odoc_info.cmi odoc_dag2html.cmi
|
||||
odoc_dag2html.cmx: odoc_info.cmx odoc_dag2html.cmi
|
||||
odoc_dep.cmo: ../parsing/parsetree.cmi odoc_type.cmo odoc_print.cmi \
|
||||
odoc_module.cmo ../tools/depend.cmi
|
||||
odoc_dep.cmx: ../parsing/parsetree.cmi odoc_type.cmx odoc_print.cmx \
|
||||
odoc_module.cmx ../tools/depend.cmx
|
||||
odoc_dot.cmo: odoc_info.cmi
|
||||
odoc_dot.cmx: odoc_info.cmx
|
||||
odoc_cross.cmo: ./odoc_value.cmo ./odoc_types.cmi ./odoc_type.cmo \
|
||||
./odoc_search.cmi ./odoc_scan.cmo ./odoc_parameter.cmo ./odoc_name.cmi \
|
||||
./odoc_module.cmo ./odoc_misc.cmi ./odoc_messages.cmo \
|
||||
./odoc_exception.cmo ./odoc_class.cmo odoc_cross.cmi
|
||||
odoc_cross.cmx: ./odoc_value.cmx ./odoc_types.cmx ./odoc_type.cmx \
|
||||
./odoc_search.cmx ./odoc_scan.cmx ./odoc_parameter.cmx ./odoc_name.cmx \
|
||||
./odoc_module.cmx ./odoc_misc.cmx ./odoc_messages.cmx \
|
||||
./odoc_exception.cmx ./odoc_class.cmx odoc_cross.cmi
|
||||
odoc_dag2html.cmo: ./odoc_info.cmi odoc_dag2html.cmi
|
||||
odoc_dag2html.cmx: ./odoc_info.cmx odoc_dag2html.cmi
|
||||
odoc_dep.cmo: ../parsing/parsetree.cmi ./odoc_type.cmo ./odoc_print.cmi \
|
||||
./odoc_module.cmo ../tools/depend.cmi
|
||||
odoc_dep.cmx: ../parsing/parsetree.cmi ./odoc_type.cmx ./odoc_print.cmx \
|
||||
./odoc_module.cmx ../tools/depend.cmx
|
||||
odoc_dot.cmo: ./odoc_info.cmi
|
||||
odoc_dot.cmx: ./odoc_info.cmx
|
||||
odoc_env.cmo: ../typing/types.cmi ../typing/printtyp.cmi ../typing/predef.cmi \
|
||||
../typing/path.cmi odoc_name.cmi ../typing/btype.cmi odoc_env.cmi
|
||||
../typing/path.cmi ./odoc_name.cmi ../typing/btype.cmi odoc_env.cmi
|
||||
odoc_env.cmx: ../typing/types.cmx ../typing/printtyp.cmx ../typing/predef.cmx \
|
||||
../typing/path.cmx odoc_name.cmx ../typing/btype.cmx odoc_env.cmi
|
||||
odoc_exception.cmo: ../typing/types.cmi odoc_types.cmi odoc_name.cmi
|
||||
odoc_exception.cmx: ../typing/types.cmx odoc_types.cmx odoc_name.cmx
|
||||
odoc_global.cmo: ../utils/clflags.cmo odoc_global.cmi
|
||||
../typing/path.cmx ./odoc_name.cmx ../typing/btype.cmx odoc_env.cmi
|
||||
odoc_exception.cmo: ../typing/types.cmi ./odoc_types.cmi ./odoc_name.cmi
|
||||
odoc_exception.cmx: ../typing/types.cmx ./odoc_types.cmx ./odoc_name.cmx
|
||||
odoc_global.cmo: ../utils/clflags.cmi odoc_global.cmi
|
||||
odoc_global.cmx: ../utils/clflags.cmx odoc_global.cmi
|
||||
odoc_html.cmo: odoc_text.cmi odoc_ocamlhtml.cmo odoc_messages.cmo \
|
||||
odoc_info.cmi odoc_dag2html.cmi odoc_args.cmi
|
||||
odoc_html.cmx: odoc_text.cmx odoc_ocamlhtml.cmx odoc_messages.cmx \
|
||||
odoc_info.cmx odoc_dag2html.cmx odoc_args.cmx
|
||||
odoc_info.cmo: ../typing/printtyp.cmi odoc_value.cmo odoc_types.cmi \
|
||||
odoc_type.cmo odoc_text.cmi odoc_str.cmi odoc_search.cmi odoc_scan.cmo \
|
||||
odoc_print.cmi odoc_parameter.cmo odoc_name.cmi odoc_module.cmo \
|
||||
odoc_misc.cmi odoc_messages.cmo odoc_global.cmi odoc_exception.cmo \
|
||||
odoc_dep.cmo odoc_comments.cmi odoc_class.cmo odoc_args.cmi \
|
||||
odoc_analyse.cmi odoc_info.cmi
|
||||
odoc_info.cmx: ../typing/printtyp.cmx odoc_value.cmx odoc_types.cmx \
|
||||
odoc_type.cmx odoc_text.cmx odoc_str.cmx odoc_search.cmx odoc_scan.cmx \
|
||||
odoc_print.cmx odoc_parameter.cmx odoc_name.cmx odoc_module.cmx \
|
||||
odoc_misc.cmx odoc_messages.cmx odoc_global.cmx odoc_exception.cmx \
|
||||
odoc_dep.cmx odoc_comments.cmx odoc_class.cmx odoc_args.cmx \
|
||||
odoc_analyse.cmx odoc_info.cmi
|
||||
odoc_latex.cmo: odoc_to_text.cmo odoc_messages.cmo odoc_latex_style.cmo \
|
||||
odoc_info.cmi
|
||||
odoc_latex.cmx: odoc_to_text.cmx odoc_messages.cmx odoc_latex_style.cmx \
|
||||
odoc_info.cmx
|
||||
odoc_lexer.cmo: odoc_parser.cmi odoc_messages.cmo odoc_comments_global.cmi \
|
||||
odoc_args.cmi
|
||||
odoc_lexer.cmx: odoc_parser.cmx odoc_messages.cmx odoc_comments_global.cmx \
|
||||
odoc_args.cmx
|
||||
odoc_man.cmo: odoc_str.cmi odoc_print.cmi odoc_misc.cmi odoc_messages.cmo \
|
||||
odoc_info.cmi odoc_args.cmi
|
||||
odoc_man.cmx: odoc_str.cmx odoc_print.cmx odoc_misc.cmx odoc_messages.cmx \
|
||||
odoc_info.cmx odoc_args.cmx
|
||||
odoc_merge.cmo: odoc_value.cmo odoc_types.cmi odoc_type.cmo \
|
||||
odoc_parameter.cmo odoc_name.cmi odoc_module.cmo odoc_messages.cmo \
|
||||
odoc_exception.cmo odoc_class.cmo odoc_args.cmi odoc_merge.cmi
|
||||
odoc_merge.cmx: odoc_value.cmx odoc_types.cmx odoc_type.cmx \
|
||||
odoc_parameter.cmx odoc_name.cmx odoc_module.cmx odoc_messages.cmx \
|
||||
odoc_exception.cmx odoc_class.cmx odoc_args.cmx odoc_merge.cmi
|
||||
odoc_messages.cmo: odoc_global.cmi ../utils/config.cmi
|
||||
odoc_messages.cmx: odoc_global.cmx ../utils/config.cmx
|
||||
odoc_html.cmo: ./odoc_text.cmi ./odoc_ocamlhtml.cmo ./odoc_messages.cmo \
|
||||
./odoc_info.cmi ./odoc_dag2html.cmi ./odoc_args.cmi
|
||||
odoc_html.cmx: ./odoc_text.cmx ./odoc_ocamlhtml.cmx ./odoc_messages.cmx \
|
||||
./odoc_info.cmx ./odoc_dag2html.cmx ./odoc_args.cmx
|
||||
odoc_info.cmo: ../typing/printtyp.cmi ./odoc_value.cmo ./odoc_types.cmi \
|
||||
./odoc_type.cmo ./odoc_text.cmi ./odoc_str.cmi ./odoc_search.cmi \
|
||||
./odoc_scan.cmo ./odoc_print.cmi ./odoc_parameter.cmo ./odoc_name.cmi \
|
||||
./odoc_module.cmo ./odoc_misc.cmi ./odoc_messages.cmo ./odoc_global.cmi \
|
||||
./odoc_exception.cmo ./odoc_dep.cmo ./odoc_comments.cmi ./odoc_class.cmo \
|
||||
./odoc_args.cmi ./odoc_analyse.cmi odoc_info.cmi
|
||||
odoc_info.cmx: ../typing/printtyp.cmx ./odoc_value.cmx ./odoc_types.cmx \
|
||||
./odoc_type.cmx ./odoc_text.cmx ./odoc_str.cmx ./odoc_search.cmx \
|
||||
./odoc_scan.cmx ./odoc_print.cmx ./odoc_parameter.cmx ./odoc_name.cmx \
|
||||
./odoc_module.cmx ./odoc_misc.cmx ./odoc_messages.cmx ./odoc_global.cmx \
|
||||
./odoc_exception.cmx ./odoc_dep.cmx ./odoc_comments.cmx ./odoc_class.cmx \
|
||||
./odoc_args.cmx ./odoc_analyse.cmx odoc_info.cmi
|
||||
odoc_latex.cmo: ./odoc_to_text.cmo ./odoc_messages.cmo ./odoc_latex_style.cmo \
|
||||
./odoc_info.cmi
|
||||
odoc_latex.cmx: ./odoc_to_text.cmx ./odoc_messages.cmx ./odoc_latex_style.cmx \
|
||||
./odoc_info.cmx
|
||||
odoc_lexer.cmo: ./odoc_parser.cmi ./odoc_messages.cmo \
|
||||
./odoc_comments_global.cmi ./odoc_args.cmi
|
||||
odoc_lexer.cmx: ./odoc_parser.cmx ./odoc_messages.cmx \
|
||||
./odoc_comments_global.cmx ./odoc_args.cmx
|
||||
odoc_man.cmo: ./odoc_str.cmi ./odoc_print.cmi ./odoc_misc.cmi \
|
||||
./odoc_messages.cmo ./odoc_info.cmi ./odoc_args.cmi
|
||||
odoc_man.cmx: ./odoc_str.cmx ./odoc_print.cmx ./odoc_misc.cmx \
|
||||
./odoc_messages.cmx ./odoc_info.cmx ./odoc_args.cmx
|
||||
odoc_merge.cmo: ./odoc_value.cmo ./odoc_types.cmi ./odoc_type.cmo \
|
||||
./odoc_parameter.cmo ./odoc_name.cmi ./odoc_module.cmo \
|
||||
./odoc_messages.cmo ./odoc_exception.cmo ./odoc_class.cmo ./odoc_args.cmi \
|
||||
odoc_merge.cmi
|
||||
odoc_merge.cmx: ./odoc_value.cmx ./odoc_types.cmx ./odoc_type.cmx \
|
||||
./odoc_parameter.cmx ./odoc_name.cmx ./odoc_module.cmx \
|
||||
./odoc_messages.cmx ./odoc_exception.cmx ./odoc_class.cmx ./odoc_args.cmx \
|
||||
odoc_merge.cmi
|
||||
odoc_messages.cmo: ./odoc_global.cmi ../utils/config.cmi
|
||||
odoc_messages.cmx: ./odoc_global.cmx ../utils/config.cmx
|
||||
odoc_misc.cmo: ../typing/types.cmi ../typing/predef.cmi ../typing/path.cmi \
|
||||
odoc_types.cmi odoc_messages.cmo ../parsing/longident.cmi \
|
||||
./odoc_types.cmi ./odoc_messages.cmo ../parsing/longident.cmi \
|
||||
../typing/ctype.cmi ../typing/btype.cmi odoc_misc.cmi
|
||||
odoc_misc.cmx: ../typing/types.cmx ../typing/predef.cmx ../typing/path.cmx \
|
||||
odoc_types.cmx odoc_messages.cmx ../parsing/longident.cmx \
|
||||
./odoc_types.cmx ./odoc_messages.cmx ../parsing/longident.cmx \
|
||||
../typing/ctype.cmx ../typing/btype.cmx odoc_misc.cmi
|
||||
odoc_module.cmo: ../typing/types.cmi odoc_value.cmo odoc_types.cmi \
|
||||
odoc_type.cmo odoc_name.cmi odoc_exception.cmo odoc_class.cmo
|
||||
odoc_module.cmx: ../typing/types.cmx odoc_value.cmx odoc_types.cmx \
|
||||
odoc_type.cmx odoc_name.cmx odoc_exception.cmx odoc_class.cmx
|
||||
odoc_name.cmo: ../typing/path.cmi ../parsing/longident.cmi \
|
||||
../typing/ident.cmi odoc_name.cmi
|
||||
odoc_name.cmx: ../typing/path.cmx ../parsing/longident.cmx \
|
||||
../typing/ident.cmx odoc_name.cmi
|
||||
odoc_opt.cmo: ../typing/typedtree.cmi odoc_texi.cmo odoc_messages.cmo \
|
||||
odoc_man.cmo odoc_latex.cmo odoc_info.cmi odoc_html.cmo odoc_global.cmi \
|
||||
odoc_dot.cmo odoc_args.cmi odoc_analyse.cmi ../utils/misc.cmi \
|
||||
../utils/config.cmi ../utils/clflags.cmo
|
||||
odoc_opt.cmx: ../typing/typedtree.cmx odoc_texi.cmx odoc_messages.cmx \
|
||||
odoc_man.cmx odoc_latex.cmx odoc_info.cmx odoc_html.cmx odoc_global.cmx \
|
||||
odoc_dot.cmx odoc_args.cmx odoc_analyse.cmx ../utils/misc.cmx \
|
||||
../utils/config.cmx ../utils/clflags.cmx
|
||||
odoc_parameter.cmo: ../typing/types.cmi odoc_types.cmi
|
||||
odoc_parameter.cmx: ../typing/types.cmx odoc_types.cmx
|
||||
odoc_parser.cmo: odoc_types.cmi odoc_comments_global.cmi odoc_parser.cmi
|
||||
odoc_parser.cmx: odoc_types.cmx odoc_comments_global.cmx odoc_parser.cmi
|
||||
odoc_module.cmo: ../typing/types.cmi ./odoc_value.cmo ./odoc_types.cmi \
|
||||
./odoc_type.cmo ./odoc_name.cmi ./odoc_exception.cmo ./odoc_class.cmo
|
||||
odoc_module.cmx: ../typing/types.cmx ./odoc_value.cmx ./odoc_types.cmx \
|
||||
./odoc_type.cmx ./odoc_name.cmx ./odoc_exception.cmx ./odoc_class.cmx
|
||||
odoc_name.cmo: ../typing/path.cmi ./odoc_misc.cmi ../typing/ident.cmi \
|
||||
odoc_name.cmi
|
||||
odoc_name.cmx: ../typing/path.cmx ./odoc_misc.cmx ../typing/ident.cmx \
|
||||
odoc_name.cmi
|
||||
odoc_opt.cmo: ../typing/typedtree.cmi ./odoc_texi.cmo ./odoc_messages.cmo \
|
||||
./odoc_man.cmo ./odoc_latex.cmo ./odoc_info.cmi ./odoc_html.cmo \
|
||||
./odoc_global.cmi ./odoc_dot.cmo ./odoc_args.cmi ./odoc_analyse.cmi \
|
||||
../utils/misc.cmi ../utils/config.cmi ../utils/clflags.cmi
|
||||
odoc_opt.cmx: ../typing/typedtree.cmx ./odoc_texi.cmx ./odoc_messages.cmx \
|
||||
./odoc_man.cmx ./odoc_latex.cmx ./odoc_info.cmx ./odoc_html.cmx \
|
||||
./odoc_global.cmx ./odoc_dot.cmx ./odoc_args.cmx ./odoc_analyse.cmx \
|
||||
../utils/misc.cmx ../utils/config.cmx ../utils/clflags.cmx
|
||||
odoc_parameter.cmo: ../typing/types.cmi ./odoc_types.cmi
|
||||
odoc_parameter.cmx: ../typing/types.cmx ./odoc_types.cmx
|
||||
odoc_parser.cmo: ./odoc_types.cmi ./odoc_comments_global.cmi odoc_parser.cmi
|
||||
odoc_parser.cmx: ./odoc_types.cmx ./odoc_comments_global.cmx odoc_parser.cmi
|
||||
odoc_print.cmo: ../typing/types.cmi ../typing/printtyp.cmi odoc_print.cmi
|
||||
odoc_print.cmx: ../typing/types.cmx ../typing/printtyp.cmx odoc_print.cmi
|
||||
odoc_scan.cmo: odoc_value.cmo odoc_types.cmi odoc_type.cmo odoc_module.cmo \
|
||||
odoc_exception.cmo odoc_class.cmo
|
||||
odoc_scan.cmx: odoc_value.cmx odoc_types.cmx odoc_type.cmx odoc_module.cmx \
|
||||
odoc_exception.cmx odoc_class.cmx
|
||||
odoc_search.cmo: odoc_value.cmo odoc_types.cmi odoc_type.cmo \
|
||||
odoc_parameter.cmo odoc_name.cmi odoc_module.cmo odoc_exception.cmo \
|
||||
odoc_class.cmo odoc_search.cmi
|
||||
odoc_search.cmx: odoc_value.cmx odoc_types.cmx odoc_type.cmx \
|
||||
odoc_parameter.cmx odoc_name.cmx odoc_module.cmx odoc_exception.cmx \
|
||||
odoc_class.cmx odoc_search.cmi
|
||||
odoc_see_lexer.cmo: odoc_parser.cmi
|
||||
odoc_see_lexer.cmx: odoc_parser.cmx
|
||||
odoc_scan.cmo: ./odoc_value.cmo ./odoc_types.cmi ./odoc_type.cmo \
|
||||
./odoc_module.cmo ./odoc_exception.cmo ./odoc_class.cmo
|
||||
odoc_scan.cmx: ./odoc_value.cmx ./odoc_types.cmx ./odoc_type.cmx \
|
||||
./odoc_module.cmx ./odoc_exception.cmx ./odoc_class.cmx
|
||||
odoc_search.cmo: ./odoc_value.cmo ./odoc_types.cmi ./odoc_type.cmo \
|
||||
./odoc_parameter.cmo ./odoc_name.cmi ./odoc_module.cmo \
|
||||
./odoc_exception.cmo ./odoc_class.cmo odoc_search.cmi
|
||||
odoc_search.cmx: ./odoc_value.cmx ./odoc_types.cmx ./odoc_type.cmx \
|
||||
./odoc_parameter.cmx ./odoc_name.cmx ./odoc_module.cmx \
|
||||
./odoc_exception.cmx ./odoc_class.cmx odoc_search.cmi
|
||||
odoc_see_lexer.cmo: ./odoc_parser.cmi
|
||||
odoc_see_lexer.cmx: ./odoc_parser.cmx
|
||||
odoc_sig.cmo: ../typing/types.cmi ../typing/typedtree.cmi ../typing/path.cmi \
|
||||
../parsing/parsetree.cmi odoc_value.cmo odoc_types.cmi odoc_type.cmo \
|
||||
odoc_print.cmi odoc_parameter.cmo odoc_name.cmi odoc_module.cmo \
|
||||
odoc_misc.cmi odoc_messages.cmo odoc_merge.cmi odoc_global.cmi \
|
||||
odoc_exception.cmo odoc_env.cmi odoc_class.cmo odoc_args.cmi \
|
||||
../utils/misc.cmi ../parsing/location.cmi ../typing/btype.cmi \
|
||||
../parsing/asttypes.cmi odoc_sig.cmi
|
||||
../parsing/parsetree.cmi ./odoc_value.cmo ./odoc_types.cmi \
|
||||
./odoc_type.cmo ./odoc_print.cmi ./odoc_parameter.cmo ./odoc_name.cmi \
|
||||
./odoc_module.cmo ./odoc_misc.cmi ./odoc_messages.cmo ./odoc_merge.cmi \
|
||||
./odoc_global.cmi ./odoc_exception.cmo ./odoc_env.cmi ./odoc_class.cmo \
|
||||
./odoc_args.cmi ../utils/misc.cmi ../parsing/location.cmi \
|
||||
../typing/btype.cmi ../parsing/asttypes.cmi odoc_sig.cmi
|
||||
odoc_sig.cmx: ../typing/types.cmx ../typing/typedtree.cmx ../typing/path.cmx \
|
||||
../parsing/parsetree.cmi odoc_value.cmx odoc_types.cmx odoc_type.cmx \
|
||||
odoc_print.cmx odoc_parameter.cmx odoc_name.cmx odoc_module.cmx \
|
||||
odoc_misc.cmx odoc_messages.cmx odoc_merge.cmx odoc_global.cmx \
|
||||
odoc_exception.cmx odoc_env.cmx odoc_class.cmx odoc_args.cmx \
|
||||
../utils/misc.cmx ../parsing/location.cmx ../typing/btype.cmx \
|
||||
../parsing/asttypes.cmi odoc_sig.cmi
|
||||
odoc_str.cmo: ../typing/types.cmi ../typing/printtyp.cmi odoc_value.cmo \
|
||||
odoc_type.cmo odoc_print.cmi odoc_name.cmi odoc_misc.cmi \
|
||||
odoc_messages.cmo odoc_exception.cmo odoc_class.cmo odoc_str.cmi
|
||||
odoc_str.cmx: ../typing/types.cmx ../typing/printtyp.cmx odoc_value.cmx \
|
||||
odoc_type.cmx odoc_print.cmx odoc_name.cmx odoc_misc.cmx \
|
||||
odoc_messages.cmx odoc_exception.cmx odoc_class.cmx odoc_str.cmi
|
||||
odoc_test.cmo: odoc_info.cmi
|
||||
odoc_test.cmx: odoc_info.cmx
|
||||
odoc_texi.cmo: odoc_to_text.cmo odoc_messages.cmo odoc_info.cmi
|
||||
odoc_texi.cmx: odoc_to_text.cmx odoc_messages.cmx odoc_info.cmx
|
||||
odoc_text.cmo: odoc_types.cmi odoc_text_parser.cmi odoc_text_lexer.cmo \
|
||||
../parsing/parsetree.cmi ./odoc_value.cmx ./odoc_types.cmx \
|
||||
./odoc_type.cmx ./odoc_print.cmx ./odoc_parameter.cmx ./odoc_name.cmx \
|
||||
./odoc_module.cmx ./odoc_misc.cmx ./odoc_messages.cmx ./odoc_merge.cmx \
|
||||
./odoc_global.cmx ./odoc_exception.cmx ./odoc_env.cmx ./odoc_class.cmx \
|
||||
./odoc_args.cmx ../utils/misc.cmx ../parsing/location.cmx \
|
||||
../typing/btype.cmx ../parsing/asttypes.cmi odoc_sig.cmi
|
||||
odoc_str.cmo: ../typing/types.cmi ../typing/printtyp.cmi ./odoc_value.cmo \
|
||||
./odoc_type.cmo ./odoc_print.cmi ./odoc_name.cmi ./odoc_misc.cmi \
|
||||
./odoc_messages.cmo ./odoc_exception.cmo ./odoc_class.cmo odoc_str.cmi
|
||||
odoc_str.cmx: ../typing/types.cmx ../typing/printtyp.cmx ./odoc_value.cmx \
|
||||
./odoc_type.cmx ./odoc_print.cmx ./odoc_name.cmx ./odoc_misc.cmx \
|
||||
./odoc_messages.cmx ./odoc_exception.cmx ./odoc_class.cmx odoc_str.cmi
|
||||
odoc_test.cmo: ./odoc_info.cmi
|
||||
odoc_test.cmx: ./odoc_info.cmx
|
||||
odoc_texi.cmo: ./odoc_to_text.cmo ./odoc_messages.cmo ./odoc_info.cmi
|
||||
odoc_texi.cmx: ./odoc_to_text.cmx ./odoc_messages.cmx ./odoc_info.cmx
|
||||
odoc_text.cmo: ./odoc_types.cmi ./odoc_text_parser.cmi ./odoc_text_lexer.cmo \
|
||||
odoc_text.cmi
|
||||
odoc_text.cmx: odoc_types.cmx odoc_text_parser.cmx odoc_text_lexer.cmx \
|
||||
odoc_text.cmx: ./odoc_types.cmx ./odoc_text_parser.cmx ./odoc_text_lexer.cmx \
|
||||
odoc_text.cmi
|
||||
odoc_text_lexer.cmo: odoc_text_parser.cmi odoc_misc.cmi
|
||||
odoc_text_lexer.cmx: odoc_text_parser.cmx odoc_misc.cmx
|
||||
odoc_text_parser.cmo: odoc_types.cmi odoc_misc.cmi odoc_text_parser.cmi
|
||||
odoc_text_parser.cmx: odoc_types.cmx odoc_misc.cmx odoc_text_parser.cmi
|
||||
odoc_to_text.cmo: odoc_messages.cmo odoc_info.cmi
|
||||
odoc_to_text.cmx: odoc_messages.cmx odoc_info.cmx
|
||||
odoc_type.cmo: ../typing/types.cmi odoc_types.cmi odoc_name.cmi
|
||||
odoc_type.cmx: ../typing/types.cmx odoc_types.cmx odoc_name.cmx
|
||||
odoc_types.cmo: odoc_messages.cmo odoc_types.cmi
|
||||
odoc_types.cmx: odoc_messages.cmx odoc_types.cmi
|
||||
odoc_value.cmo: ../typing/types.cmi ../typing/printtyp.cmi odoc_types.cmi \
|
||||
odoc_parameter.cmo odoc_name.cmi
|
||||
odoc_value.cmx: ../typing/types.cmx ../typing/printtyp.cmx odoc_types.cmx \
|
||||
odoc_parameter.cmx odoc_name.cmx
|
||||
odoc_analyse.cmi: odoc_module.cmo odoc_args.cmi
|
||||
odoc_args.cmi: odoc_types.cmi odoc_module.cmo
|
||||
odoc_text_lexer.cmo: ./odoc_text_parser.cmi ./odoc_misc.cmi
|
||||
odoc_text_lexer.cmx: ./odoc_text_parser.cmx ./odoc_misc.cmx
|
||||
odoc_text_parser.cmo: ./odoc_types.cmi ./odoc_misc.cmi odoc_text_parser.cmi
|
||||
odoc_text_parser.cmx: ./odoc_types.cmx ./odoc_misc.cmx odoc_text_parser.cmi
|
||||
odoc_to_text.cmo: ./odoc_messages.cmo ./odoc_info.cmi
|
||||
odoc_to_text.cmx: ./odoc_messages.cmx ./odoc_info.cmx
|
||||
odoc_type.cmo: ../typing/types.cmi ./odoc_types.cmi ./odoc_name.cmi
|
||||
odoc_type.cmx: ../typing/types.cmx ./odoc_types.cmx ./odoc_name.cmx
|
||||
odoc_types.cmo: ./odoc_messages.cmo odoc_types.cmi
|
||||
odoc_types.cmx: ./odoc_messages.cmx odoc_types.cmi
|
||||
odoc_value.cmo: ../typing/types.cmi ../typing/printtyp.cmi ./odoc_types.cmi \
|
||||
./odoc_parameter.cmo ./odoc_name.cmi
|
||||
odoc_value.cmx: ../typing/types.cmx ../typing/printtyp.cmx ./odoc_types.cmx \
|
||||
./odoc_parameter.cmx ./odoc_name.cmx
|
||||
odoc_analyse.cmi: ./odoc_module.cmo ./odoc_args.cmi
|
||||
odoc_args.cmi: ./odoc_types.cmi ./odoc_module.cmo
|
||||
odoc_ast.cmi: ../typing/types.cmi ../typing/typedtree.cmi ../typing/path.cmi \
|
||||
../parsing/parsetree.cmi odoc_sig.cmi odoc_name.cmi odoc_module.cmo
|
||||
odoc_comments.cmi: odoc_types.cmi
|
||||
odoc_cross.cmi: odoc_module.cmo
|
||||
odoc_dag2html.cmi: odoc_info.cmi
|
||||
odoc_env.cmi: ../typing/types.cmi odoc_name.cmi
|
||||
odoc_info.cmi: ../typing/types.cmi odoc_value.cmo odoc_types.cmi \
|
||||
odoc_type.cmo odoc_search.cmi odoc_parameter.cmo odoc_module.cmo \
|
||||
odoc_exception.cmo odoc_class.cmo
|
||||
odoc_merge.cmi: odoc_types.cmi odoc_module.cmo
|
||||
odoc_misc.cmi: ../typing/types.cmi odoc_types.cmi ../parsing/longident.cmi
|
||||
../parsing/parsetree.cmi ./odoc_sig.cmi ./odoc_name.cmi ./odoc_module.cmo
|
||||
odoc_comments.cmi: ./odoc_types.cmi ./odoc_module.cmo
|
||||
odoc_cross.cmi: ./odoc_types.cmi ./odoc_module.cmo
|
||||
odoc_dag2html.cmi: ./odoc_info.cmi
|
||||
odoc_env.cmi: ../typing/types.cmi ./odoc_name.cmi
|
||||
odoc_info.cmi: ../typing/types.cmi ./odoc_value.cmo ./odoc_types.cmi \
|
||||
./odoc_type.cmo ./odoc_search.cmi ./odoc_parameter.cmo ./odoc_module.cmo \
|
||||
./odoc_exception.cmo ./odoc_class.cmo
|
||||
odoc_merge.cmi: ./odoc_types.cmi ./odoc_module.cmo
|
||||
odoc_misc.cmi: ../typing/types.cmi ./odoc_types.cmi ../parsing/longident.cmi
|
||||
odoc_name.cmi: ../typing/path.cmi ../parsing/longident.cmi \
|
||||
../typing/ident.cmi
|
||||
odoc_parser.cmi: odoc_types.cmi
|
||||
odoc_parser.cmi: ./odoc_types.cmi
|
||||
odoc_print.cmi: ../typing/types.cmi
|
||||
odoc_search.cmi: odoc_value.cmo odoc_types.cmi odoc_type.cmo odoc_module.cmo \
|
||||
odoc_exception.cmo odoc_class.cmo
|
||||
odoc_sig.cmi: ../typing/types.cmi ../parsing/parsetree.cmi odoc_types.cmi \
|
||||
odoc_type.cmo odoc_name.cmi odoc_module.cmo odoc_env.cmi odoc_class.cmo
|
||||
odoc_str.cmi: ../typing/types.cmi odoc_value.cmo odoc_type.cmo \
|
||||
odoc_exception.cmo odoc_class.cmo
|
||||
odoc_text.cmi: odoc_types.cmi
|
||||
odoc_text_parser.cmi: odoc_types.cmi
|
||||
odoc_search.cmi: ./odoc_value.cmo ./odoc_types.cmi ./odoc_type.cmo \
|
||||
./odoc_module.cmo ./odoc_exception.cmo ./odoc_class.cmo
|
||||
odoc_sig.cmi: ../typing/types.cmi ../parsing/parsetree.cmi ./odoc_types.cmi \
|
||||
./odoc_type.cmo ./odoc_name.cmi ./odoc_module.cmo ./odoc_env.cmi \
|
||||
./odoc_class.cmo
|
||||
odoc_str.cmi: ../typing/types.cmi ./odoc_value.cmo ./odoc_type.cmo \
|
||||
./odoc_exception.cmo ./odoc_class.cmo
|
||||
odoc_text.cmi: ./odoc_types.cmi
|
||||
odoc_text_parser.cmi: ./odoc_types.cmi
|
||||
|
|
|
@ -1,9 +1,27 @@
|
|||
TODO:
|
||||
- need to fix display of type parameters for inherited classes/class types
|
||||
- need to add an environment while generating to print correct links:
|
||||
file foo.mli:
|
||||
type u
|
||||
module type M = sig type u end
|
||||
module N : sig include M val f: u -> unit end
|
||||
Here, in html for example, f in displayed being of type Foo.u instead of Foo.M.u
|
||||
- latex: types variant polymorphes dépassent de la page quand ils sont trop longs
|
||||
- utilisation nouvelles infos de Xavier: "début de rec", etc.
|
||||
- xml generator
|
||||
|
||||
=====
|
||||
Release 3.09.3:
|
||||
- mod: PR#4017 new option -short-functors to use a short form to display
|
||||
functors in html generator
|
||||
- fix: PR#4016 (using modtype constraint to filter module elements displayed in doc)
|
||||
- fix: PR#4066 (missing crossref in text from intro files)
|
||||
- fix: PR#4007 (error in merging of top dependencies of modules)
|
||||
- fix: PR#3981 (-dot-colors has no effect)
|
||||
- mod: name resolution in cross-referencing: {!name} if name is not
|
||||
found, then it is searched in the parent module/class, and in the parent
|
||||
of the parent, and so on until it is found.
|
||||
|
||||
=====
|
||||
Release 3.09.1:
|
||||
- fix: remove .TP for generated man pages, use .sp instead
|
||||
|
|
|
@ -93,7 +93,6 @@ CMOFILES= odoc_config.cmo \
|
|||
odoc_parser.cmo\
|
||||
odoc_lexer.cmo\
|
||||
odoc_see_lexer.cmo\
|
||||
odoc_comments.cmo\
|
||||
odoc_env.cmo\
|
||||
odoc_merge.cmo\
|
||||
odoc_sig.cmo\
|
||||
|
@ -103,6 +102,7 @@ CMOFILES= odoc_config.cmo \
|
|||
odoc_search.cmo\
|
||||
odoc_scan.cmo\
|
||||
odoc_cross.cmo\
|
||||
odoc_comments.cmo\
|
||||
odoc_dep.cmo\
|
||||
odoc_analyse.cmo\
|
||||
odoc_info.cmo
|
||||
|
@ -211,6 +211,10 @@ $(OCAMLDOC_LIBCMXA): $(LIBCMXFILES)
|
|||
|
||||
manpages: stdlib_man/Pervasives.3o
|
||||
|
||||
dot: $(EXECMOFILES) odoc.cmo
|
||||
$(OCAMLDOC_RUN) -dot -dot-reduce -o ocamldoc.dot $(INCLUDES) \
|
||||
odoc*.ml
|
||||
|
||||
# Parsers and lexers dependencies :
|
||||
###################################
|
||||
odoc_text_parser.ml: odoc_text_parser.mly
|
||||
|
|
|
@ -87,7 +87,6 @@ CMOFILES= odoc_config.cmo \
|
|||
odoc_parser.cmo\
|
||||
odoc_lexer.cmo\
|
||||
odoc_see_lexer.cmo\
|
||||
odoc_comments.cmo\
|
||||
odoc_env.cmo\
|
||||
odoc_merge.cmo\
|
||||
odoc_sig.cmo\
|
||||
|
@ -97,6 +96,7 @@ CMOFILES= odoc_config.cmo \
|
|||
odoc_search.cmo\
|
||||
odoc_scan.cmo\
|
||||
odoc_cross.cmo\
|
||||
odoc_comments.cmo\
|
||||
odoc_dep.cmo\
|
||||
odoc_analyse.cmo\
|
||||
odoc_info.cmo
|
||||
|
|
|
@ -21,7 +21,7 @@ open Typedtree
|
|||
|
||||
module M = Odoc_messages
|
||||
|
||||
let print_DEBUG s = print_string s ; print_newline ()
|
||||
let print_DEBUG s = print_string s ; print_newline ()
|
||||
|
||||
(* we check if we must load a module given on the command line *)
|
||||
let arg_list = Array.to_list Sys.argv
|
||||
|
@ -42,7 +42,7 @@ let (cmo_or_cma_opt, paths) =
|
|||
|
||||
let _ = print_DEBUG "Fin analyse des arguments pour le dynamic load"
|
||||
|
||||
(** Return the real name of the file to load,
|
||||
(** Return the real name of the file to load,
|
||||
searching it in the paths if it is
|
||||
a simple name and not in the current directory. *)
|
||||
let get_real_filename name =
|
||||
|
@ -74,16 +74,16 @@ let _ =
|
|||
let real_file = get_real_filename file in
|
||||
ignore(Dynlink.loadfile real_file)
|
||||
with
|
||||
Dynlink.Error e ->
|
||||
Dynlink.Error e ->
|
||||
prerr_endline (Odoc_messages.load_file_error file (Dynlink.error_message e)) ;
|
||||
exit 1
|
||||
| Not_found ->
|
||||
prerr_endline (Odoc_messages.load_file_error file "Not_found");
|
||||
exit 1
|
||||
exit 1
|
||||
| Sys_error s
|
||||
| Failure s ->
|
||||
prerr_endline (Odoc_messages.load_file_error file s);
|
||||
exit 1
|
||||
exit 1
|
||||
|
||||
let _ = print_DEBUG "Fin du chargement dynamique éventuel"
|
||||
|
||||
|
@ -101,16 +101,16 @@ let _ = Odoc_args.parse
|
|||
|
||||
|
||||
let loaded_modules =
|
||||
List.flatten
|
||||
(List.map
|
||||
List.flatten
|
||||
(List.map
|
||||
(fun f ->
|
||||
Odoc_info.verbose (Odoc_messages.loading f);
|
||||
try
|
||||
try
|
||||
let l = Odoc_analyse.load_modules f in
|
||||
Odoc_info.verbose Odoc_messages.ok;
|
||||
l
|
||||
with Failure s ->
|
||||
prerr_endline s ;
|
||||
with Failure s ->
|
||||
prerr_endline s ;
|
||||
incr Odoc_global.errors ;
|
||||
[]
|
||||
)
|
||||
|
@ -124,20 +124,20 @@ let _ =
|
|||
None -> ()
|
||||
| Some f ->
|
||||
try Odoc_analyse.dump_modules f modules
|
||||
with Failure s ->
|
||||
with Failure s ->
|
||||
prerr_endline s ;
|
||||
incr Odoc_global.errors
|
||||
|
||||
let _ =
|
||||
let _ =
|
||||
match !Odoc_args.doc_generator with
|
||||
None ->
|
||||
()
|
||||
| Some gen ->
|
||||
| Some gen ->
|
||||
Odoc_info.verbose Odoc_messages.generating_doc;
|
||||
gen#generate modules;
|
||||
Odoc_info.verbose Odoc_messages.ok
|
||||
|
||||
let _ =
|
||||
let _ =
|
||||
if !Odoc_global.errors > 0 then
|
||||
(
|
||||
prerr_endline (Odoc_messages.errors_occured !Odoc_global.errors) ;
|
||||
|
@ -145,6 +145,6 @@ let _ =
|
|||
)
|
||||
else
|
||||
exit 0
|
||||
|
||||
|
||||
|
||||
(* eof $Id$ *)
|
||||
|
|
|
@ -124,6 +124,8 @@ let index_only = ref false
|
|||
|
||||
let colorize_code = ref false
|
||||
|
||||
let html_short_functors = ref false
|
||||
|
||||
let with_header = ref true
|
||||
|
||||
let with_trailer = ref true
|
||||
|
@ -256,7 +258,8 @@ let options = ref [
|
|||
"-all-params", Arg.Set with_parameter_list, M.with_parameter_list ;
|
||||
"-css-style", Arg.String (fun s -> css_style := Some s), M.css_style ;
|
||||
"-index-only", Arg.Set index_only, M.index_only ;
|
||||
"-colorize-code", Arg.Set colorize_code, M.colorize_code ^
|
||||
"-colorize-code", Arg.Set colorize_code, M.colorize_code ;
|
||||
"-short-functors", Arg.Set html_short_functors, M.html_short_functors ^
|
||||
"\n\n *** LaTeX options ***\n";
|
||||
|
||||
(* latex only options *)
|
||||
|
|
|
@ -94,6 +94,10 @@ val index_only : bool ref
|
|||
(** To colorize code in HTML generated documentation pages, not code pages. *)
|
||||
val colorize_code : bool ref
|
||||
|
||||
(** To display functors in short form rather than with "functor ... -> ",
|
||||
in HTML generated documentation. *)
|
||||
val html_short_functors : bool ref
|
||||
|
||||
(** The flag which indicates if we must generate a header (for LaTeX). *)
|
||||
val with_header : bool ref
|
||||
|
||||
|
|
|
@ -33,10 +33,10 @@ open Odoc_types
|
|||
|
||||
(** This variable contains the regular expression representing a blank.*)
|
||||
let blank = "[ \010\013\009\012']"
|
||||
|
||||
(** This variable contains the regular expression representing a blank but not a '\n'.*)
|
||||
let simple_blank = "[ \013\009\012]"
|
||||
|
||||
|
||||
(** This module is used to search for structure items by name in a Typedtree.structure.
|
||||
One function creates two hash tables, which can then be used to search for elements.
|
||||
Class elements do not use tables.
|
||||
|
@ -68,12 +68,12 @@ module Typedtree_search =
|
|||
| Typedtree.Tstr_module (ident, _) ->
|
||||
Hashtbl.add table (M (Name.from_ident ident)) tt
|
||||
| Typedtree.Tstr_recmodule mods ->
|
||||
List.iter
|
||||
(fun (ident,mod_expr) ->
|
||||
Hashtbl.add table (M (Name.from_ident ident))
|
||||
(Typedtree.Tstr_module (ident,mod_expr))
|
||||
)
|
||||
mods
|
||||
List.iter
|
||||
(fun (ident,mod_expr) ->
|
||||
Hashtbl.add table (M (Name.from_ident ident))
|
||||
(Typedtree.Tstr_module (ident,mod_expr))
|
||||
)
|
||||
mods
|
||||
| Typedtree.Tstr_modtype (ident, _) ->
|
||||
Hashtbl.add table (MT (Name.from_ident ident)) tt
|
||||
| Typedtree.Tstr_exception (ident, _) ->
|
||||
|
@ -388,7 +388,7 @@ module Analyser =
|
|||
(*
|
||||
(
|
||||
match clexp.Typedtree.cl_desc with
|
||||
Tclass_ident _ -> prerr_endline "Tclass_ident"
|
||||
Tclass_ident _ -> prerr_endline "Tclass_ident"
|
||||
| Tclass_structure _ -> prerr_endline "Tclass_structure"
|
||||
| Tclass_fun _ -> prerr_endline "Tclass_fun"
|
||||
| Tclass_apply _ -> prerr_endline "Tclass_apply"
|
||||
|
@ -507,18 +507,18 @@ module Analyser =
|
|||
with Not_found -> raise (Failure (Odoc_messages.inherit_classexp_not_found_in_typedtree n))
|
||||
in
|
||||
let (info_opt, ele_comments) =
|
||||
get_comments_in_class last_pos
|
||||
p_clexp.Parsetree.pcl_loc.Location.loc_start.Lexing.pos_cnum
|
||||
in
|
||||
get_comments_in_class last_pos
|
||||
p_clexp.Parsetree.pcl_loc.Location.loc_start.Lexing.pos_cnum
|
||||
in
|
||||
let text_opt = match info_opt with None -> None | Some i -> i.Odoc_types.i_desc in
|
||||
let name = tt_name_of_class_expr tt_clexp in
|
||||
let inher =
|
||||
{
|
||||
ic_name = Odoc_env.full_class_or_class_type_name env name ;
|
||||
ic_class = None ;
|
||||
ic_text = text_opt ;
|
||||
}
|
||||
in
|
||||
{
|
||||
ic_name = Odoc_env.full_class_or_class_type_name env name ;
|
||||
ic_class = None ;
|
||||
ic_text = text_opt ;
|
||||
}
|
||||
in
|
||||
iter (acc_inher @ [ inher ]) (acc_fields @ ele_comments)
|
||||
p_clexp.Parsetree.pcl_loc.Location.loc_end.Lexing.pos_cnum
|
||||
q
|
||||
|
@ -826,7 +826,7 @@ module Analyser =
|
|||
{ (* A VOIR : chercher dans les modules et les module types, avec quel env ? *)
|
||||
im_name = tt_name_from_module_expr mod_expr ;
|
||||
im_module = None ;
|
||||
im_info = None ;
|
||||
im_info = None ;
|
||||
}
|
||||
]
|
||||
| _ ->
|
||||
|
@ -842,7 +842,7 @@ module Analyser =
|
|||
[]
|
||||
| ((Element_included_module im) :: q, (im_repl :: im_q)) ->
|
||||
(Element_included_module { im_repl with im_info = im.im_info })
|
||||
:: (f (q, im_q))
|
||||
:: (f (q, im_q))
|
||||
| ((Element_included_module im) :: q, []) ->
|
||||
(Element_included_module im) :: q
|
||||
| (ele :: q, l) ->
|
||||
|
@ -850,6 +850,94 @@ module Analyser =
|
|||
in
|
||||
f (module_elements, included_modules)
|
||||
|
||||
(** This function removes the elements of the module which does not
|
||||
belong to the given module type, if the module type is expanded
|
||||
and the module has a "structure" kind. *)
|
||||
let rec filter_module_with_module_type_constraint m mt =
|
||||
match m.m_kind, mt with
|
||||
Module_struct l, Types.Tmty_signature lsig ->
|
||||
m.m_kind <- Module_struct (filter_module_elements_with_module_type_constraint l lsig);
|
||||
m.m_type <- mt;
|
||||
| _ -> ()
|
||||
|
||||
(** This function removes the elements of the module type which does not
|
||||
belong to the given module type, if the module type is expanded
|
||||
and the module type has a "structure" kind. *)
|
||||
and filter_module_type_with_module_type_constraint mtyp mt =
|
||||
match mtyp.mt_kind, mt with
|
||||
Some Module_type_struct l, Types.Tmty_signature lsig ->
|
||||
mtyp.mt_kind <- Some (Module_type_struct (filter_module_elements_with_module_type_constraint l lsig));
|
||||
mtyp.mt_type <- Some mt;
|
||||
| _ -> ()
|
||||
|
||||
and filter_module_elements_with_module_type_constraint l lsig =
|
||||
let pred ele =
|
||||
let f = match ele with
|
||||
Element_module m ->
|
||||
(function
|
||||
Types.Tsig_module (ident,t,_) ->
|
||||
let n1 = Name.simple m.m_name
|
||||
and n2 = Ident.name ident in
|
||||
(
|
||||
match n1 = n2 with
|
||||
true -> filter_module_with_module_type_constraint m t; true
|
||||
| false -> false
|
||||
)
|
||||
| _ -> false)
|
||||
| Element_module_type mt ->
|
||||
(function
|
||||
Types.Tsig_modtype (ident,Types.Tmodtype_manifest t) ->
|
||||
let n1 = Name.simple mt.mt_name
|
||||
and n2 = Ident.name ident in
|
||||
(
|
||||
match n1 = n2 with
|
||||
true -> filter_module_type_with_module_type_constraint mt t; true
|
||||
| false -> false
|
||||
)
|
||||
| _ -> false)
|
||||
| Element_value v ->
|
||||
(function
|
||||
Types.Tsig_value (ident,_) ->
|
||||
let n1 = Name.simple v.val_name
|
||||
and n2 = Ident.name ident in
|
||||
n1 = n2
|
||||
| _ -> false)
|
||||
| Element_type t ->
|
||||
(function
|
||||
Types.Tsig_type (ident,_,_) ->
|
||||
(* A VOIR: il est possible que le détail du type soit caché *)
|
||||
let n1 = Name.simple t.ty_name
|
||||
and n2 = Ident.name ident in
|
||||
n1 = n2
|
||||
| _ -> false)
|
||||
| Element_exception e ->
|
||||
(function
|
||||
Types.Tsig_exception (ident,_) ->
|
||||
let n1 = Name.simple e.ex_name
|
||||
and n2 = Ident.name ident in
|
||||
n1 = n2
|
||||
| _ -> false)
|
||||
| Element_class c ->
|
||||
(function
|
||||
Types.Tsig_class (ident,_,_) ->
|
||||
let n1 = Name.simple c.cl_name
|
||||
and n2 = Ident.name ident in
|
||||
n1 = n2
|
||||
| _ -> false)
|
||||
| Element_class_type ct ->
|
||||
(function
|
||||
Types.Tsig_cltype (ident,_,_) ->
|
||||
let n1 = Name.simple ct.clt_name
|
||||
and n2 = Ident.name ident in
|
||||
n1 = n2
|
||||
| _ -> false)
|
||||
| Element_module_comment _ -> fun _ -> true
|
||||
| Element_included_module _ -> fun _ -> true
|
||||
in
|
||||
List.exists f lsig
|
||||
in
|
||||
List.filter pred l
|
||||
|
||||
(** Analysis of a parse tree structure with a typed tree, to return module elements.*)
|
||||
let rec analyse_structure env current_module_name last_pos pos_limit parsetree typedtree =
|
||||
print_DEBUG "Odoc_ast:analyse_struture";
|
||||
|
@ -1033,13 +1121,13 @@ module Analyser =
|
|||
ty_name = complete_name ;
|
||||
ty_info = com_opt ;
|
||||
ty_parameters =
|
||||
List.map2
|
||||
(fun p (co,cn,_) ->
|
||||
(Odoc_env.subst_type new_env p,
|
||||
co, cn)
|
||||
)
|
||||
tt_type_decl.Types.type_params
|
||||
tt_type_decl.Types.type_variance ;
|
||||
List.map2
|
||||
(fun p (co,cn,_) ->
|
||||
(Odoc_env.subst_type new_env p,
|
||||
co, cn)
|
||||
)
|
||||
tt_type_decl.Types.type_params
|
||||
tt_type_decl.Types.type_variance ;
|
||||
ty_kind = kind ;
|
||||
ty_manifest =
|
||||
(match tt_type_decl.Types.type_manifest with
|
||||
|
@ -1047,12 +1135,12 @@ module Analyser =
|
|||
| Some t -> Some (Odoc_env.subst_type new_env t));
|
||||
ty_loc = { loc_impl = Some (!file_name, loc_start) ; loc_inter = None } ;
|
||||
ty_code =
|
||||
(
|
||||
if !Odoc_args.keep_code then
|
||||
Some (get_string_of_file loc_start new_end)
|
||||
else
|
||||
None
|
||||
) ;
|
||||
(
|
||||
if !Odoc_args.keep_code then
|
||||
Some (get_string_of_file loc_start new_end)
|
||||
else
|
||||
None
|
||||
) ;
|
||||
}
|
||||
in
|
||||
let (maybe_more2, info_after_opt) =
|
||||
|
@ -1086,13 +1174,13 @@ module Analyser =
|
|||
ex_args = List.map (Odoc_env.subst_type new_env) tt_excep_decl ;
|
||||
ex_alias = None ;
|
||||
ex_loc = { loc_impl = Some (!file_name, loc.Location.loc_start.Lexing.pos_cnum) ; loc_inter = None } ;
|
||||
ex_code =
|
||||
ex_code =
|
||||
(
|
||||
if !Odoc_args.keep_code then
|
||||
if !Odoc_args.keep_code then
|
||||
Some (get_string_of_file loc_start loc_end)
|
||||
else
|
||||
None
|
||||
) ;
|
||||
) ;
|
||||
}
|
||||
in
|
||||
(0, new_env, [ Element_exception new_ex ])
|
||||
|
@ -1133,18 +1221,18 @@ module Analyser =
|
|||
module_expr
|
||||
tt_module_expr
|
||||
in
|
||||
let code =
|
||||
if !Odoc_args.keep_code then
|
||||
let loc = module_expr.Parsetree.pmod_loc in
|
||||
let st = loc.Location.loc_start.Lexing.pos_cnum in
|
||||
let en = loc.Location.loc_end.Lexing.pos_cnum in
|
||||
Some (get_string_of_file st en)
|
||||
else
|
||||
None
|
||||
in
|
||||
let new_module =
|
||||
{ new_module_pre with m_code = code }
|
||||
in
|
||||
let code =
|
||||
if !Odoc_args.keep_code then
|
||||
let loc = module_expr.Parsetree.pmod_loc in
|
||||
let st = loc.Location.loc_start.Lexing.pos_cnum in
|
||||
let en = loc.Location.loc_end.Lexing.pos_cnum in
|
||||
Some (get_string_of_file st en)
|
||||
else
|
||||
None
|
||||
in
|
||||
let new_module =
|
||||
{ new_module_pre with m_code = code }
|
||||
in
|
||||
let new_env = Odoc_env.add_module env new_module.m_name in
|
||||
let new_env2 =
|
||||
match new_module.m_type with
|
||||
|
@ -1163,14 +1251,14 @@ module Analyser =
|
|||
)
|
||||
|
||||
| Parsetree.Pstr_recmodule mods ->
|
||||
(* A VOIR ICI ca merde avec /work/tmp/graph.ml: pas de lien avec les module type
|
||||
dans les contraintes sur les modules *)
|
||||
let new_env =
|
||||
(* A VOIR ICI pb: pas de lien avec les module type
|
||||
dans les contraintes sur les modules *)
|
||||
let new_env =
|
||||
List.fold_left
|
||||
(fun acc_env (name, _, mod_exp) ->
|
||||
let complete_name = Name.concat current_module_name name in
|
||||
let e = Odoc_env.add_module acc_env complete_name in
|
||||
let tt_mod_exp =
|
||||
let e = Odoc_env.add_module acc_env complete_name in
|
||||
let tt_mod_exp =
|
||||
try Typedtree_search.search_module table name
|
||||
with Not_found -> raise (Failure (Odoc_messages.module_not_found_in_typedtree complete_name))
|
||||
in
|
||||
|
@ -1181,12 +1269,12 @@ module Analyser =
|
|||
None
|
||||
mod_exp
|
||||
tt_mod_exp
|
||||
in
|
||||
match new_module.m_type with
|
||||
in
|
||||
match new_module.m_type with
|
||||
Types.Tmty_signature s ->
|
||||
Odoc_env.add_signature e new_module.m_name
|
||||
~rel: (Name.simple new_module.m_name) s
|
||||
| _ ->
|
||||
~rel: (Name.simple new_module.m_name) s
|
||||
| _ ->
|
||||
e
|
||||
)
|
||||
env
|
||||
|
@ -1209,14 +1297,14 @@ module Analyser =
|
|||
else
|
||||
get_comments_in_module last_pos loc_start
|
||||
in
|
||||
let new_module = analyse_module
|
||||
let new_module = analyse_module
|
||||
new_env
|
||||
current_module_name
|
||||
name
|
||||
com_opt
|
||||
mod_exp
|
||||
tt_mod_exp
|
||||
in
|
||||
in
|
||||
let eles = f loc_end q in
|
||||
ele_comments @ ((Element_module new_module) :: eles)
|
||||
in
|
||||
|
@ -1371,7 +1459,7 @@ module Analyser =
|
|||
{
|
||||
im_name = "dummy" ;
|
||||
im_module = None ;
|
||||
im_info = comment_opt ;
|
||||
im_info = comment_opt ;
|
||||
}
|
||||
in
|
||||
(0, env, [ Element_included_module im ]) (* A VOIR : étendre l'environnement ? avec quoi ? *)
|
||||
|
@ -1383,16 +1471,16 @@ module Analyser =
|
|||
let pos_end = p_module_expr.Parsetree.pmod_loc.Location.loc_end.Lexing.pos_cnum in
|
||||
let modtype =
|
||||
(* A VOIR : Odoc_env.subst_module_type env ? *)
|
||||
tt_module_expr.Typedtree.mod_type
|
||||
tt_module_expr.Typedtree.mod_type
|
||||
in
|
||||
let m_code_intf =
|
||||
match p_module_expr.Parsetree.pmod_desc with
|
||||
Parsetree.Pmod_constraint (_, pmodule_type) ->
|
||||
let loc_start = pmodule_type.Parsetree.pmty_loc.Location.loc_start.Lexing.pos_cnum in
|
||||
match p_module_expr.Parsetree.pmod_desc with
|
||||
Parsetree.Pmod_constraint (_, pmodule_type) ->
|
||||
let loc_start = pmodule_type.Parsetree.pmty_loc.Location.loc_start.Lexing.pos_cnum in
|
||||
let loc_end = pmodule_type.Parsetree.pmty_loc.Location.loc_end.Lexing.pos_cnum in
|
||||
Some (get_string_of_file loc_start loc_end)
|
||||
| _ ->
|
||||
None
|
||||
Some (get_string_of_file loc_start loc_end)
|
||||
| _ ->
|
||||
None
|
||||
in
|
||||
let m_base =
|
||||
{
|
||||
|
@ -1404,9 +1492,9 @@ module Analyser =
|
|||
m_kind = Module_struct [] ;
|
||||
m_loc = { loc_impl = Some (!file_name, pos_start) ; loc_inter = None } ;
|
||||
m_top_deps = [] ;
|
||||
m_code = None ; (* code is set by the caller, after the module is created *)
|
||||
m_code_intf = m_code_intf ;
|
||||
m_text_only = false ;
|
||||
m_code = None ; (* code is set by the caller, after the module is created *)
|
||||
m_code_intf = m_code_intf ;
|
||||
m_text_only = false ;
|
||||
}
|
||||
in
|
||||
match (p_module_expr.Parsetree.pmod_desc, tt_module_expr.Typedtree.mod_desc) with
|
||||
|
@ -1424,24 +1512,24 @@ module Analyser =
|
|||
|
||||
| (Parsetree.Pmod_functor (_, pmodule_type, p_module_expr2),
|
||||
Typedtree.Tmod_functor (ident, mtyp, tt_module_expr2)) ->
|
||||
let loc_start = pmodule_type.Parsetree.pmty_loc.Location.loc_start.Lexing.pos_cnum in
|
||||
let loc_start = pmodule_type.Parsetree.pmty_loc.Location.loc_start.Lexing.pos_cnum in
|
||||
let loc_end = pmodule_type.Parsetree.pmty_loc.Location.loc_end.Lexing.pos_cnum in
|
||||
let mp_type_code = get_string_of_file loc_start loc_end in
|
||||
print_DEBUG (Printf.sprintf "mp_type_code=%s" mp_type_code);
|
||||
let mp_name = Name.from_ident ident in
|
||||
let mp_kind = Sig.analyse_module_type_kind env
|
||||
current_module_name pmodule_type mtyp
|
||||
in
|
||||
let mp_type_code = get_string_of_file loc_start loc_end in
|
||||
print_DEBUG (Printf.sprintf "mp_type_code=%s" mp_type_code);
|
||||
let mp_name = Name.from_ident ident in
|
||||
let mp_kind = Sig.analyse_module_type_kind env
|
||||
current_module_name pmodule_type mtyp
|
||||
in
|
||||
let param =
|
||||
{
|
||||
mp_name = mp_name ;
|
||||
mp_type = Odoc_env.subst_module_type env mtyp ;
|
||||
mp_type_code = mp_type_code ;
|
||||
mp_kind = mp_kind ;
|
||||
mp_type_code = mp_type_code ;
|
||||
mp_kind = mp_kind ;
|
||||
}
|
||||
in
|
||||
let dummy_complete_name = (*Name.concat "__"*) param.mp_name in
|
||||
(* TODO: A VOIR CE __ *)
|
||||
(* TODO: A VOIR CE __ *)
|
||||
let new_env = Odoc_env.add_module env dummy_complete_name in
|
||||
let m_base2 = analyse_module
|
||||
new_env
|
||||
|
@ -1458,9 +1546,9 @@ module Analyser =
|
|||
Typedtree.Tmod_apply (tt_module_expr1, tt_module_expr2, _))
|
||||
| (Parsetree.Pmod_apply (p_module_expr1, p_module_expr2),
|
||||
Typedtree.Tmod_constraint
|
||||
({ Typedtree.mod_desc = Typedtree.Tmod_apply (tt_module_expr1, tt_module_expr2, _)},
|
||||
({ Typedtree.mod_desc = Typedtree.Tmod_apply (tt_module_expr1, tt_module_expr2, _)},
|
||||
_, _)
|
||||
) ->
|
||||
) ->
|
||||
let m1 = analyse_module
|
||||
env
|
||||
current_module_name
|
||||
|
@ -1481,12 +1569,7 @@ module Analyser =
|
|||
|
||||
| (Parsetree.Pmod_constraint (p_module_expr2, p_modtype),
|
||||
Typedtree.Tmod_constraint (tt_module_expr2, tt_modtype, _)) ->
|
||||
print_DEBUG ("Odoc_ast: case Parsetree.Pmod_constraint + Typedtree.Tmod_constraint "^module_name);
|
||||
|
||||
(* we create the module with p_module_expr2 and tt_module_expr2
|
||||
but we change its type according to the constraint.
|
||||
A VOIR : est-ce que c'est bien ?
|
||||
*)
|
||||
print_DEBUG ("Odoc_ast: case Parsetree.Pmod_constraint + Typedtree.Tmod_constraint "^module_name);
|
||||
let m_base2 = analyse_module
|
||||
env
|
||||
current_module_name
|
||||
|
@ -1495,58 +1578,54 @@ module Analyser =
|
|||
p_module_expr2
|
||||
tt_module_expr2
|
||||
in
|
||||
let mtkind = Sig.analyse_module_type_kind
|
||||
env
|
||||
let mtkind = Sig.analyse_module_type_kind env
|
||||
(Name.concat current_module_name "??")
|
||||
p_modtype tt_modtype
|
||||
in
|
||||
let tt_modtype = Odoc_env.subst_module_type env tt_modtype in
|
||||
filter_module_with_module_type_constraint m_base2 tt_modtype;
|
||||
{
|
||||
m_base with
|
||||
m_type = Odoc_env.subst_module_type env tt_modtype ;
|
||||
m_kind = Module_constraint (m_base2.m_kind,
|
||||
mtkind)
|
||||
|
||||
(* Module_type_alias { mta_name = "Not analyzed" ;
|
||||
mta_module = None })
|
||||
*)
|
||||
m_type = tt_modtype ;
|
||||
m_kind = Module_constraint (m_base2.m_kind, mtkind) ;
|
||||
}
|
||||
|
||||
| (Parsetree.Pmod_structure p_structure,
|
||||
Typedtree.Tmod_constraint
|
||||
({ Typedtree.mod_desc = Typedtree.Tmod_structure tt_structure},
|
||||
tt_modtype, _)
|
||||
) ->
|
||||
(* needed for recursive modules *)
|
||||
({ Typedtree.mod_desc = Typedtree.Tmod_structure tt_structure},
|
||||
tt_modtype, _)
|
||||
) ->
|
||||
(* needed for recursive modules *)
|
||||
|
||||
print_DEBUG ("Odoc_ast: case Parsetree.Pmod_structure + Typedtree.Tmod_constraint "^module_name);
|
||||
let elements = analyse_structure env complete_name pos_start pos_end p_structure tt_structure in
|
||||
print_DEBUG ("Odoc_ast: case Parsetree.Pmod_structure + Typedtree.Tmod_constraint "^module_name);
|
||||
let elements = analyse_structure env complete_name pos_start pos_end p_structure tt_structure in
|
||||
(* we must complete the included modules *)
|
||||
let included_modules_from_tt = tt_get_included_module_list tt_structure in
|
||||
let elements2 = replace_dummy_included_modules elements included_modules_from_tt in
|
||||
{ m_base with
|
||||
m_type = Odoc_env.subst_module_type env tt_modtype ;
|
||||
m_kind = Module_struct elements2 ;
|
||||
}
|
||||
m_type = Odoc_env.subst_module_type env tt_modtype ;
|
||||
m_kind = Module_struct elements2 ;
|
||||
}
|
||||
|
||||
| (parsetree, typedtree) ->
|
||||
(*DEBUG*)let s_parse =
|
||||
(*DEBUG*) match parsetree with
|
||||
(*DEBUG*) Parsetree.Pmod_ident _ -> "Pmod_ident"
|
||||
(*DEBUG*) | Parsetree.Pmod_structure _ -> "Pmod_structure"
|
||||
(*DEBUG*) | Parsetree.Pmod_functor _ -> "Pmod_functor"
|
||||
(*DEBUG*) | Parsetree.Pmod_apply _ -> "Pmod_apply"
|
||||
(*DEBUG*) | Parsetree.Pmod_constraint _ -> "Pmod_constraint"
|
||||
(*DEBUG*)in
|
||||
(*DEBUG*)let s_typed =
|
||||
(*DEBUG*) | Parsetree.Pmod_structure _ -> "Pmod_structure"
|
||||
(*DEBUG*) | Parsetree.Pmod_functor _ -> "Pmod_functor"
|
||||
(*DEBUG*) | Parsetree.Pmod_apply _ -> "Pmod_apply"
|
||||
(*DEBUG*) | Parsetree.Pmod_constraint _ -> "Pmod_constraint"
|
||||
(*DEBUG*)in
|
||||
(*DEBUG*)let s_typed =
|
||||
(*DEBUG*) match typedtree with
|
||||
(*DEBUG*) Typedtree.Tmod_ident _ -> "Tmod_ident"
|
||||
(*DEBUG*) | Typedtree.Tmod_structure _ -> "Tmod_structure"
|
||||
(*DEBUG*) | Typedtree.Tmod_functor _ -> "Tmod_functor"
|
||||
(*DEBUG*) | Typedtree.Tmod_apply _ -> "Tmod_apply"
|
||||
(*DEBUG*) | Typedtree.Tmod_constraint _ -> "Tmod_constraint"
|
||||
(*DEBUG*)in
|
||||
(*DEBUG*)let code = get_string_of_file pos_start pos_end in
|
||||
print_DEBUG (Printf.sprintf "code=%s\ns_parse=%s\ns_typed=%s\n" code s_parse s_typed);
|
||||
(*DEBUG*) | Typedtree.Tmod_structure _ -> "Tmod_structure"
|
||||
(*DEBUG*) | Typedtree.Tmod_functor _ -> "Tmod_functor"
|
||||
(*DEBUG*) | Typedtree.Tmod_apply _ -> "Tmod_apply"
|
||||
(*DEBUG*) | Typedtree.Tmod_constraint _ -> "Tmod_constraint"
|
||||
(*DEBUG*)in
|
||||
(*DEBUG*)let code = get_string_of_file pos_start pos_end in
|
||||
print_DEBUG (Printf.sprintf "code=%s\ns_parse=%s\ns_typed=%s\n" code s_parse s_typed);
|
||||
|
||||
raise (Failure "analyse_module: parsetree and typedtree don't match.")
|
||||
|
||||
|
@ -1586,12 +1665,8 @@ module Analyser =
|
|||
m_kind = kind ;
|
||||
m_loc = { loc_impl = Some (!file_name, 0) ; loc_inter = None } ;
|
||||
m_top_deps = [] ;
|
||||
m_code = (if !Odoc_args.keep_code then Some !file else None) ;
|
||||
m_code_intf = None ;
|
||||
m_text_only = false ;
|
||||
m_code = (if !Odoc_args.keep_code then Some !file else None) ;
|
||||
m_code_intf = None ;
|
||||
m_text_only = false ;
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
|
||||
(* eof $Id$ *)
|
||||
|
|
|
@ -333,12 +333,11 @@ let info_of_string s =
|
|||
None -> dummy
|
||||
| Some i -> i
|
||||
|
||||
let info_of_comment_file f =
|
||||
let info_of_comment_file modlist f =
|
||||
try
|
||||
let s = Odoc_misc.input_file_as_string f in
|
||||
info_of_string s
|
||||
let i = info_of_string s in
|
||||
Odoc_cross.assoc_comments_info "" modlist i
|
||||
with
|
||||
Sys_error s ->
|
||||
failwith s
|
||||
|
||||
(* eof $Id$ *)
|
||||
|
|
|
@ -66,7 +66,9 @@ val info_of_string : string -> Odoc_types.info
|
|||
(** [info_of_comment_file file] parses the given file
|
||||
and return an {!Odoc_types.info} structure. The content of the
|
||||
file must have the same syntax as the content of a special comment.
|
||||
The given module list is used for cross reference.
|
||||
@raise Failure is the file could not be opened or there is a
|
||||
syntax error.
|
||||
*)
|
||||
val info_of_comment_file : string -> Odoc_types.info
|
||||
val info_of_comment_file :
|
||||
Odoc_module.t_module list -> string -> Odoc_types.info
|
||||
|
|
|
@ -87,8 +87,8 @@ let rec build_alias_list = function
|
|||
(
|
||||
match m.m_kind with
|
||||
Module_alias ma ->
|
||||
Hashtbl.add module_aliases m.m_name (ma.ma_name, Alias_to_resolve);
|
||||
Hashtbl.add module_and_modtype_aliases m.m_name (ma.ma_name, Alias_to_resolve)
|
||||
Hashtbl.add module_aliases m.m_name (ma.ma_name, Alias_to_resolve);
|
||||
Hashtbl.add module_and_modtype_aliases m.m_name (ma.ma_name, Alias_to_resolve)
|
||||
| _ -> ()
|
||||
);
|
||||
build_alias_list q
|
||||
|
@ -96,8 +96,8 @@ let rec build_alias_list = function
|
|||
(
|
||||
match mt.mt_kind with
|
||||
Some (Module_type_alias mta) ->
|
||||
Hashtbl.add module_and_modtype_aliases
|
||||
mt.mt_name (mta.mta_name, Alias_to_resolve)
|
||||
Hashtbl.add module_and_modtype_aliases
|
||||
mt.mt_name (mta.mta_name, Alias_to_resolve)
|
||||
| _ -> ()
|
||||
);
|
||||
build_alias_list q
|
||||
|
@ -106,8 +106,8 @@ let rec build_alias_list = function
|
|||
match e.ex_alias with
|
||||
None -> ()
|
||||
| Some ea ->
|
||||
Hashtbl.add exception_aliases
|
||||
e.ex_name (ea.ea_name,Alias_to_resolve)
|
||||
Hashtbl.add exception_aliases
|
||||
e.ex_name (ea.ea_name,Alias_to_resolve)
|
||||
);
|
||||
build_alias_list q
|
||||
| _ :: q ->
|
||||
|
@ -126,26 +126,26 @@ let name_alias =
|
|||
let rec f t name =
|
||||
try
|
||||
match Hashtbl.find t name with
|
||||
(s, Alias_resolved) -> s
|
||||
| (s, Alias_to_resolve) -> f t s
|
||||
(s, Alias_resolved) -> s
|
||||
| (s, Alias_to_resolve) -> f t s
|
||||
with
|
||||
Not_found ->
|
||||
try
|
||||
Hashtbl.iter
|
||||
(fun n2 (n3, _) ->
|
||||
if Name.prefix n2 name then
|
||||
let ln2 = String.length n2 in
|
||||
let s = n3^(String.sub name ln2 ((String.length name) - ln2)) in
|
||||
raise (Found s)
|
||||
)
|
||||
t ;
|
||||
Hashtbl.replace t name (name, Alias_resolved);
|
||||
name
|
||||
with
|
||||
Found s ->
|
||||
let s2 = f t s in
|
||||
Hashtbl.replace t s2 (s2, Alias_resolved);
|
||||
s2
|
||||
try
|
||||
Hashtbl.iter
|
||||
(fun n2 (n3, _) ->
|
||||
if Name.prefix n2 name then
|
||||
let ln2 = String.length n2 in
|
||||
let s = n3^(String.sub name ln2 ((String.length name) - ln2)) in
|
||||
raise (Found s)
|
||||
)
|
||||
t ;
|
||||
Hashtbl.replace t name (name, Alias_resolved);
|
||||
name
|
||||
with
|
||||
Found s ->
|
||||
let s2 = f t s in
|
||||
Hashtbl.replace t s2 (s2, Alias_resolved);
|
||||
s2
|
||||
in
|
||||
fun name alias_tbl ->
|
||||
f alias_tbl name
|
||||
|
@ -169,7 +169,7 @@ let add_known_element name k =
|
|||
Not_found ->
|
||||
known_elements := Ele_map.add name [k] !known_elements
|
||||
|
||||
let get_known_elements name =
|
||||
let rec get_known_elements name =
|
||||
try Ele_map.find name !known_elements
|
||||
with Not_found -> []
|
||||
|
||||
|
@ -252,10 +252,10 @@ class scan =
|
|||
add_known_element e.ex_name (Odoc_search.Res_exception e)
|
||||
method scan_attribute a =
|
||||
add_known_element a.att_value.val_name
|
||||
(Odoc_search.Res_attribute a)
|
||||
(Odoc_search.Res_attribute a)
|
||||
method scan_method m =
|
||||
add_known_element m.met_value.val_name
|
||||
(Odoc_search.Res_method m)
|
||||
(Odoc_search.Res_method m)
|
||||
method scan_class_pre c =
|
||||
add_known_element c.cl_name (Odoc_search.Res_class c);
|
||||
true
|
||||
|
@ -576,118 +576,165 @@ and associate_in_class_type module_list (acc_b_modif, acc_incomplete_top_module_
|
|||
|
||||
let ao = Odoc_misc.apply_opt
|
||||
|
||||
let rec assoc_comments_text_elements module_list t_ele =
|
||||
let not_found_of_kind kind name =
|
||||
(match kind with
|
||||
RK_module -> Odoc_messages.cross_module_not_found
|
||||
| RK_module_type -> Odoc_messages.cross_module_type_not_found
|
||||
| RK_class -> Odoc_messages.cross_class_not_found
|
||||
| RK_class_type -> Odoc_messages.cross_class_type_not_found
|
||||
| RK_value -> Odoc_messages.cross_value_not_found
|
||||
| RK_type -> Odoc_messages.cross_type_not_found
|
||||
| RK_exception -> Odoc_messages.cross_exception_not_found
|
||||
| RK_attribute -> Odoc_messages.cross_attribute_not_found
|
||||
| RK_method -> Odoc_messages.cross_method_not_found
|
||||
| RK_section _ -> Odoc_messages.cross_section_not_found
|
||||
) name
|
||||
|
||||
let rec assoc_comments_text_elements parent_name module_list t_ele =
|
||||
match t_ele with
|
||||
| Raw _
|
||||
| Code _
|
||||
| CodePre _
|
||||
| Latex _
|
||||
| Verbatim _ -> t_ele
|
||||
| Bold t -> Bold (assoc_comments_text module_list t)
|
||||
| Italic t -> Italic (assoc_comments_text module_list t)
|
||||
| Center t -> Center (assoc_comments_text module_list t)
|
||||
| Left t -> Left (assoc_comments_text module_list t)
|
||||
| Right t -> Right (assoc_comments_text module_list t)
|
||||
| Emphasize t -> Emphasize (assoc_comments_text module_list t)
|
||||
| List l -> List (List.map (assoc_comments_text module_list) l)
|
||||
| Enum l -> Enum (List.map (assoc_comments_text module_list) l)
|
||||
| Bold t -> Bold (assoc_comments_text parent_name module_list t)
|
||||
| Italic t -> Italic (assoc_comments_text parent_name module_list t)
|
||||
| Center t -> Center (assoc_comments_text parent_name module_list t)
|
||||
| Left t -> Left (assoc_comments_text parent_name module_list t)
|
||||
| Right t -> Right (assoc_comments_text parent_name module_list t)
|
||||
| Emphasize t -> Emphasize (assoc_comments_text parent_name module_list t)
|
||||
| List l -> List (List.map (assoc_comments_text parent_name module_list) l)
|
||||
| Enum l -> Enum (List.map (assoc_comments_text parent_name module_list) l)
|
||||
| Newline -> Newline
|
||||
| Block t -> Block (assoc_comments_text module_list t)
|
||||
| Superscript t -> Superscript (assoc_comments_text module_list t)
|
||||
| Subscript t -> Subscript (assoc_comments_text module_list t)
|
||||
| Title (n, l_opt, t) -> Title (n, l_opt, (assoc_comments_text module_list t))
|
||||
| Link (s, t) -> Link (s, (assoc_comments_text module_list t))
|
||||
| Ref (name, None) ->
|
||||
| Block t -> Block (assoc_comments_text parent_name module_list t)
|
||||
| Superscript t -> Superscript (assoc_comments_text parent_name module_list t)
|
||||
| Subscript t -> Subscript (assoc_comments_text parent_name module_list t)
|
||||
| Title (n, l_opt, t) -> Title (n, l_opt, (assoc_comments_text parent_name module_list t))
|
||||
| Link (s, t) -> Link (s, (assoc_comments_text parent_name module_list t))
|
||||
| Ref (initial_name, None) ->
|
||||
(
|
||||
match get_known_elements name with
|
||||
[] ->
|
||||
(
|
||||
try
|
||||
let re = Str.regexp ("^"^(Str.quote name)^"$") in
|
||||
let t = Odoc_search.find_section module_list re in
|
||||
let v2 = (name, Some (RK_section t)) in
|
||||
add_verified v2 ;
|
||||
Ref (name, Some (RK_section t))
|
||||
with
|
||||
Not_found ->
|
||||
Odoc_messages.pwarning (Odoc_messages.cross_element_not_found name);
|
||||
Ref (name, None)
|
||||
)
|
||||
| ele :: _ ->
|
||||
(* we look for the first element with this name *)
|
||||
let kind =
|
||||
match ele with
|
||||
Odoc_search.Res_module _ -> RK_module
|
||||
| Odoc_search.Res_module_type _ -> RK_module_type
|
||||
| Odoc_search.Res_class _ -> RK_class
|
||||
| Odoc_search.Res_class_type _ -> RK_class_type
|
||||
| Odoc_search.Res_value _ -> RK_value
|
||||
| Odoc_search.Res_type _ -> RK_type
|
||||
| Odoc_search.Res_exception _ -> RK_exception
|
||||
| Odoc_search.Res_attribute _ -> RK_attribute
|
||||
| Odoc_search.Res_method _ -> RK_method
|
||||
| Odoc_search.Res_section (_ ,t)-> assert false
|
||||
in
|
||||
add_verified (name, Some kind) ;
|
||||
Ref (name, Some kind)
|
||||
let rec iter_parent ?parent_name name =
|
||||
let res =
|
||||
match get_known_elements name with
|
||||
[] ->
|
||||
(
|
||||
try
|
||||
let re = Str.regexp ("^"^(Str.quote name)^"$") in
|
||||
let t = Odoc_search.find_section module_list re in
|
||||
let v2 = (name, Some (RK_section t)) in
|
||||
add_verified v2 ;
|
||||
(name, Some (RK_section t))
|
||||
with
|
||||
Not_found ->
|
||||
(name, None)
|
||||
)
|
||||
| ele :: _ ->
|
||||
(* we look for the first element with this name *)
|
||||
let (name, kind) =
|
||||
match ele with
|
||||
Odoc_search.Res_module m -> (m.m_name, RK_module)
|
||||
| Odoc_search.Res_module_type mt -> (mt.mt_name, RK_module_type)
|
||||
| Odoc_search.Res_class c -> (c.cl_name, RK_class)
|
||||
| Odoc_search.Res_class_type ct -> (ct.clt_name, RK_class_type)
|
||||
| Odoc_search.Res_value v -> (v.val_name, RK_value)
|
||||
| Odoc_search.Res_type t -> (t.ty_name, RK_type)
|
||||
| Odoc_search.Res_exception e -> (e.ex_name, RK_exception)
|
||||
| Odoc_search.Res_attribute a -> (a.att_value.val_name, RK_attribute)
|
||||
| Odoc_search.Res_method m -> (m.met_value.val_name, RK_method)
|
||||
| Odoc_search.Res_section (_ ,t)-> assert false
|
||||
in
|
||||
add_verified (name, Some kind) ;
|
||||
(name, Some kind)
|
||||
in
|
||||
match res with
|
||||
| (name, Some k) -> Ref (name, Some k)
|
||||
| (_, None) ->
|
||||
match parent_name with
|
||||
None ->
|
||||
Odoc_messages.pwarning (Odoc_messages.cross_element_not_found initial_name);
|
||||
Ref (initial_name, None)
|
||||
| Some p ->
|
||||
let parent_name =
|
||||
match Name.father p with
|
||||
"" -> None
|
||||
| s -> Some s
|
||||
in
|
||||
iter_parent ?parent_name (Name.concat p initial_name)
|
||||
in
|
||||
iter_parent ~parent_name initial_name
|
||||
)
|
||||
| Ref (name, Some kind) ->
|
||||
| Ref (initial_name, Some kind) ->
|
||||
(
|
||||
let v = (name, Some kind) in
|
||||
if was_verified v then
|
||||
Ref (name, Some kind)
|
||||
else
|
||||
match kind with
|
||||
| RK_section _ ->
|
||||
(
|
||||
(** we just verify that we find an element of this kind with this name *)
|
||||
try
|
||||
let re = Str.regexp ("^"^(Str.quote name)^"$") in
|
||||
let t = Odoc_search.find_section module_list re in
|
||||
let v2 = (name, Some (RK_section t)) in
|
||||
add_verified v2 ;
|
||||
Ref (name, Some (RK_section t))
|
||||
with
|
||||
Not_found ->
|
||||
Odoc_messages.pwarning (Odoc_messages.cross_section_not_found name);
|
||||
Ref (name, None)
|
||||
)
|
||||
| _ ->
|
||||
let (f,f_mes) =
|
||||
match kind with
|
||||
RK_module -> module_exists, Odoc_messages.cross_module_not_found
|
||||
| RK_module_type -> module_type_exists, Odoc_messages.cross_module_type_not_found
|
||||
| RK_class -> class_exists, Odoc_messages.cross_class_not_found
|
||||
| RK_class_type -> class_type_exists, Odoc_messages.cross_class_type_not_found
|
||||
| RK_value -> value_exists, Odoc_messages.cross_value_not_found
|
||||
| RK_type -> type_exists, Odoc_messages.cross_type_not_found
|
||||
| RK_exception -> exception_exists, Odoc_messages.cross_exception_not_found
|
||||
| RK_attribute -> attribute_exists, Odoc_messages.cross_attribute_not_found
|
||||
| RK_method -> method_exists, Odoc_messages.cross_method_not_found
|
||||
| RK_section _ -> assert false
|
||||
in
|
||||
if f name then
|
||||
(
|
||||
add_verified v ;
|
||||
Ref (name, Some kind)
|
||||
)
|
||||
else
|
||||
(
|
||||
Odoc_messages.pwarning (f_mes name);
|
||||
Ref (name, None)
|
||||
)
|
||||
let rec iter_parent ?parent_name name =
|
||||
let v = (name, Some kind) in
|
||||
if was_verified v then
|
||||
Ref (name, Some kind)
|
||||
else
|
||||
let res =
|
||||
match kind with
|
||||
| RK_section _ ->
|
||||
(
|
||||
(** we just verify that we find an element of this kind with this name *)
|
||||
try
|
||||
let re = Str.regexp ("^"^(Str.quote name)^"$") in
|
||||
let t = Odoc_search.find_section module_list re in
|
||||
let v2 = (name, Some (RK_section t)) in
|
||||
add_verified v2 ;
|
||||
(name, Some (RK_section t))
|
||||
with
|
||||
Not_found ->
|
||||
(name, None)
|
||||
)
|
||||
| _ ->
|
||||
let f =
|
||||
match kind with
|
||||
RK_module -> module_exists
|
||||
| RK_module_type -> module_type_exists
|
||||
| RK_class -> class_exists
|
||||
| RK_class_type -> class_type_exists
|
||||
| RK_value -> value_exists
|
||||
| RK_type -> type_exists
|
||||
| RK_exception -> exception_exists
|
||||
| RK_attribute -> attribute_exists
|
||||
| RK_method -> method_exists
|
||||
| RK_section _ -> assert false
|
||||
in
|
||||
if f name then
|
||||
(
|
||||
add_verified v ;
|
||||
(name, Some kind)
|
||||
)
|
||||
else
|
||||
(name, None)
|
||||
in
|
||||
match res with
|
||||
| (name, Some k) -> Ref (name, Some k)
|
||||
| (_, None) ->
|
||||
match parent_name with
|
||||
None ->
|
||||
Odoc_messages.pwarning (not_found_of_kind kind initial_name);
|
||||
Ref (initial_name, None)
|
||||
| Some p ->
|
||||
let parent_name =
|
||||
match Name.father p with
|
||||
"" -> None
|
||||
| s -> Some s
|
||||
in
|
||||
iter_parent ?parent_name (Name.concat p initial_name)
|
||||
in
|
||||
iter_parent ~parent_name initial_name
|
||||
)
|
||||
| Module_list l ->
|
||||
Module_list l
|
||||
| Index_list ->
|
||||
Index_list
|
||||
| Custom (s,t) -> Custom (s, (assoc_comments_text module_list t))
|
||||
| Custom (s,t) -> Custom (s, (assoc_comments_text parent_name module_list t))
|
||||
|
||||
and assoc_comments_text module_list text =
|
||||
List.map (assoc_comments_text_elements module_list) text
|
||||
and assoc_comments_text parent_name module_list text =
|
||||
List.map (assoc_comments_text_elements parent_name module_list) text
|
||||
|
||||
and assoc_comments_info module_list i =
|
||||
let ft = assoc_comments_text module_list in
|
||||
and assoc_comments_info parent_name module_list i =
|
||||
let ft = assoc_comments_text parent_name module_list in
|
||||
{
|
||||
i with
|
||||
i_desc = ao ft i.i_desc ;
|
||||
|
@ -700,133 +747,155 @@ and assoc_comments_info module_list i =
|
|||
}
|
||||
|
||||
|
||||
let rec assoc_comments_module_element module_list m_ele =
|
||||
let rec assoc_comments_module_element parent_name module_list m_ele =
|
||||
match m_ele with
|
||||
Element_module m -> Element_module (assoc_comments_module module_list m)
|
||||
| Element_module_type mt -> Element_module_type (assoc_comments_module_type module_list mt)
|
||||
| Element_included_module _ -> m_ele (* don't go down into the aliases *)
|
||||
| Element_class c -> Element_class (assoc_comments_class module_list c)
|
||||
| Element_class_type ct -> Element_class_type (assoc_comments_class_type module_list ct)
|
||||
| Element_value v -> Element_value (assoc_comments_value module_list v)
|
||||
| Element_exception e -> Element_exception (assoc_comments_exception module_list e)
|
||||
| Element_type t -> Element_type (assoc_comments_type module_list t)
|
||||
| Element_module_comment t -> Element_module_comment (assoc_comments_text module_list t)
|
||||
Element_module m ->
|
||||
Element_module (assoc_comments_module module_list m)
|
||||
| Element_module_type mt ->
|
||||
Element_module_type (assoc_comments_module_type module_list mt)
|
||||
| Element_included_module _ ->
|
||||
m_ele (* don't go down into the aliases *)
|
||||
| Element_class c ->
|
||||
Element_class (assoc_comments_class module_list c)
|
||||
| Element_class_type ct ->
|
||||
Element_class_type (assoc_comments_class_type module_list ct)
|
||||
| Element_value v ->
|
||||
Element_value (assoc_comments_value module_list v)
|
||||
| Element_exception e ->
|
||||
Element_exception (assoc_comments_exception module_list e)
|
||||
| Element_type t ->
|
||||
Element_type (assoc_comments_type module_list t)
|
||||
| Element_module_comment t ->
|
||||
Element_module_comment (assoc_comments_text parent_name module_list t)
|
||||
|
||||
and assoc_comments_class_element module_list c_ele =
|
||||
and assoc_comments_class_element parent_name module_list c_ele =
|
||||
match c_ele with
|
||||
Class_attribute a -> Class_attribute (assoc_comments_attribute module_list a)
|
||||
| Class_method m -> Class_method (assoc_comments_method module_list m)
|
||||
| Class_comment t -> Class_comment (assoc_comments_text module_list t)
|
||||
Class_attribute a ->
|
||||
Class_attribute (assoc_comments_attribute module_list a)
|
||||
| Class_method m ->
|
||||
Class_method (assoc_comments_method module_list m)
|
||||
| Class_comment t ->
|
||||
Class_comment (assoc_comments_text parent_name module_list t)
|
||||
|
||||
and assoc_comments_module_kind module_list mk =
|
||||
and assoc_comments_module_kind parent_name module_list mk =
|
||||
match mk with
|
||||
| Module_struct eles ->
|
||||
Module_struct (List.map (assoc_comments_module_element module_list) eles)
|
||||
Module_struct
|
||||
(List.map (assoc_comments_module_element parent_name module_list) eles)
|
||||
| Module_alias _
|
||||
| Module_functor _ ->
|
||||
mk
|
||||
| Module_apply (mk1, mk2) ->
|
||||
Module_apply (assoc_comments_module_kind module_list mk1,
|
||||
assoc_comments_module_kind module_list mk2)
|
||||
Module_apply (assoc_comments_module_kind parent_name module_list mk1,
|
||||
assoc_comments_module_kind parent_name module_list mk2)
|
||||
| Module_with (mtk, s) ->
|
||||
Module_with (assoc_comments_module_type_kind module_list mtk, s)
|
||||
Module_with (assoc_comments_module_type_kind parent_name module_list mtk, s)
|
||||
| Module_constraint (mk1, mtk) ->
|
||||
Module_constraint (assoc_comments_module_kind module_list mk1,
|
||||
assoc_comments_module_type_kind module_list mtk)
|
||||
Module_constraint
|
||||
(assoc_comments_module_kind parent_name module_list mk1,
|
||||
assoc_comments_module_type_kind parent_name module_list mtk)
|
||||
|
||||
and assoc_comments_module_type_kind module_list mtk =
|
||||
and assoc_comments_module_type_kind parent_name module_list mtk =
|
||||
match mtk with
|
||||
| Module_type_struct eles ->
|
||||
Module_type_struct (List.map (assoc_comments_module_element module_list) eles)
|
||||
Module_type_struct
|
||||
(List.map (assoc_comments_module_element parent_name module_list) eles)
|
||||
| Module_type_functor (params, mtk1) ->
|
||||
Module_type_functor (params, assoc_comments_module_type_kind module_list mtk1)
|
||||
Module_type_functor
|
||||
(params, assoc_comments_module_type_kind parent_name module_list mtk1)
|
||||
| Module_type_alias _ ->
|
||||
mtk
|
||||
| Module_type_with (mtk1, s) ->
|
||||
Module_type_with (assoc_comments_module_type_kind module_list mtk1, s)
|
||||
Module_type_with
|
||||
(assoc_comments_module_type_kind parent_name module_list mtk1, s)
|
||||
|
||||
and assoc_comments_class_kind module_list ck =
|
||||
and assoc_comments_class_kind parent_name module_list ck =
|
||||
match ck with
|
||||
Class_structure (inher, eles) ->
|
||||
let inher2 =
|
||||
List.map
|
||||
(fun ic -> { ic with
|
||||
ic_text = ao (assoc_comments_text module_list) ic.ic_text })
|
||||
(fun ic ->
|
||||
{ ic with
|
||||
ic_text = ao (assoc_comments_text parent_name module_list) ic.ic_text })
|
||||
inher
|
||||
in
|
||||
Class_structure (inher2, List.map (assoc_comments_class_element module_list) eles)
|
||||
Class_structure
|
||||
(inher2, List.map (assoc_comments_class_element parent_name module_list) eles)
|
||||
|
||||
| Class_apply _
|
||||
| Class_constr _ -> ck
|
||||
| Class_constraint (ck1, ctk) ->
|
||||
Class_constraint (assoc_comments_class_kind module_list ck1,
|
||||
assoc_comments_class_type_kind module_list ctk)
|
||||
Class_constraint (assoc_comments_class_kind parent_name module_list ck1,
|
||||
assoc_comments_class_type_kind parent_name module_list ctk)
|
||||
|
||||
and assoc_comments_class_type_kind module_list ctk =
|
||||
and assoc_comments_class_type_kind parent_name module_list ctk =
|
||||
match ctk with
|
||||
Class_signature (inher, eles) ->
|
||||
let inher2 =
|
||||
List.map
|
||||
(fun ic -> { ic with
|
||||
ic_text = ao (assoc_comments_text module_list) ic.ic_text })
|
||||
ic_text = ao (assoc_comments_text parent_name module_list) ic.ic_text })
|
||||
inher
|
||||
in
|
||||
Class_signature (inher2, List.map (assoc_comments_class_element module_list) eles)
|
||||
Class_signature (inher2, List.map (assoc_comments_class_element parent_name module_list) eles)
|
||||
|
||||
| Class_type _ -> ctk
|
||||
|
||||
|
||||
and assoc_comments_module module_list m =
|
||||
m.m_info <- ao (assoc_comments_info module_list) m.m_info ;
|
||||
m.m_kind <- assoc_comments_module_kind module_list m.m_kind ;
|
||||
m.m_info <- ao (assoc_comments_info m.m_name module_list) m.m_info ;
|
||||
m.m_kind <- assoc_comments_module_kind m.m_name module_list m.m_kind ;
|
||||
m
|
||||
|
||||
and assoc_comments_module_type module_list mt =
|
||||
mt.mt_info <- ao (assoc_comments_info module_list) mt.mt_info ;
|
||||
mt.mt_kind <- ao (assoc_comments_module_type_kind module_list) mt.mt_kind ;
|
||||
mt.mt_info <- ao (assoc_comments_info mt.mt_name module_list) mt.mt_info ;
|
||||
mt.mt_kind <- ao (assoc_comments_module_type_kind mt.mt_name module_list) mt.mt_kind ;
|
||||
mt
|
||||
|
||||
and assoc_comments_class module_list c =
|
||||
c.cl_info <- ao (assoc_comments_info module_list) c.cl_info ;
|
||||
c.cl_kind <- assoc_comments_class_kind module_list c.cl_kind ;
|
||||
assoc_comments_parameter_list module_list c.cl_parameters;
|
||||
c.cl_info <- ao (assoc_comments_info c.cl_name module_list) c.cl_info ;
|
||||
c.cl_kind <- assoc_comments_class_kind c.cl_name module_list c.cl_kind ;
|
||||
assoc_comments_parameter_list c.cl_name module_list c.cl_parameters;
|
||||
c
|
||||
|
||||
and assoc_comments_class_type module_list ct =
|
||||
ct.clt_info <- ao (assoc_comments_info module_list) ct.clt_info ;
|
||||
ct.clt_kind <- assoc_comments_class_type_kind module_list ct.clt_kind ;
|
||||
ct.clt_info <- ao (assoc_comments_info ct.clt_name module_list) ct.clt_info ;
|
||||
ct.clt_kind <- assoc_comments_class_type_kind ct.clt_name module_list ct.clt_kind ;
|
||||
ct
|
||||
|
||||
and assoc_comments_parameter module_list p =
|
||||
and assoc_comments_parameter parent_name module_list p =
|
||||
match p with
|
||||
Simple_name sn ->
|
||||
sn.sn_text <- ao (assoc_comments_text module_list) sn.sn_text
|
||||
sn.sn_text <- ao (assoc_comments_text parent_name module_list) sn.sn_text
|
||||
| Tuple (l, t) ->
|
||||
List.iter (assoc_comments_parameter module_list) l
|
||||
List.iter (assoc_comments_parameter parent_name module_list) l
|
||||
|
||||
and assoc_comments_parameter_list module_list pl =
|
||||
List.iter (assoc_comments_parameter module_list) pl
|
||||
and assoc_comments_parameter_list parent_name module_list pl =
|
||||
List.iter (assoc_comments_parameter parent_name module_list) pl
|
||||
|
||||
and assoc_comments_value module_list v =
|
||||
v.val_info <- ao (assoc_comments_info module_list) v.val_info ;
|
||||
assoc_comments_parameter_list module_list v.val_parameters;
|
||||
let parent = Name.father v.val_name in
|
||||
v.val_info <- ao (assoc_comments_info parent module_list) v.val_info ;
|
||||
assoc_comments_parameter_list parent module_list v.val_parameters;
|
||||
v
|
||||
|
||||
and assoc_comments_exception module_list e =
|
||||
e.ex_info <- ao (assoc_comments_info module_list) e.ex_info ;
|
||||
let parent = Name.father e.ex_name in
|
||||
e.ex_info <- ao (assoc_comments_info parent module_list) e.ex_info ;
|
||||
e
|
||||
|
||||
and assoc_comments_type module_list t =
|
||||
t.ty_info <- ao (assoc_comments_info module_list) t.ty_info ;
|
||||
let parent = Name.father t.ty_name in
|
||||
t.ty_info <- ao (assoc_comments_info parent module_list) t.ty_info ;
|
||||
(match t.ty_kind with
|
||||
Type_abstract -> ()
|
||||
| Type_variant (vl, _) ->
|
||||
List.iter
|
||||
(fun vc -> vc.vc_text <- ao (assoc_comments_text module_list) vc.vc_text)
|
||||
(fun vc -> vc.vc_text <- ao (assoc_comments_text parent module_list) vc.vc_text)
|
||||
vl
|
||||
| Type_record (fl, _) ->
|
||||
List.iter
|
||||
(fun rf -> rf.rf_text <- ao (assoc_comments_text module_list) rf.rf_text)
|
||||
(fun rf -> rf.rf_text <- ao (assoc_comments_text parent module_list) rf.rf_text)
|
||||
fl
|
||||
);
|
||||
t
|
||||
|
@ -836,8 +905,9 @@ and assoc_comments_attribute module_list a =
|
|||
a
|
||||
|
||||
and assoc_comments_method module_list m =
|
||||
let parent_name = Name.father m.met_value.val_name in
|
||||
let _ = assoc_comments_value module_list m.met_value in
|
||||
assoc_comments_parameter_list module_list m.met_value.val_parameters;
|
||||
assoc_comments_parameter_list parent_name module_list m.met_value.val_parameters;
|
||||
m
|
||||
|
||||
|
||||
|
@ -897,6 +967,3 @@ let associate module_list =
|
|||
|
||||
(* Find a type for each name of element which is referenced in comments. *)
|
||||
ignore (associate_type_of_elements_in_comments module_list)
|
||||
|
||||
|
||||
(* eof $Id$ *)
|
||||
|
|
|
@ -15,3 +15,6 @@
|
|||
|
||||
val associate : Odoc_module.t_module list -> unit
|
||||
|
||||
val assoc_comments_info :
|
||||
string -> Odoc_module.t_module list ->
|
||||
Odoc_types.info -> Odoc_types.info
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
(* $Id$ *)
|
||||
|
||||
(** Definition of a class which outputs a dot file showing
|
||||
(** Definition of a class which outputs a dot file showing
|
||||
top modules dependencies.*)
|
||||
|
||||
open Odoc_info
|
||||
|
@ -32,7 +32,7 @@ class dot =
|
|||
val mutable colors = !Args.dot_colors
|
||||
|
||||
(** Graph header. *)
|
||||
method header =
|
||||
method header =
|
||||
"digraph G {\n"^
|
||||
" size=\"10,7.5\";\n"^
|
||||
" ratio=\"fill\";\n"^
|
||||
|
@ -43,14 +43,14 @@ class dot =
|
|||
method get_one_color =
|
||||
match colors with
|
||||
[] -> None
|
||||
| h :: q ->
|
||||
| h :: q ->
|
||||
colors <- q ;
|
||||
Some h
|
||||
|
||||
method node_color s =
|
||||
try Some (List.assoc s loc_colors)
|
||||
with
|
||||
Not_found ->
|
||||
Not_found ->
|
||||
match self#get_one_color with
|
||||
None -> None
|
||||
| Some c ->
|
||||
|
@ -71,10 +71,10 @@ class dot =
|
|||
F.fprintf fmt "\"%s\" -> \"%s\";\n" src dest
|
||||
|
||||
method generate_for_module fmt m =
|
||||
let l = List.filter
|
||||
(fun n ->
|
||||
!Args.dot_include_all or
|
||||
(List.exists (fun m -> m.Module.m_name = n) modules))
|
||||
let l = List.filter
|
||||
(fun n ->
|
||||
!Args.dot_include_all or
|
||||
(List.exists (fun m -> m.Module.m_name = n) modules))
|
||||
m.Module.m_top_deps
|
||||
in
|
||||
self#print_module_atts fmt m;
|
||||
|
@ -91,9 +91,9 @@ class dot =
|
|||
let oc = open_out !Args.out_file in
|
||||
let fmt = F.formatter_of_out_channel oc in
|
||||
F.fprintf fmt "%s" self#header;
|
||||
let graph = Odoc_info.Dep.deps_of_types
|
||||
let graph = Odoc_info.Dep.deps_of_types
|
||||
~kernel: !Args.dot_reduce
|
||||
types
|
||||
types
|
||||
in
|
||||
List.iter (self#generate_for_type fmt) graph;
|
||||
F.fprintf fmt "}\n" ;
|
||||
|
@ -103,14 +103,14 @@ class dot =
|
|||
Sys_error s ->
|
||||
raise (Failure s)
|
||||
|
||||
method generate_modules modules_list =
|
||||
method generate_modules modules_list =
|
||||
try
|
||||
modules <- modules_list ;
|
||||
let oc = open_out !Args.out_file in
|
||||
let fmt = F.formatter_of_out_channel oc in
|
||||
F.fprintf fmt "%s" self#header;
|
||||
|
||||
if !Args.dot_reduce then
|
||||
if !Args.dot_reduce then
|
||||
Odoc_info.Dep.kernel_deps_of_modules modules_list;
|
||||
|
||||
List.iter (self#generate_for_module fmt) modules_list;
|
||||
|
@ -123,6 +123,7 @@ class dot =
|
|||
|
||||
(** Generate the dot code in the file {!Odoc_info.Args.out_file}. *)
|
||||
method generate (modules_list : Odoc_info.Module.t_module list) =
|
||||
colors <- !Args.dot_colors;
|
||||
if !Args.dot_types then
|
||||
self#generate_types (Odoc_info.Search.types modules_list)
|
||||
else
|
||||
|
|
|
@ -899,7 +899,7 @@ class html =
|
|||
in
|
||||
bs b "<head>\n";
|
||||
bs b style;
|
||||
bs b character_encoding ;
|
||||
bs b character_encoding ;
|
||||
bs b "<link rel=\"Start\" href=\"";
|
||||
bs b self#index;
|
||||
bs b "\">\n" ;
|
||||
|
@ -1168,10 +1168,21 @@ class html =
|
|||
bs b (self#create_fully_qualified_module_idents_links father a.ma_name);
|
||||
bs b "</code>"
|
||||
| Module_functor (p, k) ->
|
||||
bs b "<div class=\"sig_block\">";
|
||||
if !Odoc_info.Args.html_short_functors then
|
||||
bs b " "
|
||||
else
|
||||
bs b "<div class=\"sig_block\">";
|
||||
self#html_of_module_parameter b father p;
|
||||
(
|
||||
match k with
|
||||
Module_functor _ -> ()
|
||||
| _ when !Odoc_info.Args.html_short_functors ->
|
||||
bs b ": "
|
||||
| _ -> ()
|
||||
);
|
||||
self#html_of_module_kind b father ?modu k;
|
||||
bs b "</div>"
|
||||
if not !Odoc_info.Args.html_short_functors then
|
||||
bs b "</div>"
|
||||
| Module_apply (k1, k2) ->
|
||||
(* TODO: l'application n'est pas correcte dans un .mli.
|
||||
Que faire ? -> afficher le module_type du typedtree *)
|
||||
|
@ -1190,14 +1201,20 @@ class html =
|
|||
self#html_of_module_kind b father ?modu k
|
||||
|
||||
method html_of_module_parameter b father p =
|
||||
let (s_functor,s_arrow) =
|
||||
if !Odoc_info.Args.html_short_functors then
|
||||
"", ""
|
||||
else
|
||||
"functor ", "-> "
|
||||
in
|
||||
self#html_of_text b
|
||||
[
|
||||
Code "functor (";
|
||||
Code (s_functor^"(");
|
||||
Code p.mp_name ;
|
||||
Code " : ";
|
||||
] ;
|
||||
self#html_of_module_type_kind b father p.mp_kind;
|
||||
self#html_of_text b [ Code ") -> "]
|
||||
self#html_of_text b [ Code (") "^s_arrow)]
|
||||
|
||||
method html_of_module_element b father ele =
|
||||
match ele with
|
||||
|
@ -1628,7 +1645,12 @@ class html =
|
|||
else
|
||||
bs b (Name.simple m.m_name)
|
||||
);
|
||||
bs b ": ";
|
||||
(
|
||||
match m.m_kind with
|
||||
Module_functor _ when !Odoc_info.Args.html_short_functors ->
|
||||
()
|
||||
| _ -> bs b ": "
|
||||
);
|
||||
self#html_of_module_kind b father ~modu: m m.m_kind;
|
||||
bs b "</pre>";
|
||||
if info then
|
||||
|
@ -2040,7 +2062,7 @@ class html =
|
|||
let b = new_buf () in
|
||||
let pre_name = opt (fun c -> c.cl_name) pre in
|
||||
let post_name = opt (fun c -> c.cl_name) post in
|
||||
bs b doctype ;
|
||||
bs b doctype ;
|
||||
bs b "<html>\n";
|
||||
self#print_header b
|
||||
~nav: (Some (pre_name, post_name, cl.cl_name))
|
||||
|
@ -2087,7 +2109,7 @@ class html =
|
|||
let b = new_buf () in
|
||||
let pre_name = opt (fun ct -> ct.clt_name) pre in
|
||||
let post_name = opt (fun ct -> ct.clt_name) post in
|
||||
bs b doctype ;
|
||||
bs b doctype ;
|
||||
bs b "<html>\n";
|
||||
self#print_header b
|
||||
~nav: (Some (pre_name, post_name, clt.clt_name))
|
||||
|
@ -2133,7 +2155,7 @@ class html =
|
|||
let b = new_buf () in
|
||||
let pre_name = opt (fun mt -> mt.mt_name) pre in
|
||||
let post_name = opt (fun mt -> mt.mt_name) post in
|
||||
bs b doctype ;
|
||||
bs b doctype ;
|
||||
bs b "<html>\n";
|
||||
self#print_header b
|
||||
~nav: (Some (pre_name, post_name, mt.mt_name))
|
||||
|
@ -2201,7 +2223,7 @@ class html =
|
|||
let b = new_buf () in
|
||||
let pre_name = opt (fun m -> m.m_name) pre in
|
||||
let post_name = opt (fun m -> m.m_name) post in
|
||||
bs b doctype ;
|
||||
bs b doctype ;
|
||||
bs b "<html>\n";
|
||||
self#print_header b
|
||||
~nav: (Some (pre_name, post_name, modu.m_name))
|
||||
|
@ -2210,16 +2232,16 @@ class html =
|
|||
bs b "<body>\n" ;
|
||||
self#print_navbar b pre_name post_name modu.m_name ;
|
||||
bs b "<center><h1>";
|
||||
if modu.m_text_only then
|
||||
bs b modu.m_name
|
||||
else
|
||||
(
|
||||
if modu.m_text_only then
|
||||
bs b modu.m_name
|
||||
else
|
||||
(
|
||||
bs b
|
||||
(
|
||||
if Module.module_is_functor modu then
|
||||
Odoc_messages.functo
|
||||
Odoc_messages.functo
|
||||
else
|
||||
Odoc_messages.modul
|
||||
Odoc_messages.modul
|
||||
);
|
||||
bp b " <a href=\"%s\">%s</a>" type_file modu.m_name;
|
||||
(
|
||||
|
@ -2227,7 +2249,7 @@ class html =
|
|||
None -> ()
|
||||
| Some _ -> bp b " (<a href=\"%s\">.ml</a>)" code_file
|
||||
)
|
||||
);
|
||||
);
|
||||
bs b "</h1></center>\n<br>\n";
|
||||
|
||||
if not modu.m_text_only then self#html_of_module b ~with_link: false modu;
|
||||
|
@ -2282,7 +2304,7 @@ class html =
|
|||
let chanout = open_out (Filename.concat !Args.target_dir self#index) in
|
||||
let b = new_buf () in
|
||||
let title = match !Args.title with None -> "" | Some t -> self#escape t in
|
||||
bs b doctype ;
|
||||
bs b doctype ;
|
||||
bs b "<html>\n";
|
||||
self#print_header b self#title;
|
||||
bs b "<body>\n";
|
||||
|
@ -2290,7 +2312,8 @@ class html =
|
|||
bs b title;
|
||||
bs b "</h1></center>\n" ;
|
||||
let info = Odoc_info.apply_opt
|
||||
Odoc_info.info_of_comment_file !Odoc_info.Args.intro_file
|
||||
(Odoc_info.info_of_comment_file module_list)
|
||||
!Odoc_info.Args.intro_file
|
||||
in
|
||||
(
|
||||
match info with
|
||||
|
@ -2299,7 +2322,7 @@ class html =
|
|||
bs b "<br/>";
|
||||
self#html_of_Module_list b
|
||||
(List.map (fun m -> m.m_name) module_list);
|
||||
bs b "</body>\n</html>"
|
||||
bs b "</body>\n</html>"
|
||||
| Some i -> self#html_of_info ~indent: false b info
|
||||
);
|
||||
Buffer.output_buffer chanout b;
|
||||
|
|
|
@ -210,7 +210,7 @@ module Type :
|
|||
| Type_variant of variant_constructor list * bool
|
||||
(** constructors * bool *)
|
||||
| Type_record of record_field list * bool
|
||||
(** fields * bool *)
|
||||
(** fields * bool *)
|
||||
|
||||
(** Representation of a type. *)
|
||||
type t_type = Odoc_type.t_type =
|
||||
|
@ -410,7 +410,7 @@ module Module :
|
|||
{
|
||||
im_name : Name.t ; (** Complete name of the included module. *)
|
||||
mutable im_module : mmt option ; (** The included module or module type, if we found it. *)
|
||||
mutable im_info : Odoc_types.info option ; (** comment associated to the includ directive *)
|
||||
mutable im_info : Odoc_types.info option ; (** comment associated to the includ directive *)
|
||||
}
|
||||
|
||||
and module_alias = Odoc_module.module_alias =
|
||||
|
@ -420,10 +420,10 @@ module Module :
|
|||
}
|
||||
|
||||
and module_parameter = Odoc_module.module_parameter = {
|
||||
mp_name : string ; (** the name *)
|
||||
mp_type : Types.module_type ; (** the type *)
|
||||
mp_type_code : string ; (** the original code *)
|
||||
mp_kind : module_type_kind ; (** the way the parameter was built *)
|
||||
mp_name : string ; (** the name *)
|
||||
mp_type : Types.module_type ; (** the type *)
|
||||
mp_type_code : string ; (** the original code *)
|
||||
mp_kind : module_type_kind ; (** the way the parameter was built *)
|
||||
}
|
||||
|
||||
(** Different kinds of a module. *)
|
||||
|
@ -444,16 +444,16 @@ module Module :
|
|||
and t_module = Odoc_module.t_module =
|
||||
{
|
||||
m_name : Name.t ; (** Complete name of the module. *)
|
||||
m_type : Types.module_type ; (** The type of the module. *)
|
||||
mutable m_type : Types.module_type ; (** The type of the module. *)
|
||||
mutable m_info : info option ; (** Information found in the optional associated comment. *)
|
||||
m_is_interface : bool ; (** [true] for modules read from interface files *)
|
||||
m_file : string ; (** The file the module is defined in. *)
|
||||
mutable m_kind : module_kind ; (** The way the module is defined. *)
|
||||
mutable m_loc : location ;
|
||||
mutable m_top_deps : Name.t list ; (** The toplevels module names this module depends on. *)
|
||||
mutable m_code : string option ; (** The whole code of the module *)
|
||||
mutable m_code_intf : string option ; (** The whole code of the interface of the module *)
|
||||
m_text_only : bool ; (** [true] if the module comes from a text file *)
|
||||
mutable m_code : string option ; (** The whole code of the module *)
|
||||
mutable m_code_intf : string option ; (** The whole code of the interface of the module *)
|
||||
m_text_only : bool ; (** [true] if the module comes from a text file *)
|
||||
}
|
||||
|
||||
and module_type_alias = Odoc_module.module_type_alias =
|
||||
|
@ -477,7 +477,7 @@ module Module :
|
|||
{
|
||||
mt_name : Name.t ; (** Complete name of the module type. *)
|
||||
mutable mt_info : info option ; (** Information found in the optional associated comment. *)
|
||||
mt_type : Types.module_type option ; (** [None] means that the module type is abstract. *)
|
||||
mutable mt_type : Types.module_type option ; (** [None] means that the module type is abstract. *)
|
||||
mt_is_interface : bool ; (** [true] for modules read from interface files. *)
|
||||
mt_file : string ; (** The file the module type is defined in. *)
|
||||
mutable mt_kind : module_type_kind option ;
|
||||
|
@ -750,10 +750,11 @@ val info_string_of_info : info -> string
|
|||
(** [info_of_comment_file file] parses the given file
|
||||
and return an {!Odoc_info.info} structure. The content of the
|
||||
file must have the same syntax as the content of a special comment.
|
||||
The given module list is used for cross reference.
|
||||
@raise Failure is the file could not be opened or there is a
|
||||
syntax error.
|
||||
*)
|
||||
val info_of_comment_file : string -> info
|
||||
val info_of_comment_file : Module.t_module list -> string -> info
|
||||
|
||||
(** [remove_ending_newline s] returns [s] without the optional ending newline. *)
|
||||
val remove_ending_newline : string -> string
|
||||
|
@ -919,13 +920,13 @@ module Args :
|
|||
sig
|
||||
(** The kind of source file in arguments. *)
|
||||
type source_file =
|
||||
Impl_file of string
|
||||
| Intf_file of string
|
||||
| Text_file of string
|
||||
Impl_file of string
|
||||
| Intf_file of string
|
||||
| Text_file of string
|
||||
|
||||
(** The class type of documentation generators. *)
|
||||
class type doc_generator =
|
||||
object method generate : Module.t_module list -> unit end
|
||||
object method generate : Module.t_module list -> unit end
|
||||
|
||||
(** The file used by the generators outputting only one file. *)
|
||||
val out_file : string ref
|
||||
|
@ -943,7 +944,7 @@ module Args :
|
|||
val intro_file : string option ref
|
||||
|
||||
(** Flag to indicate whether we must display the complete list of parameters
|
||||
for functions and methods. *)
|
||||
for functions and methods. *)
|
||||
val with_parameter_list : bool ref
|
||||
|
||||
(** The list of module names to hide. *)
|
||||
|
@ -961,6 +962,10 @@ module Args :
|
|||
(** To colorize code in HTML generated documentation pages, not code pages. *)
|
||||
val colorize_code : bool ref
|
||||
|
||||
(** To display functors in short form rather than with "functor ... -> ",
|
||||
in HTML generated documentation. *)
|
||||
val html_short_functors : bool ref
|
||||
|
||||
(** The flag which indicates if we must generate a header (for LaTeX). *)
|
||||
val with_header : bool ref
|
||||
|
||||
|
|
|
@ -1014,15 +1014,15 @@ class latex =
|
|||
method generate_for_top_module fmt m =
|
||||
let (first_t, rest_t) = self#first_and_rest_of_info m.m_info in
|
||||
let text =
|
||||
if m.m_text_only then
|
||||
[ Title (1, None, [Raw m.m_name] @
|
||||
if m.m_text_only then
|
||||
[ Title (1, None, [Raw m.m_name] @
|
||||
(match first_t with
|
||||
[] -> []
|
||||
| t -> (Raw " : ") :: t)
|
||||
) ;
|
||||
]
|
||||
else
|
||||
[ Title (1, None,
|
||||
) ;
|
||||
]
|
||||
else
|
||||
[ Title (1, None,
|
||||
[ Raw (Odoc_messages.modul^" ") ; Code m.m_name ] @
|
||||
(match first_t with
|
||||
[] -> []
|
||||
|
@ -1044,7 +1044,7 @@ class latex =
|
|||
(Module.module_elements ~trans: false m)
|
||||
|
||||
(** Print the header of the TeX document. *)
|
||||
method latex_header fmt =
|
||||
method latex_header fmt module_list =
|
||||
ps fmt "\\documentclass[11pt]{article} \n";
|
||||
ps fmt "\\usepackage[latin1]{inputenc} \n";
|
||||
ps fmt "\\usepackage[T1]{fontenc} \n";
|
||||
|
@ -1067,7 +1067,8 @@ class latex =
|
|||
if !Args.with_toc then ps fmt "\\tableofcontents\n";
|
||||
(
|
||||
let info = Odoc_info.apply_opt
|
||||
Odoc_info.info_of_comment_file !Odoc_info.Args.intro_file
|
||||
(Odoc_info.info_of_comment_file module_list)
|
||||
!Odoc_info.Args.intro_file
|
||||
in
|
||||
(match info with None -> () | Some _ -> ps fmt "\\vspace{0.2cm}");
|
||||
self#latex_of_info fmt info;
|
||||
|
@ -1123,7 +1124,7 @@ class latex =
|
|||
try
|
||||
let chanout = open_out main_file in
|
||||
let fmt = Format.formatter_of_out_channel chanout in
|
||||
if !Args.with_header then self#latex_header fmt;
|
||||
if !Args.with_header then self#latex_header fmt module_list;
|
||||
List.iter
|
||||
(fun m ->
|
||||
if !Args.separate_files then
|
||||
|
|
|
@ -28,7 +28,7 @@ open Odoc_module
|
|||
The merge treatment depends on a given merge_option list.
|
||||
@return the new info structure.*)
|
||||
let merge_info merge_options (m1 : info) (m2 : info) =
|
||||
let new_desc_opt =
|
||||
let new_desc_opt =
|
||||
match m1.i_desc, m2.i_desc with
|
||||
None, None -> None
|
||||
| None, Some d
|
||||
|
@ -39,7 +39,7 @@ let merge_info merge_options (m1 : info) (m2 : info) =
|
|||
else
|
||||
Some d1
|
||||
in
|
||||
let new_authors =
|
||||
let new_authors =
|
||||
match m1.i_authors, m2.i_authors with
|
||||
[], [] -> []
|
||||
| l, []
|
||||
|
@ -50,7 +50,7 @@ let merge_info merge_options (m1 : info) (m2 : info) =
|
|||
else
|
||||
l1
|
||||
in
|
||||
let new_version =
|
||||
let new_version =
|
||||
match m1.i_version , m2.i_version with
|
||||
None, None -> None
|
||||
| Some v, None
|
||||
|
@ -61,7 +61,7 @@ let merge_info merge_options (m1 : info) (m2 : info) =
|
|||
else
|
||||
Some v1
|
||||
in
|
||||
let new_sees =
|
||||
let new_sees =
|
||||
match m1.i_sees, m2.i_sees with
|
||||
[], [] -> []
|
||||
| l, []
|
||||
|
@ -72,7 +72,7 @@ let merge_info merge_options (m1 : info) (m2 : info) =
|
|||
else
|
||||
l1
|
||||
in
|
||||
let new_since =
|
||||
let new_since =
|
||||
match m1.i_since, m2.i_since with
|
||||
None, None -> None
|
||||
| Some v, None
|
||||
|
@ -83,7 +83,7 @@ let merge_info merge_options (m1 : info) (m2 : info) =
|
|||
else
|
||||
Some v1
|
||||
in
|
||||
let new_dep =
|
||||
let new_dep =
|
||||
match m1.i_deprecated, m2.i_deprecated with
|
||||
None, None -> None
|
||||
| None, Some t
|
||||
|
@ -94,7 +94,7 @@ let merge_info merge_options (m1 : info) (m2 : info) =
|
|||
else
|
||||
Some t1
|
||||
in
|
||||
let new_params =
|
||||
let new_params =
|
||||
match m1.i_params, m2.i_params with
|
||||
[], [] -> []
|
||||
| l, []
|
||||
|
@ -118,7 +118,7 @@ let merge_info merge_options (m1 : info) (m2 : info) =
|
|||
else
|
||||
l1
|
||||
in
|
||||
let new_raised_exceptions =
|
||||
let new_raised_exceptions =
|
||||
match m1.i_raised_exceptions, m2.i_raised_exceptions with
|
||||
[], [] -> []
|
||||
| l, []
|
||||
|
@ -142,7 +142,7 @@ let merge_info merge_options (m1 : info) (m2 : info) =
|
|||
else
|
||||
l1
|
||||
in
|
||||
let new_rv =
|
||||
let new_rv =
|
||||
match m1.i_return_value, m2.i_return_value with
|
||||
None, None -> None
|
||||
| None, Some t
|
||||
|
@ -156,7 +156,7 @@ let merge_info merge_options (m1 : info) (m2 : info) =
|
|||
let new_custom =
|
||||
match m1.i_custom, m2.i_custom with
|
||||
[], [] -> []
|
||||
| [], l
|
||||
| [], l
|
||||
| l, [] -> l
|
||||
| l1, l2 ->
|
||||
if List.mem Merge_custom merge_options then
|
||||
|
@ -175,7 +175,7 @@ let merge_info merge_options (m1 : info) (m2 : info) =
|
|||
Odoc_types.i_raised_exceptions = new_raised_exceptions ;
|
||||
Odoc_types.i_return_value = new_rv ;
|
||||
Odoc_types.i_custom = new_custom ;
|
||||
}
|
||||
}
|
||||
|
||||
(** Merge of two optional info structures. *)
|
||||
let merge_info_opt merge_options mli_opt ml_opt =
|
||||
|
@ -203,7 +203,7 @@ let merge_types merge_options mli ml =
|
|||
(fun c2 -> c2.vc_name = cons.vc_name)
|
||||
l2
|
||||
in
|
||||
let new_desc =
|
||||
let new_desc =
|
||||
match cons.vc_text, cons2.vc_text with
|
||||
None, None -> None
|
||||
| Some d, None
|
||||
|
@ -231,7 +231,7 @@ let merge_types merge_options mli ml =
|
|||
(fun r -> r.rf_name = record.rf_name)
|
||||
l2
|
||||
in
|
||||
let new_desc =
|
||||
let new_desc =
|
||||
match record.rf_text, record2.rf_text with
|
||||
None, None -> None
|
||||
| Some d, None
|
||||
|
@ -258,7 +258,7 @@ let merge_types merge_options mli ml =
|
|||
else
|
||||
raise (Failure (Odoc_messages.different_types mli.ty_name))
|
||||
|
||||
(** Merge of two param_info, one from a .mli, one from a .ml.
|
||||
(** Merge of two param_info, one from a .mli, one from a .ml.
|
||||
The text fields are not handled but will be recreated from the
|
||||
i_params field of the info structure.
|
||||
Here, if a parameter in the .mli has no name, we take the one
|
||||
|
@ -277,7 +277,7 @@ let rec merge_param_info pi_mli pi_ml =
|
|||
(* if we're here, then the tuple in the .mli has no parameter names ;
|
||||
then we take the name of the parameter of the .ml and the type of the .mli. *)
|
||||
Simple_name { sn_ml with sn_type = t_mli }
|
||||
|
||||
|
||||
| (Tuple (l_mli, t_mli), Tuple (l_ml, _)) ->
|
||||
(* if the two tuples have different lengths
|
||||
(which should not occurs), we return the pi_mli,
|
||||
|
@ -313,15 +313,15 @@ let merge_classes merge_options mli ml =
|
|||
(fun a ->
|
||||
try
|
||||
let _ = List.find
|
||||
(fun ele ->
|
||||
(fun ele ->
|
||||
match ele with
|
||||
Class_attribute a2 ->
|
||||
Class_attribute a2 ->
|
||||
if a2.att_value.val_name = a.att_value.val_name then
|
||||
(
|
||||
a.att_value.val_info <- merge_info_opt merge_options
|
||||
a.att_value.val_info <- merge_info_opt merge_options
|
||||
a.att_value.val_info a2.att_value.val_info;
|
||||
a.att_value.val_loc <- { a.att_value.val_loc with loc_impl = a2.att_value.val_loc.loc_impl } ;
|
||||
if !Odoc_args.keep_code then
|
||||
if !Odoc_args.keep_code then
|
||||
a.att_value.val_code <- a2.att_value.val_code;
|
||||
true
|
||||
)
|
||||
|
@ -344,23 +344,23 @@ let merge_classes merge_options mli ml =
|
|||
(fun m ->
|
||||
try
|
||||
let _ = List.find
|
||||
(fun ele ->
|
||||
(fun ele ->
|
||||
match ele with
|
||||
Class_method m2 ->
|
||||
Class_method m2 ->
|
||||
if m2.met_value.val_name = m.met_value.val_name then
|
||||
(
|
||||
m.met_value.val_info <- merge_info_opt
|
||||
merge_options m.met_value.val_info m2.met_value.val_info;
|
||||
m.met_value.val_loc <- { m.met_value.val_loc with loc_impl = m2.met_value.val_loc.loc_impl } ;
|
||||
(* merge the parameter names *)
|
||||
m.met_value.val_parameters <- (merge_parameters
|
||||
m.met_value.val_parameters <- (merge_parameters
|
||||
m.met_value.val_parameters
|
||||
m2.met_value.val_parameters) ;
|
||||
(* we must reassociate comments in @param to the corresponding
|
||||
parameters because the associated comment of a parameter may have been changed by the merge.*)
|
||||
Odoc_value.update_value_parameters_text m.met_value;
|
||||
|
||||
if !Odoc_args.keep_code then
|
||||
if !Odoc_args.keep_code then
|
||||
m.met_value.val_code <- m2.met_value.val_code;
|
||||
|
||||
true
|
||||
|
@ -385,20 +385,20 @@ let merge_classes merge_options mli ml =
|
|||
let merge_class_types merge_options mli ml =
|
||||
mli.clt_info <- merge_info_opt merge_options mli.clt_info ml.clt_info;
|
||||
mli.clt_loc <- { mli.clt_loc with loc_impl = ml.clt_loc.loc_impl } ;
|
||||
(* merge values *)
|
||||
(* merge values *)
|
||||
List.iter
|
||||
(fun a ->
|
||||
try
|
||||
let _ = List.find
|
||||
(fun ele ->
|
||||
(fun ele ->
|
||||
match ele with
|
||||
Class_attribute a2 ->
|
||||
Class_attribute a2 ->
|
||||
if a2.att_value.val_name = a.att_value.val_name then
|
||||
(
|
||||
a.att_value.val_info <- merge_info_opt merge_options
|
||||
a.att_value.val_info <- merge_info_opt merge_options
|
||||
a.att_value.val_info a2.att_value.val_info;
|
||||
a.att_value.val_loc <- { a.att_value.val_loc with loc_impl = a2.att_value.val_loc.loc_impl } ;
|
||||
if !Odoc_args.keep_code then
|
||||
if !Odoc_args.keep_code then
|
||||
a.att_value.val_code <- a2.att_value.val_code;
|
||||
|
||||
true
|
||||
|
@ -422,22 +422,22 @@ let merge_class_types merge_options mli ml =
|
|||
(fun m ->
|
||||
try
|
||||
let _ = List.find
|
||||
(fun ele ->
|
||||
(fun ele ->
|
||||
match ele with
|
||||
Class_method m2 ->
|
||||
Class_method m2 ->
|
||||
if m2.met_value.val_name = m.met_value.val_name then
|
||||
(
|
||||
m.met_value.val_info <- merge_info_opt
|
||||
merge_options m.met_value.val_info m2.met_value.val_info;
|
||||
m.met_value.val_loc <- { m.met_value.val_loc with loc_impl = m2.met_value.val_loc.loc_impl } ;
|
||||
m.met_value.val_parameters <- (merge_parameters
|
||||
m.met_value.val_parameters <- (merge_parameters
|
||||
m.met_value.val_parameters
|
||||
m2.met_value.val_parameters) ;
|
||||
(* we must reassociate comments in @param to the the corresponding
|
||||
parameters because the associated comment of a parameter may have been changed y the merge.*)
|
||||
Odoc_value.update_value_parameters_text m.met_value;
|
||||
|
||||
if !Odoc_args.keep_code then
|
||||
|
||||
if !Odoc_args.keep_code then
|
||||
m.met_value.val_code <- m2.met_value.val_code;
|
||||
|
||||
true
|
||||
|
@ -468,9 +468,9 @@ let rec merge_module_types merge_options mli ml =
|
|||
(fun ex ->
|
||||
try
|
||||
let _ = List.find
|
||||
(fun ele ->
|
||||
(fun ele ->
|
||||
match ele with
|
||||
Element_exception ex2 ->
|
||||
Element_exception ex2 ->
|
||||
if ex2.ex_name = ex.ex_name then
|
||||
(
|
||||
ex.ex_info <- merge_info_opt merge_options ex.ex_info ex2.ex_info;
|
||||
|
@ -497,9 +497,9 @@ let rec merge_module_types merge_options mli ml =
|
|||
(fun ty ->
|
||||
try
|
||||
let _ = List.find
|
||||
(fun ele ->
|
||||
(fun ele ->
|
||||
match ele with
|
||||
Element_type ty2 ->
|
||||
Element_type ty2 ->
|
||||
if ty2.ty_name = ty.ty_name then
|
||||
(
|
||||
merge_types merge_options ty ty2;
|
||||
|
@ -524,9 +524,9 @@ let rec merge_module_types merge_options mli ml =
|
|||
(fun m ->
|
||||
try
|
||||
let _ = List.find
|
||||
(fun ele ->
|
||||
(fun ele ->
|
||||
match ele with
|
||||
Element_module m2 ->
|
||||
Element_module m2 ->
|
||||
if m2.m_name = m.m_name then
|
||||
(
|
||||
ignore (merge_modules merge_options m m2);
|
||||
|
@ -556,9 +556,9 @@ let rec merge_module_types merge_options mli ml =
|
|||
(fun m ->
|
||||
try
|
||||
let _ = List.find
|
||||
(fun ele ->
|
||||
(fun ele ->
|
||||
match ele with
|
||||
Element_module_type m2 ->
|
||||
Element_module_type m2 ->
|
||||
if m2.mt_name = m.mt_name then
|
||||
(
|
||||
merge_module_types merge_options m m2;
|
||||
|
@ -586,9 +586,9 @@ let rec merge_module_types merge_options mli ml =
|
|||
(fun v ->
|
||||
try
|
||||
let _ = List.find
|
||||
(fun ele ->
|
||||
(fun ele ->
|
||||
match ele with
|
||||
Element_value v2 ->
|
||||
Element_value v2 ->
|
||||
if v2.val_name = v.val_name then
|
||||
(
|
||||
v.val_info <- merge_info_opt merge_options v.val_info v2.val_info ;
|
||||
|
@ -601,7 +601,7 @@ let rec merge_module_types merge_options mli ml =
|
|||
parameters because the associated comment of a parameter may have been changed y the merge.*)
|
||||
Odoc_value.update_value_parameters_text v;
|
||||
|
||||
if !Odoc_args.keep_code then
|
||||
if !Odoc_args.keep_code then
|
||||
v.val_code <- v2.val_code;
|
||||
|
||||
true
|
||||
|
@ -626,9 +626,9 @@ let rec merge_module_types merge_options mli ml =
|
|||
(fun c ->
|
||||
try
|
||||
let _ = List.find
|
||||
(fun ele ->
|
||||
(fun ele ->
|
||||
match ele with
|
||||
Element_class c2 ->
|
||||
Element_class c2 ->
|
||||
if c2.cl_name = c.cl_name then
|
||||
(
|
||||
merge_classes merge_options c c2;
|
||||
|
@ -654,9 +654,9 @@ let rec merge_module_types merge_options mli ml =
|
|||
(fun c ->
|
||||
try
|
||||
let _ = List.find
|
||||
(fun ele ->
|
||||
(fun ele ->
|
||||
match ele with
|
||||
Element_class_type c2 ->
|
||||
Element_class_type c2 ->
|
||||
if c2.clt_name = c.clt_name then
|
||||
(
|
||||
merge_class_types merge_options c c2;
|
||||
|
@ -682,24 +682,29 @@ let rec merge_module_types merge_options mli ml =
|
|||
and merge_modules merge_options mli ml =
|
||||
mli.m_info <- merge_info_opt merge_options mli.m_info ml.m_info;
|
||||
mli.m_loc <- { mli.m_loc with loc_impl = ml.m_loc.loc_impl } ;
|
||||
(* More dependencies in the .ml file. *)
|
||||
mli.m_top_deps <- ml.m_top_deps ;
|
||||
|
||||
let code =
|
||||
let rec remove_doubles acc = function
|
||||
[] -> acc
|
||||
| h :: q ->
|
||||
if List.mem h acc then remove_doubles acc q
|
||||
else remove_doubles (h :: acc) q
|
||||
in
|
||||
mli.m_top_deps <- remove_doubles mli.m_top_deps ml.m_top_deps ;
|
||||
|
||||
let code =
|
||||
if !Odoc_args.keep_code then
|
||||
match mli.m_code, ml.m_code with
|
||||
Some s, _ -> Some s
|
||||
| _, Some s -> Some s
|
||||
| _ -> None
|
||||
Some s, _ -> Some s
|
||||
| _, Some s -> Some s
|
||||
| _ -> None
|
||||
else
|
||||
None
|
||||
in
|
||||
let code_intf =
|
||||
let code_intf =
|
||||
if !Odoc_args.keep_code then
|
||||
match mli.m_code_intf, ml.m_code_intf with
|
||||
Some s, _ -> Some s
|
||||
| _, Some s -> Some s
|
||||
| _ -> None
|
||||
Some s, _ -> Some s
|
||||
| _, Some s -> Some s
|
||||
| _ -> None
|
||||
else
|
||||
None
|
||||
in
|
||||
|
@ -711,9 +716,9 @@ and merge_modules merge_options mli ml =
|
|||
(fun ex ->
|
||||
try
|
||||
let _ = List.find
|
||||
(fun ele ->
|
||||
(fun ele ->
|
||||
match ele with
|
||||
Element_exception ex2 ->
|
||||
Element_exception ex2 ->
|
||||
if ex2.ex_name = ex.ex_name then
|
||||
(
|
||||
ex.ex_info <- merge_info_opt merge_options ex.ex_info ex2.ex_info;
|
||||
|
@ -740,9 +745,9 @@ and merge_modules merge_options mli ml =
|
|||
(fun ty ->
|
||||
try
|
||||
let _ = List.find
|
||||
(fun ele ->
|
||||
(fun ele ->
|
||||
match ele with
|
||||
Element_type ty2 ->
|
||||
Element_type ty2 ->
|
||||
if ty2.ty_name = ty.ty_name then
|
||||
(
|
||||
merge_types merge_options ty ty2;
|
||||
|
@ -767,9 +772,9 @@ and merge_modules merge_options mli ml =
|
|||
(fun m ->
|
||||
try
|
||||
let _ = List.find
|
||||
(fun ele ->
|
||||
(fun ele ->
|
||||
match ele with
|
||||
Element_module m2 ->
|
||||
Element_module m2 ->
|
||||
if m2.m_name = m.m_name then
|
||||
(
|
||||
ignore (merge_modules merge_options m m2);
|
||||
|
@ -799,9 +804,9 @@ and merge_modules merge_options mli ml =
|
|||
(fun m ->
|
||||
try
|
||||
let _ = List.find
|
||||
(fun ele ->
|
||||
(fun ele ->
|
||||
match ele with
|
||||
Element_module_type m2 ->
|
||||
Element_module_type m2 ->
|
||||
if m2.mt_name = m.mt_name then
|
||||
(
|
||||
merge_module_types merge_options m m2;
|
||||
|
@ -841,8 +846,8 @@ and merge_modules merge_options mli ml =
|
|||
(* we must reassociate comments in @param to the the corresponding
|
||||
parameters because the associated comment of a parameter may have been changed y the merge.*)
|
||||
Odoc_value.update_value_parameters_text v;
|
||||
|
||||
if !Odoc_args.keep_code then
|
||||
|
||||
if !Odoc_args.keep_code then
|
||||
v.val_code <- v2.val_code;
|
||||
true
|
||||
)
|
||||
|
@ -864,9 +869,9 @@ and merge_modules merge_options mli ml =
|
|||
(fun c ->
|
||||
try
|
||||
let _ = List.find
|
||||
(fun ele ->
|
||||
(fun ele ->
|
||||
match ele with
|
||||
Element_class c2 ->
|
||||
Element_class c2 ->
|
||||
if c2.cl_name = c.cl_name then
|
||||
(
|
||||
merge_classes merge_options c c2;
|
||||
|
@ -892,9 +897,9 @@ and merge_modules merge_options mli ml =
|
|||
(fun c ->
|
||||
try
|
||||
let _ = List.find
|
||||
(fun ele ->
|
||||
(fun ele ->
|
||||
match ele with
|
||||
Element_class_type c2 ->
|
||||
Element_class_type c2 ->
|
||||
if c2.clt_name = c.clt_name then
|
||||
(
|
||||
merge_class_types merge_options c c2;
|
||||
|
@ -914,7 +919,7 @@ and merge_modules merge_options mli ml =
|
|||
()
|
||||
)
|
||||
(Odoc_module.module_class_types mli);
|
||||
|
||||
|
||||
mli
|
||||
|
||||
let merge merge_options modules_list =
|
||||
|
@ -932,13 +937,13 @@ let merge merge_options modules_list =
|
|||
m :: (iter l_others)
|
||||
| m2 :: [] ->
|
||||
(
|
||||
(* we can merge m with m2 if there is an implementation
|
||||
(* we can merge m with m2 if there is an implementation
|
||||
and an interface.*)
|
||||
let f b = if !Odoc_args.inverse_merge_ml_mli then not b else b in
|
||||
match f m.m_is_interface, f m2.m_is_interface with
|
||||
true, false -> (merge_modules merge_options m m2) :: (iter l_others)
|
||||
| false, true -> (merge_modules merge_options m2 m) :: (iter l_others)
|
||||
| false, false ->
|
||||
| false, false ->
|
||||
if !Odoc_args.inverse_merge_ml_mli then
|
||||
(* two Module.ts for the .mli ! *)
|
||||
raise (Failure (Odoc_messages.two_interfaces m.m_name))
|
||||
|
@ -959,5 +964,3 @@ let merge merge_options modules_list =
|
|||
|
||||
in
|
||||
iter modules_list
|
||||
|
||||
(* eof $Id$ *)
|
||||
|
|
|
@ -52,6 +52,7 @@ let load = "<file>\tLoad information from <file> ; may be used several times"
|
|||
let css_style = "<file>\n\t\tUse content of <file> as CSS style definition "^html_only
|
||||
let index_only = "\tGenerate index files only "^html_only
|
||||
let colorize_code = "\n\t\tColorize code even in documentation pages "^html_only
|
||||
let html_short_functors = "\n\t\tUse short form to display functor types "^html_only
|
||||
let generate_html = "\tGenerate HTML documentation"
|
||||
let generate_latex = "\tGenerate LaTeX documentation"
|
||||
let generate_texinfo = "\tGenerate TeXinfo documentation"
|
||||
|
@ -144,7 +145,7 @@ let latex_class_prefix =
|
|||
"\t\t(default is \""^default_latex_class_prefix^"\")"
|
||||
|
||||
let default_latex_class_type_prefix = "classtype:"
|
||||
let latex_class_type_prefix =
|
||||
let latex_class_type_prefix =
|
||||
"<string>\n\t\tUse <string> as prefix for the LaTeX labels of class types.\n"^
|
||||
"\t\t(default is \""^default_latex_class_type_prefix^"\")"
|
||||
|
||||
|
@ -286,7 +287,7 @@ let cross_element_not_found n = "Element "^n^" not found"
|
|||
let cross_method_not_found n = "Method "^n^" not found"
|
||||
let cross_attribute_not_found n = "Attribute "^n^" not found"
|
||||
let cross_section_not_found n = "Section "^n^" not found"
|
||||
let cross_value_not_found n = "Attribute "^n^" not found"
|
||||
let cross_value_not_found n = "Value "^n^" not found"
|
||||
let cross_type_not_found n = "Type "^n^" not found"
|
||||
|
||||
let object_end = "object ... end"
|
||||
|
|
|
@ -64,7 +64,7 @@ and module_kind =
|
|||
(** Representation of a module. *)
|
||||
and t_module = {
|
||||
m_name : Name.t ;
|
||||
m_type : Types.module_type ;
|
||||
mutable m_type : Types.module_type ;
|
||||
mutable m_info : Odoc_types.info option ;
|
||||
m_is_interface : bool ; (** true for modules read from interface files *)
|
||||
m_file : string ; (** the file the module is defined in. *)
|
||||
|
@ -92,7 +92,7 @@ and module_type_kind =
|
|||
and t_module_type = {
|
||||
mt_name : Name.t ;
|
||||
mutable mt_info : Odoc_types.info option ;
|
||||
mt_type : Types.module_type option ; (** [None] = abstract module type *)
|
||||
mutable mt_type : Types.module_type option ; (** [None] = abstract module type *)
|
||||
mt_is_interface : bool ; (** true for modules read from interface files *)
|
||||
mt_file : string ; (** the file the module type is defined in. *)
|
||||
mutable mt_kind : module_type_kind option ; (** [None] = abstract module type if mt_type = None ;
|
||||
|
@ -207,41 +207,41 @@ let included_modules l =
|
|||
let rec module_elements ?(trans=true) m =
|
||||
let rec iter_kind = function
|
||||
Module_struct l ->
|
||||
print_DEBUG "Odoc_module.module_element: Module_struct";
|
||||
l
|
||||
print_DEBUG "Odoc_module.module_element: Module_struct";
|
||||
l
|
||||
| Module_alias ma ->
|
||||
print_DEBUG "Odoc_module.module_element: Module_alias";
|
||||
if trans then
|
||||
print_DEBUG "Odoc_module.module_element: Module_alias";
|
||||
if trans then
|
||||
match ma.ma_module with
|
||||
None -> []
|
||||
| Some (Mod m) -> module_elements m
|
||||
| Some (Modtype mt) -> module_type_elements mt
|
||||
else
|
||||
else
|
||||
[]
|
||||
| Module_functor (_, k)
|
||||
| Module_apply (k, _) ->
|
||||
print_DEBUG "Odoc_module.module_element: Module_functor ou Module_apply";
|
||||
iter_kind k
|
||||
print_DEBUG "Odoc_module.module_element: Module_functor ou Module_apply";
|
||||
iter_kind k
|
||||
| Module_with (tk,_) ->
|
||||
print_DEBUG "Odoc_module.module_element: Module_with";
|
||||
module_type_elements ~trans: trans
|
||||
print_DEBUG "Odoc_module.module_element: Module_with";
|
||||
module_type_elements ~trans: trans
|
||||
{ mt_name = "" ; mt_info = None ; mt_type = None ;
|
||||
mt_is_interface = false ; mt_file = "" ; mt_kind = Some tk ;
|
||||
mt_loc = Odoc_types.dummy_loc ;
|
||||
}
|
||||
| Module_constraint (k, tk) ->
|
||||
print_DEBUG "Odoc_module.module_element: Module_constraint";
|
||||
print_DEBUG "Odoc_module.module_element: Module_constraint";
|
||||
(* A VOIR : utiliser k ou tk ? *)
|
||||
module_elements ~trans: trans
|
||||
module_elements ~trans: trans
|
||||
{ m_name = "" ;
|
||||
m_info = None ;
|
||||
m_type = Types.Tmty_signature [] ;
|
||||
m_info = None ;
|
||||
m_type = Types.Tmty_signature [] ;
|
||||
m_is_interface = false ; m_file = "" ; m_kind = k ;
|
||||
m_loc = Odoc_types.dummy_loc ;
|
||||
m_top_deps = [] ;
|
||||
m_code = None ;
|
||||
m_code_intf = None ;
|
||||
m_text_only = false ;
|
||||
m_code = None ;
|
||||
m_code_intf = None ;
|
||||
m_text_only = false ;
|
||||
}
|
||||
(*
|
||||
module_type_elements ~trans: trans
|
||||
|
@ -265,11 +265,11 @@ and module_type_elements ?(trans=true) mt =
|
|||
else
|
||||
[]
|
||||
| Some (Module_type_alias mta) ->
|
||||
if trans then
|
||||
if trans then
|
||||
match mta.mta_module with
|
||||
None -> []
|
||||
| Some mt -> module_type_elements mt
|
||||
else
|
||||
else
|
||||
[]
|
||||
in
|
||||
iter_kind mt.mt_kind
|
||||
|
@ -342,7 +342,7 @@ let rec module_type_parameters ?(trans=true) mt =
|
|||
with
|
||||
Not_found ->
|
||||
(p, None)
|
||||
in
|
||||
in
|
||||
param :: (iter (Some k2))
|
||||
| Some (Module_type_alias mta) ->
|
||||
if trans then
|
||||
|
@ -368,38 +368,38 @@ let rec module_type_parameters ?(trans=true) mt =
|
|||
and module_parameters ?(trans=true) m =
|
||||
let rec iter = function
|
||||
Module_functor (p, k) ->
|
||||
let param =
|
||||
let param =
|
||||
(* we create the couple (parameter, description opt), using
|
||||
the description of the parameter if we can find it in the comment.*)
|
||||
match m.m_info with
|
||||
match m.m_info with
|
||||
None ->(p, None)
|
||||
| Some i ->
|
||||
try
|
||||
let d = List.assoc p.mp_name i.Odoc_types.i_params in
|
||||
(p, Some d)
|
||||
| Some i ->
|
||||
try
|
||||
let d = List.assoc p.mp_name i.Odoc_types.i_params in
|
||||
(p, Some d)
|
||||
with
|
||||
Not_found ->
|
||||
Not_found ->
|
||||
(p, None)
|
||||
in
|
||||
param :: (iter k)
|
||||
in
|
||||
param :: (iter k)
|
||||
|
||||
| Module_alias ma ->
|
||||
if trans then
|
||||
if trans then
|
||||
match ma.ma_module with
|
||||
None -> []
|
||||
| Some (Mod m) -> module_parameters ~trans m
|
||||
| Some (Modtype mt) -> module_type_parameters ~trans mt
|
||||
else
|
||||
else
|
||||
[]
|
||||
| Module_constraint (k, tk) ->
|
||||
module_type_parameters ~trans: trans
|
||||
module_type_parameters ~trans: trans
|
||||
{ mt_name = "" ; mt_info = None ; mt_type = None ;
|
||||
mt_is_interface = false ; mt_file = "" ; mt_kind = Some tk ;
|
||||
mt_loc = Odoc_types.dummy_loc }
|
||||
| Module_struct _
|
||||
| Module_apply _
|
||||
| Module_with _ ->
|
||||
[]
|
||||
[]
|
||||
in
|
||||
iter m.m_kind
|
||||
|
||||
|
@ -435,14 +435,14 @@ let module_is_functor m =
|
|||
let rec iter = function
|
||||
Module_functor _ -> true
|
||||
| Module_alias ma ->
|
||||
(
|
||||
match ma.ma_module with
|
||||
(
|
||||
match ma.ma_module with
|
||||
None -> false
|
||||
| Some (Mod mo) -> iter mo.m_kind
|
||||
| Some (Modtype mt) -> module_type_is_functor mt
|
||||
)
|
||||
| Some (Mod mo) -> iter mo.m_kind
|
||||
| Some (Modtype mt) -> module_type_is_functor mt
|
||||
)
|
||||
| Module_constraint (k, _) ->
|
||||
iter k
|
||||
iter k
|
||||
| _ -> false
|
||||
in
|
||||
iter m.m_kind
|
||||
|
|
|
@ -35,16 +35,16 @@ let _ = Odoc_args.parse
|
|||
(default_dot_generator :> Odoc_args.doc_generator)
|
||||
|
||||
let loaded_modules =
|
||||
List.flatten
|
||||
(List.map
|
||||
List.flatten
|
||||
(List.map
|
||||
(fun f ->
|
||||
Odoc_info.verbose (Odoc_messages.loading f);
|
||||
try
|
||||
try
|
||||
let l = Odoc_analyse.load_modules f in
|
||||
Odoc_info.verbose Odoc_messages.ok;
|
||||
l
|
||||
with Failure s ->
|
||||
prerr_endline s ;
|
||||
with Failure s ->
|
||||
prerr_endline s ;
|
||||
incr Odoc_global.errors ;
|
||||
[]
|
||||
)
|
||||
|
@ -58,11 +58,11 @@ let _ =
|
|||
None -> ()
|
||||
| Some f ->
|
||||
try Odoc_analyse.dump_modules f modules
|
||||
with Failure s ->
|
||||
with Failure s ->
|
||||
prerr_endline s ;
|
||||
incr Odoc_global.errors
|
||||
|
||||
let _ =
|
||||
let _ =
|
||||
match !Odoc_args.doc_generator with
|
||||
None ->
|
||||
()
|
||||
|
@ -71,7 +71,7 @@ let _ =
|
|||
gen#generate modules;
|
||||
Odoc_info.verbose Odoc_messages.ok
|
||||
|
||||
let _ =
|
||||
let _ =
|
||||
if !Odoc_global.errors > 0 then
|
||||
(
|
||||
prerr_endline (Odoc_messages.errors_occured !Odoc_global.errors) ;
|
||||
|
@ -79,4 +79,3 @@ let _ =
|
|||
)
|
||||
else
|
||||
exit 0
|
||||
|
||||
|
|
|
@ -993,12 +993,12 @@ class texi =
|
|||
let title = [
|
||||
self#node depth m.m_name ;
|
||||
Title (depth, None,
|
||||
if m.m_text_only then
|
||||
[ Raw m.m_name ]
|
||||
else
|
||||
[ Raw (Odoc_messages.modul ^ " ") ;
|
||||
if m.m_text_only then
|
||||
[ Raw m.m_name ]
|
||||
else
|
||||
[ Raw (Odoc_messages.modul ^ " ") ;
|
||||
Code m.m_name ]
|
||||
) ;
|
||||
) ;
|
||||
self#index `Module m.m_name ; Newline ] in
|
||||
puts chanout (self#texi_of_text title) ;
|
||||
|
||||
|
@ -1105,7 +1105,8 @@ class texi =
|
|||
| Some f ->
|
||||
nl chan ;
|
||||
puts_nl chan
|
||||
(self#texi_of_info (Some (Odoc_info.info_of_comment_file f)))
|
||||
(self#texi_of_info
|
||||
(Some (Odoc_info.info_of_comment_file m_list f)))
|
||||
end ;
|
||||
|
||||
(* write a top menu *)
|
||||
|
|
|
@ -1,19 +1,44 @@
|
|||
bigarray_stubs.o: bigarray_stubs.c ../../byterun/alloc.h \
|
||||
../../byterun/compatibility.h ../../byterun/misc.h \
|
||||
../../byterun/config.h ../../config/m.h ../../config/s.h \
|
||||
../../byterun/mlvalues.h bigarray.h ../../byterun/custom.h \
|
||||
../../byterun/fail.h ../../byterun/intext.h ../../byterun/io.h \
|
||||
../../byterun/fix_code.h ../../byterun/memory.h ../../byterun/gc.h \
|
||||
../../byterun/major_gc.h ../../byterun/freelist.h \
|
||||
../../byterun/minor_gc.h
|
||||
mmap_unix.o: mmap_unix.c bigarray.h ../../byterun/mlvalues.h \
|
||||
../../byterun/compatibility.h ../../byterun/config.h ../../config/m.h \
|
||||
../../config/s.h ../../byterun/misc.h ../../byterun/custom.h \
|
||||
../../byterun/fail.h ../../byterun/sys.h
|
||||
mmap_win32.o: mmap_win32.c bigarray.h ../../byterun/mlvalues.h \
|
||||
../../byterun/compatibility.h ../../byterun/config.h ../../config/m.h \
|
||||
../../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
|
||||
../../byterun/custom.h ../../byterun/fail.h ../../byterun/sys.h \
|
||||
../../byterun/compatibility.h ../../byterun/config.h \
|
||||
../../byterun/../config/m.h ../../byterun/../config/s.h \
|
||||
../../byterun/compatibility.h ../../byterun/mlvalues.h \
|
||||
../../byterun/compatibility.h ../../byterun/config.h \
|
||||
../../byterun/misc.h bigarray.h ../../byterun/custom.h \
|
||||
../../byterun/compatibility.h ../../byterun/mlvalues.h \
|
||||
../../byterun/fail.h ../../byterun/compatibility.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/intext.h \
|
||||
../../byterun/compatibility.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/io.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/fix_code.h \
|
||||
../../byterun/config.h ../../byterun/misc.h ../../byterun/mlvalues.h \
|
||||
../../byterun/memory.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../byterun/gc.h ../../byterun/mlvalues.h \
|
||||
../../byterun/major_gc.h ../../byterun/freelist.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/misc.h ../../byterun/minor_gc.h \
|
||||
../../byterun/misc.h ../../byterun/misc.h ../../byterun/mlvalues.h
|
||||
mmap_unix.o: mmap_unix.c bigarray.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../byterun/../config/m.h \
|
||||
../../byterun/../config/s.h ../../byterun/compatibility.h \
|
||||
../../byterun/mlvalues.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../byterun/misc.h \
|
||||
../../byterun/compatibility.h ../../byterun/config.h \
|
||||
../../byterun/custom.h ../../byterun/compatibility.h \
|
||||
../../byterun/mlvalues.h ../../byterun/fail.h \
|
||||
../../byterun/compatibility.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/io.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/sys.h ../../byterun/misc.h
|
||||
mmap_win32.o: mmap_win32.c bigarray.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../byterun/../config/m.h \
|
||||
../../byterun/../config/s.h ../../byterun/compatibility.h \
|
||||
../../byterun/mlvalues.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../byterun/misc.h \
|
||||
../../byterun/compatibility.h ../../byterun/config.h \
|
||||
../../byterun/alloc.h ../../byterun/compatibility.h \
|
||||
../../byterun/misc.h ../../byterun/mlvalues.h ../../byterun/custom.h \
|
||||
../../byterun/compatibility.h ../../byterun/mlvalues.h \
|
||||
../../byterun/fail.h ../../byterun/compatibility.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/sys.h ../../byterun/misc.h \
|
||||
../unix/unixsupport.h
|
||||
bigarray.cmo: bigarray.cmi
|
||||
bigarray.cmx: bigarray.cmi
|
||||
|
|
|
@ -2,85 +2,137 @@ color.o: color.c libgraph.h \
|
|||
\
|
||||
\
|
||||
../../byterun/mlvalues.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../config/m.h ../../config/s.h \
|
||||
../../byterun/misc.h
|
||||
../../byterun/config.h ../../byterun/../config/m.h \
|
||||
../../byterun/../config/s.h ../../byterun/compatibility.h \
|
||||
../../byterun/misc.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h
|
||||
draw.o: draw.c libgraph.h \
|
||||
\
|
||||
\
|
||||
../../byterun/mlvalues.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../config/m.h ../../config/s.h \
|
||||
../../byterun/misc.h ../../byterun/alloc.h
|
||||
../../byterun/config.h ../../byterun/../config/m.h \
|
||||
../../byterun/../config/s.h ../../byterun/compatibility.h \
|
||||
../../byterun/misc.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../byterun/alloc.h \
|
||||
../../byterun/compatibility.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h
|
||||
dump_img.o: dump_img.c libgraph.h \
|
||||
\
|
||||
\
|
||||
../../byterun/mlvalues.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../config/m.h ../../config/s.h \
|
||||
../../byterun/misc.h image.h ../../byterun/alloc.h \
|
||||
../../byterun/memory.h ../../byterun/gc.h ../../byterun/major_gc.h \
|
||||
../../byterun/freelist.h ../../byterun/minor_gc.h
|
||||
../../byterun/config.h ../../byterun/../config/m.h \
|
||||
../../byterun/../config/s.h ../../byterun/compatibility.h \
|
||||
../../byterun/misc.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h image.h ../../byterun/alloc.h \
|
||||
../../byterun/compatibility.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/memory.h \
|
||||
../../byterun/compatibility.h ../../byterun/config.h ../../byterun/gc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/major_gc.h \
|
||||
../../byterun/freelist.h ../../byterun/misc.h ../../byterun/mlvalues.h \
|
||||
../../byterun/misc.h ../../byterun/minor_gc.h ../../byterun/misc.h \
|
||||
../../byterun/misc.h ../../byterun/mlvalues.h
|
||||
events.o: events.c libgraph.h \
|
||||
\
|
||||
\
|
||||
../../byterun/mlvalues.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../config/m.h ../../config/s.h \
|
||||
../../byterun/misc.h ../../byterun/alloc.h ../../byterun/signals.h
|
||||
../../byterun/config.h ../../byterun/../config/m.h \
|
||||
../../byterun/../config/s.h ../../byterun/compatibility.h \
|
||||
../../byterun/misc.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../byterun/alloc.h \
|
||||
../../byterun/compatibility.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/signals.h \
|
||||
../../byterun/compatibility.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h
|
||||
fill.o: fill.c libgraph.h \
|
||||
\
|
||||
\
|
||||
../../byterun/mlvalues.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../config/m.h ../../config/s.h \
|
||||
../../byterun/misc.h ../../byterun/memory.h ../../byterun/gc.h \
|
||||
../../byterun/major_gc.h ../../byterun/freelist.h \
|
||||
../../byterun/minor_gc.h
|
||||
../../byterun/config.h ../../byterun/../config/m.h \
|
||||
../../byterun/../config/s.h ../../byterun/compatibility.h \
|
||||
../../byterun/misc.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../byterun/memory.h \
|
||||
../../byterun/compatibility.h ../../byterun/config.h ../../byterun/gc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/major_gc.h \
|
||||
../../byterun/freelist.h ../../byterun/misc.h ../../byterun/mlvalues.h \
|
||||
../../byterun/misc.h ../../byterun/minor_gc.h ../../byterun/misc.h \
|
||||
../../byterun/misc.h ../../byterun/mlvalues.h
|
||||
image.o: image.c libgraph.h \
|
||||
\
|
||||
\
|
||||
../../byterun/mlvalues.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../config/m.h ../../config/s.h \
|
||||
../../byterun/misc.h image.h ../../byterun/alloc.h \
|
||||
../../byterun/custom.h
|
||||
../../byterun/config.h ../../byterun/../config/m.h \
|
||||
../../byterun/../config/s.h ../../byterun/compatibility.h \
|
||||
../../byterun/misc.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h image.h ../../byterun/alloc.h \
|
||||
../../byterun/compatibility.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/custom.h \
|
||||
../../byterun/compatibility.h ../../byterun/mlvalues.h
|
||||
make_img.o: make_img.c libgraph.h \
|
||||
\
|
||||
\
|
||||
../../byterun/mlvalues.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../config/m.h ../../config/s.h \
|
||||
../../byterun/misc.h image.h ../../byterun/memory.h ../../byterun/gc.h \
|
||||
../../byterun/major_gc.h ../../byterun/freelist.h \
|
||||
../../byterun/minor_gc.h
|
||||
../../byterun/config.h ../../byterun/../config/m.h \
|
||||
../../byterun/../config/s.h ../../byterun/compatibility.h \
|
||||
../../byterun/misc.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h image.h ../../byterun/memory.h \
|
||||
../../byterun/compatibility.h ../../byterun/config.h ../../byterun/gc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/major_gc.h \
|
||||
../../byterun/freelist.h ../../byterun/misc.h ../../byterun/mlvalues.h \
|
||||
../../byterun/misc.h ../../byterun/minor_gc.h ../../byterun/misc.h \
|
||||
../../byterun/misc.h ../../byterun/mlvalues.h
|
||||
open.o: open.c libgraph.h \
|
||||
\
|
||||
\
|
||||
../../byterun/mlvalues.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../config/m.h ../../config/s.h \
|
||||
../../byterun/misc.h ../../byterun/alloc.h ../../byterun/callback.h \
|
||||
../../byterun/fail.h ../../byterun/memory.h ../../byterun/gc.h \
|
||||
../../byterun/major_gc.h ../../byterun/freelist.h \
|
||||
../../byterun/minor_gc.h
|
||||
../../byterun/config.h ../../byterun/../config/m.h \
|
||||
../../byterun/../config/s.h ../../byterun/compatibility.h \
|
||||
../../byterun/misc.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../byterun/alloc.h \
|
||||
../../byterun/compatibility.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/callback.h \
|
||||
../../byterun/compatibility.h ../../byterun/mlvalues.h \
|
||||
../../byterun/fail.h ../../byterun/compatibility.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/memory.h \
|
||||
../../byterun/compatibility.h ../../byterun/config.h ../../byterun/gc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/major_gc.h \
|
||||
../../byterun/freelist.h ../../byterun/misc.h ../../byterun/mlvalues.h \
|
||||
../../byterun/misc.h ../../byterun/minor_gc.h ../../byterun/misc.h \
|
||||
../../byterun/misc.h ../../byterun/mlvalues.h
|
||||
point_col.o: point_col.c libgraph.h \
|
||||
\
|
||||
\
|
||||
../../byterun/mlvalues.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../config/m.h ../../config/s.h \
|
||||
../../byterun/misc.h
|
||||
../../byterun/config.h ../../byterun/../config/m.h \
|
||||
../../byterun/../config/s.h ../../byterun/compatibility.h \
|
||||
../../byterun/misc.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h
|
||||
sound.o: sound.c libgraph.h \
|
||||
\
|
||||
\
|
||||
../../byterun/mlvalues.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../config/m.h ../../config/s.h \
|
||||
../../byterun/misc.h
|
||||
../../byterun/config.h ../../byterun/../config/m.h \
|
||||
../../byterun/../config/s.h ../../byterun/compatibility.h \
|
||||
../../byterun/misc.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h
|
||||
subwindow.o: subwindow.c libgraph.h \
|
||||
\
|
||||
\
|
||||
../../byterun/mlvalues.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../config/m.h ../../config/s.h \
|
||||
../../byterun/misc.h
|
||||
../../byterun/config.h ../../byterun/../config/m.h \
|
||||
../../byterun/../config/s.h ../../byterun/compatibility.h \
|
||||
../../byterun/misc.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h
|
||||
text.o: text.c libgraph.h \
|
||||
\
|
||||
\
|
||||
../../byterun/mlvalues.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../config/m.h ../../config/s.h \
|
||||
../../byterun/misc.h ../../byterun/alloc.h
|
||||
../../byterun/config.h ../../byterun/../config/m.h \
|
||||
../../byterun/../config/s.h ../../byterun/compatibility.h \
|
||||
../../byterun/misc.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../byterun/alloc.h \
|
||||
../../byterun/compatibility.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h
|
||||
graphics.cmo: graphics.cmi
|
||||
graphics.cmx: graphics.cmi
|
||||
graphicsX11.cmo: graphics.cmi graphicsX11.cmi
|
||||
graphicsX11.cmx: graphics.cmx graphicsX11.cmi
|
||||
graphicsX11.cmo: ./graphics.cmi graphicsX11.cmi
|
||||
graphicsX11.cmx: ./graphics.cmx graphicsX11.cmi
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
bng.o: bng.c bng.h ../../byterun/config.h ../../config/m.h \
|
||||
../../config/s.h ../../byterun/compatibility.h bng_ppc.c bng_digit.c
|
||||
bng.o: bng.c bng.h ../../byterun/config.h ../../byterun/../config/m.h \
|
||||
../../byterun/../config/s.h ../../byterun/compatibility.h bng_ppc.c \
|
||||
bng_digit.c
|
||||
bng_alpha.o: bng_alpha.c
|
||||
bng_amd64.o: bng_amd64.c
|
||||
bng_digit.o: bng_digit.c
|
||||
|
@ -9,25 +10,39 @@ bng_ppc.o: bng_ppc.c
|
|||
bng_sparc.o: bng_sparc.c
|
||||
nat_stubs.o: nat_stubs.c ../../byterun/alloc.h \
|
||||
../../byterun/compatibility.h ../../byterun/misc.h \
|
||||
../../byterun/config.h ../../config/m.h ../../config/s.h \
|
||||
../../byterun/mlvalues.h ../../byterun/custom.h ../../byterun/intext.h \
|
||||
../../byterun/io.h ../../byterun/fix_code.h ../../byterun/fail.h \
|
||||
../../byterun/memory.h ../../byterun/gc.h ../../byterun/major_gc.h \
|
||||
../../byterun/freelist.h ../../byterun/minor_gc.h bng.h nat.h
|
||||
big_int.cmi: nat.cmi
|
||||
num.cmi: ratio.cmi nat.cmi big_int.cmi
|
||||
ratio.cmi: nat.cmi big_int.cmi
|
||||
../../byterun/compatibility.h ../../byterun/config.h \
|
||||
../../byterun/../config/m.h ../../byterun/../config/s.h \
|
||||
../../byterun/compatibility.h ../../byterun/mlvalues.h \
|
||||
../../byterun/compatibility.h ../../byterun/config.h \
|
||||
../../byterun/misc.h ../../byterun/custom.h \
|
||||
../../byterun/compatibility.h ../../byterun/mlvalues.h \
|
||||
../../byterun/intext.h ../../byterun/compatibility.h \
|
||||
../../byterun/misc.h ../../byterun/mlvalues.h ../../byterun/io.h \
|
||||
../../byterun/misc.h ../../byterun/mlvalues.h ../../byterun/fix_code.h \
|
||||
../../byterun/config.h ../../byterun/misc.h ../../byterun/mlvalues.h \
|
||||
../../byterun/fail.h ../../byterun/compatibility.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/memory.h \
|
||||
../../byterun/compatibility.h ../../byterun/config.h ../../byterun/gc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/major_gc.h \
|
||||
../../byterun/freelist.h ../../byterun/misc.h ../../byterun/mlvalues.h \
|
||||
../../byterun/misc.h ../../byterun/minor_gc.h ../../byterun/misc.h \
|
||||
../../byterun/misc.h ../../byterun/mlvalues.h bng.h nat.h
|
||||
big_int.cmi: ./nat.cmi
|
||||
num.cmi: ./ratio.cmi ./nat.cmi ./big_int.cmi
|
||||
ratio.cmi: ./nat.cmi ./big_int.cmi
|
||||
arith_flags.cmo: arith_flags.cmi
|
||||
arith_flags.cmx: arith_flags.cmi
|
||||
arith_status.cmo: arith_flags.cmi arith_status.cmi
|
||||
arith_status.cmx: arith_flags.cmx arith_status.cmi
|
||||
big_int.cmo: nat.cmi int_misc.cmi big_int.cmi
|
||||
big_int.cmx: nat.cmx int_misc.cmx big_int.cmi
|
||||
arith_status.cmo: ./arith_flags.cmi arith_status.cmi
|
||||
arith_status.cmx: ./arith_flags.cmx arith_status.cmi
|
||||
big_int.cmo: ./nat.cmi ./int_misc.cmi big_int.cmi
|
||||
big_int.cmx: ./nat.cmx ./int_misc.cmx big_int.cmi
|
||||
int_misc.cmo: int_misc.cmi
|
||||
int_misc.cmx: int_misc.cmi
|
||||
nat.cmo: int_misc.cmi nat.cmi
|
||||
nat.cmx: int_misc.cmx nat.cmi
|
||||
num.cmo: ratio.cmi nat.cmi int_misc.cmi big_int.cmi arith_flags.cmi num.cmi
|
||||
num.cmx: ratio.cmx nat.cmx int_misc.cmx big_int.cmx arith_flags.cmx num.cmi
|
||||
ratio.cmo: nat.cmi int_misc.cmi big_int.cmi arith_flags.cmi ratio.cmi
|
||||
ratio.cmx: nat.cmx int_misc.cmx big_int.cmx arith_flags.cmx ratio.cmi
|
||||
nat.cmo: ./int_misc.cmi nat.cmi
|
||||
nat.cmx: ./int_misc.cmx nat.cmi
|
||||
num.cmo: ./ratio.cmi ./nat.cmi ./int_misc.cmi ./big_int.cmi ./arith_flags.cmi \
|
||||
num.cmi
|
||||
num.cmx: ./ratio.cmx ./nat.cmx ./int_misc.cmx ./big_int.cmx ./arith_flags.cmx \
|
||||
num.cmi
|
||||
ratio.cmo: ./nat.cmi ./int_misc.cmi ./big_int.cmi ./arith_flags.cmi ratio.cmi
|
||||
ratio.cmx: ./nat.cmx ./int_misc.cmx ./big_int.cmx ./arith_flags.cmx ratio.cmi
|
||||
|
|
|
@ -1,7 +1,16 @@
|
|||
strstubs.o: strstubs.c ../../byterun/mlvalues.h \
|
||||
../../byterun/compatibility.h ../../byterun/config.h ../../config/m.h \
|
||||
../../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
|
||||
../../byterun/memory.h ../../byterun/gc.h ../../byterun/major_gc.h \
|
||||
../../byterun/freelist.h ../../byterun/minor_gc.h ../../byterun/fail.h
|
||||
../../byterun/compatibility.h ../../byterun/config.h \
|
||||
../../byterun/../config/m.h ../../byterun/../config/s.h \
|
||||
../../byterun/compatibility.h ../../byterun/misc.h \
|
||||
../../byterun/compatibility.h ../../byterun/config.h \
|
||||
../../byterun/alloc.h ../../byterun/compatibility.h \
|
||||
../../byterun/misc.h ../../byterun/mlvalues.h ../../byterun/memory.h \
|
||||
../../byterun/compatibility.h ../../byterun/config.h ../../byterun/gc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/major_gc.h \
|
||||
../../byterun/freelist.h ../../byterun/misc.h ../../byterun/mlvalues.h \
|
||||
../../byterun/misc.h ../../byterun/minor_gc.h ../../byterun/misc.h \
|
||||
../../byterun/misc.h ../../byterun/mlvalues.h ../../byterun/fail.h \
|
||||
../../byterun/compatibility.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h
|
||||
str.cmo: str.cmi
|
||||
str.cmx: str.cmi
|
||||
|
|
|
@ -1,27 +1,35 @@
|
|||
posix.o: posix.c ../../byterun/alloc.h ../../byterun/compatibility.h \
|
||||
../../byterun/misc.h ../../byterun/config.h ../../config/m.h \
|
||||
../../config/s.h ../../byterun/mlvalues.h ../../byterun/backtrace.h \
|
||||
../../byterun/callback.h ../../byterun/custom.h ../../byterun/fail.h \
|
||||
../../byterun/io.h ../../byterun/memory.h ../../byterun/gc.h \
|
||||
../../byterun/major_gc.h ../../byterun/freelist.h \
|
||||
../../byterun/minor_gc.h ../../byterun/printexc.h ../../byterun/roots.h \
|
||||
../../byterun/signals.h ../../byterun/stacks.h ../../byterun/sys.h
|
||||
win32.o: win32.c ../../byterun/alloc.h ../../byterun/compatibility.h \
|
||||
../../byterun/misc.h ../../byterun/config.h ../../config/m.h \
|
||||
../../config/s.h ../../byterun/mlvalues.h ../../byterun/backtrace.h \
|
||||
../../byterun/callback.h ../../byterun/custom.h ../../byterun/fail.h \
|
||||
../../byterun/io.h ../../byterun/memory.h ../../byterun/gc.h \
|
||||
../../byterun/major_gc.h ../../byterun/freelist.h \
|
||||
../../byterun/minor_gc.h ../../byterun/printexc.h ../../byterun/roots.h \
|
||||
../../byterun/signals.h ../../byterun/stacks.h ../../byterun/sys.h
|
||||
condition.cmi: mutex.cmi
|
||||
condition.cmo: mutex.cmi condition.cmi
|
||||
condition.cmx: mutex.cmx condition.cmi
|
||||
event.cmo: mutex.cmi condition.cmi event.cmi
|
||||
event.cmx: mutex.cmx condition.cmx event.cmi
|
||||
../../byterun/misc.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../byterun/../config/m.h \
|
||||
../../byterun/../config/s.h ../../byterun/compatibility.h \
|
||||
../../byterun/mlvalues.h ../../byterun/compatibility.h \
|
||||
../../byterun/config.h ../../byterun/misc.h ../../byterun/backtrace.h \
|
||||
../../byterun/mlvalues.h ../../byterun/callback.h \
|
||||
../../byterun/compatibility.h ../../byterun/mlvalues.h \
|
||||
../../byterun/custom.h ../../byterun/compatibility.h \
|
||||
../../byterun/mlvalues.h ../../byterun/fail.h \
|
||||
../../byterun/compatibility.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/io.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/memory.h \
|
||||
../../byterun/compatibility.h ../../byterun/config.h ../../byterun/gc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/major_gc.h \
|
||||
../../byterun/freelist.h ../../byterun/misc.h ../../byterun/mlvalues.h \
|
||||
../../byterun/misc.h ../../byterun/minor_gc.h ../../byterun/misc.h \
|
||||
../../byterun/misc.h ../../byterun/mlvalues.h ../../byterun/printexc.h \
|
||||
../../byterun/misc.h ../../byterun/mlvalues.h ../../byterun/roots.h \
|
||||
../../byterun/misc.h ../../byterun/memory.h ../../byterun/signals.h \
|
||||
../../byterun/compatibility.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/stacks.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/memory.h ../../byterun/sys.h \
|
||||
../../byterun/misc.h
|
||||
condition.cmi: ./mutex.cmi
|
||||
condition.cmo: ./mutex.cmi condition.cmi
|
||||
condition.cmx: ./mutex.cmx condition.cmi
|
||||
event.cmo: ./mutex.cmi ./condition.cmi event.cmi
|
||||
event.cmx: ./mutex.cmx ./condition.cmx event.cmi
|
||||
mutex.cmo: mutex.cmi
|
||||
mutex.cmx: mutex.cmi
|
||||
thread.cmo: thread.cmi
|
||||
thread.cmx: thread.cmi
|
||||
threadUnix.cmo: thread.cmi threadUnix.cmi
|
||||
threadUnix.cmx: thread.cmx threadUnix.cmi
|
||||
threadUnix.cmo: ./thread.cmi threadUnix.cmi
|
||||
threadUnix.cmx: ./thread.cmx threadUnix.cmi
|
||||
|
|
|
@ -96,7 +96,7 @@ installopt:
|
|||
$(CAMLOPT) -c $(COMPFLAGS) $<
|
||||
|
||||
depend: $(GENFILES)
|
||||
gcc -MM -I../../byterun *.c > .depend
|
||||
-gcc -MM -I../../byterun *.c > .depend
|
||||
../../boot/ocamlrun ../../tools/ocamldep *.mli *.ml >> .depend
|
||||
|
||||
include .depend
|
||||
|
|
|
@ -1,28 +1,42 @@
|
|||
scheduler.o: scheduler.c ../../byterun/alloc.h \
|
||||
../../byterun/compatibility.h ../../byterun/misc.h \
|
||||
../../byterun/config.h ../../config/m.h ../../config/s.h \
|
||||
../../byterun/mlvalues.h ../../byterun/backtrace.h \
|
||||
../../byterun/callback.h ../../byterun/fail.h ../../byterun/io.h \
|
||||
../../byterun/memory.h ../../byterun/gc.h ../../byterun/major_gc.h \
|
||||
../../byterun/freelist.h ../../byterun/minor_gc.h \
|
||||
../../byterun/printexc.h ../../byterun/roots.h ../../byterun/signals.h \
|
||||
../../byterun/stacks.h ../../byterun/sys.h
|
||||
condition.cmi: mutex.cmi
|
||||
thread.cmi: unix.cmi
|
||||
threadUnix.cmi: unix.cmi
|
||||
condition.cmo: thread.cmi mutex.cmi condition.cmi
|
||||
condition.cmx: thread.cmx mutex.cmx condition.cmi
|
||||
event.cmo: mutex.cmi condition.cmi event.cmi
|
||||
event.cmx: mutex.cmx condition.cmx event.cmi
|
||||
marshal.cmo: pervasives.cmi marshal.cmi
|
||||
marshal.cmx: pervasives.cmx marshal.cmi
|
||||
mutex.cmo: thread.cmi mutex.cmi
|
||||
mutex.cmx: thread.cmx mutex.cmi
|
||||
pervasives.cmo: unix.cmi pervasives.cmi
|
||||
pervasives.cmx: unix.cmx pervasives.cmi
|
||||
thread.cmo: unix.cmi thread.cmi
|
||||
thread.cmx: unix.cmx thread.cmi
|
||||
threadUnix.cmo: unix.cmi thread.cmi threadUnix.cmi
|
||||
threadUnix.cmx: unix.cmx thread.cmx threadUnix.cmi
|
||||
../../byterun/compatibility.h ../../byterun/config.h \
|
||||
../../byterun/../config/m.h ../../byterun/../config/s.h \
|
||||
../../byterun/compatibility.h ../../byterun/mlvalues.h \
|
||||
../../byterun/compatibility.h ../../byterun/config.h \
|
||||
../../byterun/misc.h ../../byterun/backtrace.h ../../byterun/mlvalues.h \
|
||||
../../byterun/callback.h ../../byterun/compatibility.h \
|
||||
../../byterun/mlvalues.h ../../byterun/fail.h \
|
||||
../../byterun/compatibility.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/io.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/memory.h \
|
||||
../../byterun/compatibility.h ../../byterun/config.h ../../byterun/gc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/major_gc.h \
|
||||
../../byterun/freelist.h ../../byterun/misc.h ../../byterun/mlvalues.h \
|
||||
../../byterun/misc.h ../../byterun/minor_gc.h ../../byterun/misc.h \
|
||||
../../byterun/misc.h ../../byterun/mlvalues.h ../../byterun/printexc.h \
|
||||
../../byterun/misc.h ../../byterun/mlvalues.h ../../byterun/roots.h \
|
||||
../../byterun/misc.h ../../byterun/memory.h ../../byterun/signals.h \
|
||||
../../byterun/compatibility.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/stacks.h ../../byterun/misc.h \
|
||||
../../byterun/mlvalues.h ../../byterun/memory.h ../../byterun/sys.h \
|
||||
../../byterun/misc.h
|
||||
condition.cmi: ./mutex.cmi
|
||||
thread.cmi: ./unix.cmi
|
||||
threadUnix.cmi: ./unix.cmi
|
||||
condition.cmo: ./thread.cmi ./mutex.cmi condition.cmi
|
||||
condition.cmx: ./thread.cmx ./mutex.cmx condition.cmi
|
||||
event.cmo: ./mutex.cmi ./condition.cmi event.cmi
|
||||
event.cmx: ./mutex.cmx ./condition.cmx event.cmi
|
||||
marshal.cmo: ./pervasives.cmi marshal.cmi
|
||||
marshal.cmx: ./pervasives.cmx marshal.cmi
|
||||
mutex.cmo: ./thread.cmi mutex.cmi
|
||||
mutex.cmx: ./thread.cmx mutex.cmi
|
||||
pervasives.cmo: ./unix.cmi pervasives.cmi
|
||||
pervasives.cmx: ./unix.cmx pervasives.cmi
|
||||
thread.cmo: ./unix.cmi thread.cmi
|
||||
thread.cmx: ./unix.cmx thread.cmi
|
||||
threadUnix.cmo: ./unix.cmi ./thread.cmi threadUnix.cmi
|
||||
threadUnix.cmx: ./unix.cmx ./thread.cmx threadUnix.cmi
|
||||
unix.cmo: unix.cmi
|
||||
unix.cmx: unix.cmi
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -62,7 +62,12 @@ static value alloc_host_entry(struct hostent *entry)
|
|||
|
||||
Begin_roots4 (name, aliases, addr_list, adr);
|
||||
name = copy_string((char *)(entry->h_name));
|
||||
aliases = copy_string_array((const char**)entry->h_aliases);
|
||||
/* PR#4043: protect against buggy implementations of gethostbyname()
|
||||
that return a NULL pointer in h_aliases */
|
||||
if (entry->h_aliases)
|
||||
aliases = copy_string_array((const char**)entry->h_aliases);
|
||||
else
|
||||
aliases = Atom(0);
|
||||
entry_h_length = entry->h_length;
|
||||
#ifdef h_addr
|
||||
addr_list = alloc_array(alloc_one_addr, (const char**)entry->h_addr_list);
|
||||
|
|
184
stdlib/.depend
184
stdlib/.depend
|
@ -1,104 +1,116 @@
|
|||
camlinternalMod.cmi: obj.cmi
|
||||
camlinternalOO.cmi: obj.cmi
|
||||
format.cmi: buffer.cmi
|
||||
genlex.cmi: stream.cmi
|
||||
moreLabels.cmi: set.cmi map.cmi hashtbl.cmi
|
||||
oo.cmi: camlinternalOO.cmi
|
||||
parsing.cmi: obj.cmi lexing.cmi
|
||||
printf.cmi: buffer.cmi
|
||||
random.cmi: nativeint.cmi int64.cmi int32.cmi
|
||||
weak.cmi: hashtbl.cmi
|
||||
arg.cmo: sys.cmi string.cmi printf.cmi list.cmi buffer.cmi array.cmi arg.cmi
|
||||
arg.cmx: sys.cmx string.cmx printf.cmx list.cmx buffer.cmx array.cmx arg.cmi
|
||||
camlinternalMod.cmi: ./obj.cmi
|
||||
camlinternalOO.cmi: ./obj.cmi
|
||||
format.cmi: ./buffer.cmi
|
||||
genlex.cmi: ./stream.cmi
|
||||
moreLabels.cmi: ./set.cmi ./map.cmi ./hashtbl.cmi
|
||||
oo.cmi: ./camlinternalOO.cmi
|
||||
parsing.cmi: ./obj.cmi ./lexing.cmi
|
||||
printf.cmi: ./obj.cmi ./buffer.cmi
|
||||
random.cmi: ./nativeint.cmi ./int64.cmi ./int32.cmi
|
||||
weak.cmi: ./hashtbl.cmi
|
||||
arg.cmo: ./sys.cmi ./string.cmi ./printf.cmi ./list.cmi ./buffer.cmi \
|
||||
./array.cmi arg.cmi
|
||||
arg.cmx: ./sys.cmx ./string.cmx ./printf.cmx ./list.cmx ./buffer.cmx \
|
||||
./array.cmx arg.cmi
|
||||
array.cmo: array.cmi
|
||||
array.cmx: array.cmi
|
||||
arrayLabels.cmo: array.cmi arrayLabels.cmi
|
||||
arrayLabels.cmx: array.cmx arrayLabels.cmi
|
||||
buffer.cmo: sys.cmi string.cmi buffer.cmi
|
||||
buffer.cmx: sys.cmx string.cmx buffer.cmi
|
||||
callback.cmo: obj.cmi callback.cmi
|
||||
callback.cmx: obj.cmx callback.cmi
|
||||
camlinternalMod.cmo: obj.cmi camlinternalOO.cmi array.cmi camlinternalMod.cmi
|
||||
camlinternalMod.cmx: obj.cmx camlinternalOO.cmx array.cmx camlinternalMod.cmi
|
||||
camlinternalOO.cmo: sys.cmi string.cmi obj.cmi map.cmi list.cmi char.cmi \
|
||||
array.cmi camlinternalOO.cmi
|
||||
camlinternalOO.cmx: sys.cmx string.cmx obj.cmx map.cmx list.cmx char.cmx \
|
||||
array.cmx camlinternalOO.cmi
|
||||
arrayLabels.cmo: ./array.cmi arrayLabels.cmi
|
||||
arrayLabels.cmx: ./array.cmx arrayLabels.cmi
|
||||
buffer.cmo: ./sys.cmi ./string.cmi buffer.cmi
|
||||
buffer.cmx: ./sys.cmx ./string.cmx buffer.cmi
|
||||
callback.cmo: ./obj.cmi callback.cmi
|
||||
callback.cmx: ./obj.cmx callback.cmi
|
||||
camlinternalMod.cmo: ./obj.cmi ./camlinternalOO.cmi ./array.cmi \
|
||||
camlinternalMod.cmi
|
||||
camlinternalMod.cmx: ./obj.cmx ./camlinternalOO.cmx ./array.cmx \
|
||||
camlinternalMod.cmi
|
||||
camlinternalOO.cmo: ./sys.cmi ./string.cmi ./obj.cmi ./map.cmi ./list.cmi \
|
||||
./char.cmi ./array.cmi camlinternalOO.cmi
|
||||
camlinternalOO.cmx: ./sys.cmx ./string.cmx ./obj.cmx ./map.cmx ./list.cmx \
|
||||
./char.cmx ./array.cmx camlinternalOO.cmi
|
||||
char.cmo: char.cmi
|
||||
char.cmx: char.cmi
|
||||
complex.cmo: complex.cmi
|
||||
complex.cmx: complex.cmi
|
||||
digest.cmo: string.cmi printf.cmi digest.cmi
|
||||
digest.cmx: string.cmx printf.cmx digest.cmi
|
||||
filename.cmo: sys.cmi string.cmi random.cmi printf.cmi buffer.cmi \
|
||||
digest.cmo: ./string.cmi ./printf.cmi digest.cmi
|
||||
digest.cmx: ./string.cmx ./printf.cmx digest.cmi
|
||||
filename.cmo: ./sys.cmi ./string.cmi ./random.cmi ./printf.cmi ./buffer.cmi \
|
||||
filename.cmi
|
||||
filename.cmx: sys.cmx string.cmx random.cmx printf.cmx buffer.cmx \
|
||||
filename.cmx: ./sys.cmx ./string.cmx ./random.cmx ./printf.cmx ./buffer.cmx \
|
||||
filename.cmi
|
||||
format.cmo: string.cmi printf.cmi obj.cmi list.cmi buffer.cmi format.cmi
|
||||
format.cmx: string.cmx printf.cmx obj.cmx list.cmx buffer.cmx format.cmi
|
||||
gc.cmo: sys.cmi printf.cmi gc.cmi
|
||||
gc.cmx: sys.cmx printf.cmx gc.cmi
|
||||
genlex.cmo: string.cmi stream.cmi list.cmi hashtbl.cmi char.cmi genlex.cmi
|
||||
genlex.cmx: string.cmx stream.cmx list.cmx hashtbl.cmx char.cmx genlex.cmi
|
||||
hashtbl.cmo: sys.cmi array.cmi hashtbl.cmi
|
||||
hashtbl.cmx: sys.cmx array.cmx hashtbl.cmi
|
||||
int32.cmo: pervasives.cmi int32.cmi
|
||||
int32.cmx: pervasives.cmx int32.cmi
|
||||
int64.cmo: pervasives.cmi int64.cmi
|
||||
int64.cmx: pervasives.cmx int64.cmi
|
||||
lazy.cmo: obj.cmi lazy.cmi
|
||||
lazy.cmx: obj.cmx lazy.cmi
|
||||
lexing.cmo: sys.cmi string.cmi array.cmi lexing.cmi
|
||||
lexing.cmx: sys.cmx string.cmx array.cmx lexing.cmi
|
||||
format.cmo: ./string.cmi ./printf.cmi ./obj.cmi ./list.cmi ./buffer.cmi \
|
||||
format.cmi
|
||||
format.cmx: ./string.cmx ./printf.cmx ./obj.cmx ./list.cmx ./buffer.cmx \
|
||||
format.cmi
|
||||
gc.cmo: ./sys.cmi ./printf.cmi gc.cmi
|
||||
gc.cmx: ./sys.cmx ./printf.cmx gc.cmi
|
||||
genlex.cmo: ./string.cmi ./stream.cmi ./list.cmi ./hashtbl.cmi ./char.cmi \
|
||||
genlex.cmi
|
||||
genlex.cmx: ./string.cmx ./stream.cmx ./list.cmx ./hashtbl.cmx ./char.cmx \
|
||||
genlex.cmi
|
||||
hashtbl.cmo: ./sys.cmi ./array.cmi hashtbl.cmi
|
||||
hashtbl.cmx: ./sys.cmx ./array.cmx hashtbl.cmi
|
||||
int32.cmo: ./pervasives.cmi int32.cmi
|
||||
int32.cmx: ./pervasives.cmx int32.cmi
|
||||
int64.cmo: ./pervasives.cmi int64.cmi
|
||||
int64.cmx: ./pervasives.cmx int64.cmi
|
||||
lazy.cmo: ./obj.cmi lazy.cmi
|
||||
lazy.cmx: ./obj.cmx lazy.cmi
|
||||
lexing.cmo: ./sys.cmi ./string.cmi ./array.cmi lexing.cmi
|
||||
lexing.cmx: ./sys.cmx ./string.cmx ./array.cmx lexing.cmi
|
||||
list.cmo: list.cmi
|
||||
list.cmx: list.cmi
|
||||
listLabels.cmo: list.cmi listLabels.cmi
|
||||
listLabels.cmx: list.cmx listLabels.cmi
|
||||
listLabels.cmo: ./list.cmi listLabels.cmi
|
||||
listLabels.cmx: ./list.cmx listLabels.cmi
|
||||
map.cmo: map.cmi
|
||||
map.cmx: map.cmi
|
||||
marshal.cmo: string.cmi marshal.cmi
|
||||
marshal.cmx: string.cmx marshal.cmi
|
||||
moreLabels.cmo: set.cmi map.cmi hashtbl.cmi moreLabels.cmi
|
||||
moreLabels.cmx: set.cmx map.cmx hashtbl.cmx moreLabels.cmi
|
||||
nativeint.cmo: sys.cmi pervasives.cmi nativeint.cmi
|
||||
nativeint.cmx: sys.cmx pervasives.cmx nativeint.cmi
|
||||
obj.cmo: marshal.cmi obj.cmi
|
||||
obj.cmx: marshal.cmx obj.cmi
|
||||
oo.cmo: camlinternalOO.cmi oo.cmi
|
||||
oo.cmx: camlinternalOO.cmx oo.cmi
|
||||
parsing.cmo: obj.cmi lexing.cmi array.cmi parsing.cmi
|
||||
parsing.cmx: obj.cmx lexing.cmx array.cmx parsing.cmi
|
||||
marshal.cmo: ./string.cmi marshal.cmi
|
||||
marshal.cmx: ./string.cmx marshal.cmi
|
||||
moreLabels.cmo: ./set.cmi ./map.cmi ./hashtbl.cmi moreLabels.cmi
|
||||
moreLabels.cmx: ./set.cmx ./map.cmx ./hashtbl.cmx moreLabels.cmi
|
||||
nativeint.cmo: ./sys.cmi ./pervasives.cmi nativeint.cmi
|
||||
nativeint.cmx: ./sys.cmx ./pervasives.cmx nativeint.cmi
|
||||
obj.cmo: ./marshal.cmi obj.cmi
|
||||
obj.cmx: ./marshal.cmx obj.cmi
|
||||
oo.cmo: ./camlinternalOO.cmi oo.cmi
|
||||
oo.cmx: ./camlinternalOO.cmx oo.cmi
|
||||
parsing.cmo: ./obj.cmi ./lexing.cmi ./array.cmi parsing.cmi
|
||||
parsing.cmx: ./obj.cmx ./lexing.cmx ./array.cmx parsing.cmi
|
||||
pervasives.cmo: pervasives.cmi
|
||||
pervasives.cmx: pervasives.cmi
|
||||
printexc.cmo: printf.cmi obj.cmi printexc.cmi
|
||||
printexc.cmx: printf.cmx obj.cmx printexc.cmi
|
||||
printf.cmo: string.cmi obj.cmi list.cmi char.cmi buffer.cmi printf.cmi
|
||||
printf.cmx: string.cmx obj.cmx list.cmx char.cmx buffer.cmx printf.cmi
|
||||
queue.cmo: obj.cmi queue.cmi
|
||||
queue.cmx: obj.cmx queue.cmi
|
||||
random.cmo: string.cmi pervasives.cmi nativeint.cmi int64.cmi int32.cmi \
|
||||
digest.cmi char.cmi array.cmi random.cmi
|
||||
random.cmx: string.cmx pervasives.cmx nativeint.cmx int64.cmx int32.cmx \
|
||||
digest.cmx char.cmx array.cmx random.cmi
|
||||
scanf.cmo: string.cmi printf.cmi obj.cmi list.cmi hashtbl.cmi buffer.cmi \
|
||||
scanf.cmi
|
||||
scanf.cmx: string.cmx printf.cmx obj.cmx list.cmx hashtbl.cmx buffer.cmx \
|
||||
scanf.cmi
|
||||
printexc.cmo: ./printf.cmi ./obj.cmi printexc.cmi
|
||||
printexc.cmx: ./printf.cmx ./obj.cmx printexc.cmi
|
||||
printf.cmo: ./string.cmi ./obj.cmi ./list.cmi ./char.cmi ./buffer.cmi \
|
||||
./array.cmi printf.cmi
|
||||
printf.cmx: ./string.cmx ./obj.cmx ./list.cmx ./char.cmx ./buffer.cmx \
|
||||
./array.cmx printf.cmi
|
||||
queue.cmo: ./obj.cmi queue.cmi
|
||||
queue.cmx: ./obj.cmx queue.cmi
|
||||
random.cmo: ./string.cmi ./pervasives.cmi ./nativeint.cmi ./int64.cmi \
|
||||
./int32.cmi ./digest.cmi ./char.cmi ./array.cmi random.cmi
|
||||
random.cmx: ./string.cmx ./pervasives.cmx ./nativeint.cmx ./int64.cmx \
|
||||
./int32.cmx ./digest.cmx ./char.cmx ./array.cmx random.cmi
|
||||
scanf.cmo: ./string.cmi ./printf.cmi ./obj.cmi ./list.cmi ./hashtbl.cmi \
|
||||
./buffer.cmi scanf.cmi
|
||||
scanf.cmx: ./string.cmx ./printf.cmx ./obj.cmx ./list.cmx ./hashtbl.cmx \
|
||||
./buffer.cmx scanf.cmi
|
||||
set.cmo: set.cmi
|
||||
set.cmx: set.cmi
|
||||
sort.cmo: array.cmi sort.cmi
|
||||
sort.cmx: array.cmx sort.cmi
|
||||
stack.cmo: list.cmi stack.cmi
|
||||
stack.cmx: list.cmx stack.cmi
|
||||
stdLabels.cmo: stringLabels.cmi listLabels.cmi arrayLabels.cmi stdLabels.cmi
|
||||
stdLabels.cmx: stringLabels.cmx listLabels.cmx arrayLabels.cmx stdLabels.cmi
|
||||
stream.cmo: string.cmi obj.cmi list.cmi stream.cmi
|
||||
stream.cmx: string.cmx obj.cmx list.cmx stream.cmi
|
||||
string.cmo: pervasives.cmi list.cmi char.cmi string.cmi
|
||||
string.cmx: pervasives.cmx list.cmx char.cmx string.cmi
|
||||
stringLabels.cmo: string.cmi stringLabels.cmi
|
||||
stringLabels.cmx: string.cmx stringLabels.cmi
|
||||
sort.cmo: ./array.cmi sort.cmi
|
||||
sort.cmx: ./array.cmx sort.cmi
|
||||
stack.cmo: ./list.cmi stack.cmi
|
||||
stack.cmx: ./list.cmx stack.cmi
|
||||
stdLabels.cmo: ./stringLabels.cmi ./listLabels.cmi ./arrayLabels.cmi \
|
||||
stdLabels.cmi
|
||||
stdLabels.cmx: ./stringLabels.cmx ./listLabels.cmx ./arrayLabels.cmx \
|
||||
stdLabels.cmi
|
||||
stream.cmo: ./string.cmi ./obj.cmi ./list.cmi stream.cmi
|
||||
stream.cmx: ./string.cmx ./obj.cmx ./list.cmx stream.cmi
|
||||
string.cmo: ./pervasives.cmi ./list.cmi ./char.cmi string.cmi
|
||||
string.cmx: ./pervasives.cmx ./list.cmx ./char.cmx string.cmi
|
||||
stringLabels.cmo: ./string.cmi stringLabels.cmi
|
||||
stringLabels.cmx: ./string.cmx stringLabels.cmi
|
||||
sys.cmo: sys.cmi
|
||||
sys.cmx: sys.cmi
|
||||
weak.cmo: sys.cmi obj.cmi hashtbl.cmi array.cmi weak.cmi
|
||||
weak.cmx: sys.cmx obj.cmx hashtbl.cmx array.cmx weak.cmi
|
||||
weak.cmo: ./sys.cmi ./obj.cmi ./hashtbl.cmi ./array.cmi weak.cmi
|
||||
weak.cmx: ./sys.cmx ./obj.cmx ./hashtbl.cmx ./array.cmx weak.cmi
|
||||
|
|
|
@ -45,7 +45,7 @@ let rec update_mod shape o n =
|
|||
match shape with
|
||||
| Function ->
|
||||
if Obj.tag n = Obj.closure_tag && Obj.size n <= Obj.size o
|
||||
then overwrite o n
|
||||
then begin overwrite o n; Obj.truncate o (Obj.size n) (* PR #4008 *) end
|
||||
else overwrite o (Obj.repr (fun x -> (Obj.obj n : _ -> _) x))
|
||||
| Lazy ->
|
||||
assert (Obj.tag n = Obj.lazy_tag);
|
||||
|
|
|
@ -78,4 +78,4 @@ let catch_break on =
|
|||
|
||||
(* OCaml version string, must be in the format described in sys.mli. *)
|
||||
|
||||
let ocaml_version = "3.10+dev8 (2006-06-26)";;
|
||||
let ocaml_version = "3.10+dev9 (2006-09-18)";;
|
||||
|
|
|
@ -11,39 +11,41 @@ dumpapprox.cmo: ../utils/config.cmi ../asmcomp/compilenv.cmi \
|
|||
../asmcomp/clambda.cmi
|
||||
dumpapprox.cmx: ../utils/config.cmx ../asmcomp/compilenv.cmx \
|
||||
../asmcomp/clambda.cmx
|
||||
dumpobj.cmo: ../utils/tbl.cmi opnames.cmo ../bytecomp/opcodes.cmo \
|
||||
../bytecomp/lambda.cmi ../bytecomp/instruct.cmi ../typing/ident.cmi \
|
||||
../bytecomp/emitcode.cmi ../utils/config.cmi ../bytecomp/bytesections.cmi \
|
||||
dumpobj.cmo: ../utils/tbl.cmi ./opnames.cmo ../bytecomp/opcodes.cmo \
|
||||
../parsing/location.cmi ../bytecomp/lambda.cmi ../bytecomp/instruct.cmi \
|
||||
../typing/ident.cmi ../bytecomp/emitcode.cmi ../utils/config.cmi \
|
||||
../bytecomp/cmo_format.cmi ../bytecomp/bytesections.cmi \
|
||||
../parsing/asttypes.cmi
|
||||
dumpobj.cmx: ../utils/tbl.cmx opnames.cmx ../bytecomp/opcodes.cmx \
|
||||
../bytecomp/lambda.cmx ../bytecomp/instruct.cmx ../typing/ident.cmx \
|
||||
../bytecomp/emitcode.cmx ../utils/config.cmx ../bytecomp/bytesections.cmx \
|
||||
dumpobj.cmx: ../utils/tbl.cmx ./opnames.cmx ../bytecomp/opcodes.cmx \
|
||||
../parsing/location.cmx ../bytecomp/lambda.cmx ../bytecomp/instruct.cmx \
|
||||
../typing/ident.cmx ../bytecomp/emitcode.cmx ../utils/config.cmx \
|
||||
../bytecomp/cmo_format.cmi ../bytecomp/bytesections.cmx \
|
||||
../parsing/asttypes.cmi
|
||||
lexer301.cmo: ../utils/warnings.cmi ../utils/misc.cmi ../parsing/location.cmi
|
||||
lexer301.cmx: ../utils/warnings.cmx ../utils/misc.cmx ../parsing/location.cmx
|
||||
objinfo.cmo: ../bytecomp/emitcode.cmi ../utils/config.cmi
|
||||
objinfo.cmx: ../bytecomp/emitcode.cmx ../utils/config.cmx
|
||||
objinfo.cmo: ../utils/config.cmi ../bytecomp/cmo_format.cmi
|
||||
objinfo.cmx: ../utils/config.cmx ../bytecomp/cmo_format.cmi
|
||||
ocamlcp.cmo: ../driver/main_args.cmi
|
||||
ocamlcp.cmx: ../driver/main_args.cmx
|
||||
ocamldep.cmo: ../parsing/syntaxerr.cmi ../parsing/parsetree.cmi \
|
||||
../parsing/parse.cmi ../utils/misc.cmi ../parsing/longident.cmi \
|
||||
../parsing/location.cmi ../parsing/lexer.cmi depend.cmi \
|
||||
../utils/config.cmi ../utils/clflags.cmo
|
||||
../parsing/location.cmi ../parsing/lexer.cmi ./depend.cmi \
|
||||
../utils/config.cmi ../utils/clflags.cmi
|
||||
ocamldep.cmx: ../parsing/syntaxerr.cmx ../parsing/parsetree.cmi \
|
||||
../parsing/parse.cmx ../utils/misc.cmx ../parsing/longident.cmx \
|
||||
../parsing/location.cmx ../parsing/lexer.cmx depend.cmx \
|
||||
../parsing/location.cmx ../parsing/lexer.cmx ./depend.cmx \
|
||||
../utils/config.cmx ../utils/clflags.cmx
|
||||
ocamlmktop.cmo: ../utils/ccomp.cmi
|
||||
ocamlmktop.cmx: ../utils/ccomp.cmx
|
||||
ocamlprof.cmo: ../parsing/syntaxerr.cmi ../parsing/parsetree.cmi \
|
||||
../parsing/parse.cmi ../utils/misc.cmi ../parsing/location.cmi \
|
||||
../parsing/lexer.cmi ../utils/config.cmi ../utils/clflags.cmo
|
||||
../parsing/lexer.cmi ../utils/config.cmi ../utils/clflags.cmi
|
||||
ocamlprof.cmx: ../parsing/syntaxerr.cmx ../parsing/parsetree.cmi \
|
||||
../parsing/parse.cmx ../utils/misc.cmx ../parsing/location.cmx \
|
||||
../parsing/lexer.cmx ../utils/config.cmx ../utils/clflags.cmx
|
||||
primreq.cmo: ../bytecomp/emitcode.cmi ../utils/config.cmi
|
||||
primreq.cmx: ../bytecomp/emitcode.cmx ../utils/config.cmx
|
||||
primreq.cmo: ../utils/config.cmi ../bytecomp/cmo_format.cmi
|
||||
primreq.cmx: ../utils/config.cmx ../bytecomp/cmo_format.cmi
|
||||
profiling.cmo: profiling.cmi
|
||||
profiling.cmx: profiling.cmi
|
||||
scrapelabels.cmo: lexer301.cmo
|
||||
scrapelabels.cmx: lexer301.cmx
|
||||
scrapelabels.cmo: ./lexer301.cmo
|
||||
scrapelabels.cmx: ./lexer301.cmx
|
||||
|
|
|
@ -195,7 +195,9 @@ clean::
|
|||
rm -f dumpobj
|
||||
|
||||
opnames.ml: ../byterun/instruct.h
|
||||
unset LC_ALL LC_CTYPE LC_COLLATE LANG; \
|
||||
unset LC_ALL || : ; \
|
||||
unset LC_CTYPE || : ; \
|
||||
unset LC_COLLATE LANG || : ; \
|
||||
sed -e '/\/\*/d' \
|
||||
-e '/^#/d' \
|
||||
-e 's/enum \(.*\) {/let names_of_\1 = [|/' \
|
||||
|
|
|
@ -66,7 +66,7 @@ let find_dependency modname (byt_deps, opt_deps) =
|
|||
try
|
||||
let filename = find_file (modname ^ ".mli") in
|
||||
let basename = Filename.chop_suffix filename ".mli" in
|
||||
let optname =
|
||||
let optname =
|
||||
if Sys.file_exists (basename ^ ".ml")
|
||||
then basename ^ ".cmx"
|
||||
else basename ^ ".cmi" in
|
||||
|
|
|
@ -100,7 +100,7 @@ let special_id = ref ""
|
|||
let add_val_counter (kind,pos) =
|
||||
if kind = Open then begin
|
||||
copy pos;
|
||||
fprintf !outchan "(* %s%d *) " !special_id !counters.(!prof_counter);
|
||||
fprintf !outchan "(* %s%d *) " !special_id !counters.(!prof_counter);
|
||||
incr prof_counter;
|
||||
end
|
||||
;;
|
||||
|
@ -129,7 +129,7 @@ let init_rewrite modes mod_name =
|
|||
fprintf !outchan "module %sProfiling = Profiling;; " modprefix;
|
||||
fprintf !outchan "let %s%s_cnt = Array.create 000000000" idprefix mod_name;
|
||||
pos_len := pos_out !outchan;
|
||||
fprintf !outchan
|
||||
fprintf !outchan
|
||||
" 0;; Profiling.counters := \
|
||||
(\"%s\", (\"%s\", %s%s_cnt)) :: !Profiling.counters;; "
|
||||
mod_name modes idprefix mod_name;
|
||||
|
@ -235,7 +235,7 @@ and rw_exp iflag sexp =
|
|||
rewrite_exp iflag scond;
|
||||
rewrite_ifbody iflag sexp.pexp_loc.loc_ghost sifso;
|
||||
rewrite_ifbody iflag sexp.pexp_loc.loc_ghost sifnot
|
||||
|
||||
|
||||
| Pexp_sequence(sexp1, sexp2) ->
|
||||
rewrite_exp iflag sexp1;
|
||||
rewrite_exp iflag sexp2
|
||||
|
@ -296,7 +296,7 @@ and rewrite_annotate_exp_list l =
|
|||
List.iter
|
||||
(function
|
||||
| {pexp_desc = Pexp_when(scond, sbody)}
|
||||
-> insert_profile rw_exp scond;
|
||||
-> insert_profile rw_exp scond;
|
||||
insert_profile rw_exp sbody;
|
||||
| {pexp_desc = Pexp_constraint(sbody, _, _)} (* let f x : t = e *)
|
||||
-> insert_profile rw_exp sbody
|
||||
|
@ -307,7 +307,7 @@ and rewrite_function iflag = function
|
|||
| [spat, ({pexp_desc = Pexp_function _} as sexp)] -> rewrite_exp iflag sexp
|
||||
| l -> rewrite_funmatching l
|
||||
|
||||
and rewrite_funmatching l =
|
||||
and rewrite_funmatching l =
|
||||
rewrite_annotate_exp_list (List.map snd l)
|
||||
|
||||
and rewrite_trymatching l =
|
||||
|
@ -449,6 +449,11 @@ open Format
|
|||
|
||||
let usage = "Usage: ocamlprof <options> <files>\noptions are:"
|
||||
|
||||
let print_version () =
|
||||
printf "ocamlprof, version %s@." Sys.ocaml_version;
|
||||
exit 0;
|
||||
;;
|
||||
|
||||
let main () =
|
||||
try
|
||||
Arg.parse [
|
||||
|
@ -461,7 +466,9 @@ let main () =
|
|||
"-instrument", Arg.Set instr_mode, " (undocumented)";
|
||||
"-intf", Arg.String process_intf_file,
|
||||
"<file> Process <file> as a .mli file";
|
||||
"-m", Arg.String (fun s -> modes := s), "<flags> (undocumented)"
|
||||
"-m", Arg.String (fun s -> modes := s), "<flags> (undocumented)";
|
||||
"-version", Arg.Unit print_version,
|
||||
" Print version and exit";
|
||||
] process_anon_file usage;
|
||||
exit 0
|
||||
with x ->
|
||||
|
|
101
typing/ctype.ml
101
typing/ctype.ml
|
@ -791,14 +791,14 @@ let rec copy ty =
|
|||
let keep = more.level <> generic_level in
|
||||
let more' =
|
||||
match more.desc with
|
||||
Tsubst ty -> ty
|
||||
| Tconstr _ ->
|
||||
if keep then save_desc more more.desc;
|
||||
copy more
|
||||
Tsubst ty -> ty
|
||||
| Tconstr _ ->
|
||||
if keep then save_desc more more.desc;
|
||||
copy more
|
||||
| Tvar | Tunivar ->
|
||||
save_desc more more.desc;
|
||||
if keep then more else newty more.desc
|
||||
| _ -> assert false
|
||||
| _ -> assert false
|
||||
in
|
||||
(* Register new type first for recursion *)
|
||||
more.desc <- Tsubst(newgenty(Ttuple[more';t]));
|
||||
|
@ -928,7 +928,7 @@ let delayed_copy = ref []
|
|||
let rec copy_sep fixed free bound visited ty =
|
||||
let ty = repr ty in
|
||||
let univars = free ty in
|
||||
if TypeSet.is_empty univars then
|
||||
if TypeSet.is_empty univars then
|
||||
if ty.level <> generic_level then ty else
|
||||
let t = newvar () in
|
||||
delayed_copy :=
|
||||
|
@ -1040,7 +1040,7 @@ let apply env params body args =
|
|||
(* Abbreviation expansion *)
|
||||
(****************************)
|
||||
|
||||
(*
|
||||
(*
|
||||
If the environnement has changed, memorized expansions might not
|
||||
be correct anymore, and so we flush the cache. This is safe but
|
||||
quite pessimistic: it would be enough to flush the cache when a
|
||||
|
@ -1054,7 +1054,7 @@ let check_abbrev_env env =
|
|||
end
|
||||
|
||||
(* Expand an abbreviation. The expansion is memorized. *)
|
||||
(*
|
||||
(*
|
||||
Assume the level is greater than the path binding time of the
|
||||
expanded abbreviation.
|
||||
*)
|
||||
|
@ -1105,6 +1105,13 @@ let expand_abbrev env ty =
|
|||
| _ ->
|
||||
assert false
|
||||
|
||||
let safe_abbrev env ty =
|
||||
let snap = Btype.snapshot () in
|
||||
try ignore (expand_abbrev env ty); true
|
||||
with Cannot_expand | Unify _ ->
|
||||
Btype.backtrack snap;
|
||||
false
|
||||
|
||||
(* Fully expand the head of a type.
|
||||
Raise Cannot_expand if the type cannot be expanded.
|
||||
May raise Unify, if a recursion was hidden in the type. *)
|
||||
|
@ -1128,7 +1135,10 @@ let expand_head_once env ty =
|
|||
try expand_abbrev env (repr ty) with Cannot_expand -> assert false
|
||||
|
||||
(* Fully expand the head of a type. *)
|
||||
let rec expand_head env ty =
|
||||
let expand_head_unif env ty =
|
||||
try try_expand_head env ty with Cannot_expand -> repr ty
|
||||
|
||||
let expand_head env ty =
|
||||
let snap = Btype.snapshot () in
|
||||
try try_expand_head env ty
|
||||
with Cannot_expand | Unify _ -> (* expand_head shall never fail *)
|
||||
|
@ -1328,7 +1338,7 @@ let occur_univar env ty =
|
|||
with exn ->
|
||||
unmark_type ty; raise exn
|
||||
|
||||
(* Grouping univars by families according to their binders *)
|
||||
(* Grouping univars by families according to their binders *)
|
||||
let add_univars =
|
||||
List.fold_left (fun s (t,_) -> TypeSet.add (repr t) s)
|
||||
|
||||
|
@ -1506,8 +1516,8 @@ let rec unify env t1 t2 =
|
|||
and unify2 env t1 t2 =
|
||||
(* Second step: expansion of abbreviations *)
|
||||
let rec expand_both t1'' t2'' =
|
||||
let t1' = expand_head env t1 in
|
||||
let t2' = expand_head env t2 in
|
||||
let t1' = expand_head_unif env t1 in
|
||||
let t2' = expand_head_unif env t2 in
|
||||
(* Expansion may have changed the representative of the types... *)
|
||||
if t1' == t1'' && t2' == t2'' then (t1',t2') else
|
||||
expand_both t1' t2'
|
||||
|
@ -1526,7 +1536,7 @@ and unify3 env t1 t1' t2 t2' =
|
|||
(* Third step: truly unification *)
|
||||
(* Assumes either [t1 == t1'] or [t2 != t2'] *)
|
||||
let d1 = t1'.desc and d2 = t2'.desc in
|
||||
|
||||
|
||||
let create_recursion = (t2 != t2') && (deep_occur t1' t2) in
|
||||
occur env t1' t2;
|
||||
update_level env t1'.level t2;
|
||||
|
@ -1600,7 +1610,7 @@ and unify3 env t1 t1' t2 t2' =
|
|||
match t2.desc with
|
||||
Tconstr (p, tl, abbrev) ->
|
||||
forget_abbrev abbrev p;
|
||||
let t2'' = expand_head env t2 in
|
||||
let t2'' = expand_head_unif env t2 in
|
||||
if not (closed_parameterized_type tl t2'') then
|
||||
link_type (repr t2) (repr t2')
|
||||
| _ ->
|
||||
|
@ -1608,7 +1618,7 @@ and unify3 env t1 t1' t2 t2' =
|
|||
end
|
||||
|
||||
(*
|
||||
(*
|
||||
(*
|
||||
Can only be done afterwards, once the row variable has
|
||||
(possibly) been instantiated.
|
||||
*)
|
||||
|
@ -1684,13 +1694,15 @@ and unify_row env row1 row2 =
|
|||
let rm1 = row_more row1 and rm2 = row_more row2 in
|
||||
if rm1 == rm2 then () else
|
||||
let r1, r2, pairs = merge_row_fields row1.row_fields row2.row_fields in
|
||||
ignore (List.fold_left
|
||||
(fun hl l ->
|
||||
let h = hash_variant l in
|
||||
try raise(Tags(l,List.assoc h hl))
|
||||
with Not_found -> (h,l)::hl)
|
||||
(List.map (fun (l,_) -> (hash_variant l, l)) row1.row_fields)
|
||||
(List.map fst r2));
|
||||
if r1 <> [] && r2 <> [] then begin
|
||||
let ht = Hashtbl.create (List.length r1) in
|
||||
List.iter (fun (l,_) -> Hashtbl.add ht (hash_variant l) l) r1;
|
||||
List.iter
|
||||
(fun (l,_) ->
|
||||
try raise (Tags(l, Hashtbl.find ht (hash_variant l)))
|
||||
with Not_found -> ())
|
||||
r2
|
||||
end;
|
||||
let more =
|
||||
if row1.row_fixed then rm1 else
|
||||
if row2.row_fixed then rm2 else
|
||||
|
@ -1804,7 +1816,7 @@ and unify_row_field env fixed1 fixed2 l f1 f2 =
|
|||
| Rpresent None, Reither(true, [], _, e2) when not fixed2 ->
|
||||
set_row_field e2 f1
|
||||
| _ -> raise (Unify [])
|
||||
|
||||
|
||||
|
||||
let unify env ty1 ty2 =
|
||||
try
|
||||
|
@ -1847,7 +1859,7 @@ let unify env ty1 ty2 =
|
|||
(2) the original label is not optional
|
||||
*)
|
||||
let rec filter_arrow env t l =
|
||||
let t = expand_head env t in
|
||||
let t = expand_head_unif env t in
|
||||
match t.desc with
|
||||
Tvar ->
|
||||
let t1 = newvar () and t2 = newvar () in
|
||||
|
@ -1890,7 +1902,7 @@ let rec filter_method_field env name priv ty =
|
|||
|
||||
(* Unify [ty] and [< name : 'a; .. >]. Return ['a]. *)
|
||||
let rec filter_method env name priv ty =
|
||||
let ty = expand_head env ty in
|
||||
let ty = expand_head_unif env ty in
|
||||
match ty.desc with
|
||||
Tvar ->
|
||||
let ty1 = newvar () in
|
||||
|
@ -1924,7 +1936,7 @@ let filter_self_method env lab priv meths ty =
|
|||
Update the level of [ty]. First check that the levels of generic
|
||||
variables from the subject are not lowered.
|
||||
*)
|
||||
let moregen_occur env level ty =
|
||||
let moregen_occur env level ty =
|
||||
let rec occur ty =
|
||||
let ty = repr ty in
|
||||
if ty.level > level then begin
|
||||
|
@ -1964,8 +1976,8 @@ let rec moregen inst_nongen type_pairs env t1 t2 =
|
|||
| (Tconstr (p1, [], _), Tconstr (p2, [], _)) when Path.same p1 p2 ->
|
||||
()
|
||||
| _ ->
|
||||
let t1' = expand_head env t1 in
|
||||
let t2' = expand_head env t2 in
|
||||
let t1' = expand_head_unif env t1 in
|
||||
let t2' = expand_head_unif env t2 in
|
||||
(* Expansion may have changed the representative of the types... *)
|
||||
let t1' = repr t1' and t2' = repr t2' in
|
||||
if t1' == t2' then () else
|
||||
|
@ -2043,7 +2055,7 @@ and moregen_row inst_nongen type_pairs env row1 row2 =
|
|||
filter_row_fields true r1, filter_row_fields false r2
|
||||
else r1, r2
|
||||
in
|
||||
if r1 <> [] || row1.row_closed && (not row2.row_closed || r2 <> [])
|
||||
if r1 <> [] || row1.row_closed && (not row2.row_closed || r2 <> [])
|
||||
then raise (Unify []);
|
||||
let rm1 = repr row1.row_more and rm2 = repr row2.row_more in
|
||||
let univ =
|
||||
|
@ -2211,8 +2223,8 @@ let rec eqtype rename type_pairs subst env t1 t2 =
|
|||
| (Tconstr (p1, [], _), Tconstr (p2, [], _)) when Path.same p1 p2 ->
|
||||
()
|
||||
| _ ->
|
||||
let t1' = expand_head env t1 in
|
||||
let t2' = expand_head env t2 in
|
||||
let t1' = expand_head_unif env t1 in
|
||||
let t2' = expand_head_unif env t2 in
|
||||
(* Expansion may have changed the representative of the types... *)
|
||||
let t1' = repr t1' and t2' = repr t2' in
|
||||
if t1' == t2' then () else
|
||||
|
@ -2325,7 +2337,7 @@ and eqtype_row rename type_pairs subst env row1 row2 =
|
|||
| Rabsent, Rabsent -> ()
|
||||
| _ -> raise (Unify []))
|
||||
pairs
|
||||
|
||||
|
||||
(* Two modes: with or without renaming of variables *)
|
||||
let equal env rename tyl1 tyl2 =
|
||||
try
|
||||
|
@ -2334,7 +2346,7 @@ let equal env rename tyl1 tyl2 =
|
|||
with
|
||||
Unify _ -> false
|
||||
|
||||
(* Must empty univar_pairs first *)
|
||||
(* Must empty univar_pairs first *)
|
||||
let eqtype rename type_pairs subst env t1 t2 =
|
||||
univar_pairs := [];
|
||||
eqtype rename type_pairs subst env t1 t2
|
||||
|
@ -2719,7 +2731,8 @@ let rec build_subtype env visited loops posi level t =
|
|||
if c > Unchanged then (newty (Ttuple (List.map fst tlist')), c)
|
||||
else (t, Unchanged)
|
||||
| Tconstr(p, tl, abbrev)
|
||||
when level > 0 && generic_abbrev env p && not (has_constr_row' env t) ->
|
||||
when level > 0 && generic_abbrev env p && safe_abbrev env t
|
||||
&& not (has_constr_row' env t) ->
|
||||
let t' = repr (expand_abbrev env t) in
|
||||
let level' = pred_expand level in
|
||||
begin try match t'.desc with
|
||||
|
@ -2759,7 +2772,8 @@ let rec build_subtype env visited loops posi level t =
|
|||
let visited = t :: visited in
|
||||
begin try
|
||||
let decl = Env.find_type p env in
|
||||
if level = 0 && generic_abbrev env p && not (has_constr_row' env t)
|
||||
if level = 0 && generic_abbrev env p && safe_abbrev env t
|
||||
&& not (has_constr_row' env t)
|
||||
then warn := true;
|
||||
let tl' =
|
||||
List.map2
|
||||
|
@ -2873,7 +2887,7 @@ let rec subtype_rec env trace t1 t2 cstrs =
|
|||
let t1 = repr t1 in
|
||||
let t2 = repr t2 in
|
||||
if t1 == t2 then cstrs else
|
||||
|
||||
|
||||
begin try
|
||||
TypePairs.find subtypes (t1, t2);
|
||||
cstrs
|
||||
|
@ -2890,9 +2904,11 @@ let rec subtype_rec env trace t1 t2 cstrs =
|
|||
subtype_list env trace tl1 tl2 cstrs
|
||||
| (Tconstr(p1, [], _), Tconstr(p2, [], _)) when Path.same p1 p2 ->
|
||||
cstrs
|
||||
| (Tconstr(p1, tl1, abbrev1), _) when generic_abbrev env p1 ->
|
||||
| (Tconstr(p1, tl1, abbrev1), _)
|
||||
when generic_abbrev env p1 && safe_abbrev env t1 ->
|
||||
subtype_rec env trace (expand_abbrev env t1) t2 cstrs
|
||||
| (_, Tconstr(p2, tl2, abbrev2)) when generic_abbrev env p2 ->
|
||||
| (_, Tconstr(p2, tl2, abbrev2))
|
||||
when generic_abbrev env p2 && safe_abbrev env t2 ->
|
||||
subtype_rec env trace t1 (expand_abbrev env t2) cstrs
|
||||
| (Tconstr(p1, tl1, _), Tconstr(p2, tl2, _)) when Path.same p1 p2 ->
|
||||
begin try
|
||||
|
@ -2902,7 +2918,7 @@ let rec subtype_rec env trace t1 t2 cstrs =
|
|||
if co then
|
||||
if cn then
|
||||
(trace, newty2 t1.level (Ttuple[t1]),
|
||||
newty2 t2.level (Ttuple[t2]), !univar_pairs) :: cstrs
|
||||
newty2 t2.level (Ttuple[t2]), !univar_pairs) :: cstrs
|
||||
else subtype_rec env ((t1, t2)::trace) t1 t2 cstrs
|
||||
else
|
||||
if cn then subtype_rec env ((t2, t1)::trace) t2 t1 cstrs
|
||||
|
@ -3082,8 +3098,9 @@ let cyclic_abbrev env id ty =
|
|||
p = Path.Pident id || List.memq ty seen ||
|
||||
begin try
|
||||
check_cycle (ty :: seen) (expand_abbrev env ty)
|
||||
with Cannot_expand ->
|
||||
false
|
||||
with
|
||||
Cannot_expand -> false
|
||||
| Unify _ -> true
|
||||
end
|
||||
| _ ->
|
||||
false
|
||||
|
@ -3151,7 +3168,7 @@ let rec normalize_type_rec env ty =
|
|||
let normalize_type env ty =
|
||||
normalize_type_rec env ty;
|
||||
unmark_type ty
|
||||
|
||||
|
||||
|
||||
(*************************)
|
||||
(* Remove dependencies *)
|
||||
|
|
|
@ -35,6 +35,7 @@ type error =
|
|||
| Class_declarations of
|
||||
Ident.t * class_declaration * class_declaration *
|
||||
Ctype.class_match_failure list
|
||||
| Unbound_modtype_path of Path.t
|
||||
|
||||
exception Error of error list
|
||||
|
||||
|
@ -89,7 +90,7 @@ let expand_module_path env path =
|
|||
try
|
||||
Env.find_modtype_expansion path env
|
||||
with Not_found ->
|
||||
raise Dont_match
|
||||
raise(Error[Unbound_modtype_path path])
|
||||
|
||||
(* Extract name, kind and ident from a signature item *)
|
||||
|
||||
|
@ -377,6 +378,8 @@ let include_err ppf = function
|
|||
(Printtyp.class_declaration id) d1
|
||||
(Printtyp.class_declaration id) d2
|
||||
Includeclass.report_error reason
|
||||
| Unbound_modtype_path path ->
|
||||
fprintf ppf "Unbound module type %a" Printtyp.path path
|
||||
|
||||
let report_error ppf = function
|
||||
| [] -> ()
|
||||
|
|
|
@ -40,6 +40,7 @@ type error =
|
|||
| Class_declarations of
|
||||
Ident.t * class_declaration * class_declaration *
|
||||
Ctype.class_match_failure list
|
||||
| Unbound_modtype_path of Path.t
|
||||
|
||||
exception Error of error list
|
||||
|
||||
|
|
|
@ -89,21 +89,21 @@ let merge_constraint initial_env loc sg lid constr =
|
|||
| (Tsig_type(id, decl, rs) :: rem, [s],
|
||||
Pwith_type ({ptype_kind = Ptype_private} as sdecl))
|
||||
when Ident.name id = s ->
|
||||
let decl_row =
|
||||
{ type_params =
|
||||
List.map (fun _ -> Btype.newgenvar()) sdecl.ptype_params;
|
||||
type_arity = List.length sdecl.ptype_params;
|
||||
type_kind = Type_abstract;
|
||||
type_manifest = None;
|
||||
type_variance =
|
||||
List.map (fun (c,n) -> (not n, not c, not c))
|
||||
let decl_row =
|
||||
{ type_params =
|
||||
List.map (fun _ -> Btype.newgenvar()) sdecl.ptype_params;
|
||||
type_arity = List.length sdecl.ptype_params;
|
||||
type_kind = Type_abstract;
|
||||
type_manifest = None;
|
||||
type_variance =
|
||||
List.map (fun (c,n) -> (not n, not c, not c))
|
||||
sdecl.ptype_variance }
|
||||
and id_row = Ident.create (s^"#row") in
|
||||
let initial_env = Env.add_type id_row decl_row initial_env in
|
||||
and id_row = Ident.create (s^"#row") in
|
||||
let initial_env = Env.add_type id_row decl_row initial_env in
|
||||
let newdecl = Typedecl.transl_with_constraint
|
||||
initial_env (Some(Pident id_row)) sdecl in
|
||||
check_type_decl env id row_id newdecl decl rs rem;
|
||||
let decl_row = {decl_row with type_params = newdecl.type_params} in
|
||||
let decl_row = {decl_row with type_params = newdecl.type_params} in
|
||||
let rs' = if rs = Trec_first then Trec_not else rs in
|
||||
Tsig_type(id_row, decl_row, rs') :: Tsig_type(id, newdecl, rs) :: rem
|
||||
| (Tsig_type(id, decl, rs) :: rem, [s], Pwith_type sdecl)
|
||||
|
@ -157,7 +157,7 @@ let approx_modtype transl_mty init_env smty =
|
|||
match smty.pmty_desc with
|
||||
Pmty_ident lid ->
|
||||
begin try
|
||||
let (path, info) = Env.lookup_modtype lid env in
|
||||
let (path, info) = Env.lookup_modtype lid env in
|
||||
Tmty_ident path
|
||||
with Not_found ->
|
||||
raise(Error(smty.pmty_loc, Unbound_modtype lid))
|
||||
|
@ -210,7 +210,7 @@ let approx_modtype transl_mty init_env smty =
|
|||
let sg = Subst.signature Subst.identity
|
||||
(extract_sig env smty.pmty_loc mty) in
|
||||
let newenv = Env.add_signature sg env in
|
||||
sg @ approx_sig newenv srem
|
||||
sg @ approx_sig newenv srem
|
||||
| Psig_class sdecls | Psig_class_type sdecls ->
|
||||
let decls = Typeclass.approx_class_declarations env sdecls in
|
||||
let rem = approx_sig env srem in
|
||||
|
@ -271,7 +271,7 @@ let rec transl_modtype env smty =
|
|||
match smty.pmty_desc with
|
||||
Pmty_ident lid ->
|
||||
begin try
|
||||
let (path, info) = Env.lookup_modtype lid env in
|
||||
let (path, info) = Env.lookup_modtype lid env in
|
||||
Tmty_ident path
|
||||
with Not_found ->
|
||||
raise(Error(smty.pmty_loc, Unbound_modtype lid))
|
||||
|
@ -292,7 +292,7 @@ let rec transl_modtype env smty =
|
|||
merge_constraint env smty.pmty_loc sg lid sdecl)
|
||||
init_sg constraints in
|
||||
Mtype.freshen (Tmty_signature final_sg)
|
||||
|
||||
|
||||
and transl_signature env sg =
|
||||
let type_names = ref StringSet.empty
|
||||
and module_names = ref StringSet.empty
|
||||
|
@ -543,7 +543,7 @@ let rec type_module anchor env smod =
|
|||
mod_loc = smod.pmod_loc }
|
||||
| _ ->
|
||||
raise(Error(sfunct.pmod_loc, Cannot_apply funct.mod_type))
|
||||
end
|
||||
end
|
||||
| Pmod_constraint(sarg, smty) ->
|
||||
let arg = type_module anchor env sarg in
|
||||
let mty = transl_modtype env smty in
|
||||
|
@ -592,7 +592,7 @@ and type_structure anchor env sstr =
|
|||
(fun (name, decl) -> check "type" loc type_names name)
|
||||
sdecls;
|
||||
let (decls, newenv) = Typedecl.transl_type_decl env sdecls in
|
||||
let newenv' =
|
||||
let newenv' =
|
||||
enrich_type_decls anchor decls env newenv in
|
||||
let (str_rem, sig_rem, final_env) = type_struct newenv' srem in
|
||||
(Tstr_type decls :: str_rem,
|
||||
|
@ -849,7 +849,7 @@ let package_units objfiles cmifile modulename =
|
|||
raise(Error(Location.in_file mlifile, Interface_not_compiled mlifile))
|
||||
end;
|
||||
let dclsig = Env.read_signature modulename cmifile in
|
||||
Includemod.compunit "(obtained by packing)" sg mlifile dclsig
|
||||
Includemod.compunit "(obtained by packing)" sg mlifile dclsig
|
||||
end else begin
|
||||
(* Determine imports *)
|
||||
let unit_names = List.map fst units in
|
||||
|
|
|
@ -333,18 +333,17 @@ let rec transl_type env policy styp =
|
|||
raise(Error(styp.ptyp_loc, Present_has_no_type l)))
|
||||
present
|
||||
end;
|
||||
ignore begin
|
||||
List.fold_left
|
||||
(fun hl (l,_) ->
|
||||
let h = Btype.hash_variant l in
|
||||
try
|
||||
let l' = List.assoc h hl in
|
||||
if l <> l' then raise(Error(styp.ptyp_loc, Variant_tags(l, l')));
|
||||
hl
|
||||
with Not_found -> (h,l) :: hl)
|
||||
[]
|
||||
fields
|
||||
end;
|
||||
(* Check for tag conflicts *)
|
||||
let ht = Hashtbl.create (List.length fields + 1) in
|
||||
List.iter
|
||||
(fun (l,_) ->
|
||||
let h = Btype.hash_variant l in
|
||||
try
|
||||
let l' = Hashtbl.find ht h in
|
||||
if l <> l' then raise(Error(styp.ptyp_loc, Variant_tags(l, l')))
|
||||
with Not_found ->
|
||||
Hashtbl.add ht h l)
|
||||
fields;
|
||||
let row =
|
||||
{ row_fields = List.rev fields; row_more = newvar ();
|
||||
row_bound = !bound; row_closed = closed;
|
||||
|
|
Loading…
Reference in New Issue