diff --git a/boot/ocamlc b/boot/ocamlc index 5559c9462..20a03f2d6 100755 Binary files a/boot/ocamlc and b/boot/ocamlc differ diff --git a/boot/ocamldep b/boot/ocamldep index 6c3bc6763..67796a7de 100755 Binary files a/boot/ocamldep and b/boot/ocamldep differ diff --git a/stdlib/.depend b/stdlib/.depend index 1c7e2a3fe..0267136b7 100644 --- a/stdlib/.depend +++ b/stdlib/.depend @@ -144,3 +144,105 @@ sys.cmo: sys.cmi sys.cmx: sys.cmi weak.cmo: sys.cmi obj.cmi hashtbl.cmi array.cmi weak.cmi weak.cmx: sys.cmx obj.cmx hashtbl.cmx array.cmx weak.cmi +arg.cmo: sys.cmi string.cmi printf.cmi list.cmi buffer.cmi array.cmi arg.cmi +arg.p.cmx: sys.p.cmx string.p.cmx printf.p.cmx list.p.cmx buffer.p.cmx array.p.cmx arg.cmi +array.cmo: array.cmi +array.p.cmx: array.cmi +arrayLabels.cmo: array.cmi arrayLabels.cmi +arrayLabels.p.cmx: array.p.cmx arrayLabels.cmi +buffer.cmo: sys.cmi string.cmi buffer.cmi +buffer.p.cmx: sys.p.cmx string.p.cmx buffer.cmi +callback.cmo: obj.cmi callback.cmi +callback.p.cmx: obj.p.cmx callback.cmi +camlinternalLazy.cmo: obj.cmi camlinternalLazy.cmi +camlinternalLazy.p.cmx: obj.p.cmx camlinternalLazy.cmi +camlinternalMod.cmo: obj.cmi camlinternalOO.cmi array.cmi camlinternalMod.cmi +camlinternalMod.p.cmx: obj.p.cmx camlinternalOO.p.cmx array.p.cmx camlinternalMod.cmi +camlinternalOO.cmo: sys.cmi string.cmi obj.cmi map.cmi list.cmi char.cmi \ + array.cmi camlinternalOO.cmi +camlinternalOO.p.cmx: sys.p.cmx string.p.cmx obj.p.cmx map.p.cmx list.p.cmx char.p.cmx \ + array.p.cmx camlinternalOO.cmi +char.cmo: char.cmi +char.p.cmx: char.cmi +complex.cmo: complex.cmi +complex.p.cmx: complex.cmi +digest.cmo: string.cmi printf.cmi digest.cmi +digest.p.cmx: string.p.cmx printf.p.cmx digest.cmi +filename.cmo: sys.cmi string.cmi random.cmi printf.cmi buffer.cmi \ + filename.cmi +filename.p.cmx: sys.p.cmx string.p.cmx random.p.cmx printf.p.cmx buffer.p.cmx \ + filename.cmi +format.cmo: string.cmi printf.cmi pervasives.cmi obj.cmi list.cmi buffer.cmi \ + format.cmi +format.p.cmx: string.p.cmx printf.p.cmx pervasives.p.cmx obj.p.cmx list.p.cmx buffer.p.cmx \ + format.cmi +gc.cmo: sys.cmi printf.cmi gc.cmi +gc.p.cmx: sys.p.cmx printf.p.cmx gc.cmi +genlex.cmo: string.cmi stream.cmi list.cmi hashtbl.cmi char.cmi genlex.cmi +genlex.p.cmx: string.p.cmx stream.p.cmx list.p.cmx hashtbl.p.cmx char.p.cmx genlex.cmi +hashtbl.cmo: sys.cmi array.cmi hashtbl.cmi +hashtbl.p.cmx: sys.p.cmx array.p.cmx hashtbl.cmi +int32.cmo: pervasives.cmi int32.cmi +int32.p.cmx: pervasives.p.cmx int32.cmi +int64.cmo: pervasives.cmi int64.cmi +int64.p.cmx: pervasives.p.cmx int64.cmi +lazy.cmo: obj.cmi camlinternalLazy.cmi lazy.cmi +lazy.p.cmx: obj.p.cmx camlinternalLazy.p.cmx lazy.cmi +lexing.cmo: sys.cmi string.cmi array.cmi lexing.cmi +lexing.p.cmx: sys.p.cmx string.p.cmx array.p.cmx lexing.cmi +list.cmo: list.cmi +list.p.cmx: list.cmi +listLabels.cmo: list.cmi listLabels.cmi +listLabels.p.cmx: list.p.cmx listLabels.cmi +map.cmo: map.cmi +map.p.cmx: map.cmi +marshal.cmo: string.cmi marshal.cmi +marshal.p.cmx: string.p.cmx marshal.cmi +moreLabels.cmo: set.cmi map.cmi hashtbl.cmi moreLabels.cmi +moreLabels.p.cmx: set.p.cmx map.p.cmx hashtbl.p.cmx moreLabels.cmi +nativeint.cmo: sys.cmi pervasives.cmi nativeint.cmi +nativeint.p.cmx: sys.p.cmx pervasives.p.cmx nativeint.cmi +obj.cmo: marshal.cmi int32.cmi array.cmi obj.cmi +obj.p.cmx: marshal.p.cmx int32.p.cmx array.p.cmx obj.cmi +oo.cmo: camlinternalOO.cmi oo.cmi +oo.p.cmx: camlinternalOO.p.cmx oo.cmi +parsing.cmo: obj.cmi lexing.cmi array.cmi parsing.cmi +parsing.p.cmx: obj.p.cmx lexing.p.cmx array.p.cmx parsing.cmi +pervasives.cmo: pervasives.cmi +pervasives.p.cmx: pervasives.cmi +printexc.cmo: printf.cmi obj.cmi buffer.cmi array.cmi printexc.cmi +printexc.p.cmx: printf.p.cmx obj.p.cmx buffer.p.cmx array.p.cmx printexc.cmi +printf.cmo: string.cmi pervasives.cmi obj.cmi list.cmi char.cmi buffer.cmi \ + array.cmi printf.cmi +printf.p.cmx: string.p.cmx pervasives.p.cmx obj.p.cmx list.p.cmx char.p.cmx buffer.p.cmx \ + array.p.cmx printf.cmi +queue.cmo: obj.cmi queue.cmi +queue.p.cmx: obj.p.cmx queue.cmi +random.cmo: string.cmi pervasives.cmi nativeint.cmi int64.cmi int32.cmi \ + digest.cmi char.cmi array.cmi random.cmi +random.p.cmx: string.p.cmx pervasives.p.cmx nativeint.p.cmx int64.p.cmx int32.p.cmx \ + digest.p.cmx char.p.cmx array.p.cmx random.cmi +scanf.cmo: string.cmi printf.cmi pervasives.cmi obj.cmi list.cmi hashtbl.cmi \ + buffer.cmi array.cmi scanf.cmi +scanf.p.cmx: string.p.cmx printf.p.cmx pervasives.p.cmx obj.p.cmx list.p.cmx hashtbl.p.cmx \ + buffer.p.cmx array.p.cmx scanf.cmi +set.cmo: set.cmi +set.p.cmx: set.cmi +sort.cmo: array.cmi sort.cmi +sort.p.cmx: array.p.cmx sort.cmi +stack.cmo: list.cmi stack.cmi +stack.p.cmx: list.p.cmx stack.cmi +stdLabels.cmo: stringLabels.cmi listLabels.cmi arrayLabels.cmi stdLabels.cmi +stdLabels.p.cmx: stringLabels.p.cmx listLabels.p.cmx arrayLabels.p.cmx stdLabels.cmi +std_exit.cmo: +std_exit.p.cmx: +stream.cmo: string.cmi obj.cmi list.cmi lazy.cmi stream.cmi +stream.p.cmx: string.p.cmx obj.p.cmx list.p.cmx lazy.p.cmx stream.cmi +string.cmo: pervasives.cmi list.cmi char.cmi string.cmi +string.p.cmx: pervasives.p.cmx list.p.cmx char.p.cmx string.cmi +stringLabels.cmo: string.cmi stringLabels.cmi +stringLabels.p.cmx: string.p.cmx stringLabels.cmi +sys.cmo: sys.cmi +sys.p.cmx: sys.cmi +weak.cmo: sys.cmi obj.cmi hashtbl.cmi array.cmi weak.cmi +weak.p.cmx: sys.p.cmx obj.p.cmx hashtbl.p.cmx array.p.cmx weak.cmi diff --git a/stdlib/Makefile.shared b/stdlib/Makefile.shared index a02650a6a..b4f47b4b8 100755 --- a/stdlib/Makefile.shared +++ b/stdlib/Makefile.shared @@ -94,3 +94,4 @@ include .depend depend: $(CAMLDEP) *.mli *.ml > .depend + $(CAMLDEP) *.ml | sed -e 's/\.cmx/.p.cmx/g' >>.depend diff --git a/typing/printtyp.ml b/typing/printtyp.ml index 2134afb56..b2c1a049c 100644 --- a/typing/printtyp.ml +++ b/typing/printtyp.ml @@ -539,11 +539,8 @@ let rec tree_of_type_decl id decl = let abstr = match decl.type_kind with Type_abstract -> - begin match decl.type_manifest with - None -> true - | Some ty -> has_constr_row ty - end - | Type_variant _ | Type_record(_,_) -> + decl.type_manifest = None || decl.type_private = Private + | Type_variant _ | Type_record _ -> decl.type_private = Private in let vari = diff --git a/typing/typecore.ml b/typing/typecore.ml index fb9152269..55bc96fd4 100644 --- a/typing/typecore.ml +++ b/typing/typecore.ml @@ -49,7 +49,7 @@ type error = | Private_type of type_expr | Private_label of Longident.t * type_expr | Unbound_instance_variable of string - | Instance_variable_not_mutable of string + | Instance_variable_not_mutable of bool * string | Not_subtype of (type_expr * type_expr) list * (type_expr * type_expr) list | Outside_class | Value_multiply_overridden of string @@ -1549,9 +1549,9 @@ let rec type_exp env sexp = exp_type = instance Predef.type_unit; exp_env = env } | Val_ivar _ -> - raise(Error(loc, Instance_variable_not_mutable lab)) + raise(Error(loc,Instance_variable_not_mutable(true,lab))) | _ -> - raise(Error(loc, Unbound_instance_variable lab)) + raise(Error(loc,Instance_variable_not_mutable(false,lab))) with Not_found -> raise(Error(loc, Unbound_instance_variable lab)) @@ -2393,8 +2393,11 @@ let report_error ppf = function longident cl | Unbound_instance_variable v -> fprintf ppf "Unbound instance variable %s" v - | Instance_variable_not_mutable v -> - fprintf ppf "The instance variable %s is not mutable" v + | Instance_variable_not_mutable (b, v) -> + if b then + fprintf ppf "The instance variable %s is not mutable" v + else + fprintf ppf "The value %s is not an instance variable" v | Not_subtype(tr1, tr2) -> report_subtyping_error ppf tr1 "is not a subtype of" tr2 | Outside_class -> diff --git a/typing/typecore.mli b/typing/typecore.mli index a1a9ecd92..11132827f 100644 --- a/typing/typecore.mli +++ b/typing/typecore.mli @@ -89,7 +89,7 @@ type error = | Private_type of type_expr | Private_label of Longident.t * type_expr | Unbound_instance_variable of string - | Instance_variable_not_mutable of string + | Instance_variable_not_mutable of bool * string | Not_subtype of (type_expr * type_expr) list * (type_expr * type_expr) list | Outside_class | Value_multiply_overridden of string