diff options
author | Jacques Garrigue <garrigue at math.nagoya-u.ac.jp> | 2003-11-14 14:07:57 +0000 |
---|---|---|
committer | Jacques Garrigue <garrigue at math.nagoya-u.ac.jp> | 2003-11-14 14:07:57 +0000 |
commit | 8614181c50243fef47cd953d42b3205c341f93c2 (patch) | |
tree | 33a79c5f75eac0bc415dbd17ed0d25da8683793b | |
parent | d4fa3e5b68dfcdc7771bcfa632feee5f393e0200 (diff) | |
download | ocaml-8614181c50243fef47cd953d42b3205c341f93c2.tar.gz |
fix initialization order
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/fastclass@5919 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r-- | bytecomp/translclass.ml | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/bytecomp/translclass.ml b/bytecomp/translclass.ml index 4e9e033a57..2dfac76cfa 100644 --- a/bytecomp/translclass.ml +++ b/bytecomp/translclass.ml @@ -193,14 +193,14 @@ let build_object_init_0 cl_table params cl copy_env subst_env top ids = let obj_init = subst_env env obj_init in let obj_init = if top then obj_init else - let i = ref 0 in - List.fold_left - (fun init (obj_init, env_init, _) -> - incr i; + let i = ref (List.length inh_init + 1) in + List.fold_right + (fun (obj_init, env_init, _) init -> + decr i; Llet(Strict, obj_init, Lapply(Lvar env_init, [Lprim(Pfield !i, [Lvar env])]), init)) - obj_init inh_init + inh_init obj_init in (inh_init, lfunction [env] obj_init) |