From: Richard W.M. Jones Date: Tue, 26 Aug 2008 08:13:07 +0000 (+0000) Subject: The attached patch is necessary to work around a bug in the parsing in X-Git-Url: http://git.annexia.org/?a=commitdiff_plain;h=8bc193ef86e8de305fd3bb87594421c5c60ddb85;hp=1cd333c8aa3a51f02f36f97518006f502bfa4afa;p=ocaml-bitstring.git The attached patch is necessary to work around a bug in the parsing in OCaml 3.10.0 (fixed in 3.10.2 and later). It doesn't affect performance of the generated code. --- diff --git a/pa_bitstring.ml b/pa_bitstring.ml index 664e62d..63c280e 100644 --- a/pa_bitstring.ml +++ b/pa_bitstring.ml @@ -55,9 +55,16 @@ let rec expr_is_constant = function (match expr_is_constant a, expr_is_constant b with | Some a, Some b -> (* Integer binary operations. *) let ops = ["+", (+); "-", (-); "*", ( * ); "/", (/); - "land", (land); "lor", (lor); "lxor", (lxor); - "lsl", (lsl); "lsr", (lsr); "asr", (asr); - "mod", (mod)] in + (* NB: explicit fun .. -> is necessary here to work + * around a camlp4 bug in OCaml 3.10.0. + *) + "land", (fun a b -> a land b); + "lor", (fun a b -> a lor b); + "lxor", (fun a b -> a lxor b); + "lsl", (fun a b -> a lsl b); + "lsr", (fun a b -> a lsr b); + "asr", (fun a b -> a asr b); + "mod", (fun a b -> a mod b)] in (try Some ((List.assoc op ops) a b) with Not_found -> None) | _ -> None) | _ -> None