Oubli d'un cas dans iter_pattern.
Bug dans le typage des formats du style "%" git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@1923 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02master
parent
648be3084b
commit
b19c2dbdd0
|
@ -221,6 +221,8 @@ let rec iter_pattern f p =
|
|||
| Tpat_or (p, p') ->
|
||||
iter_pattern f p;
|
||||
iter_pattern f p'
|
||||
| Tpat_array pl ->
|
||||
List.iter (iter_pattern f) pl
|
||||
|
||||
(* Generalization criterion for expressions *)
|
||||
|
||||
|
@ -261,9 +263,8 @@ let type_format loc fmt =
|
|||
match fmt.[i] with
|
||||
'%' ->
|
||||
let j = skip_args(i+1) in
|
||||
begin match String.unsafe_get fmt j with
|
||||
(* We're using unsafe_get here so that if j = String.length fmt,
|
||||
we'll fall in the catch-all case of the match *)
|
||||
if j >= len then raise(Error(loc, Bad_format "%"));
|
||||
begin match fmt.[j] with
|
||||
'%' ->
|
||||
scan_format (j+1)
|
||||
| 's' ->
|
||||
|
@ -780,7 +781,7 @@ and type_let env rec_flag spat_sexp_list =
|
|||
List.iter2
|
||||
(fun pat exp ->
|
||||
if not (is_nonexpansive exp) then
|
||||
iter_pattern (fun pat ->make_nongen pat.pat_type) pat)
|
||||
iter_pattern (fun pat -> make_nongen pat.pat_type) pat)
|
||||
pat_list exp_list;
|
||||
List.iter
|
||||
(fun pat -> iter_pattern (fun pat -> generalize pat.pat_type) pat)
|
||||
|
|
Loading…
Reference in New Issue