From 544244070afa8871a154a64a86aa00a6dbfacb49 Mon Sep 17 00:00:00 2001 From: Stephane Glondu Date: Fri, 12 Jun 2009 15:50:14 +0200 Subject: [PATCH] Imported Upstream version 3.11.1 --- Changes | 5 +- VERSION | 4 +- boot/ocamlc | Bin 1043810 -> 1044084 bytes boot/ocamldep | Bin 289207 -> 289193 bytes boot/ocamllex | Bin 165450 -> 165443 bytes build/install.sh | 228 ++++++++++++++------------ myocamlbuild.ml | 10 +- otherlibs/labltk/browser/lexical.ml | 4 +- otherlibs/labltk/browser/typecheck.ml | 12 +- typing/mtype.ml | 14 +- typing/typedecl.ml | 83 ++++++---- typing/typedecl.mli | 3 +- typing/typetexp.ml | 16 +- 13 files changed, 207 insertions(+), 172 deletions(-) diff --git a/Changes b/Changes index d345f33f..336cf397 100644 --- a/Changes +++ b/Changes @@ -37,6 +37,9 @@ Bug fixes: - PR#4804: bug in Big_int.int64_of_big_int on 32-bit platforms. - PR#4805: improving compatibility with the clang C compiler - PR#4809: issue with Unix.create_process under Win32 +- PR#4814: ocamlbrowser: crash when editing comments +- PR#4816: module abbreviations remove 'private' type restrictions +- PR#4817: Object type gives error "Unbound type parameter .." - Module Parsing: improved computation of locations when an ocamlyacc rule starts with an empty nonterminal - Type-checker: fixed wrong variance computation for private types @@ -2439,4 +2442,4 @@ Caml Special Light 1.06: * First public release. -$Id: Changes,v 1.183.2.17 2009/06/02 21:41:53 doligez Exp $ +$Id: Changes,v 1.183.2.18 2009/06/12 11:58:19 doligez Exp $ diff --git a/VERSION b/VERSION index f71d01de..24c85956 100644 --- a/VERSION +++ b/VERSION @@ -1,6 +1,6 @@ -3.11.1+rc1 +3.11.1 # The version string is the first line of this file. # It must be in the format described in stdlib/sys.mli -# $Id: VERSION,v 1.26.2.17 2009/06/02 21:41:53 doligez Exp $ +# $Id: VERSION,v 1.26.2.19 2009/06/12 11:58:19 doligez Exp $ diff --git a/boot/ocamlc b/boot/ocamlc index 7bddd8363f894e4795a1e049901951db5b195b4b..808d5b87f9a7d504617264bd59b130119b40fec7 100755 GIT binary patch delta 23317 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 Bl^y^9 delta 23433 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 diff --git a/boot/ocamldep b/boot/ocamldep index 763ebfeb0ddcfaf4e42de4ac6135bd97f3fbe96d..106160ccc6216d0c0702b745b590aaf76b04bdb4 100755 GIT binary patch delta 120 zcmdmfS#afL!3pAxQms;qtx`-|rI;;bc#kkJFdt=Li1J}zFq*PGUWS>SnN7`D&(KhB zdx1Q&8>gtfera)$eolUJVvatL$j#9=HZ+`mUV~XyR0*3@JBudsb{0*RNe+xRrccjg GQ2+o5iXx2w delta 124 zcmZ2^S#bMh!3p9_Mahj~tzwL=VoY1bm@Q>^&oeMEA7x;O@@HT$nzlVghMAq2OUqc# z&`{4%yC`{kraZG7=kx~}%;E|~$%gtlnMwNj$%(l+8vf3XzCJ#lPU=vaQ+4_V4Q5fG X`R(5{n74n^V438=_;`9}CW`_9isvLq diff --git a/boot/ocamllex b/boot/ocamllex index f2b80521dd88d808a777331edddb5d005e5f3c5d..15437fdb04ec376573d00e9d2fde463776e1d6d3 100755 GIT binary patch delta 58 zcmX@r!*#faYl3*ARI3!@Rw*VIXI^Fo2FAM#48jEr3_MNSvz?jPnc38g^$ZR5w%52Z Ot+i(qpRU!$qyPZN_6}(P delta 92 zcmX@y!*!~MYl1jaQF5bLs~F=}F(y}MUUmis#=8s*!i5YBJk8rPoSE2}xwMS+3=Q=R uwTqIsm%1^nwO5o5j`Ve6U|<$@4ss3#(zOf>4D8N{xjBZGmX;9)1{MG^lofFR diff --git a/build/install.sh b/build/install.sh index 34d63845..5093f313 100755 --- a/build/install.sh +++ b/build/install.sh @@ -12,7 +12,7 @@ # # ######################################################################### -# $Id: install.sh,v 1.11 2008/08/05 13:05:23 ertai Exp $ +# $Id: install.sh,v 1.11.2.1 2009/06/04 11:32:46 doligez Exp $ set -e @@ -116,6 +116,7 @@ mkdir -p $MANDIR/man$MANEXT echo "Installing core libraries..." installlibdir byterun/libcamlrun.$A asmrun/libasmrun.$A asmrun/libasmrunp.$A \ $LIBDIR +installdir byterun/libcamlrun_shared$EXT_DLL $LIBDIR PUBLIC_INCLUDES="\ alloc.h callback.h config.h custom.h fail.h intext.h \ @@ -161,96 +162,96 @@ installdir \ stdlib/stdlib.cmxa stdlib/stdlib.p.cmxa \ stdlib/camlheader \ stdlib/camlheader_ur \ - stdlib/std_exit.cm[io] \ - stdlib/arg.cmi stdlib/arg.mli \ - stdlib/array.cmi stdlib/array.mli \ - stdlib/arrayLabels.cmi stdlib/arrayLabels.mli \ - stdlib/buffer.cmi stdlib/buffer.mli \ - stdlib/callback.cmi stdlib/callback.mli \ - stdlib/camlinternalLazy.cmi stdlib/camlinternalLazy.mli \ - stdlib/camlinternalMod.cmi stdlib/camlinternalMod.mli \ - stdlib/camlinternalOO.cmi stdlib/camlinternalOO.mli \ - stdlib/char.cmi stdlib/char.mli \ - stdlib/complex.cmi stdlib/complex.mli \ - stdlib/digest.cmi stdlib/digest.mli \ - stdlib/filename.cmi stdlib/filename.mli \ - stdlib/format.cmi stdlib/format.mli \ - stdlib/gc.cmi stdlib/gc.mli \ - stdlib/genlex.cmi stdlib/genlex.mli \ - stdlib/hashtbl.cmi stdlib/hashtbl.mli \ - stdlib/int32.cmi stdlib/int32.mli \ - stdlib/int64.cmi stdlib/int64.mli \ - stdlib/lazy.cmi stdlib/lazy.mli \ - stdlib/lexing.cmi stdlib/lexing.mli \ - stdlib/list.cmi stdlib/list.mli \ - stdlib/listLabels.cmi stdlib/listLabels.mli \ - stdlib/map.cmi stdlib/map.mli \ - stdlib/marshal.cmi stdlib/marshal.mli \ - stdlib/moreLabels.cmi stdlib/moreLabels.mli \ - stdlib/nativeint.cmi stdlib/nativeint.mli \ - stdlib/obj.cmi stdlib/obj.mli \ - stdlib/oo.cmi stdlib/oo.mli \ - stdlib/parsing.cmi stdlib/parsing.mli \ - stdlib/pervasives.cmi stdlib/pervasives.mli \ - stdlib/printexc.cmi stdlib/printexc.mli \ - stdlib/printf.cmi stdlib/printf.mli \ - stdlib/queue.cmi stdlib/queue.mli \ - stdlib/random.cmi stdlib/random.mli \ - stdlib/scanf.cmi stdlib/scanf.mli \ - stdlib/sort.cmi stdlib/sort.mli \ - stdlib/stack.cmi stdlib/stack.mli \ - stdlib/stdLabels.cmi stdlib/stdLabels.mli \ - stdlib/stream.cmi stdlib/stream.mli \ - stdlib/string.cmi stdlib/string.mli \ - stdlib/stringLabels.cmi stdlib/stringLabels.mli \ - stdlib/sys.cmi stdlib/sys.mli \ - stdlib/weak.cmi stdlib/weak.mli \ - stdlib/$set.cmi stdlib/$set.mli \ - stdlib/arg.cmx stdlib/arg.p.cmx stdlib/arg.$O stdlib/arg.p.$O \ - stdlib/array.cmx stdlib/array.p.cmx stdlib/array.$O stdlib/array.p.$O \ - stdlib/arrayLabels.cmx stdlib/arrayLabels.p.cmx stdlib/arrayLabels.$O stdlib/arrayLabels.p.$O \ - stdlib/buffer.cmx stdlib/buffer.p.cmx stdlib/buffer.$O stdlib/buffer.p.$O \ - stdlib/callback.cmx stdlib/callback.p.cmx stdlib/callback.$O stdlib/callback.p.$O \ - stdlib/camlinternalLazy.cmx stdlib/camlinternalLazy.p.cmx stdlib/camlinternalLazy.$O stdlib/camlinternalLazy.p.$O \ - stdlib/camlinternalMod.cmx stdlib/camlinternalMod.p.cmx stdlib/camlinternalMod.$O stdlib/camlinternalMod.p.$O \ - stdlib/camlinternalOO.cmx stdlib/camlinternalOO.p.cmx stdlib/camlinternalOO.$O stdlib/camlinternalOO.p.$O \ - stdlib/char.cmx stdlib/char.p.cmx stdlib/char.$O stdlib/char.p.$O \ - stdlib/complex.cmx stdlib/complex.p.cmx stdlib/complex.$O stdlib/complex.p.$O \ - stdlib/digest.cmx stdlib/digest.p.cmx stdlib/digest.$O stdlib/digest.p.$O \ - stdlib/filename.cmx stdlib/filename.p.cmx stdlib/filename.$O stdlib/filename.p.$O \ - stdlib/format.cmx stdlib/format.p.cmx stdlib/format.$O stdlib/format.p.$O \ - stdlib/gc.cmx stdlib/gc.p.cmx stdlib/gc.$O stdlib/gc.p.$O \ - stdlib/genlex.cmx stdlib/genlex.p.cmx stdlib/genlex.$O stdlib/genlex.p.$O \ - stdlib/hashtbl.cmx stdlib/hashtbl.p.cmx stdlib/hashtbl.$O stdlib/hashtbl.p.$O \ - stdlib/int32.cmx stdlib/int32.p.cmx stdlib/int32.$O stdlib/int32.p.$O \ - stdlib/int64.cmx stdlib/int64.p.cmx stdlib/int64.$O stdlib/int64.p.$O \ - stdlib/lazy.cmx stdlib/lazy.p.cmx stdlib/lazy.$O stdlib/lazy.p.$O \ - stdlib/lexing.cmx stdlib/lexing.p.cmx stdlib/lexing.$O stdlib/lexing.p.$O \ - stdlib/list.cmx stdlib/list.p.cmx stdlib/list.$O stdlib/list.p.$O \ - stdlib/listLabels.cmx stdlib/listLabels.p.cmx stdlib/listLabels.$O stdlib/listLabels.p.$O \ - stdlib/map.cmx stdlib/map.p.cmx stdlib/map.$O stdlib/map.p.$O \ - stdlib/marshal.cmx stdlib/marshal.p.cmx stdlib/marshal.$O stdlib/marshal.p.$O \ - stdlib/moreLabels.cmx stdlib/moreLabels.p.cmx stdlib/moreLabels.$O stdlib/moreLabels.p.$O \ - stdlib/nativeint.cmx stdlib/nativeint.p.cmx stdlib/nativeint.$O stdlib/nativeint.p.$O \ - stdlib/obj.cmx stdlib/obj.p.cmx stdlib/obj.$O stdlib/obj.p.$O \ - stdlib/oo.cmx stdlib/oo.p.cmx stdlib/oo.$O stdlib/oo.p.$O \ - stdlib/parsing.cmx stdlib/parsing.p.cmx stdlib/parsing.$O stdlib/parsing.p.$O \ - stdlib/pervasives.cmx stdlib/pervasives.p.cmx stdlib/pervasives.$O stdlib/pervasives.p.$O \ - stdlib/printexc.cmx stdlib/printexc.p.cmx stdlib/printexc.$O stdlib/printexc.p.$O \ - stdlib/printf.cmx stdlib/printf.p.cmx stdlib/printf.$O stdlib/printf.p.$O \ - stdlib/queue.cmx stdlib/queue.p.cmx stdlib/queue.$O stdlib/queue.p.$O \ - stdlib/random.cmx stdlib/random.p.cmx stdlib/random.$O stdlib/random.p.$O \ - stdlib/scanf.cmx stdlib/scanf.p.cmx stdlib/scanf.$O stdlib/scanf.p.$O \ - stdlib/sort.cmx stdlib/sort.p.cmx stdlib/sort.$O stdlib/sort.p.$O \ - stdlib/stack.cmx stdlib/stack.p.cmx stdlib/stack.$O stdlib/stack.p.$O \ - stdlib/stdLabels.cmx stdlib/stdLabels.p.cmx stdlib/stdLabels.$O stdlib/stdLabels.p.$O \ + stdlib/std_exit.cm[io] stdlib/std_exit.ml \ + stdlib/arg.cmi stdlib/arg.ml stdlib/arg.mli \ + stdlib/array.cmi stdlib/array.ml stdlib/array.mli \ + stdlib/arrayLabels.cmi stdlib/arrayLabels.ml stdlib/arrayLabels.mli \ + stdlib/buffer.cmi stdlib/buffer.ml stdlib/buffer.mli \ + stdlib/callback.cmi stdlib/callback.ml stdlib/callback.mli \ + stdlib/camlinternalLazy.cmi stdlib/camlinternalLazy.ml stdlib/camlinternalLazy.mli \ + stdlib/camlinternalMod.cmi stdlib/camlinternalMod.ml stdlib/camlinternalMod.mli \ + stdlib/camlinternalOO.cmi stdlib/camlinternalOO.ml stdlib/camlinternalOO.mli \ + stdlib/char.cmi stdlib/char.ml stdlib/char.mli \ + stdlib/complex.cmi stdlib/complex.ml stdlib/complex.mli \ + stdlib/digest.cmi stdlib/digest.ml stdlib/digest.mli \ + stdlib/filename.cmi stdlib/filename.ml stdlib/filename.mli \ + stdlib/format.cmi stdlib/format.ml stdlib/format.mli \ + stdlib/gc.cmi stdlib/gc.ml stdlib/gc.mli \ + stdlib/genlex.cmi stdlib/genlex.ml stdlib/genlex.mli \ + stdlib/hashtbl.cmi stdlib/hashtbl.ml stdlib/hashtbl.mli \ + stdlib/int32.cmi stdlib/int32.ml stdlib/int32.mli \ + stdlib/int64.cmi stdlib/int64.ml stdlib/int64.mli \ + stdlib/lazy.cmi stdlib/lazy.ml stdlib/lazy.mli \ + stdlib/lexing.cmi stdlib/lexing.ml stdlib/lexing.mli \ + stdlib/list.cmi stdlib/list.ml stdlib/list.mli \ + stdlib/listLabels.cmi stdlib/listLabels.ml stdlib/listLabels.mli \ + stdlib/map.cmi stdlib/map.ml stdlib/map.mli \ + stdlib/marshal.cmi stdlib/marshal.ml stdlib/marshal.mli \ + stdlib/moreLabels.cmi stdlib/moreLabels.ml stdlib/moreLabels.mli \ + stdlib/nativeint.cmi stdlib/nativeint.ml stdlib/nativeint.mli \ + stdlib/obj.cmi stdlib/obj.ml stdlib/obj.mli \ + stdlib/oo.cmi stdlib/oo.ml stdlib/oo.mli \ + stdlib/parsing.cmi stdlib/parsing.ml stdlib/parsing.mli \ + stdlib/pervasives.cmi stdlib/pervasives.ml stdlib/pervasives.mli \ + stdlib/printexc.cmi stdlib/printexc.ml stdlib/printexc.mli \ + stdlib/printf.cmi stdlib/printf.ml stdlib/printf.mli \ + stdlib/queue.cmi stdlib/queue.ml stdlib/queue.mli \ + stdlib/random.cmi stdlib/random.ml stdlib/random.mli \ + stdlib/scanf.cmi stdlib/scanf.ml stdlib/scanf.mli \ + stdlib/sort.cmi stdlib/sort.ml stdlib/sort.mli \ + stdlib/stack.cmi stdlib/stack.ml stdlib/stack.mli \ + stdlib/stdLabels.cmi stdlib/stdLabels.ml stdlib/stdLabels.mli \ + stdlib/stream.cmi stdlib/stream.ml stdlib/stream.mli \ + stdlib/string.cmi stdlib/string.ml stdlib/string.mli \ + stdlib/stringLabels.cmi stdlib/stringLabels.ml stdlib/stringLabels.mli \ + stdlib/sys.cmi stdlib/sys.ml stdlib/sys.mli \ + stdlib/weak.cmi stdlib/weak.ml stdlib/weak.mli \ + stdlib/$set.cmi stdlib/$set.ml stdlib/$set.mli \ + stdlib/arg.cmx stdlib/arg.p.cmx \ + stdlib/array.cmx stdlib/array.p.cmx \ + stdlib/arrayLabels.cmx stdlib/arrayLabels.p.cmx \ + stdlib/buffer.cmx stdlib/buffer.p.cmx \ + stdlib/callback.cmx stdlib/callback.p.cmx \ + stdlib/camlinternalLazy.cmx stdlib/camlinternalLazy.p.cmx \ + stdlib/camlinternalMod.cmx stdlib/camlinternalMod.p.cmx \ + stdlib/camlinternalOO.cmx stdlib/camlinternalOO.p.cmx \ + stdlib/char.cmx stdlib/char.p.cmx \ + stdlib/complex.cmx stdlib/complex.p.cmx \ + stdlib/digest.cmx stdlib/digest.p.cmx \ + stdlib/filename.cmx stdlib/filename.p.cmx \ + stdlib/format.cmx stdlib/format.p.cmx \ + stdlib/gc.cmx stdlib/gc.p.cmx \ + stdlib/genlex.cmx stdlib/genlex.p.cmx \ + stdlib/hashtbl.cmx stdlib/hashtbl.p.cmx \ + stdlib/int32.cmx stdlib/int32.p.cmx \ + stdlib/int64.cmx stdlib/int64.p.cmx \ + stdlib/lazy.cmx stdlib/lazy.p.cmx \ + stdlib/lexing.cmx stdlib/lexing.p.cmx \ + stdlib/list.cmx stdlib/list.p.cmx \ + stdlib/listLabels.cmx stdlib/listLabels.p.cmx \ + stdlib/map.cmx stdlib/map.p.cmx \ + stdlib/marshal.cmx stdlib/marshal.p.cmx \ + stdlib/moreLabels.cmx stdlib/moreLabels.p.cmx \ + stdlib/nativeint.cmx stdlib/nativeint.p.cmx \ + stdlib/obj.cmx stdlib/obj.p.cmx \ + stdlib/oo.cmx stdlib/oo.p.cmx \ + stdlib/parsing.cmx stdlib/parsing.p.cmx \ + stdlib/pervasives.cmx stdlib/pervasives.p.cmx \ + stdlib/printexc.cmx stdlib/printexc.p.cmx \ + stdlib/printf.cmx stdlib/printf.p.cmx \ + stdlib/queue.cmx stdlib/queue.p.cmx \ + stdlib/random.cmx stdlib/random.p.cmx \ + stdlib/scanf.cmx stdlib/scanf.p.cmx \ + stdlib/sort.cmx stdlib/sort.p.cmx \ + stdlib/stack.cmx stdlib/stack.p.cmx \ + stdlib/stdLabels.cmx stdlib/stdLabels.p.cmx \ stdlib/std_exit.cmx stdlib/std_exit.p.cmx stdlib/std_exit.$O stdlib/std_exit.p.$O \ - stdlib/stream.cmx stdlib/stream.p.cmx stdlib/stream.$O stdlib/stream.p.$O \ - stdlib/string.cmx stdlib/string.p.cmx stdlib/string.$O stdlib/string.p.$O \ - stdlib/stringLabels.cmx stdlib/stringLabels.p.cmx stdlib/stringLabels.$O stdlib/stringLabels.p.$O \ - stdlib/sys.cmx stdlib/sys.p.cmx stdlib/sys.$O stdlib/sys.p.$O \ - stdlib/weak.cmx stdlib/weak.p.cmx stdlib/weak.$O stdlib/weak.p.$O \ - stdlib/$set.cmx stdlib/$set.p.cmx stdlib/$set.$O stdlib/$set.p.$O \ + stdlib/stream.cmx stdlib/stream.p.cmx \ + stdlib/string.cmx stdlib/string.p.cmx \ + stdlib/stringLabels.cmx stdlib/stringLabels.p.cmx \ + stdlib/sys.cmx stdlib/sys.p.cmx \ + stdlib/weak.cmx stdlib/weak.p.cmx \ + stdlib/$set.cmx stdlib/$set.p.cmx \ $LIBDIR installlibdir \ @@ -274,7 +275,6 @@ installbin tools/addlabels.byte $LIBDIR/addlabels installbin tools/scrapelabels.byte $LIBDIR/scrapelabels installbin otherlibs/dynlink/extract_crc.byte $LIBDIR/extract_crc installbin otherlibs/labltk/lib/labltk$EXE $BINDIR/labltk$EXE -installbin otherlibs/labltk/compiler/tkcompiler$EXE $BINDIR/tkcompiler$EXE installbin otherlibs/labltk/browser/ocamlbrowser$EXE $BINDIR/ocamlbrowser$EXE installbin otherlibs/labltk/compiler/pp$EXE $LIBDIR/labltk/pp$EXE installbin otherlibs/labltk/lib/labltktop$EXE $LIBDIR/labltk/labltktop$EXE @@ -290,6 +290,7 @@ installdir \ otherlibs/"$WIN32"unix/unix.cma \ otherlibs/bigarray/bigarray.cmxa \ otherlibs/dbm/dbm.cmxa \ + otherlibs/dynlink/dynlink.cmxa \ otherlibs/"$WIN32"graph/graphics.cmxa \ otherlibs/num/nums.cmxa \ otherlibs/str/str.cmxa \ @@ -325,17 +326,17 @@ installdir \ otherlibs/labltk/support/tkthread.cmi \ otherlibs/labltk/support/tkthread.cmo \ otherlibs/labltk/support/tkthread.$O \ - otherlibs/labltk/labltk/*.mli \ + otherlibs/labltk/support/tkthread.cmx \ + otherlibs/labltk/labltk/[^_]*.mli \ otherlibs/labltk/labltk/*.cmi \ otherlibs/labltk/labltk/*.cmx \ - otherlibs/labltk/camltk/*.mli \ + otherlibs/labltk/camltk/[^_]*.mli \ otherlibs/labltk/camltk/*.cmi \ otherlibs/labltk/camltk/*.cmx \ otherlibs/labltk/frx/frxlib.cma \ otherlibs/labltk/frx/frxlib.cmxa \ - otherlibs/labltk/frx/*.mli \ + ../otherlibs/labltk/frx/*.mli \ otherlibs/labltk/frx/*.cmi \ - otherlibs/labltk/frx/*.cmx \ otherlibs/labltk/jpf/jpflib.cma \ otherlibs/labltk/jpf/jpflib.cmxa \ otherlibs/labltk/jpf/*.mli \ @@ -343,20 +344,27 @@ installdir \ otherlibs/labltk/jpf/*.cmx \ otherlibs/labltk/lib/labltk.cma \ otherlibs/labltk/lib/labltk.cmxa \ + otherlibs/labltk/lib/labltk.cmx \ otherlibs/labltk/tkanim/*.mli \ otherlibs/labltk/tkanim/*.cmi \ otherlibs/labltk/tkanim/tkanim.cma \ otherlibs/labltk/tkanim/tkanim.cmxa \ + otherlibs/labltk/compiler/tkcompiler \ $LIBDIR/labltk installdir \ otherlibs/systhreads/threads.cma \ otherlibs/systhreads/threads.cmxa \ otherlibs/systhreads/thread.cmi \ + otherlibs/systhreads/thread.cmx \ otherlibs/systhreads/mutex.cmi \ + otherlibs/systhreads/mutex.cmx \ otherlibs/systhreads/condition.cmi \ + otherlibs/systhreads/condition.cmx \ otherlibs/systhreads/event.cmi \ + otherlibs/systhreads/event.cmx \ otherlibs/systhreads/threadUnix.cmi \ + otherlibs/systhreads/threadUnix.cmx \ $LIBDIR/threads installdir \ @@ -420,50 +428,54 @@ installdir \ toplevel/topdirs.cmi \ toplevel/topmain.cmi \ typing/outcometree.cmi \ + typing/outcometree.mli \ otherlibs/graph/graphicsX11.cmi \ + otherlibs/graph/graphicsX11.mli \ otherlibs/dynlink/dynlink.cmi \ + otherlibs/dynlink/dynlink.mli \ otherlibs/num/arith_status.cmi \ + otherlibs/num/arith_status.mli \ otherlibs/num/big_int.cmi \ + otherlibs/num/big_int.mli \ otherlibs/num/nat.cmi \ + otherlibs/num/nat.mli \ otherlibs/num/num.cmi \ + otherlibs/num/num.mli \ otherlibs/num/ratio.cmi \ + otherlibs/num/ratio.mli \ otherlibs/bigarray/bigarray.cmi \ + otherlibs/bigarray/bigarray.mli \ otherlibs/dbm/dbm.cmi \ + otherlibs/dbm/dbm.mli \ + otherlibs/dynlink/dynlink.cmx \ otherlibs/"$WIN32"graph/graphics.cmi \ + otherlibs/"$WIN32"graph/graphics.mli \ otherlibs/str/str.cmi \ + otherlibs/str/str.mli \ otherlibs/"$WIN32"unix/unix.cmi \ + otherlibs/"$WIN32"unix/unix.mli \ otherlibs/"$WIN32"unix/unixLabels.cmi \ + otherlibs/"$WIN32"unix/unixLabels.mli \ otherlibs/num/arith_flags.cmx \ - otherlibs/num/arith_flags.$O \ otherlibs/num/int_misc.cmx \ - otherlibs/num/int_misc.$O \ otherlibs/num/arith_status.cmx \ - otherlibs/num/arith_status.$O \ otherlibs/num/big_int.cmx \ - otherlibs/num/big_int.$O \ otherlibs/num/nat.cmx \ - otherlibs/num/nat.$O \ otherlibs/num/num.cmx \ - otherlibs/num/num.$O \ otherlibs/num/ratio.cmx \ - otherlibs/num/ratio.$O \ otherlibs/bigarray/bigarray.cmx \ - otherlibs/bigarray/bigarray.$O \ otherlibs/dbm/dbm.cmx \ - otherlibs/dbm/dbm.$O \ otherlibs/"$WIN32"graph/graphics.cmx \ - otherlibs/"$WIN32"graph/graphics.$O \ + otherlibs/graph/graphicsX11.cmx \ otherlibs/str/str.cmx \ - otherlibs/str/str.$O \ otherlibs/"$WIN32"unix/unix.cmx \ - otherlibs/"$WIN32"unix/unix.$O \ otherlibs/"$WIN32"unix/unixLabels.cmx \ - otherlibs/"$WIN32"unix/unixLabels.$O \ $LIBDIR installlibdir \ otherlibs/bigarray/bigarray.$A \ otherlibs/dbm/dbm.$A \ + otherlibs/dynlink/dynlink.$A \ otherlibs/"$WIN32"graph/graphics.$A \ otherlibs/num/nums.$A \ otherlibs/str/str.$A \ diff --git a/myocamlbuild.ml b/myocamlbuild.ml index c811a80e..360dc56c 100644 --- a/myocamlbuild.ml +++ b/myocamlbuild.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: myocamlbuild.ml,v 1.23.2.6 2009/05/26 12:49:16 ertai Exp $ *) +(* $Id: myocamlbuild.ml,v 1.23.2.7 2009/06/04 11:33:21 doligez Exp $ *) open Ocamlbuild_plugin open Command @@ -1073,14 +1073,18 @@ let labltk_lib_contents = @ "tk" :: labltk_generated_modules @ "cTk" - :: camltk_generated_modules;; + :: camltk_generated_modules + @ ["labltk"; "camltk"];; let labltk_contents obj_ext = List.map (fun x -> "otherlibs/labltk/support"/x-.-obj_ext) labltk_support @ "otherlibs/labltk/labltk/tk"-.-obj_ext :: List.map (fun x -> "otherlibs/labltk/labltk"/x-.-obj_ext) labltk_generated_modules @ "otherlibs/labltk/camltk/cTk"-.-obj_ext - :: List.map (fun x -> "otherlibs/labltk/camltk"/x-.-obj_ext) camltk_generated_modules;; + :: List.map (fun x -> "otherlibs/labltk/camltk"/x-.-obj_ext) camltk_generated_modules + @ ["otherlibs/labltk/labltk/labltk"-.-obj_ext; + "otherlibs/labltk/camltk/camltk"-.-obj_ext] +;; let labltk_cma_contents = labltk_contents "cmo" in rule "labltk.cma" diff --git a/otherlibs/labltk/browser/lexical.ml b/otherlibs/labltk/browser/lexical.ml index 46047ea8..3e25b238 100644 --- a/otherlibs/labltk/browser/lexical.ml +++ b/otherlibs/labltk/browser/lexical.ml @@ -12,7 +12,7 @@ (* *) (*************************************************************************) -(* $Id: lexical.ml,v 1.15 2002/11/01 17:06:45 doligez Exp $ *) +(* $Id: lexical.ml,v 1.15.32.1 2009/06/08 04:43:32 garrigue Exp $ *) open StdLabels open Tk @@ -39,6 +39,8 @@ let tag ?(start=tstart) ?(stop=tend) tw = let tpos c = (Text.index tw ~index:start, [`Char c]) in let text = Text.get tw ~start ~stop in let buffer = Lexing.from_string text in + Location.init buffer ""; + Location.input_name := ""; List.iter tags ~f:(fun tag -> Text.tag_remove tw ~start ~stop ~tag); let last = ref (EOF, 0, 0) in diff --git a/otherlibs/labltk/browser/typecheck.ml b/otherlibs/labltk/browser/typecheck.ml index 1518931f..05b2d9cb 100644 --- a/otherlibs/labltk/browser/typecheck.ml +++ b/otherlibs/labltk/browser/typecheck.ml @@ -12,7 +12,7 @@ (* *) (*************************************************************************) -(* $Id: typecheck.ml,v 1.16 2007/05/16 08:21:40 doligez Exp $ *) +(* $Id: typecheck.ml,v 1.16.6.1 2009/06/08 04:43:32 garrigue Exp $ *) open StdLabels open Tk @@ -46,8 +46,12 @@ let preprocess ~pp ~ext text = exception Outdated_version let parse_pp ~parse ~wrap ~ext text = + Location.input_name := ""; match !Clflags.preprocessor with - None -> parse (Lexing.from_string text) + None -> + let buffer = Lexing.from_string text in + Location.init buffer ""; + parse buffer | Some pp -> let tmpfile = preprocess ~pp ~ext text in let ast_magic = @@ -72,7 +76,9 @@ let parse_pp ~parse ~wrap ~ext text = failwith "Ocaml and preprocessor have incompatible versions" | _ -> seek_in ic 0; - parse (Lexing.from_channel ic) + let buffer = Lexing.from_channel ic in + Location.init buffer ""; + parse buffer in close_in ic; Sys.remove tmpfile; diff --git a/typing/mtype.ml b/typing/mtype.ml index 46ff73fe..882d0f3f 100644 --- a/typing/mtype.ml +++ b/typing/mtype.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: mtype.ml,v 1.28 2007/10/19 13:25:21 garrigue Exp $ *) +(* $Id: mtype.ml,v 1.28.4.1 2009/06/08 02:35:15 garrigue Exp $ *) (* Operations on module types *) @@ -51,11 +51,13 @@ and strengthen_sig env sg p = match decl.type_manifest with Some ty when decl.type_private = Public -> decl | _ -> - { decl with - type_private = Public; - type_manifest = - Some(Btype.newgenty(Tconstr(Pdot(p, Ident.name id, nopos), - decl.type_params, ref Mnil))) } + let manif = + Some(Btype.newgenty(Tconstr(Pdot(p, Ident.name id, nopos), + decl.type_params, ref Mnil))) in + if decl.type_kind = Type_abstract then + { decl with type_private = Public; type_manifest = manif } + else + { decl with type_manifest = manif } in Tsig_type(id, newdecl, rs) :: strengthen_sig env rem p | (Tsig_exception(id, d) as sigelt) :: rem -> diff --git a/typing/typedecl.ml b/typing/typedecl.ml index ee2f9cd2..6e546fed 100644 --- a/typing/typedecl.ml +++ b/typing/typedecl.ml @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: typedecl.ml,v 1.82.2.2 2009/04/19 08:42:43 xleroy Exp $ *) +(* $Id: typedecl.ml,v 1.82.2.3 2009/06/08 04:08:14 garrigue Exp $ *) (**** Typing of type definitions ****) @@ -41,6 +41,7 @@ type error = | Bad_variance of int * (bool * bool) * (bool * bool) | Unavailable_type_constructor of Path.t | Bad_fixed_type of string + | Unbound_type_var_exc of type_expr * type_expr exception Error of Location.t * error @@ -686,10 +687,16 @@ let transl_type_decl env name_sdecl_list = (final_decls, final_env) (* Translate an exception declaration *) +let transl_closed_type env sty = + let ty = transl_simple_type env true sty in + match Ctype.free_variables ty with + | [] -> ty + | tv :: _ -> raise (Error (sty.ptyp_loc, Unbound_type_var_exc (tv, ty))) + let transl_exception env excdecl = reset_type_variables(); Ctype.begin_def(); - let types = List.map (transl_simple_type env true) excdecl in + let types = List.map (transl_closed_type env) excdecl in Ctype.end_def(); List.iter Ctype.generalize types; types @@ -808,6 +815,38 @@ let check_recmod_typedecl env loc recmod_ids path decl = open Format +let explain_unbound ppf tv tl typ kwd lab = + try + let ti = List.find (fun ti -> Ctype.deep_occur tv (typ ti)) tl in + let ty0 = (* Hack to force aliasing when needed *) + Btype.newgenty (Tobject(tv, ref None)) in + Printtyp.reset_and_mark_loops_list [typ ti; ty0]; + fprintf ppf + ".@.@[In %s@ %s%a@;<1 -2>the variable %a is unbound@]" + kwd (lab ti) Printtyp.type_expr (typ ti) Printtyp.type_expr tv + with Not_found -> () + +let explain_unbound_single ppf tv ty = + let trivial ty = + explain_unbound ppf tv [ty] (fun t -> t) "type" (fun _ -> "") in + match (Ctype.repr ty).desc with + Tobject(fi,_) -> + let (tl, rv) = Ctype.flatten_fields fi in + if rv == tv then trivial ty else + explain_unbound ppf tv tl (fun (_,_,t) -> t) + "method" (fun (lab,_,_) -> lab ^ ": ") + | Tvariant row -> + let row = Btype.row_repr row in + if row.row_more == tv then trivial ty else + explain_unbound ppf tv row.row_fields + (fun (l,f) -> match Btype.row_field_repr f with + Rpresent (Some t) -> t + | Reither (_,[t],_,_) -> t + | Reither (_,tl,_,_) -> Btype.newgenty (Ttuple tl) + | _ -> Btype.newgenty (Ttuple[])) + "case" (fun (lab,_) -> "`" ^ lab ^ " of ") + | _ -> trivial ty + let report_error ppf = function | Repeated_parameter -> fprintf ppf "A type parameter occurs several times" @@ -858,46 +897,20 @@ let report_error ppf = function | Unbound_type_var (ty, decl) -> fprintf ppf "A type variable is unbound in this type declaration"; let ty = Ctype.repr ty in - let explain tl typ kwd lab = - let ti = List.find (fun ti -> Ctype.deep_occur ty (typ ti)) tl in - let ty0 = (* Hack to force aliasing when needed *) - Btype.newgenty (Tobject(ty, ref None)) in - Printtyp.reset_and_mark_loops_list [typ ti; ty0]; - fprintf ppf - ".@.@[In %s@ %s%a@;<1 -2>the variable %a is unbound@]" - kwd (lab ti) Printtyp.type_expr (typ ti) Printtyp.type_expr ty - in - begin try match decl.type_kind, decl.type_manifest with + begin match decl.type_kind, decl.type_manifest with Type_variant tl, _ -> - explain tl (fun (_,tl) -> Btype.newgenty (Ttuple tl)) + explain_unbound ppf ty tl (fun (_,tl) -> Btype.newgenty (Ttuple tl)) "case" (fun (lab,_) -> lab ^ " of ") | Type_record (tl, _), _ -> - explain tl (fun (_,_,t) -> t) + explain_unbound ppf ty tl (fun (_,_,t) -> t) "field" (fun (lab,_,_) -> lab ^ ": ") | Type_abstract, Some ty' -> - let trivial ty = - explain [ty] (fun t -> t) "definition" (fun _ -> "") in - begin match (Ctype.repr ty').desc with - Tobject(fi,_) -> - let (tl, rv) = Ctype.flatten_fields fi in - if rv == ty then trivial ty' else - explain tl (fun (_,_,t) -> t) - "method" (fun (lab,_,_) -> lab ^ ": ") - | Tvariant row -> - let row = Btype.row_repr row in - if row.row_more == ty then trivial ty' else - explain row.row_fields - (fun (l,f) -> match Btype.row_field_repr f with - Rpresent (Some t) -> t - | Reither (_,[t],_,_) -> t - | Reither (_,tl,_,_) -> Btype.newgenty (Ttuple tl) - | _ -> Btype.newgenty (Ttuple[])) - "case" (fun (lab,_) -> "`" ^ lab ^ " of ") - | _ -> trivial ty' - end + explain_unbound_single ppf ty ty' | _ -> () - with Not_found -> () end + | Unbound_type_var_exc (tv, ty) -> + fprintf ppf "A type variable is unbound in this exception declaration"; + explain_unbound_single ppf (Ctype.repr tv) ty | Unbound_exception lid -> fprintf ppf "Unbound exception constructor@ %a" Printtyp.longident lid | Not_an_exception lid -> diff --git a/typing/typedecl.mli b/typing/typedecl.mli index 194c0133..56452455 100644 --- a/typing/typedecl.mli +++ b/typing/typedecl.mli @@ -10,7 +10,7 @@ (* *) (***********************************************************************) -(* $Id: typedecl.mli,v 1.31 2007/10/09 10:29:37 weis Exp $ *) +(* $Id: typedecl.mli,v 1.31.4.1 2009/06/08 04:08:14 garrigue Exp $ *) (* Typing of type definitions and primitive definitions *) @@ -70,6 +70,7 @@ type error = | Bad_variance of int * (bool*bool) * (bool*bool) | Unavailable_type_constructor of Path.t | Bad_fixed_type of string + | Unbound_type_var_exc of type_expr * type_expr exception Error of Location.t * error diff --git a/typing/typetexp.ml b/typing/typetexp.ml index dc9165f7..ec2b7ed8 100644 --- a/typing/typetexp.ml +++ b/typing/typetexp.ml @@ -355,12 +355,8 @@ let rec transl_type env policy styp = row_fixed = false; row_name = !name } in let static = Btype.static_row row in let row = - if static then row else - match policy with - Fixed -> - raise (Error (styp.ptyp_loc, Unbound_type_variable "..")) - | Extensible -> row - | Univars -> { row with row_more = new_pre_univar () } + if static || policy <> Univars then row + else { row with row_more = new_pre_univar () } in newty (Tvariant row) | Ptyp_poly(vars, st) -> @@ -392,12 +388,8 @@ and transl_fields env policy = function [] -> newty Tnil - | ({pfield_desc = Pfield_var} as pf)::_ -> - begin match policy with - Fixed -> raise (Error (pf.pfield_loc, Unbound_type_variable "..")) - | Extensible -> newvar () - | Univars -> new_pre_univar () - end + | {pfield_desc = Pfield_var}::_ -> + if policy = Univars then new_pre_univar () else newvar () | {pfield_desc = Pfield(s, e)}::l -> let ty1 = transl_type env policy e in let ty2 = transl_fields env policy l in -- 2.30.2