summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.depend275
-rw-r--r--Changes4
-rw-r--r--Makefile5
-rw-r--r--Makefile.nt5
-rw-r--r--debugger/.depend227
-rw-r--r--debugger/Makefile.shared2
-rw-r--r--ocamldoc/Makefile1
-rw-r--r--ocamldoc/Makefile.nt1
-rw-r--r--testsuite/tests/asmcomp/Makefile1
-rw-r--r--tools/Makefile.shared4
-rw-r--r--typing/cmt_format.ml100
-rw-r--r--typing/cmt_format.mli1
-rw-r--r--typing/env.ml14
-rw-r--r--typing/env.mli7
-rw-r--r--typing/envaux.ml (renamed from debugger/envaux.ml)3
-rw-r--r--typing/envaux.mli (renamed from debugger/envaux.mli)2
-rw-r--r--typing/typedtreeIter.ml (renamed from tools/typedtreeIter.ml)1
-rw-r--r--typing/typedtreeIter.mli (renamed from tools/typedtreeIter.mli)0
-rw-r--r--typing/typedtreeMap.ml671
-rw-r--r--typing/typedtreeMap.mli78
20 files changed, 1143 insertions, 259 deletions
diff --git a/.depend b/.depend
index ecb0f90e2..2c4abb213 100644
--- a/.depend
+++ b/.depend
@@ -39,8 +39,6 @@ parsing/lexer.cmo : utils/warnings.cmi parsing/parser.cmi utils/misc.cmi \
parsing/location.cmi parsing/lexer.cmi
parsing/lexer.cmx : utils/warnings.cmx parsing/parser.cmx utils/misc.cmx \
parsing/location.cmx parsing/lexer.cmi
-parsing/linenum.cmo : utils/misc.cmi
-parsing/linenum.cmx : utils/misc.cmx
parsing/location.cmo : utils/warnings.cmi utils/terminfo.cmi \
parsing/location.cmi
parsing/location.cmx : utils/warnings.cmx utils/terminfo.cmx \
@@ -72,11 +70,10 @@ typing/ctype.cmi : typing/types.cmi typing/path.cmi parsing/longident.cmi \
typing/ident.cmi typing/env.cmi parsing/asttypes.cmi
typing/datarepr.cmi : typing/types.cmi typing/path.cmi typing/ident.cmi \
parsing/asttypes.cmi
-typing/env.cmi : utils/warnings.cmi typing/types.cmi utils/tbl.cmi \
- typing/subst.cmi typing/path.cmi parsing/longident.cmi \
- parsing/location.cmi typing/ident.cmi utils/consistbl.cmi \
- typing/btype.cmi typing/annot.cmi
-typing/ident.cmti.cmi :
+typing/env.cmi : utils/warnings.cmi typing/types.cmi typing/subst.cmi \
+ typing/path.cmi parsing/longident.cmi parsing/location.cmi \
+ typing/ident.cmi utils/consistbl.cmi typing/annot.cmi
+typing/envaux.cmi : typing/path.cmi bytecomp/instruct.cmi typing/env.cmi
typing/ident.cmi :
typing/includeclass.cmi : typing/types.cmi typing/env.cmi typing/ctype.cmi
typing/includecore.cmi : typing/types.cmi typing/typedtree.cmi \
@@ -113,6 +110,8 @@ typing/typedecl.cmi : typing/types.cmi typing/typedtree.cmi typing/path.cmi \
typing/typedtree.cmi : typing/types.cmi typing/primitive.cmi typing/path.cmi \
parsing/longident.cmi parsing/location.cmi typing/ident.cmi \
typing/env.cmi parsing/asttypes.cmi
+typing/typedtreeIter.cmi : typing/typedtree.cmi parsing/asttypes.cmi
+typing/typedtreeMap.cmi : typing/typedtree.cmi parsing/asttypes.cmi
typing/typemod.cmi : typing/types.cmi typing/typedtree.cmi \
parsing/parsetree.cmi parsing/longident.cmi parsing/location.cmi \
typing/includemod.cmi typing/ident.cmi typing/env.cmi
@@ -130,12 +129,14 @@ typing/cmi_format.cmo : typing/types.cmi utils/misc.cmi parsing/location.cmi \
utils/config.cmi typing/cmi_format.cmi
typing/cmi_format.cmx : typing/types.cmx utils/misc.cmx parsing/location.cmx \
utils/config.cmx typing/cmi_format.cmi
-typing/cmt_format.cmo : typing/types.cmi typing/typedtree.cmi utils/misc.cmi \
- parsing/location.cmi parsing/lexer.cmi typing/env.cmi utils/config.cmi \
- typing/cmi_format.cmi utils/clflags.cmi typing/cmt_format.cmi
-typing/cmt_format.cmx : typing/types.cmx typing/typedtree.cmx utils/misc.cmx \
- parsing/location.cmx parsing/lexer.cmx typing/env.cmx utils/config.cmx \
- typing/cmi_format.cmx utils/clflags.cmx typing/cmt_format.cmi
+typing/cmt_format.cmo : typing/types.cmi typing/typedtreeMap.cmi \
+ typing/typedtree.cmi utils/misc.cmi parsing/location.cmi \
+ parsing/lexer.cmi typing/env.cmi utils/config.cmi typing/cmi_format.cmi \
+ utils/clflags.cmi typing/cmt_format.cmi
+typing/cmt_format.cmx : typing/types.cmx typing/typedtreeMap.cmx \
+ typing/typedtree.cmx utils/misc.cmx parsing/location.cmx \
+ parsing/lexer.cmx typing/env.cmx utils/config.cmx typing/cmi_format.cmx \
+ utils/clflags.cmx typing/cmt_format.cmi
typing/ctype.cmo : typing/types.cmi typing/subst.cmi typing/path.cmi \
utils/misc.cmi parsing/longident.cmi parsing/location.cmi \
typing/ident.cmi typing/env.cmi utils/clflags.cmi typing/btype.cmi \
@@ -144,12 +145,10 @@ typing/ctype.cmx : typing/types.cmx typing/subst.cmx typing/path.cmx \
utils/misc.cmx parsing/longident.cmx parsing/location.cmx \
typing/ident.cmx typing/env.cmx utils/clflags.cmx typing/btype.cmx \
parsing/asttypes.cmi typing/ctype.cmi
-typing/datarepr.cmo : typing/types.cmi typing/predef.cmi utils/misc.cmi \
- typing/ident.cmi typing/btype.cmi parsing/asttypes.cmi \
- typing/datarepr.cmi
-typing/datarepr.cmx : typing/types.cmx typing/predef.cmx utils/misc.cmx \
- typing/ident.cmx typing/btype.cmx parsing/asttypes.cmi \
- typing/datarepr.cmi
+typing/datarepr.cmo : typing/types.cmi typing/predef.cmi typing/ident.cmi \
+ typing/btype.cmi parsing/asttypes.cmi typing/datarepr.cmi
+typing/datarepr.cmx : typing/types.cmx typing/predef.cmx typing/ident.cmx \
+ typing/btype.cmx parsing/asttypes.cmi typing/datarepr.cmi
typing/env.cmo : utils/warnings.cmi typing/types.cmi utils/tbl.cmi \
typing/subst.cmi typing/predef.cmi typing/path.cmi utils/misc.cmi \
parsing/longident.cmi parsing/location.cmi typing/ident.cmi \
@@ -162,8 +161,12 @@ typing/env.cmx : utils/warnings.cmx typing/types.cmx utils/tbl.cmx \
typing/datarepr.cmx utils/consistbl.cmx utils/config.cmx \
typing/cmi_format.cmx utils/clflags.cmx typing/btype.cmx \
parsing/asttypes.cmi typing/annot.cmi typing/env.cmi
-typing/ident.cmt.cmo :
-typing/ident.cmt.cmx :
+typing/envaux.cmo : typing/types.cmi typing/subst.cmi typing/printtyp.cmi \
+ typing/path.cmi typing/mtype.cmi utils/misc.cmi bytecomp/instruct.cmi \
+ typing/env.cmi typing/envaux.cmi
+typing/envaux.cmx : typing/types.cmx typing/subst.cmx typing/printtyp.cmx \
+ typing/path.cmx typing/mtype.cmx utils/misc.cmx bytecomp/instruct.cmx \
+ typing/env.cmx typing/envaux.cmi
typing/ident.cmo : typing/ident.cmi
typing/ident.cmx : typing/ident.cmi
typing/includeclass.cmo : typing/types.cmi typing/printtyp.cmi \
@@ -248,20 +251,18 @@ typing/typeclass.cmo : utils/warnings.cmi typing/typetexp.cmi \
typing/types.cmi typing/typedtree.cmi typing/typedecl.cmi \
typing/typecore.cmi typing/subst.cmi typing/stypes.cmi \
typing/printtyp.cmi typing/predef.cmi typing/path.cmi \
- parsing/parsetree.cmi typing/parmatch.cmi utils/misc.cmi \
- parsing/longident.cmi parsing/location.cmi typing/includeclass.cmi \
- typing/ident.cmi typing/env.cmi typing/ctype.cmi typing/cmt_format.cmi \
- utils/clflags.cmi typing/btype.cmi parsing/asttypes.cmi \
- typing/typeclass.cmi
+ parsing/parsetree.cmi typing/parmatch.cmi parsing/longident.cmi \
+ parsing/location.cmi typing/includeclass.cmi typing/ident.cmi \
+ typing/env.cmi typing/ctype.cmi typing/cmt_format.cmi utils/clflags.cmi \
+ typing/btype.cmi parsing/asttypes.cmi typing/typeclass.cmi
typing/typeclass.cmx : utils/warnings.cmx typing/typetexp.cmx \
typing/types.cmx typing/typedtree.cmx typing/typedecl.cmx \
typing/typecore.cmx typing/subst.cmx typing/stypes.cmx \
typing/printtyp.cmx typing/predef.cmx typing/path.cmx \
- parsing/parsetree.cmi typing/parmatch.cmx utils/misc.cmx \
- parsing/longident.cmx parsing/location.cmx typing/includeclass.cmx \
- typing/ident.cmx typing/env.cmx typing/ctype.cmx typing/cmt_format.cmx \
- utils/clflags.cmx typing/btype.cmx parsing/asttypes.cmi \
- typing/typeclass.cmi
+ parsing/parsetree.cmi typing/parmatch.cmx parsing/longident.cmx \
+ parsing/location.cmx typing/includeclass.cmx typing/ident.cmx \
+ typing/env.cmx typing/ctype.cmx typing/cmt_format.cmx utils/clflags.cmx \
+ typing/btype.cmx parsing/asttypes.cmi typing/typeclass.cmi
typing/typecore.cmo : utils/warnings.cmi typing/typetexp.cmi \
typing/types.cmi typing/typedtree.cmi typing/subst.cmi typing/stypes.cmi \
typing/printtyp.cmi typing/primitive.cmi typing/predef.cmi \
@@ -300,6 +301,14 @@ typing/typedtree.cmo : typing/types.cmi typing/primitive.cmi typing/path.cmi \
typing/typedtree.cmx : typing/types.cmx typing/primitive.cmx typing/path.cmx \
utils/misc.cmx parsing/longident.cmx parsing/location.cmx \
typing/ident.cmx typing/env.cmx parsing/asttypes.cmi typing/typedtree.cmi
+typing/typedtreeIter.cmo : typing/typedtree.cmi utils/misc.cmi \
+ parsing/asttypes.cmi typing/typedtreeIter.cmi
+typing/typedtreeIter.cmx : typing/typedtree.cmx utils/misc.cmx \
+ parsing/asttypes.cmi typing/typedtreeIter.cmi
+typing/typedtreeMap.cmo : typing/typedtree.cmi utils/misc.cmi \
+ parsing/asttypes.cmi typing/typedtreeMap.cmi
+typing/typedtreeMap.cmx : typing/typedtree.cmx utils/misc.cmx \
+ parsing/asttypes.cmi typing/typedtreeMap.cmi
typing/typemod.cmo : utils/warnings.cmi typing/typetexp.cmi typing/types.cmi \
typing/typedtree.cmi typing/typedecl.cmi typing/typecore.cmi \
typing/typeclass.cmi typing/subst.cmi typing/stypes.cmi \
@@ -318,10 +327,10 @@ typing/typemod.cmx : utils/warnings.cmx typing/typetexp.cmx typing/types.cmx \
typing/env.cmx typing/ctype.cmx utils/config.cmx typing/cmt_format.cmx \
utils/clflags.cmx typing/btype.cmx parsing/asttypes.cmi typing/annot.cmi \
typing/typemod.cmi
-typing/types.cmo : typing/primitive.cmi typing/path.cmi utils/misc.cmi \
+typing/types.cmo : typing/primitive.cmi typing/path.cmi \
parsing/longident.cmi parsing/location.cmi typing/ident.cmi \
parsing/asttypes.cmi typing/types.cmi
-typing/types.cmx : typing/primitive.cmx typing/path.cmx utils/misc.cmx \
+typing/types.cmx : typing/primitive.cmx typing/path.cmx \
parsing/longident.cmx parsing/location.cmx typing/ident.cmx \
parsing/asttypes.cmi typing/types.cmi
typing/typetexp.cmo : utils/warnings.cmi typing/types.cmi \
@@ -357,9 +366,9 @@ bytecomp/switch.cmi :
bytecomp/symtable.cmi : typing/ident.cmi bytecomp/cmo_format.cmi
bytecomp/translclass.cmi : typing/typedtree.cmi parsing/location.cmi \
bytecomp/lambda.cmi typing/ident.cmi parsing/asttypes.cmi
-bytecomp/translcore.cmi : typing/types.cmi typing/typedtree.cmi \
- typing/primitive.cmi typing/path.cmi parsing/location.cmi \
- bytecomp/lambda.cmi typing/ident.cmi parsing/asttypes.cmi
+bytecomp/translcore.cmi : typing/typedtree.cmi typing/primitive.cmi \
+ typing/path.cmi parsing/location.cmi bytecomp/lambda.cmi typing/ident.cmi \
+ parsing/asttypes.cmi
bytecomp/translmod.cmi : typing/typedtree.cmi typing/primitive.cmi \
parsing/location.cmi bytecomp/lambda.cmi typing/ident.cmi
bytecomp/translobj.cmi : bytecomp/lambda.cmi typing/ident.cmi typing/env.cmi
@@ -373,34 +382,34 @@ bytecomp/bytegen.cmx : typing/types.cmx bytecomp/switch.cmx typing/subst.cmx \
typing/primitive.cmx utils/misc.cmx bytecomp/lambda.cmx \
bytecomp/instruct.cmx typing/ident.cmx utils/config.cmx \
parsing/asttypes.cmi bytecomp/bytegen.cmi
-bytecomp/bytelibrarian.cmo : utils/misc.cmi utils/config.cmi \
- bytecomp/cmo_format.cmi utils/clflags.cmi bytecomp/bytelink.cmi \
- bytecomp/bytelibrarian.cmi
-bytecomp/bytelibrarian.cmx : utils/misc.cmx utils/config.cmx \
- bytecomp/cmo_format.cmi utils/clflags.cmx bytecomp/bytelink.cmx \
- bytecomp/bytelibrarian.cmi
+bytecomp/bytelibrarian.cmo : utils/misc.cmi parsing/location.cmi \
+ utils/config.cmi bytecomp/cmo_format.cmi utils/clflags.cmi \
+ bytecomp/bytelink.cmi bytecomp/bytelibrarian.cmi
+bytecomp/bytelibrarian.cmx : utils/misc.cmx parsing/location.cmx \
+ utils/config.cmx bytecomp/cmo_format.cmi utils/clflags.cmx \
+ bytecomp/bytelink.cmx bytecomp/bytelibrarian.cmi
bytecomp/bytelink.cmo : utils/warnings.cmi bytecomp/symtable.cmi \
- bytecomp/opcodes.cmo utils/misc.cmi parsing/location.cmi \
- bytecomp/instruct.cmi typing/ident.cmi bytecomp/dll.cmi \
- utils/consistbl.cmi utils/config.cmi bytecomp/cmo_format.cmi \
- utils/clflags.cmi utils/ccomp.cmi bytecomp/bytesections.cmi \
- bytecomp/bytelink.cmi
+ bytecomp/opcodes.cmo utils/misc.cmi parsing/location.cmi typing/ident.cmi \
+ bytecomp/dll.cmi utils/consistbl.cmi utils/config.cmi \
+ bytecomp/cmo_format.cmi utils/clflags.cmi utils/ccomp.cmi \
+ bytecomp/bytesections.cmi bytecomp/bytelink.cmi
bytecomp/bytelink.cmx : utils/warnings.cmx bytecomp/symtable.cmx \
- bytecomp/opcodes.cmx utils/misc.cmx parsing/location.cmx \
- bytecomp/instruct.cmx typing/ident.cmx bytecomp/dll.cmx \
- utils/consistbl.cmx utils/config.cmx bytecomp/cmo_format.cmi \
- utils/clflags.cmx utils/ccomp.cmx bytecomp/bytesections.cmx \
- bytecomp/bytelink.cmi
+ bytecomp/opcodes.cmx utils/misc.cmx parsing/location.cmx typing/ident.cmx \
+ bytecomp/dll.cmx utils/consistbl.cmx utils/config.cmx \
+ bytecomp/cmo_format.cmi utils/clflags.cmx utils/ccomp.cmx \
+ bytecomp/bytesections.cmx bytecomp/bytelink.cmi
bytecomp/bytepackager.cmo : typing/typemod.cmi bytecomp/translmod.cmi \
- typing/subst.cmi typing/path.cmi utils/misc.cmi bytecomp/instruct.cmi \
- typing/ident.cmi typing/env.cmi bytecomp/emitcode.cmi utils/config.cmi \
- bytecomp/cmo_format.cmi utils/clflags.cmi bytecomp/bytelink.cmi \
- bytecomp/bytegen.cmi bytecomp/bytepackager.cmi
+ typing/subst.cmi typing/path.cmi utils/misc.cmi parsing/location.cmi \
+ bytecomp/instruct.cmi typing/ident.cmi typing/env.cmi \
+ bytecomp/emitcode.cmi utils/config.cmi bytecomp/cmo_format.cmi \
+ utils/clflags.cmi bytecomp/bytelink.cmi bytecomp/bytegen.cmi \
+ bytecomp/bytepackager.cmi
bytecomp/bytepackager.cmx : typing/typemod.cmx bytecomp/translmod.cmx \
- typing/subst.cmx typing/path.cmx utils/misc.cmx bytecomp/instruct.cmx \
- typing/ident.cmx typing/env.cmx bytecomp/emitcode.cmx utils/config.cmx \
- bytecomp/cmo_format.cmi utils/clflags.cmx bytecomp/bytelink.cmx \
- bytecomp/bytegen.cmx bytecomp/bytepackager.cmi
+ typing/subst.cmx typing/path.cmx utils/misc.cmx parsing/location.cmx \
+ bytecomp/instruct.cmx typing/ident.cmx typing/env.cmx \
+ bytecomp/emitcode.cmx utils/config.cmx bytecomp/cmo_format.cmi \
+ utils/clflags.cmx bytecomp/bytelink.cmx bytecomp/bytegen.cmx \
+ bytecomp/bytepackager.cmi
bytecomp/bytesections.cmo : utils/misc.cmi utils/config.cmi \
bytecomp/bytesections.cmi
bytecomp/bytesections.cmx : utils/misc.cmx utils/config.cmx \
@@ -481,12 +490,12 @@ bytecomp/symtable.cmx : utils/tbl.cmx bytecomp/runtimedef.cmx \
bytecomp/symtable.cmi
bytecomp/translclass.cmo : typing/types.cmi bytecomp/typeopt.cmi \
typing/typedtree.cmi bytecomp/translobj.cmi bytecomp/translcore.cmi \
- typing/path.cmi utils/misc.cmi bytecomp/matching.cmi parsing/location.cmi \
+ typing/path.cmi bytecomp/matching.cmi parsing/location.cmi \
bytecomp/lambda.cmi typing/ident.cmi typing/env.cmi utils/clflags.cmi \
typing/btype.cmi parsing/asttypes.cmi bytecomp/translclass.cmi
bytecomp/translclass.cmx : typing/types.cmx bytecomp/typeopt.cmx \
typing/typedtree.cmx bytecomp/translobj.cmx bytecomp/translcore.cmx \
- typing/path.cmx utils/misc.cmx bytecomp/matching.cmx parsing/location.cmx \
+ typing/path.cmx bytecomp/matching.cmx parsing/location.cmx \
bytecomp/lambda.cmx typing/ident.cmx typing/env.cmx utils/clflags.cmx \
typing/btype.cmx parsing/asttypes.cmi bytecomp/translclass.cmi
bytecomp/translcore.cmo : typing/types.cmi bytecomp/typeopt.cmi \
@@ -524,13 +533,11 @@ bytecomp/translobj.cmx : typing/primitive.cmx utils/misc.cmx \
utils/clflags.cmx typing/btype.cmx parsing/asttypes.cmi \
bytecomp/translobj.cmi
bytecomp/typeopt.cmo : typing/types.cmi typing/typedtree.cmi \
- typing/primitive.cmi typing/predef.cmi typing/path.cmi utils/misc.cmi \
- bytecomp/lambda.cmi typing/ident.cmi typing/env.cmi typing/ctype.cmi \
- parsing/asttypes.cmi bytecomp/typeopt.cmi
+ typing/predef.cmi typing/path.cmi bytecomp/lambda.cmi typing/ident.cmi \
+ typing/env.cmi typing/ctype.cmi bytecomp/typeopt.cmi
bytecomp/typeopt.cmx : typing/types.cmx typing/typedtree.cmx \
- typing/primitive.cmx typing/predef.cmx typing/path.cmx utils/misc.cmx \
- bytecomp/lambda.cmx typing/ident.cmx typing/env.cmx typing/ctype.cmx \
- parsing/asttypes.cmi bytecomp/typeopt.cmi
+ typing/predef.cmx typing/path.cmx bytecomp/lambda.cmx typing/ident.cmx \
+ typing/env.cmx typing/ctype.cmx bytecomp/typeopt.cmi
asmcomp/asmgen.cmi : bytecomp/lambda.cmi asmcomp/cmm.cmi
asmcomp/asmlibrarian.cmi :
asmcomp/asmlink.cmi : asmcomp/cmx_format.cmi
@@ -577,7 +584,7 @@ asmcomp/asmgen.cmo : bytecomp/translmod.cmi asmcomp/split.cmi \
asmcomp/spill.cmi asmcomp/selection.cmi asmcomp/scheduling.cmi \
asmcomp/reload.cmi asmcomp/reg.cmi asmcomp/proc.cmi asmcomp/printmach.cmi \
asmcomp/printlinear.cmi asmcomp/printcmm.cmi typing/primitive.cmi \
- utils/misc.cmi asmcomp/mach.cmi asmcomp/liveness.cmi \
+ utils/misc.cmi asmcomp/mach.cmi parsing/location.cmi asmcomp/liveness.cmi \
asmcomp/linearize.cmi asmcomp/interf.cmi asmcomp/emitaux.cmi \
asmcomp/emit.cmi utils/config.cmi asmcomp/compilenv.cmi \
asmcomp/comballoc.cmi asmcomp/coloring.cmi asmcomp/cmmgen.cmi \
@@ -586,7 +593,7 @@ asmcomp/asmgen.cmx : bytecomp/translmod.cmx asmcomp/split.cmx \
asmcomp/spill.cmx asmcomp/selection.cmx asmcomp/scheduling.cmx \
asmcomp/reload.cmx asmcomp/reg.cmx asmcomp/proc.cmx asmcomp/printmach.cmx \
asmcomp/printlinear.cmx asmcomp/printcmm.cmx typing/primitive.cmx \
- utils/misc.cmx asmcomp/mach.cmx asmcomp/liveness.cmx \
+ utils/misc.cmx asmcomp/mach.cmx parsing/location.cmx asmcomp/liveness.cmx \
asmcomp/linearize.cmx asmcomp/interf.cmx asmcomp/emitaux.cmx \
asmcomp/emit.cmx utils/config.cmx asmcomp/compilenv.cmx \
asmcomp/comballoc.cmx asmcomp/coloring.cmx asmcomp/cmmgen.cmx \
@@ -610,16 +617,14 @@ asmcomp/asmlink.cmx : bytecomp/runtimedef.cmx asmcomp/proc.cmx \
asmcomp/cmx_format.cmi asmcomp/cmmgen.cmx utils/clflags.cmx \
utils/ccomp.cmx asmcomp/asmgen.cmx asmcomp/asmlink.cmi
asmcomp/asmpackager.cmo : typing/typemod.cmi bytecomp/translmod.cmi \
- utils/misc.cmi parsing/location.cmi bytecomp/lambda.cmi typing/ident.cmi \
- typing/env.cmi utils/config.cmi asmcomp/compilenv.cmi \
- asmcomp/cmx_format.cmi utils/clflags.cmi asmcomp/clambda.cmi \
- utils/ccomp.cmi asmcomp/asmlink.cmi asmcomp/asmgen.cmi \
+ utils/misc.cmi parsing/location.cmi typing/ident.cmi typing/env.cmi \
+ utils/config.cmi asmcomp/compilenv.cmi asmcomp/cmx_format.cmi \
+ utils/clflags.cmi utils/ccomp.cmi asmcomp/asmlink.cmi asmcomp/asmgen.cmi \
asmcomp/asmpackager.cmi
asmcomp/asmpackager.cmx : typing/typemod.cmx bytecomp/translmod.cmx \
- utils/misc.cmx parsing/location.cmx bytecomp/lambda.cmx typing/ident.cmx \
- typing/env.cmx utils/config.cmx asmcomp/compilenv.cmx \
- asmcomp/cmx_format.cmi utils/clflags.cmx asmcomp/clambda.cmx \
- utils/ccomp.cmx asmcomp/asmlink.cmx asmcomp/asmgen.cmx \
+ utils/misc.cmx parsing/location.cmx typing/ident.cmx typing/env.cmx \
+ utils/config.cmx asmcomp/compilenv.cmx asmcomp/cmx_format.cmi \
+ utils/clflags.cmx utils/ccomp.cmx asmcomp/asmlink.cmx asmcomp/asmgen.cmx \
asmcomp/asmpackager.cmi
asmcomp/clambda.cmo : bytecomp/lambda.cmi typing/ident.cmi \
asmcomp/debuginfo.cmi parsing/asttypes.cmi asmcomp/clambda.cmi
@@ -637,13 +642,13 @@ asmcomp/cmm.cmo : typing/ident.cmi asmcomp/debuginfo.cmi asmcomp/arch.cmo \
asmcomp/cmm.cmi
asmcomp/cmm.cmx : typing/ident.cmx asmcomp/debuginfo.cmx asmcomp/arch.cmx \
asmcomp/cmm.cmi
-asmcomp/cmmgen.cmo : typing/types.cmi bytecomp/switch.cmi asmcomp/proc.cmi \
+asmcomp/cmmgen.cmo : bytecomp/switch.cmi asmcomp/proc.cmi \
typing/primitive.cmi utils/misc.cmi bytecomp/lambda.cmi typing/ident.cmi \
asmcomp/debuginfo.cmi utils/config.cmi asmcomp/compilenv.cmi \
asmcomp/cmx_format.cmi asmcomp/cmm.cmi utils/clflags.cmi \
asmcomp/clambda.cmi parsing/asttypes.cmi asmcomp/arch.cmo \
asmcomp/cmmgen.cmi
-asmcomp/cmmgen.cmx : typing/types.cmx bytecomp/switch.cmx asmcomp/proc.cmx \
+asmcomp/cmmgen.cmx : bytecomp/switch.cmx asmcomp/proc.cmx \
typing/primitive.cmx utils/misc.cmx bytecomp/lambda.cmx typing/ident.cmx \
asmcomp/debuginfo.cmx utils/config.cmx asmcomp/compilenv.cmx \
asmcomp/cmx_format.cmi asmcomp/cmm.cmx utils/clflags.cmx \
@@ -665,12 +670,12 @@ asmcomp/comballoc.cmo : asmcomp/reg.cmi asmcomp/mach.cmi utils/config.cmi \
asmcomp/arch.cmo asmcomp/comballoc.cmi
asmcomp/comballoc.cmx : asmcomp/reg.cmx asmcomp/mach.cmx utils/config.cmx \
asmcomp/arch.cmx asmcomp/comballoc.cmi
-asmcomp/compilenv.cmo : utils/misc.cmi bytecomp/lambda.cmi typing/ident.cmi \
- typing/env.cmi utils/config.cmi asmcomp/cmx_format.cmi \
- asmcomp/clambda.cmi asmcomp/compilenv.cmi
-asmcomp/compilenv.cmx : utils/misc.cmx bytecomp/lambda.cmx typing/ident.cmx \
- typing/env.cmx utils/config.cmx asmcomp/cmx_format.cmi \
- asmcomp/clambda.cmx asmcomp/compilenv.cmi
+asmcomp/compilenv.cmo : utils/misc.cmi parsing/location.cmi \
+ bytecomp/lambda.cmi typing/ident.cmi typing/env.cmi utils/config.cmi \
+ asmcomp/cmx_format.cmi asmcomp/clambda.cmi asmcomp/compilenv.cmi
+asmcomp/compilenv.cmx : utils/misc.cmx parsing/location.cmx \
+ bytecomp/lambda.cmx typing/ident.cmx typing/env.cmx utils/config.cmx \
+ asmcomp/cmx_format.cmi asmcomp/clambda.cmx asmcomp/compilenv.cmi
asmcomp/debuginfo.cmo : parsing/location.cmi bytecomp/lambda.cmi \
asmcomp/debuginfo.cmi
asmcomp/debuginfo.cmx : parsing/location.cmx bytecomp/lambda.cmx \
@@ -683,16 +688,14 @@ asmcomp/emit.cmx : asmcomp/reg.cmx asmcomp/proc.cmx utils/misc.cmx \
asmcomp/mach.cmx asmcomp/linearize.cmx asmcomp/emitaux.cmx \
asmcomp/debuginfo.cmx utils/config.cmx asmcomp/compilenv.cmx \
asmcomp/cmm.cmx utils/clflags.cmx asmcomp/arch.cmx asmcomp/emit.cmi
-asmcomp/emitaux.cmo : asmcomp/reg.cmi asmcomp/linearize.cmi \
- asmcomp/debuginfo.cmi utils/config.cmi asmcomp/cmm.cmi utils/clflags.cmi \
- asmcomp/arch.cmo asmcomp/emitaux.cmi
-asmcomp/emitaux.cmx : asmcomp/reg.cmx asmcomp/linearize.cmx \
- asmcomp/debuginfo.cmx utils/config.cmx asmcomp/cmm.cmx utils/clflags.cmx \
- asmcomp/arch.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 \
- asmcomp/mach.cmx asmcomp/interf.cmi
+asmcomp/emitaux.cmo : asmcomp/debuginfo.cmi utils/config.cmi \
+ utils/clflags.cmi asmcomp/arch.cmo asmcomp/emitaux.cmi
+asmcomp/emitaux.cmx : asmcomp/debuginfo.cmx utils/config.cmx \
+ utils/clflags.cmx asmcomp/arch.cmx asmcomp/emitaux.cmi
+asmcomp/interf.cmo : asmcomp/reg.cmi asmcomp/proc.cmi asmcomp/mach.cmi \
+ asmcomp/interf.cmi
+asmcomp/interf.cmx : asmcomp/reg.cmx asmcomp/proc.cmx asmcomp/mach.cmx \
+ asmcomp/interf.cmi
asmcomp/linearize.cmo : asmcomp/reg.cmi asmcomp/proc.cmi utils/misc.cmi \
asmcomp/mach.cmi asmcomp/debuginfo.cmi asmcomp/cmm.cmi \
asmcomp/linearize.cmi
@@ -710,11 +713,11 @@ asmcomp/mach.cmo : asmcomp/reg.cmi asmcomp/debuginfo.cmi asmcomp/cmm.cmi \
asmcomp/mach.cmx : asmcomp/reg.cmx asmcomp/debuginfo.cmx asmcomp/cmm.cmx \
asmcomp/arch.cmx asmcomp/mach.cmi
asmcomp/printclambda.cmo : bytecomp/printlambda.cmi bytecomp/lambda.cmi \
- typing/ident.cmi asmcomp/debuginfo.cmi asmcomp/clambda.cmi \
- parsing/asttypes.cmi asmcomp/printclambda.cmi
+ typing/ident.cmi asmcomp/clambda.cmi parsing/asttypes.cmi \
+ asmcomp/printclambda.cmi
asmcomp/printclambda.cmx : bytecomp/printlambda.cmx bytecomp/lambda.cmx \
- typing/ident.cmx asmcomp/debuginfo.cmx asmcomp/clambda.cmx \
- parsing/asttypes.cmi asmcomp/printclambda.cmi
+ typing/ident.cmx asmcomp/clambda.cmx parsing/asttypes.cmi \
+ asmcomp/printclambda.cmi
asmcomp/printcmm.cmo : typing/ident.cmi asmcomp/debuginfo.cmi \
asmcomp/cmm.cmi asmcomp/printcmm.cmi
asmcomp/printcmm.cmx : typing/ident.cmx asmcomp/debuginfo.cmx \
@@ -745,10 +748,10 @@ 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/schedgen.cmo : asmcomp/reg.cmi utils/misc.cmi asmcomp/mach.cmi \
+asmcomp/schedgen.cmo : asmcomp/reg.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/schedgen.cmx : asmcomp/reg.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
@@ -761,12 +764,12 @@ asmcomp/selectgen.cmx : utils/tbl.cmx bytecomp/simplif.cmx asmcomp/reg.cmx \
asmcomp/proc.cmx utils/misc.cmx asmcomp/mach.cmx typing/ident.cmx \
asmcomp/debuginfo.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 \
- utils/clflags.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 \
- utils/clflags.cmx asmcomp/arch.cmx asmcomp/selection.cmi
+asmcomp/selection.cmo : asmcomp/selectgen.cmi asmcomp/proc.cmi \
+ utils/misc.cmi asmcomp/mach.cmi asmcomp/cmm.cmi utils/clflags.cmi \
+ asmcomp/arch.cmo asmcomp/selection.cmi
+asmcomp/selection.cmx : asmcomp/selectgen.cmx asmcomp/proc.cmx \
+ utils/misc.cmx asmcomp/mach.cmx asmcomp/cmm.cmx utils/clflags.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 \
@@ -784,19 +787,21 @@ driver/opterrors.cmi :
driver/optmain.cmi :
driver/pparse.cmi :
driver/compile.cmo : utils/warnings.cmi typing/typemod.cmi \
- typing/typedtree.cmi bytecomp/translmod.cmi typing/stypes.cmi \
- bytecomp/simplif.cmi typing/printtyp.cmi bytecomp/printlambda.cmi \
- bytecomp/printinstr.cmi parsing/printast.cmi driver/pparse.cmi \
- parsing/parse.cmi utils/misc.cmi parsing/location.cmi typing/ident.cmi \
- typing/env.cmi bytecomp/emitcode.cmi utils/config.cmi utils/clflags.cmi \
- utils/ccomp.cmi bytecomp/bytegen.cmi driver/compile.cmi
+ typing/typedtree.cmi typing/typecore.cmi bytecomp/translmod.cmi \
+ typing/stypes.cmi bytecomp/simplif.cmi typing/printtyp.cmi \
+ bytecomp/printlambda.cmi bytecomp/printinstr.cmi parsing/printast.cmi \
+ driver/pparse.cmi parsing/parse.cmi utils/misc.cmi parsing/location.cmi \
+ typing/includemod.cmi typing/ident.cmi typing/env.cmi \
+ bytecomp/emitcode.cmi utils/config.cmi utils/clflags.cmi utils/ccomp.cmi \
+ bytecomp/bytegen.cmi driver/compile.cmi
driver/compile.cmx : utils/warnings.cmx typing/typemod.cmx \
- typing/typedtree.cmx bytecomp/translmod.cmx typing/stypes.cmx \
- bytecomp/simplif.cmx typing/printtyp.cmx bytecomp/printlambda.cmx \
- bytecomp/printinstr.cmx parsing/printast.cmx driver/pparse.cmx \
- parsing/parse.cmx utils/misc.cmx parsing/location.cmx typing/ident.cmx \
- typing/env.cmx bytecomp/emitcode.cmx utils/config.cmx utils/clflags.cmx \
- utils/ccomp.cmx bytecomp/bytegen.cmx driver/compile.cmi
+ typing/typedtree.cmx typing/typecore.cmx bytecomp/translmod.cmx \
+ typing/stypes.cmx bytecomp/simplif.cmx typing/printtyp.cmx \
+ bytecomp/printlambda.cmx bytecomp/printinstr.cmx parsing/printast.cmx \
+ driver/pparse.cmx parsing/parse.cmx utils/misc.cmx parsing/location.cmx \
+ typing/includemod.cmx typing/ident.cmx typing/env.cmx \
+ bytecomp/emitcode.cmx utils/config.cmx utils/clflags.cmx utils/ccomp.cmx \
+ bytecomp/bytegen.cmx driver/compile.cmi
driver/errors.cmo : utils/warnings.cmi typing/typetexp.cmi \
typing/typemod.cmi typing/typedecl.cmi typing/typecore.cmi \
typing/typeclass.cmi bytecomp/translmod.cmi bytecomp/translcore.cmi \
@@ -824,17 +829,19 @@ driver/main.cmx : utils/warnings.cmx utils/misc.cmx driver/main_args.cmx \
driver/main_args.cmo : utils/warnings.cmi driver/main_args.cmi
driver/main_args.cmx : utils/warnings.cmx driver/main_args.cmi
driver/optcompile.cmo : utils/warnings.cmi typing/typemod.cmi \
- typing/typedtree.cmi bytecomp/translmod.cmi typing/stypes.cmi \
- bytecomp/simplif.cmi typing/printtyp.cmi bytecomp/printlambda.cmi \
- parsing/printast.cmi driver/pparse.cmi parsing/parse.cmi utils/misc.cmi \
- parsing/location.cmi typing/ident.cmi typing/env.cmi utils/config.cmi \
+ typing/typedtree.cmi typing/typecore.cmi bytecomp/translmod.cmi \
+ typing/stypes.cmi bytecomp/simplif.cmi typing/printtyp.cmi \
+ bytecomp/printlambda.cmi parsing/printast.cmi driver/pparse.cmi \
+ parsing/parse.cmi utils/misc.cmi parsing/location.cmi \
+ typing/includemod.cmi typing/ident.cmi typing/env.cmi utils/config.cmi \
asmcomp/compilenv.cmi utils/clflags.cmi utils/ccomp.cmi \
asmcomp/asmgen.cmi driver/optcompile.cmi
driver/optcompile.cmx : utils/warnings.cmx typing/typemod.cmx \
- typing/typedtree.cmx bytecomp/translmod.cmx typing/stypes.cmx \
- bytecomp/simplif.cmx typing/printtyp.cmx bytecomp/printlambda.cmx \
- parsing/printast.cmx driver/pparse.cmx parsing/parse.cmx utils/misc.cmx \
- parsing/location.cmx typing/ident.cmx typing/env.cmx utils/config.cmx \
+ typing/typedtree.cmx typing/typecore.cmx bytecomp/translmod.cmx \
+ typing/stypes.cmx bytecomp/simplif.cmx typing/printtyp.cmx \
+ bytecomp/printlambda.cmx parsing/printast.cmx driver/pparse.cmx \
+ parsing/parse.cmx utils/misc.cmx parsing/location.cmx \
+ typing/includemod.cmx typing/ident.cmx typing/env.cmx utils/config.cmx \
asmcomp/compilenv.cmx utils/clflags.cmx utils/ccomp.cmx \
asmcomp/asmgen.cmx driver/optcompile.cmi
driver/opterrors.cmo : utils/warnings.cmi typing/typetexp.cmi \
@@ -954,9 +961,9 @@ toplevel/toploop.cmo : utils/warnings.cmi typing/types.cmi \
parsing/printast.cmi typing/predef.cmi typing/path.cmi \
parsing/parsetree.cmi parsing/parse.cmi typing/outcometree.cmi \
typing/oprint.cmi utils/misc.cmi bytecomp/meta.cmi parsing/longident.cmi \
- parsing/location.cmi parsing/lexer.cmi typing/ident.cmi \
- toplevel/genprintval.cmi driver/errors.cmi typing/env.cmi \
- bytecomp/emitcode.cmi bytecomp/dll.cmi utils/consistbl.cmi \
+ parsing/location.cmi parsing/lexer.cmi typing/includemod.cmi \
+ typing/ident.cmi toplevel/genprintval.cmi driver/errors.cmi \
+ typing/env.cmi bytecomp/emitcode.cmi bytecomp/dll.cmi utils/consistbl.cmi \
utils/config.cmi driver/compile.cmi utils/clflags.cmi \
bytecomp/bytegen.cmi typing/btype.cmi toplevel/toploop.cmi
toplevel/toploop.cmx : utils/warnings.cmx typing/types.cmx \
@@ -966,9 +973,9 @@ toplevel/toploop.cmx : utils/warnings.cmx typing/types.cmx \
parsing/printast.cmx typing/predef.cmx typing/path.cmx \
parsing/parsetree.cmi parsing/parse.cmx typing/outcometree.cmi \
typing/oprint.cmx utils/misc.cmx bytecomp/meta.cmx parsing/longident.cmx \
- parsing/location.cmx parsing/lexer.cmx typing/ident.cmx \
- toplevel/genprintval.cmx driver/errors.cmx typing/env.cmx \
- bytecomp/emitcode.cmx bytecomp/dll.cmx utils/consistbl.cmx \
+ parsing/location.cmx parsing/lexer.cmx typing/includemod.cmx \
+ typing/ident.cmx toplevel/genprintval.cmx driver/errors.cmx \
+ typing/env.cmx bytecomp/emitcode.cmx bytecomp/dll.cmx utils/consistbl.cmx \
utils/config.cmx driver/compile.cmx utils/clflags.cmx \
bytecomp/bytegen.cmx typing/btype.cmx toplevel/toploop.cmi
toplevel/topmain.cmo : utils/warnings.cmi toplevel/toploop.cmi \
diff --git a/Changes b/Changes
index 5ce900c9a..1ee080d2a 100644
--- a/Changes
+++ b/Changes
@@ -10,6 +10,10 @@ Bug fixes:
- PR#5551: Avoid repeated lookups for missing cmi files
- PR#5662: typo in md5.c
+Internals:
+- Moved debugger/envaux.ml to typing/envaux.ml to publish env_of_only_summary
+ as part of compilerlibs, to be used on bin-annot files.
+
OCaml 4.00.0:
-------------
diff --git a/Makefile b/Makefile
index 424a4c34d..4bcab0e38 100644
--- a/Makefile
+++ b/Makefile
@@ -52,9 +52,10 @@ TYPING=typing/ident.cmo typing/path.cmo \
typing/datarepr.cmo typing/cmi_format.cmo typing/env.cmo \
typing/typedtree.cmo typing/printtyped.cmo typing/ctype.cmo \
typing/printtyp.cmo typing/includeclass.cmo \
- typing/mtype.cmo typing/includecore.cmo \
+ typing/mtype.cmo typing/envaux.cmo typing/includecore.cmo \
typing/includemod.cmo typing/typetexp.cmo typing/parmatch.cmo \
- typing/cmt_format.cmo typing/stypes.cmo typing/typecore.cmo \
+ typing/typedtreeIter.cmo typing/typedtreeMap.cmo typing/cmt_format.cmo \
+ typing/stypes.cmo typing/typecore.cmo \
typing/typedecl.cmo typing/typeclass.cmo \
typing/typemod.cmo
diff --git a/Makefile.nt b/Makefile.nt
index ae4c784dd..e466327fa 100644
--- a/Makefile.nt
+++ b/Makefile.nt
@@ -49,10 +49,11 @@ TYPING=typing/ident.cmo typing/path.cmo \
typing/datarepr.cmo typing/cmi_format.cmo typing/env.cmo \
typing/typedtree.cmo typing/ctype.cmo \
typing/printtyp.cmo typing/includeclass.cmo \
- typing/mtype.cmo typing/includecore.cmo \
+ typing/mtype.cmo typing/envaux.cmo typing/includecore.cmo \
typing/includemod.cmo typing/parmatch.cmo \
typing/typetexp.cmo \
- typing/cmt_format.cmo typing/stypes.cmo typing/typecore.cmo \
+ typing/typedtreeIter.cmo typing/typedtreeMap.cmo typing/cmt_format.cmo \
+ typing/stypes.cmo typing/typecore.cmo \
typing/typedecl.cmo typing/typeclass.cmo \
typing/typemod.cmo
diff --git a/debugger/.depend b/debugger/.depend
index 75ed135a3..e2643b720 100644
--- a/debugger/.depend
+++ b/debugger/.depend
@@ -1,214 +1,211 @@
-breakpoints.cmi: primitives.cmi ../bytecomp/instruct.cmi
-checkpoints.cmi: primitives.cmi debugcom.cmi
-command_line.cmi:
-debugcom.cmi: primitives.cmi
-debugger_config.cmi:
-dynlink.cmi:
-envaux.cmi: ../typing/path.cmi ../bytecomp/instruct.cmi ../typing/env.cmi
-eval.cmi: ../typing/types.cmi ../typing/path.cmi parser_aux.cmi \
+breakpoints.cmi : primitives.cmi ../bytecomp/instruct.cmi
+checkpoints.cmi : primitives.cmi debugcom.cmi
+command_line.cmi :
+debugcom.cmi : primitives.cmi
+debugger_config.cmi :
+dynlink.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
-events.cmi: ../bytecomp/instruct.cmi
-exec.cmi:
-frames.cmi: primitives.cmi ../bytecomp/instruct.cmi
-history.cmi:
-input_handling.cmi: primitives.cmi
-int64ops.cmi:
-lexer.cmi: parser.cmi
-loadprinter.cmi: ../parsing/longident.cmi dynlink.cmi
-parameters.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: $(UNIXDIR)/unix.cmi
-printval.cmi: ../typing/types.cmi ../typing/path.cmi parser_aux.cmi \
+events.cmi : ../bytecomp/instruct.cmi
+exec.cmi :
+frames.cmi : primitives.cmi ../bytecomp/instruct.cmi
+history.cmi :
+input_handling.cmi : primitives.cmi
+int64ops.cmi :
+lexer.cmi : parser.cmi
+loadprinter.cmi : ../parsing/longident.cmi dynlink.cmi
+parameters.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 : $(UNIXDIR)/unix.cmi
+printval.cmi : ../typing/types.cmi ../typing/path.cmi parser_aux.cmi \
../typing/env.cmi debugcom.cmi
-program_loading.cmi: primitives.cmi
-program_management.cmi:
-question.cmi:
-show_information.cmi: ../bytecomp/instruct.cmi
-show_source.cmi: ../bytecomp/instruct.cmi
-source.cmi:
-symbols.cmi: ../bytecomp/instruct.cmi
-time_travel.cmi: primitives.cmi
-trap_barrier.cmi:
-unix_tools.cmi: $(UNIXDIR)/unix.cmi
-breakpoints.cmo: symbols.cmi primitives.cmi pos.cmi ../bytecomp/instruct.cmi \
- exec.cmi debugcom.cmi checkpoints.cmi breakpoints.cmi
-breakpoints.cmx: symbols.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 $(UNIXDIR)/unix.cmi \
+program_loading.cmi : primitives.cmi
+program_management.cmi :
+question.cmi :
+show_information.cmi : ../bytecomp/instruct.cmi
+show_source.cmi : ../bytecomp/instruct.cmi
+source.cmi :
+symbols.cmi : ../bytecomp/instruct.cmi
+time_travel.cmi : primitives.cmi
+trap_barrier.cmi :
+unix_tools.cmi : $(UNIXDIR)/unix.cmi
+breakpoints.cmo : symbols.cmi primitives.cmi pos.cmi \
+ ../bytecomp/instruct.cmi exec.cmi debugcom.cmi checkpoints.cmi \
+ breakpoints.cmi
+breakpoints.cmx : symbols.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 $(UNIXDIR)/unix.cmi \
../typing/types.cmi time_travel.cmi symbols.cmi source.cmi \
show_source.cmi show_information.cmi question.cmi program_management.cmi \
program_loading.cmi printval.cmi primitives.cmi pos.cmi parser_aux.cmi \
parser.cmi parameters.cmi ../utils/misc.cmi ../parsing/longident.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 \
+ events.cmi eval.cmi ../typing/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 $(UNIXDIR)/unix.cmx \
+command_line.cmx : unix_tools.cmx $(UNIXDIR)/unix.cmx \
../typing/types.cmx time_travel.cmx symbols.cmx source.cmx \
show_source.cmx show_information.cmx question.cmx program_management.cmx \
program_loading.cmx printval.cmx primitives.cmx pos.cmx parser_aux.cmi \
parser.cmx parameters.cmx ../utils/misc.cmx ../parsing/longident.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 \
+ events.cmx eval.cmx ../typing/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 \
+debugcom.cmo : primitives.cmi ../utils/misc.cmi int64ops.cmi \
input_handling.cmi debugcom.cmi
-debugcom.cmx: primitives.cmx ../utils/misc.cmx int64ops.cmx \
+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 \
+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 \
- dynlink.cmi
-dynlink.cmx: ../bytecomp/symtable.cmx ../bytecomp/opcodes.cmx \
+ ../typing/cmi_format.cmi dynlink.cmi
+dynlink.cmx : ../bytecomp/symtable.cmx ../bytecomp/opcodes.cmx \
../utils/misc.cmx ../bytecomp/meta.cmx ../bytecomp/dll.cmx \
../utils/consistbl.cmx ../utils/config.cmx ../bytecomp/cmo_format.cmi \
- dynlink.cmi
-envaux.cmo: ../typing/types.cmi ../typing/subst.cmi ../typing/printtyp.cmi \
- ../typing/path.cmi ../typing/mtype.cmi ../utils/misc.cmi \
- ../bytecomp/instruct.cmi ../typing/env.cmi envaux.cmi
-envaux.cmx: ../typing/types.cmx ../typing/subst.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 ../typing/subst.cmi \
+ ../typing/cmi_format.cmx dynlink.cmi
+eval.cmo : ../typing/types.cmi ../bytecomp/symtable.cmi ../typing/subst.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 debugcom.cmi ../typing/ctype.cmi \
../typing/btype.cmi eval.cmi
-eval.cmx: ../typing/types.cmx ../bytecomp/symtable.cmx ../typing/subst.cmx \
+eval.cmx : ../typing/types.cmx ../bytecomp/symtable.cmx ../typing/subst.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 debugcom.cmx ../typing/ctype.cmx \
../typing/btype.cmx eval.cmi
-events.cmo: ../parsing/location.cmi ../bytecomp/instruct.cmi events.cmi
-events.cmx: ../parsing/location.cmx ../bytecomp/instruct.cmx events.cmi
-exec.cmo: exec.cmi
-exec.cmx: exec.cmi
-frames.cmo: symbols.cmi ../utils/misc.cmi ../bytecomp/instruct.cmi events.cmi \
- debugcom.cmi frames.cmi
-frames.cmx: symbols.cmx ../utils/misc.cmx ../bytecomp/instruct.cmx events.cmx \
- debugcom.cmx frames.cmi
-history.cmo: primitives.cmi int64ops.cmi debugger_config.cmi checkpoints.cmi \
- history.cmi
-history.cmx: primitives.cmx int64ops.cmx debugger_config.cmx checkpoints.cmx \
- history.cmi
-input_handling.cmo: $(UNIXDIR)/unix.cmi primitives.cmi \
+events.cmo : ../parsing/location.cmi ../bytecomp/instruct.cmi events.cmi
+events.cmx : ../parsing/location.cmx ../bytecomp/instruct.cmx events.cmi
+exec.cmo : exec.cmi
+exec.cmx : exec.cmi
+frames.cmo : symbols.cmi ../utils/misc.cmi ../bytecomp/instruct.cmi \
+ events.cmi debugcom.cmi frames.cmi
+frames.cmx : symbols.cmx ../utils/misc.cmx ../bytecomp/instruct.cmx \
+ events.cmx debugcom.cmx frames.cmi
+history.cmo : primitives.cmi int64ops.cmi debugger_config.cmi \
+ checkpoints.cmi history.cmi
+history.cmx : primitives.cmx int64ops.cmx debugger_config.cmx \
+ checkpoints.cmx history.cmi
+input_handling.cmo : $(UNIXDIR)/unix.cmi primitives.cmi \
input_handling.cmi
-input_handling.cmx: $(UNIXDIR)/unix.cmx primitives.cmx \
+input_handling.cmx : $(UNIXDIR)/unix.cmx primitives.cmx \
input_handling.cmi
-int64ops.cmo: int64ops.cmi
-int64ops.cmx: int64ops.cmi
-lexer.cmo: parser.cmi lexer.cmi
-lexer.cmx: parser.cmx lexer.cmi
-loadprinter.cmo: ../typing/types.cmi ../bytecomp/symtable.cmi printval.cmi \
+int64ops.cmo : int64ops.cmi
+int64ops.cmx : int64ops.cmi
+lexer.cmo : parser.cmi lexer.cmi
+lexer.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 ../typing/ctype.cmi ../utils/config.cmi loadprinter.cmi
-loadprinter.cmx: ../typing/types.cmx ../bytecomp/symtable.cmx printval.cmx \
+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 ../typing/ctype.cmx ../utils/config.cmx loadprinter.cmi
-main.cmo: unix_tools.cmi $(UNIXDIR)/unix.cmi time_travel.cmi \
+main.cmo : unix_tools.cmi $(UNIXDIR)/unix.cmi time_travel.cmi \
show_information.cmi question.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 ../typing/cmi_format.cmi ../utils/clflags.cmi \
checkpoints.cmi
-main.cmx: unix_tools.cmx $(UNIXDIR)/unix.cmx time_travel.cmx \
+main.cmx : unix_tools.cmx $(UNIXDIR)/unix.cmx time_travel.cmx \
show_information.cmx question.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 ../typing/cmi_format.cmx ../utils/clflags.cmx \
checkpoints.cmx
-parameters.cmo: primitives.cmi envaux.cmi debugger_config.cmi \
+parameters.cmo : primitives.cmi ../typing/envaux.cmi debugger_config.cmi \
../utils/config.cmi parameters.cmi
-parameters.cmx: primitives.cmx envaux.cmx debugger_config.cmx \
+parameters.cmx : primitives.cmx ../typing/envaux.cmx debugger_config.cmx \
../utils/config.cmx parameters.cmi
-parser.cmo: parser_aux.cmi ../parsing/longident.cmi int64ops.cmi \
+parser.cmo : parser_aux.cmi ../parsing/longident.cmi int64ops.cmi \
input_handling.cmi parser.cmi
-parser.cmx: parser_aux.cmi ../parsing/longident.cmx int64ops.cmx \
+parser.cmx : parser_aux.cmi ../parsing/longident.cmx int64ops.cmx \
input_handling.cmx parser.cmi
-pattern_matching.cmo: ../typing/typedtree.cmi parser_aux.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 \
+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 \
+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: $(UNIXDIR)/unix.cmi primitives.cmi
-primitives.cmx: $(UNIXDIR)/unix.cmx primitives.cmi
-printval.cmo: ../typing/types.cmi ../bytecomp/symtable.cmi \
+primitives.cmo : $(UNIXDIR)/unix.cmi primitives.cmi
+primitives.cmx : $(UNIXDIR)/unix.cmx primitives.cmi
+printval.cmo : ../typing/types.cmi ../bytecomp/symtable.cmi \
../typing/printtyp.cmi ../typing/path.cmi parser_aux.cmi \
../typing/outcometree.cmi ../typing/oprint.cmi \
../toplevel/genprintval.cmi debugcom.cmi printval.cmi
-printval.cmx: ../typing/types.cmx ../bytecomp/symtable.cmx \
+printval.cmx : ../typing/types.cmx ../bytecomp/symtable.cmx \
../typing/printtyp.cmx ../typing/path.cmx parser_aux.cmi \
../typing/outcometree.cmi ../typing/oprint.cmx \
../toplevel/genprintval.cmx debugcom.cmx printval.cmi
-program_loading.cmo: unix_tools.cmi $(UNIXDIR)/unix.cmi primitives.cmi \
- parameters.cmi input_handling.cmi debugger_config.cmi program_loading.cmi
-program_loading.cmx: unix_tools.cmx $(UNIXDIR)/unix.cmx primitives.cmx \
- parameters.cmx input_handling.cmx debugger_config.cmx program_loading.cmi
-program_management.cmo: unix_tools.cmi $(UNIXDIR)/unix.cmi \
+program_loading.cmo : unix_tools.cmi $(UNIXDIR)/unix.cmi \
+ primitives.cmi parameters.cmi input_handling.cmi debugger_config.cmi \
+ program_loading.cmi
+program_loading.cmx : unix_tools.cmx $(UNIXDIR)/unix.cmx \
+ primitives.cmx parameters.cmx input_handling.cmx debugger_config.cmx \
+ program_loading.cmi
+program_management.cmo : unix_tools.cmi $(UNIXDIR)/unix.cmi \
time_travel.cmi symbols.cmi question.cmi program_loading.cmi \
primitives.cmi parameters.cmi int64ops.cmi input_handling.cmi history.cmi \
debugger_config.cmi breakpoints.cmi program_management.cmi
-program_management.cmx: unix_tools.cmx $(UNIXDIR)/unix.cmx \
+program_management.cmx : unix_tools.cmx $(UNIXDIR)/unix.cmx \
time_travel.cmx symbols.cmx question.cmx program_loading.cmx \
primitives.cmx parameters.cmx int64ops.cmx input_handling.cmx history.cmx \
debugger_config.cmx breakpoints.cmx program_management.cmi
-question.cmo: primitives.cmi lexer.cmi input_handling.cmi question.cmi
-question.cmx: primitives.cmx lexer.cmx input_handling.cmx question.cmi
-show_information.cmo: symbols.cmi source.cmi show_source.cmi printval.cmi \
+question.cmo : primitives.cmi lexer.cmi input_handling.cmi question.cmi
+question.cmx : primitives.cmx lexer.cmx input_handling.cmx question.cmi
+show_information.cmo : symbols.cmi source.cmi show_source.cmi printval.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 source.cmx show_source.cmx printval.cmx \
+show_information.cmx : symbols.cmx source.cmx show_source.cmx printval.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 \
+show_source.cmo : source.cmi primitives.cmi parameters.cmi \
../parsing/location.cmi ../bytecomp/instruct.cmi events.cmi \
debugger_config.cmi show_source.cmi
-show_source.cmx: source.cmx primitives.cmx parameters.cmx \
+show_source.cmx : source.cmx primitives.cmx parameters.cmx \
../parsing/location.cmx ../bytecomp/instruct.cmx events.cmx \
debugger_config.cmx show_source.cmi
-source.cmo: primitives.cmi ../utils/misc.cmi debugger_config.cmi \
+source.cmo : primitives.cmi ../utils/misc.cmi debugger_config.cmi \
../utils/config.cmi source.cmi
-source.cmx: primitives.cmx ../utils/misc.cmx debugger_config.cmx \
+source.cmx : primitives.cmx ../utils/misc.cmx debugger_config.cmx \
../utils/config.cmx source.cmi
-symbols.cmo: ../bytecomp/symtable.cmi program_loading.cmi \
+symbols.cmo : ../bytecomp/symtable.cmi program_loading.cmi \
../bytecomp/instruct.cmi events.cmi debugger_config.cmi debugcom.cmi \
checkpoints.cmi ../bytecomp/bytesections.cmi symbols.cmi
-symbols.cmx: ../bytecomp/symtable.cmx program_loading.cmx \
+symbols.cmx : ../bytecomp/symtable.cmx program_loading.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 question.cmi \
+time_travel.cmo : trap_barrier.cmi symbols.cmi question.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 question.cmx \
+time_travel.cmx : trap_barrier.cmx symbols.cmx question.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: $(UNIXDIR)/unix.cmi primitives.cmi ../utils/misc.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 : $(UNIXDIR)/unix.cmi primitives.cmi ../utils/misc.cmi \
unix_tools.cmi
-unix_tools.cmx: $(UNIXDIR)/unix.cmx primitives.cmx ../utils/misc.cmx \
+unix_tools.cmx : $(UNIXDIR)/unix.cmx primitives.cmx ../utils/misc.cmx \
unix_tools.cmi
diff --git a/debugger/Makefile.shared b/debugger/Makefile.shared
index 964f71f69..849d2a1f5 100644
--- a/debugger/Makefile.shared
+++ b/debugger/Makefile.shared
@@ -37,6 +37,7 @@ OTHEROBJS=\
../typing/subst.cmo ../typing/predef.cmo \
../typing/datarepr.cmo ../typing/cmi_format.cmo ../typing/env.cmo ../typing/oprint.cmo \
../typing/ctype.cmo ../typing/printtyp.cmo ../typing/mtype.cmo \
+ ../typing/envaux.cmo \
../bytecomp/runtimedef.cmo ../bytecomp/bytesections.cmo \
../bytecomp/dll.cmo ../bytecomp/meta.cmo ../bytecomp/symtable.cmo \
../bytecomp/opcodes.cmo \
@@ -49,7 +50,6 @@ OBJS=\
primitives.cmo \
unix_tools.cmo \
debugger_config.cmo \
- envaux.cmo \
parameters.cmo \
lexer.cmo \
input_handling.cmo \
diff --git a/ocamldoc/Makefile b/ocamldoc/Makefile
index 80637414d..245f6f873 100644
--- a/ocamldoc/Makefile
+++ b/ocamldoc/Makefile
@@ -169,6 +169,7 @@ OCAMLCMOFILES=$(OCAMLSRCDIR)/parsing/printast.cmo \
$(OCAMLSRCDIR)/typing/typedtree.cmo \
$(OCAMLSRCDIR)/typing/parmatch.cmo \
$(OCAMLSRCDIR)/typing/stypes.cmo \
+ $(OCAMLSRCDIR)/typing/typedtreeMap.cmo \
$(OCAMLSRCDIR)/typing/cmt_format.cmo \
$(OCAMLSRCDIR)/typing/typecore.cmo \
$(OCAMLSRCDIR)/typing/includeclass.cmo \
diff --git a/ocamldoc/Makefile.nt b/ocamldoc/Makefile.nt
index f682d4928..fbe7f29b3 100644
--- a/ocamldoc/Makefile.nt
+++ b/ocamldoc/Makefile.nt
@@ -161,6 +161,7 @@ OCAMLCMOFILES=$(OCAMLSRCDIR)/parsing/printast.cmo \
$(OCAMLSRCDIR)/typing/typedtree.cmo \
$(OCAMLSRCDIR)/typing/parmatch.cmo \
$(OCAMLSRCDIR)/typing/stypes.cmo \
+ $(OCAMLSRCDIR)/typing/typedtreeMap.cmo \
$(OCAMLSRCDIR)/typing/cmt_format.cmo \
$(OCAMLSRCDIR)/typing/typecore.cmo \
$(OCAMLSRCDIR)/typing/includeclass.cmo \
diff --git a/testsuite/tests/asmcomp/Makefile b/testsuite/tests/asmcomp/Makefile
index 8143873d6..da16aacec 100644
--- a/testsuite/tests/asmcomp/Makefile
+++ b/testsuite/tests/asmcomp/Makefile
@@ -45,6 +45,7 @@ OTHEROBJS=\
$(TOPDIR)/typing/includemod.cmo \
$(TOPDIR)/typing/parmatch.cmo \
$(TOPDIR)/typing/typetexp.cmo \
+ $(TOPDIR)/typing/typedtreeMap.cmo \
$(TOPDIR)/typing/cmt_format.cmo \
$(TOPDIR)/typing/stypes.cmo \
$(TOPDIR)/typing/typecore.cmo \
diff --git a/tools/Makefile.shared b/tools/Makefile.shared
index 72f126205..bddcfdb98 100644
--- a/tools/Makefile.shared
+++ b/tools/Makefile.shared
@@ -212,10 +212,12 @@ READ_CMT= \
../typing/oprint.cmo \
../typing/primitive.cmo \
../typing/printtyp.cmo \
+ ../typing/typedtreeMap.cmo \
+ ../typing/typedtreeIter.cmo \
../typing/cmt_format.cmo \
../typing/stypes.cmo \
\
- pprintast.cmo untypeast.cmo typedtreeIter.cmo \
+ pprintast.cmo untypeast.cmo \
cmt2annot.cmo read_cmt.cmo
read_cmt: $(READ_CMT)
diff --git a/typing/cmt_format.ml b/typing/cmt_format.ml
index 1fe0fd2e8..b499fe774 100644
--- a/typing/cmt_format.ml
+++ b/typing/cmt_format.ml
@@ -19,6 +19,8 @@ open Typedtree
integrated in Typerex).
*)
+
+
let read_magic_number ic =
let len_magic_number = String.length Config.cmt_magic_number in
let magic_number = String.create len_magic_number in
@@ -54,11 +56,99 @@ type cmt_infos = {
cmt_initial_env : Env.t;
cmt_imports : (string * Digest.t) list;
cmt_interface_digest : Digest.t option;
+ cmt_use_summaries : bool;
}
type error =
Not_a_typedtree of string
+
+
+
+
+(*
+ Keeping all the environments in the typedtree can result in
+ huge typedtrees.
+*)
+
+
+let need_to_clear_env =
+ try ignore (Sys.getenv "OCAML_BINANNOT_WITHENV"); false
+ with Not_found -> true
+
+(* Re-introduce sharing after clearing environments *)
+let env_hcons = Hashtbl.create 133
+let keep_only_summary env =
+ let new_env = Env.keep_only_summary env in
+ try
+ Hashtbl.find env_hcons new_env
+ with Not_found ->
+ Hashtbl.add env_hcons new_env new_env;
+ new_env
+let clear_env_hcons () = Hashtbl.clear env_hcons
+
+module ClearEnv = TypedtreeMap.MakeMap (struct
+ open TypedtreeMap
+ include DefaultMapArgument
+
+ let leave_pattern p = { p with pat_env = keep_only_summary p.pat_env }
+ let leave_expression e =
+ let exp_extra = List.map (function
+ (Texp_open (path, lloc, env), loc) ->
+ (Texp_open (path, lloc, keep_only_summary env), loc)
+ | exp_extra -> exp_extra) e.exp_extra in
+ { e with
+ exp_env = keep_only_summary e.exp_env;
+ exp_extra = exp_extra }
+ let leave_class_expr c =
+ { c with cl_env = keep_only_summary c.cl_env }
+ let leave_module_expr m =
+ { m with mod_env = keep_only_summary m.mod_env }
+ let leave_structure s =
+ { s with str_final_env = keep_only_summary s.str_final_env }
+ let leave_structure_item str =
+ { str with str_env = keep_only_summary str.str_env }
+ let leave_module_type m =
+ { m with mty_env = keep_only_summary m.mty_env }
+ let leave_signature s =
+ { s with sig_final_env = keep_only_summary s.sig_final_env }
+ let leave_signature_item s =
+ { s with sig_env = keep_only_summary s.sig_env }
+ let leave_core_type c =
+ { c with ctyp_env = keep_only_summary c.ctyp_env }
+ let leave_class_type c =
+ { c with cltyp_env = keep_only_summary c.cltyp_env }
+
+end)
+
+let clear_part p = match p with
+ | Partial_structure s -> Partial_structure (ClearEnv.map_structure s)
+ | Partial_structure_item s ->
+ Partial_structure_item (ClearEnv.map_structure_item s)
+ | Partial_expression e -> Partial_expression (ClearEnv.map_expression e)
+ | Partial_pattern p -> Partial_pattern (ClearEnv.map_pattern p)
+ | Partial_class_expr ce -> Partial_class_expr (ClearEnv.map_class_expr ce)
+ | Partial_signature s -> Partial_signature (ClearEnv.map_signature s)
+ | Partial_signature_item s ->
+ Partial_signature_item (ClearEnv.map_signature_item s)
+ | Partial_module_type s -> Partial_module_type (ClearEnv.map_module_type s)
+
+let clear_env binary_annots =
+ if need_to_clear_env then
+ match binary_annots with
+ | Implementation s -> Implementation (ClearEnv.map_structure s)
+ | Interface s -> Interface (ClearEnv.map_signature s)
+ | Packed _ -> binary_annots
+ | Partial_implementation array ->
+ Partial_implementation (Array.map clear_part array)
+ | Partial_interface array ->
+ Partial_interface (Array.map clear_part array)
+
+ else binary_annots
+
+
+
+
exception Error of error
let input_cmt ic = (input_value ic : cmt_infos)
@@ -109,7 +199,8 @@ let read_cmt filename =
let read_cmi filename =
match read filename with
- None, _ -> raise (Cmi_format.Error (Cmi_format.Not_an_interface filename))
+ None, _ ->
+ raise (Cmi_format.Error (Cmi_format.Not_an_interface filename))
| Some cmi, _ -> cmi
let saved_types = ref []
@@ -138,17 +229,20 @@ let save_cmt filename modname binary_annots sourcefile initial_env sg =
let source_digest = Misc.may_map Digest.file sourcefile in
let cmt = {
cmt_modname = modname;
- cmt_annots = binary_annots;
+ cmt_annots = clear_env binary_annots;
cmt_comments = Lexer.comments ();
cmt_args = Sys.argv;
cmt_sourcefile = sourcefile;
cmt_builddir = Sys.getcwd ();
cmt_loadpath = !Config.load_path;
cmt_source_digest = source_digest;
- cmt_initial_env = initial_env;
+ cmt_initial_env = if need_to_clear_env then
+ keep_only_summary initial_env else initial_env;
cmt_imports = List.sort compare imports;
cmt_interface_digest = this_crc;
+ cmt_use_summaries = need_to_clear_env;
} in
+ clear_env_hcons ();
output_cmt oc cmt;
close_out oc;
set_saved_types [];
diff --git a/typing/cmt_format.mli b/typing/cmt_format.mli
index ab49d0dd1..578d1743f 100644
--- a/typing/cmt_format.mli
+++ b/typing/cmt_format.mli
@@ -57,6 +57,7 @@ type cmt_infos = {
cmt_initial_env : Env.t;
cmt_imports : (string * Digest.t) list;
cmt_interface_digest : Digest.t option;
+ cmt_use_summaries : bool;
}
type error =
diff --git a/typing/env.ml b/typing/env.ml
index 95367f293..ed2e7a3f1 100644
--- a/typing/env.ml
+++ b/typing/env.ml
@@ -1304,6 +1304,20 @@ let initial = Predef.build_initial_env add_type add_exception empty
let summary env = env.summary
+let keep_only_summary env =
+ { empty with
+ summary = env.summary;
+ local_constraints = env.local_constraints;
+ in_signature = env.in_signature;
+ }
+
+let env_of_only_summary env_from_summary env =
+ let new_env = env_from_summary env.summary Subst.identity in
+ { new_env with
+ local_constraints = env.local_constraints;
+ in_signature = env.in_signature;
+ }
+
(* Error report *)
open Format
diff --git a/typing/env.mli b/typing/env.mli
index ed708f6c7..d39160ac7 100644
--- a/typing/env.mli
+++ b/typing/env.mli
@@ -141,6 +141,13 @@ val crc_units: Consistbl.t
val summary: t -> summary
+(* Return an equivalent environment where all fields have been reset,
+ except the summary. The initial environment can be rebuilt from the
+ summary, using Envaux.env_of_only_summary. *)
+
+val keep_only_summary : t -> t
+val env_of_only_summary : (summary -> Subst.t -> t) -> t -> t
+
(* Error report *)
type error =
diff --git a/debugger/envaux.ml b/typing/envaux.ml
index d146cd0fd..70b641046 100644
--- a/debugger/envaux.ml
+++ b/typing/envaux.ml
@@ -75,6 +75,9 @@ let env_of_event =
None -> Env.empty
| Some ev -> env_from_summary ev.Instruct.ev_typenv ev.Instruct.ev_typsubst
+let env_of_only_summary env =
+ Env.env_of_only_summary env_from_summary env
+
(* Error report *)
open Format
diff --git a/debugger/envaux.mli b/typing/envaux.mli
index b78173c4a..91fa4d604 100644
--- a/debugger/envaux.mli
+++ b/typing/envaux.mli
@@ -23,6 +23,8 @@ val env_of_event: Instruct.debug_event option -> Env.t
val reset_cache: unit -> unit
+val env_of_only_summary : Env.t -> Env.t
+
(* Error report *)
type error =
diff --git a/tools/typedtreeIter.ml b/typing/typedtreeIter.ml
index a4f45ec98..403c67ff9 100644
--- a/tools/typedtreeIter.ml
+++ b/typing/typedtreeIter.ml
@@ -102,7 +102,6 @@ module MakeIterator(Iter : IteratorArgument) : sig
| Some x -> f x
- open Misc
open Asttypes
let rec iter_structure str =
diff --git a/tools/typedtreeIter.mli b/typing/typedtreeIter.mli
index 1aedead2a..1aedead2a 100644
--- a/tools/typedtreeIter.mli
+++ b/typing/typedtreeIter.mli
diff --git a/typing/typedtreeMap.ml b/typing/typedtreeMap.ml
new file mode 100644
index 000000000..663eea176
--- /dev/null
+++ b/typing/typedtreeMap.ml
@@ -0,0 +1,671 @@
+
+open Typedtree
+
+module type MapArgument = sig
+ val enter_structure : structure -> structure
+ val enter_value_description : value_description -> value_description
+ val enter_type_declaration : type_declaration -> type_declaration
+ val enter_exception_declaration :
+ exception_declaration -> exception_declaration
+ val enter_pattern : pattern -> pattern
+ val enter_expression : expression -> expression
+ val enter_package_type : package_type -> package_type
+ val enter_signature : signature -> signature
+ val enter_signature_item : signature_item -> signature_item
+ val enter_modtype_declaration : modtype_declaration -> modtype_declaration
+ val enter_module_type : module_type -> module_type
+ val enter_module_expr : module_expr -> module_expr
+ val enter_with_constraint : with_constraint -> with_constraint
+ val enter_class_expr : class_expr -> class_expr
+ val enter_class_signature : class_signature -> class_signature
+ val enter_class_description : class_description -> class_description
+ val enter_class_type_declaration :
+ class_type_declaration -> class_type_declaration
+ val enter_class_infos : 'a class_infos -> 'a class_infos
+ val enter_class_type : class_type -> class_type
+ val enter_class_type_field : class_type_field -> class_type_field
+ val enter_core_type : core_type -> core_type
+ val enter_core_field_type : core_field_type -> core_field_type
+ val enter_class_structure : class_structure -> class_structure
+ val enter_class_field : class_field -> class_field
+ val enter_structure_item : structure_item -> structure_item
+
+ val leave_structure : structure -> structure
+ val leave_value_description : value_description -> value_description
+ val leave_type_declaration : type_declaration -> type_declaration
+ val leave_exception_declaration :
+ exception_declaration -> exception_declaration
+ val leave_pattern : pattern -> pattern
+ val leave_expression : expression -> expression
+ val leave_package_type : package_type -> package_type
+ val leave_signature : signature -> signature
+ val leave_signature_item : signature_item -> signature_item
+ val leave_modtype_declaration : modtype_declaration -> modtype_declaration
+ val leave_module_type : module_type -> module_type
+ val leave_module_expr : module_expr -> module_expr
+ val leave_with_constraint : with_constraint -> with_constraint
+ val leave_class_expr : class_expr -> class_expr
+ val leave_class_signature : class_signature -> class_signature
+ val leave_class_description : class_description -> class_description
+ val leave_class_type_declaration :
+ class_type_declaration -> class_type_declaration
+ val leave_class_infos : 'a class_infos -> 'a class_infos
+ val leave_class_type : class_type -> class_type
+ val leave_class_type_field : class_type_field -> class_type_field
+ val leave_core_type : core_type -> core_type
+ val leave_core_field_type : core_field_type -> core_field_type
+ val leave_class_structure : class_structure -> class_structure
+ val leave_class_field : class_field -> class_field
+ val leave_structure_item : structure_item -> structure_item
+
+end
+
+
+module MakeMap(Map : MapArgument) = struct
+
+ let may_map f v =
+ match v with
+ None -> v
+ | Some x -> Some (f x)
+
+
+ open Misc
+ open Asttypes
+
+ let rec map_structure str =
+ let str = Map.enter_structure str in
+ let str_items = List.map map_structure_item str.str_items in
+ Map.leave_structure { str with str_items = str_items }
+
+ and map_binding (pat, exp) = (map_pattern pat, map_expression exp)
+
+ and map_bindings rec_flag list =
+ List.map map_binding list
+
+ and map_structure_item item =
+ let item = Map.enter_structure_item item in
+ let str_desc =
+ match item.str_desc with
+ Tstr_eval exp -> Tstr_eval (map_expression exp)
+ | Tstr_value (rec_flag, list) ->
+ Tstr_value (rec_flag, map_bindings rec_flag list)
+ | Tstr_primitive (id, name, v) ->
+ Tstr_primitive (id, name, map_value_description v)
+ | Tstr_type list ->
+ Tstr_type (List.map (
+ fun (id, name, decl) ->
+ (id, name, map_type_declaration decl) ) list)
+ | Tstr_exception (id, name, decl) ->
+ Tstr_exception (id, name, map_exception_declaration decl)
+ | Tstr_exn_rebind (id, name, path, lid) ->
+ Tstr_exn_rebind (id, name, path, lid)
+ | Tstr_module (id, name, mexpr) ->
+ Tstr_module (id, name, map_module_expr mexpr)
+ | Tstr_recmodule list ->
+ let list =
+ List.map (fun (id, name, mtype, mexpr) ->
+ (id, name, map_module_type mtype, map_module_expr mexpr)
+ ) list
+ in
+ Tstr_recmodule list
+ | Tstr_modtype (id, name, mtype) ->
+ Tstr_modtype (id, name, map_module_type mtype)
+ | Tstr_open (path, lid) -> Tstr_open (path, lid)
+ | Tstr_class list ->
+ let list =
+ List.map (fun (ci, string_list, virtual_flag) ->
+ let ci = Map.enter_class_infos ci in
+ let ci_expr = map_class_expr ci.ci_expr in
+ (Map.leave_class_infos { ci with ci_expr = ci_expr},
+ string_list, virtual_flag)
+ ) list
+ in
+ Tstr_class list
+ | Tstr_class_type list ->
+ let list = List.map (fun (id, name, ct) ->
+ let ct = Map.enter_class_infos ct in
+ let ci_expr = map_class_type ct.ci_expr in
+ (id, name, Map.leave_class_infos { ct with ci_expr = ci_expr})
+ ) list in
+ Tstr_class_type list
+ | Tstr_include (mexpr, idents) ->
+ Tstr_include (map_module_expr mexpr, idents)
+ in
+ Map.leave_structure_item { item with str_desc = str_desc}
+
+ and map_value_description v =
+ let v = Map.enter_value_description v in
+ let val_desc = map_core_type v.val_desc in
+ Map.leave_value_description { v with val_desc = val_desc }
+
+ and map_type_declaration decl =
+ let decl = Map.enter_type_declaration decl in
+ let typ_cstrs = List.map (fun (ct1, ct2, loc) ->
+ (map_core_type ct1,
+ map_core_type ct2,
+ loc)
+ ) decl.typ_cstrs in
+ let typ_kind = match decl.typ_kind with
+ Ttype_abstract -> Ttype_abstract
+ | Ttype_variant list ->
+ let list = List.map (fun (s, name, cts, loc) ->
+ (s, name, List.map map_core_type cts, loc)
+ ) list in
+ Ttype_variant list
+ | Ttype_record list ->
+ let list =
+ List.map (fun (s, name, mut, ct, loc) ->
+ (s, name, mut, map_core_type ct, loc)
+ ) list in
+ Ttype_record list
+ in
+ let typ_manifest =
+ match decl.typ_manifest with
+ None -> None
+ | Some ct -> Some (map_core_type ct)
+ in
+ Map.leave_type_declaration { decl with typ_cstrs = typ_cstrs;
+ typ_kind = typ_kind; typ_manifest = typ_manifest }
+
+ and map_exception_declaration decl =
+ let decl = Map.enter_exception_declaration decl in
+ let exn_params = List.map map_core_type decl.exn_params in
+ let decl = { exn_params = exn_params;
+ exn_exn = decl.exn_exn;
+ exn_loc = decl.exn_loc } in
+ Map.leave_exception_declaration decl;
+
+ and map_pattern pat =
+ let pat = Map.enter_pattern pat in
+ let pat_desc =
+ match pat.pat_desc with
+ | Tpat_alias (pat1, p, text) ->
+ let pat1 = map_pattern pat1 in
+ Tpat_alias (pat1, p, text)
+ | Tpat_tuple list -> Tpat_tuple (List.map map_pattern list)
+ | Tpat_construct (path, lid, cstr_decl, args, arity) ->
+ Tpat_construct (path, lid, cstr_decl,
+ List.map map_pattern args, arity)
+ | Tpat_variant (label, pato, rowo) ->
+ let pato = match pato with
+ None -> pato
+ | Some pat -> Some (map_pattern pat)
+ in
+ Tpat_variant (label, pato, rowo)
+ | Tpat_record (list, closed) ->
+ Tpat_record (List.map (fun (path, lid, lab_desc, pat) ->
+ (path, lid, lab_desc, map_pattern pat) ) list, closed)
+ | Tpat_array list -> Tpat_array (List.map map_pattern list)
+ | Tpat_or (p1, p2, rowo) ->
+ Tpat_or (map_pattern p1, map_pattern p2, rowo)
+ | Tpat_lazy p -> Tpat_lazy (map_pattern p)
+ | Tpat_constant _
+ | Tpat_any
+ | Tpat_var _ -> pat.pat_desc
+
+ in
+ let pat_extra = List.map map_pat_extra pat.pat_extra in
+ Map.leave_pattern { pat with pat_desc = pat_desc; pat_extra = pat_extra }
+
+ and map_pat_extra pat_extra =
+ match pat_extra with
+ | Tpat_constraint ct, loc -> (Tpat_constraint (map_core_type ct), loc)
+ | (Tpat_type _ | Tpat_unpack), _ -> pat_extra
+
+ and map_expression exp =
+ let exp = Map.enter_expression exp in
+ let exp_desc =
+ match exp.exp_desc with
+ Texp_ident (_, _, _)
+ | Texp_constant _ -> exp.exp_desc
+ | Texp_let (rec_flag, list, exp) ->
+ Texp_let (rec_flag,
+ map_bindings rec_flag list,
+ map_expression exp)
+ | Texp_function (label, cases, partial) ->
+ Texp_function (label, map_bindings Nonrecursive cases, partial)
+ | Texp_apply (exp, list) ->
+ Texp_apply (map_expression exp,
+ List.map (fun (label, expo, optional) ->
+ let expo =
+ match expo with
+ None -> expo
+ | Some exp -> Some (map_expression exp)
+ in
+ (label, expo, optional)
+ ) list )
+ | Texp_match (exp, list, partial) ->
+ Texp_match (
+ map_expression exp,
+ map_bindings Nonrecursive list,
+ partial
+ )
+ | Texp_try (exp, list) ->
+ Texp_try (
+ map_expression exp,
+ map_bindings Nonrecursive list
+ )
+ | Texp_tuple list ->
+ Texp_tuple (List.map map_expression list)
+ | Texp_construct (path, lid, cstr_desc, args, arity) ->
+ Texp_construct (path, lid, cstr_desc,
+ List.map map_expression args, arity )
+ | Texp_variant (label, expo) ->
+ let expo =match expo with
+ None -> expo
+ | Some exp -> Some (map_expression exp)
+ in
+ Texp_variant (label, expo)
+ | Texp_record (list, expo) ->
+ let list =
+ List.map (fun (path, lid, lab_desc, exp) ->
+ (path, lid, lab_desc, map_expression exp)
+ ) list in
+ let expo = match expo with
+ None -> expo
+ | Some exp -> Some (map_expression exp)
+ in
+ Texp_record (list, expo)
+ | Texp_field (exp, path, lid, label) ->
+ Texp_field (map_expression exp, path, lid, label)
+ | Texp_setfield (exp1, path, lid, label, exp2) ->
+ Texp_setfield (
+ map_expression exp1,
+ path, lid,
+ label,
+ map_expression exp2)
+ | Texp_array list ->
+ Texp_array (List.map map_expression list)
+ | Texp_ifthenelse (exp1, exp2, expo) ->
+ Texp_ifthenelse (
+ map_expression exp1,
+ map_expression exp2,
+ match expo with
+ None -> expo
+ | Some exp -> Some (map_expression exp)
+ )
+ | Texp_sequence (exp1, exp2) ->
+ Texp_sequence (
+ map_expression exp1,
+ map_expression exp2
+ )
+ | Texp_while (exp1, exp2) ->
+ Texp_while (
+ map_expression exp1,
+ map_expression exp2
+ )
+ | Texp_for (id, name, exp1, exp2, dir, exp3) ->
+ Texp_for (
+ id, name,
+ map_expression exp1,
+ map_expression exp2,
+ dir,
+ map_expression exp3
+ )
+ | Texp_when (exp1, exp2) ->
+ Texp_when (
+ map_expression exp1,
+ map_expression exp2
+ )
+ | Texp_send (exp, meth, expo) ->
+ Texp_send (map_expression exp, meth, may_map map_expression expo)
+ | Texp_new (path, lid, cl_decl) -> exp.exp_desc
+ | Texp_instvar (_, path, _) -> exp.exp_desc
+ | Texp_setinstvar (path, lid, path2, exp) ->
+ Texp_setinstvar (path, lid, path2, map_expression exp)
+ | Texp_override (path, list) ->
+ Texp_override (
+ path,
+ List.map (fun (path, lid, exp) ->
+ (path, lid, map_expression exp)
+ ) list
+ )
+ | Texp_letmodule (id, name, mexpr, exp) ->
+ Texp_letmodule (
+ id, name,
+ map_module_expr mexpr,
+ map_expression exp
+ )
+ | Texp_assert exp -> Texp_assert (map_expression exp)
+ | Texp_assertfalse -> exp.exp_desc
+ | Texp_lazy exp -> Texp_lazy (map_expression exp)
+ | Texp_object (cl, string_list) ->
+ Texp_object (map_class_structure cl, string_list)
+ | Texp_pack (mexpr) ->
+ Texp_pack (map_module_expr mexpr)
+ in
+ let exp_extra = List.map map_exp_extra exp.exp_extra in
+ Map.leave_expression {
+ exp with
+ exp_desc = exp_desc;
+ exp_extra = exp_extra }
+
+ and map_exp_extra exp_extra =
+ let loc = snd exp_extra in
+ match fst exp_extra with
+ | Texp_constraint (Some ct, None) ->
+ Texp_constraint (Some (map_core_type ct), None), loc
+ | Texp_constraint (None, Some ct) ->
+ Texp_constraint (None, Some (map_core_type ct)), loc
+ | Texp_constraint (Some ct1, Some ct2) ->
+ Texp_constraint (Some (map_core_type ct1),
+ Some (map_core_type ct2)), loc
+ | Texp_poly (Some ct) ->
+ Texp_poly (Some ( map_core_type ct )), loc
+ | Texp_newtype _
+ | Texp_constraint (None, None)
+ | Texp_open _
+ | Texp_poly None -> exp_extra
+
+
+ and map_package_type pack =
+ let pack = Map.enter_package_type pack in
+ let pack_fields = List.map (
+ fun (s, ct) -> (s, map_core_type ct) ) pack.pack_fields in
+ Map.leave_package_type { pack with pack_fields = pack_fields }
+
+ and map_signature sg =
+ let sg = Map.enter_signature sg in
+ let sig_items = List.map map_signature_item sg.sig_items in
+ Map.leave_signature { sg with sig_items = sig_items }
+
+ and map_signature_item item =
+ let item = Map.enter_signature_item item in
+ let sig_desc =
+ match item.sig_desc with
+ Tsig_value (id, name, v) ->
+ Tsig_value (id, name, map_value_description v)
+ | Tsig_type list -> Tsig_type (
+ List.map (fun (id, name, decl) ->
+ (id, name, map_type_declaration decl)
+ ) list
+ )
+ | Tsig_exception (id, name, decl) ->
+ Tsig_exception (id, name, map_exception_declaration decl)
+ | Tsig_module (id, name, mtype) ->
+ Tsig_module (id, name, map_module_type mtype)
+ | Tsig_recmodule list ->
+ Tsig_recmodule (List.map (
+ fun (id, name, mtype) ->
+ (id, name, map_module_type mtype) ) list)
+ | Tsig_modtype (id, name, mdecl) ->
+ Tsig_modtype (id, name, map_modtype_declaration mdecl)
+ | Tsig_open (path, lid) -> item.sig_desc
+ | Tsig_include (mty, lid) -> Tsig_include (map_module_type mty, lid)
+ | Tsig_class list -> Tsig_class (List.map map_class_description list)
+ | Tsig_class_type list ->
+ Tsig_class_type (List.map map_class_type_declaration list)
+ in
+ Map.leave_signature_item { item with sig_desc = sig_desc }
+
+ and map_modtype_declaration mdecl =
+ let mdecl = Map.enter_modtype_declaration mdecl in
+ let mdecl =
+ match mdecl with
+ Tmodtype_abstract -> Tmodtype_abstract
+ | Tmodtype_manifest mtype ->
+ Tmodtype_manifest (map_module_type mtype)
+ in
+ Map.leave_modtype_declaration mdecl
+
+
+ and map_class_description cd =
+ let cd = Map.enter_class_description cd in
+ let ci_expr = map_class_type cd.ci_expr in
+ Map.leave_class_description { cd with ci_expr = ci_expr}
+
+ and map_class_type_declaration cd =
+ let cd = Map.enter_class_type_declaration cd in
+ let ci_expr = map_class_type cd.ci_expr in
+ Map.leave_class_type_declaration { cd with ci_expr = ci_expr }
+
+ and map_module_type mty =
+ let mty = Map.enter_module_type mty in
+ let mty_desc =
+ match mty.mty_desc with
+ Tmty_ident (path, lid) -> mty.mty_desc
+ | Tmty_signature sg -> Tmty_signature (map_signature sg)
+ | Tmty_functor (id, name, mtype1, mtype2) ->
+ Tmty_functor (id, name, map_module_type mtype1,
+ map_module_type mtype2)
+ | Tmty_with (mtype, list) ->
+ Tmty_with (map_module_type mtype,
+ List.map (fun (path, lid, withc) ->
+ (path, lid, map_with_constraint withc)
+ ) list)
+ | Tmty_typeof mexpr ->
+ Tmty_typeof (map_module_expr mexpr)
+ in
+ Map.leave_module_type { mty with mty_desc = mty_desc}
+
+ and map_with_constraint cstr =
+ let cstr = Map.enter_with_constraint cstr in
+ let cstr =
+ match cstr with
+ Twith_type decl -> Twith_type (map_type_declaration decl)
+ | Twith_typesubst decl -> Twith_typesubst (map_type_declaration decl)
+ | Twith_module (path, lid) -> cstr
+ | Twith_modsubst (path, lid) -> cstr
+ in
+ Map.leave_with_constraint cstr
+
+ and map_module_expr mexpr =
+ let mexpr = Map.enter_module_expr mexpr in
+ let mod_desc =
+ match mexpr.mod_desc with
+ Tmod_ident (p, lid) -> mexpr.mod_desc
+ | Tmod_structure st -> Tmod_structure (map_structure st)
+ | Tmod_functor (id, name, mtype, mexpr) ->
+ Tmod_functor (id, name, map_module_type mtype,
+ map_module_expr mexpr)
+ | Tmod_apply (mexp1, mexp2, coercion) ->
+ Tmod_apply (map_module_expr mexp1, map_module_expr mexp2, coercion)
+ | Tmod_constraint (mexpr, mod_type, Tmodtype_implicit, coercion ) ->
+ Tmod_constraint (map_module_expr mexpr, mod_type,
+ Tmodtype_implicit, coercion)
+ | Tmod_constraint (mexpr, mod_type,
+ Tmodtype_explicit mtype, coercion) ->
+ Tmod_constraint (map_module_expr mexpr, mod_type,
+ Tmodtype_explicit (map_module_type mtype),
+ coercion)
+ | Tmod_unpack (exp, mod_type) ->
+ Tmod_unpack (map_expression exp, mod_type)
+ in
+ Map.leave_module_expr { mexpr with mod_desc = mod_desc }
+
+ and map_class_expr cexpr =
+ let cexpr = Map.enter_class_expr cexpr in
+ let cl_desc =
+ match cexpr.cl_desc with
+ | Tcl_constraint (cl, None, string_list1, string_list2, concr ) ->
+ Tcl_constraint (map_class_expr cl, None, string_list1,
+ string_list2, concr)
+ | Tcl_structure clstr -> Tcl_structure (map_class_structure clstr)
+ | Tcl_fun (label, pat, priv, cl, partial) ->
+ Tcl_fun (label, map_pattern pat,
+ List.map (fun (id, name, exp) ->
+ (id, name, map_expression exp)) priv,
+ map_class_expr cl, partial)
+
+ | Tcl_apply (cl, args) ->
+ Tcl_apply (map_class_expr cl,
+ List.map (fun (label, expo, optional) ->
+ (label, may_map map_expression expo,
+ optional)
+ ) args)
+ | Tcl_let (rec_flat, bindings, ivars, cl) ->
+ Tcl_let (rec_flat, map_bindings rec_flat bindings,
+ List.map (fun (id, name, exp) ->
+ (id, name, map_expression exp)) ivars,
+ map_class_expr cl)
+
+ | Tcl_constraint (cl, Some clty, vals, meths, concrs) ->
+ Tcl_constraint ( map_class_expr cl,
+ Some (map_class_type clty), vals, meths, concrs)
+
+ | Tcl_ident (id, name, tyl) ->
+ Tcl_ident (id, name, List.map map_core_type tyl)
+ in
+ Map.leave_class_expr { cexpr with cl_desc = cl_desc }
+
+ and map_class_type ct =
+ let ct = Map.enter_class_type ct in
+ let cltyp_desc =
+ match ct.cltyp_desc with
+ Tcty_signature csg -> Tcty_signature (map_class_signature csg)
+ | Tcty_constr (path, lid, list) ->
+ Tcty_constr (path, lid, List.map map_core_type list)
+ | Tcty_fun (label, ct, cl) ->
+ Tcty_fun (label, map_core_type ct, map_class_type cl)
+ in
+ Map.leave_class_type { ct with cltyp_desc = cltyp_desc }
+
+ and map_class_signature cs =
+ let cs = Map.enter_class_signature cs in
+ let csig_self = map_core_type cs.csig_self in
+ let csig_fields = List.map map_class_type_field cs.csig_fields in
+ Map.leave_class_signature { cs with
+ csig_self = csig_self; csig_fields = csig_fields }
+
+
+ and map_class_type_field ctf =
+ let ctf = Map.enter_class_type_field ctf in
+ let ctf_desc =
+ match ctf.ctf_desc with
+ Tctf_inher ct -> Tctf_inher (map_class_type ct)
+ | Tctf_val (s, mut, virt, ct) ->
+ Tctf_val (s, mut, virt, map_core_type ct)
+ | Tctf_virt (s, priv, ct) ->
+ Tctf_virt (s, priv, map_core_type ct)
+ | Tctf_meth (s, priv, ct) ->
+ Tctf_meth (s, priv, map_core_type ct)
+ | Tctf_cstr (ct1, ct2) ->
+ Tctf_cstr (map_core_type ct1, map_core_type ct2)
+ in
+ Map.leave_class_type_field { ctf with ctf_desc = ctf_desc }
+
+ and map_core_type ct =
+ let ct = Map.enter_core_type ct in
+ let ctyp_desc =
+ match ct.ctyp_desc with
+ Ttyp_any
+ | Ttyp_var _ -> ct.ctyp_desc
+ | Ttyp_arrow (label, ct1, ct2) ->
+ Ttyp_arrow (label, map_core_type ct1, map_core_type ct2)
+ | Ttyp_tuple list -> Ttyp_tuple (List.map map_core_type list)
+ | Ttyp_constr (path, lid, list) ->
+ Ttyp_constr (path, lid, List.map map_core_type list)
+ | Ttyp_object list -> Ttyp_object (List.map map_core_field_type list)
+ | Ttyp_class (path, lid, list, labels) ->
+ Ttyp_class (path, lid, List.map map_core_type list, labels)
+ | Ttyp_alias (ct, s) -> Ttyp_alias (map_core_type ct, s)
+ | Ttyp_variant (list, bool, labels) ->
+ Ttyp_variant (List.map map_row_field list, bool, labels)
+ | Ttyp_poly (list, ct) -> Ttyp_poly (list, map_core_type ct)
+ | Ttyp_package pack -> Ttyp_package (map_package_type pack)
+ in
+ Map.leave_core_type { ct with ctyp_desc = ctyp_desc }
+
+ and map_core_field_type cft =
+ let cft = Map.enter_core_field_type cft in
+ let field_desc = match cft.field_desc with
+ Tcfield_var -> Tcfield_var
+ | Tcfield (s, ct) -> Tcfield (s, map_core_type ct)
+ in
+ Map.leave_core_field_type { cft with field_desc = field_desc }
+
+ and map_class_structure cs =
+ let cs = Map.enter_class_structure cs in
+ let cstr_pat = map_pattern cs.cstr_pat in
+ let cstr_fields = List.map map_class_field cs.cstr_fields in
+ Map.leave_class_structure { cs with cstr_pat = cstr_pat;
+ cstr_fields = cstr_fields }
+
+ and map_row_field rf =
+ match rf with
+ Ttag (label, bool, list) ->
+ Ttag (label, bool, List.map map_core_type list)
+ | Tinherit ct -> Tinherit (map_core_type ct)
+
+ and map_class_field cf =
+ let cf = Map.enter_class_field cf in
+ let cf_desc =
+ match cf.cf_desc with
+ Tcf_inher (ovf, cl, super, vals, meths) ->
+ Tcf_inher (ovf, map_class_expr cl, super, vals, meths)
+ | Tcf_constr (cty, cty') ->
+ Tcf_constr (map_core_type cty, map_core_type cty')
+ | Tcf_val (lab, name, mut, ident, Tcfk_virtual cty, override) ->
+ Tcf_val (lab, name, mut, ident, Tcfk_virtual (map_core_type cty),
+ override)
+ | Tcf_val (lab, name, mut, ident, Tcfk_concrete exp, override) ->
+ Tcf_val (lab, name, mut, ident, Tcfk_concrete (map_expression exp),
+ override)
+ | Tcf_meth (lab, name, priv, Tcfk_virtual cty, override) ->
+ Tcf_meth (lab, name, priv, Tcfk_virtual (map_core_type cty),
+ override)
+ | Tcf_meth (lab, name, priv, Tcfk_concrete exp, override) ->
+ Tcf_meth (lab, name, priv, Tcfk_concrete (map_expression exp),
+ override)
+ | Tcf_init exp -> Tcf_init (map_expression exp)
+ in
+ Map.leave_class_field { cf with cf_desc = cf_desc }
+end
+
+
+module DefaultMapArgument = struct
+
+ let enter_structure t = t
+ let enter_value_description t = t
+ let enter_type_declaration t = t
+ let enter_exception_declaration t = t
+ let enter_pattern t = t
+ let enter_expression t = t
+ let enter_package_type t = t
+ let enter_signature t = t
+ let enter_signature_item t = t
+ let enter_modtype_declaration t = t
+ let enter_module_type t = t
+ let enter_module_expr t = t
+ let enter_with_constraint t = t
+ let enter_class_expr t = t
+ let enter_class_signature t = t
+ let enter_class_description t = t
+ let enter_class_type_declaration t = t
+ let enter_class_infos t = t
+ let enter_class_type t = t
+ let enter_class_type_field t = t
+ let enter_core_type t = t
+ let enter_core_field_type t = t
+ let enter_class_structure t = t
+ let enter_class_field t = t
+ let enter_structure_item t = t
+
+
+ let leave_structure t = t
+ let leave_value_description t = t
+ let leave_type_declaration t = t
+ let leave_exception_declaration t = t
+ let leave_pattern t = t
+ let leave_expression t = t
+ let leave_package_type t = t
+ let leave_signature t = t
+ let leave_signature_item t = t
+ let leave_modtype_declaration t = t
+ let leave_module_type t = t
+ let leave_module_expr t = t
+ let leave_with_constraint t = t
+ let leave_class_expr t = t
+ let leave_class_signature t = t
+ let leave_class_description t = t
+ let leave_class_type_declaration t = t
+ let leave_class_infos t = t
+ let leave_class_type t = t
+ let leave_class_type_field t = t
+ let leave_core_type t = t
+ let leave_core_field_type t = t
+ let leave_class_structure t = t
+ let leave_class_field t = t
+ let leave_structure_item t = t
+
+end
diff --git a/typing/typedtreeMap.mli b/typing/typedtreeMap.mli
new file mode 100644
index 000000000..2e377c898
--- /dev/null
+++ b/typing/typedtreeMap.mli
@@ -0,0 +1,78 @@
+
+open Typedtree
+
+module type MapArgument = sig
+ val enter_structure : structure -> structure
+ val enter_value_description : value_description -> value_description
+ val enter_type_declaration : type_declaration -> type_declaration
+ val enter_exception_declaration :
+ exception_declaration -> exception_declaration
+ val enter_pattern : pattern -> pattern
+ val enter_expression : expression -> expression
+ val enter_package_type : package_type -> package_type
+ val enter_signature : signature -> signature
+ val enter_signature_item : signature_item -> signature_item
+ val enter_modtype_declaration : modtype_declaration -> modtype_declaration
+ val enter_module_type : module_type -> module_type
+ val enter_module_expr : module_expr -> module_expr
+ val enter_with_constraint : with_constraint -> with_constraint
+ val enter_class_expr : class_expr -> class_expr
+ val enter_class_signature : class_signature -> class_signature
+ val enter_class_description : class_description -> class_description
+ val enter_class_type_declaration :
+ class_type_declaration -> class_type_declaration
+ val enter_class_infos : 'a class_infos -> 'a class_infos
+ val enter_class_type : class_type -> class_type
+ val enter_class_type_field : class_type_field -> class_type_field
+ val enter_core_type : core_type -> core_type
+ val enter_core_field_type : core_field_type -> core_field_type
+ val enter_class_structure : class_structure -> class_structure
+ val enter_class_field : class_field -> class_field
+ val enter_structure_item : structure_item -> structure_item
+
+ val leave_structure : structure -> structure
+ val leave_value_description : value_description -> value_description
+ val leave_type_declaration : type_declaration -> type_declaration
+ val leave_exception_declaration :
+ exception_declaration -> exception_declaration
+ val leave_pattern : pattern -> pattern
+ val leave_expression : expression -> expression
+ val leave_package_type : package_type -> package_type
+ val leave_signature : signature -> signature
+ val leave_signature_item : signature_item -> signature_item
+ val leave_modtype_declaration : modtype_declaration -> modtype_declaration
+ val leave_module_type : module_type -> module_type
+ val leave_module_expr : module_expr -> module_expr
+ val leave_with_constraint : with_constraint -> with_constraint
+ val leave_class_expr : class_expr -> class_expr
+ val leave_class_signature : class_signature -> class_signature
+ val leave_class_description : class_description -> class_description
+ val leave_class_type_declaration :
+ class_type_declaration -> class_type_declaration
+ val leave_class_infos : 'a class_infos -> 'a class_infos
+ val leave_class_type : class_type -> class_type
+ val leave_class_type_field : class_type_field -> class_type_field
+ val leave_core_type : core_type -> core_type
+ val leave_core_field_type : core_field_type -> core_field_type
+ val leave_class_structure : class_structure -> class_structure
+ val leave_class_field : class_field -> class_field
+ val leave_structure_item : structure_item -> structure_item
+
+end
+
+module MakeMap :
+ functor
+ (Iter : MapArgument) ->
+sig
+ val map_structure : structure -> structure
+ val map_pattern : pattern -> pattern
+ val map_structure_item : structure_item -> structure_item
+ val map_expression : expression -> expression
+ val map_class_expr : class_expr -> class_expr
+
+ val map_signature : signature -> signature
+ val map_signature_item : signature_item -> signature_item
+ val map_module_type : module_type -> module_type
+end
+
+module DefaultMapArgument : MapArgument