aboutsummaryrefslogtreecommitdiffstats
path: root/cparser/Elab.ml
diff options
context:
space:
mode:
Diffstat (limited to 'cparser/Elab.ml')
-rw-r--r--cparser/Elab.ml7
1 files changed, 5 insertions, 2 deletions
diff --git a/cparser/Elab.ml b/cparser/Elab.ml
index cdae2fd9..722303d2 100644
--- a/cparser/Elab.ml
+++ b/cparser/Elab.ml
@@ -154,7 +154,10 @@ let integer_representable v ik =
v >= 0L && v < Int64.shift_left 1L (bitsize - 1)
let elab_int_constant loc s0 =
- let s = String.uppercase s0 in
+ let s = String.map (fun d -> match d with
+ | '0'..'9' | 'A'..'F' | 'L' | 'U' | 'X' -> d
+ | 'a'..'f' | 'l' | 'u' | 'x' -> Char.chr (Char.code d - 32)
+ | _ -> error loc "bad digit '%c' in integer literal '%s'" d s0; d) s0 in
(* Determine possible types and chop type suffix *)
let (s, dec_kinds, hex_kinds) =
if has_suffix s "ULL" || has_suffix s "LLU" then
@@ -190,7 +193,7 @@ let elab_int_constant loc s0 =
error loc "integer literal '%s' is too large" s0;
0L
| Bad_digit ->
- error loc "bad digit in integer literal '%s'" s0;
+ (*error loc "bad digit in integer literal '%s'" s0;*) (* Is caught earlier *)
0L
in
(* Find smallest allowable type that fits *)