more exception paths requiring normalization
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/module-alias@14211 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02master
parent
a9ea0064c4
commit
06d511c857
|
@ -386,6 +386,11 @@ let rec transl_path = function
|
|||
| Papply(p1, p2) ->
|
||||
fatal_error "Lambda.transl_path"
|
||||
|
||||
(* Translation of value identifiers *)
|
||||
|
||||
let transl_ident_path env path =
|
||||
transl_path (Env.normalize_path env path)
|
||||
|
||||
(* Compile a sequence of expressions *)
|
||||
|
||||
let rec make_sequence fn = function
|
||||
|
|
|
@ -211,6 +211,7 @@ val free_variables: lambda -> IdentSet.t
|
|||
val free_methods: lambda -> IdentSet.t
|
||||
|
||||
val transl_path: Path.t -> lambda
|
||||
val transl_ident_path: Env.t -> Path.t -> lambda
|
||||
val make_sequence: ('a -> lambda) -> 'a list -> lambda
|
||||
|
||||
val subst_lambda: lambda Ident.tbl -> lambda -> lambda
|
||||
|
|
|
@ -2158,7 +2158,8 @@ let combine_constructor arg ex_pat cstr partial ctx def
|
|||
match ex with
|
||||
| Cstr_exception (path, _) ->
|
||||
Lifthenelse(Lprim(Pintcomp Ceq,
|
||||
[Lprim(Pfield 0, [arg]); transl_path path]),
|
||||
[Lprim(Pfield 0, [arg]);
|
||||
transl_ident_path ex_pat.pat_env path]),
|
||||
act, rem)
|
||||
| _ -> assert false)
|
||||
tests default in
|
||||
|
|
|
@ -38,10 +38,6 @@ let transl_object =
|
|||
ref (fun id s cl -> assert false :
|
||||
Ident.t -> string list -> class_expr -> lambda)
|
||||
|
||||
(* Translation of value identifiers *)
|
||||
let transl_ident_path env path =
|
||||
transl_path (Env.normalize_path env path)
|
||||
|
||||
(* Translation of primitives *)
|
||||
|
||||
let comparisons_table = create_hashtable 11 [
|
||||
|
@ -725,7 +721,8 @@ and transl_exp0 e =
|
|||
Lprim(Pmakeblock(n, Immutable), ll)
|
||||
end
|
||||
| Cstr_exception (path, _) ->
|
||||
Lprim(Pmakeblock(0, Immutable), transl_path path :: ll)
|
||||
Lprim(Pmakeblock(0, Immutable),
|
||||
transl_ident_path e.exp_env path :: ll)
|
||||
end
|
||||
| Texp_variant(l, arg) ->
|
||||
let tag = Btype.hash_variant l in
|
||||
|
@ -803,7 +800,8 @@ and transl_exp0 e =
|
|||
in
|
||||
event_after e lam
|
||||
| Texp_new (cl, _, _) ->
|
||||
Lapply(Lprim(Pfield 0, [transl_path cl]), [lambda_unit], Location.none)
|
||||
Lapply(Lprim(Pfield 0, [transl_ident_path e.exp_env cl]),
|
||||
[lambda_unit], Location.none)
|
||||
| Texp_instvar(path_self, path, _) ->
|
||||
Lprim(Parrayrefu Paddrarray, [transl_path path_self; transl_path path])
|
||||
| Texp_setinstvar(path_self, path, _, expr) ->
|
||||
|
|
|
@ -24,7 +24,6 @@ val transl_let: rec_flag -> value_binding list -> lambda -> lambda
|
|||
val transl_primitive: Location.t -> Primitive.description -> lambda
|
||||
val transl_exception:
|
||||
Path.t option -> constructor_declaration -> lambda
|
||||
val transl_ident_path: Env.t -> Path.t -> lambda
|
||||
|
||||
val check_recursive_lambda: Ident.t list -> lambda -> bool
|
||||
|
||||
|
|
Loading…
Reference in New Issue