aboutsummaryrefslogtreecommitdiffstats
path: root/cparser/Env.ml
diff options
context:
space:
mode:
authorBernhard Schommer <bernhardschommer@gmail.com>2015-01-12 14:20:31 +0100
committerBernhard Schommer <bernhardschommer@gmail.com>2015-01-12 14:20:31 +0100
commit81e91f965e7b1afbea8d1630015e75f11f0a3afd (patch)
tree270a85299f33d783e33745c917796f080f7300e1 /cparser/Env.ml
parent3304820b870e4524c7d1f14fcd62506634f7922b (diff)
parent06841a5bb7ca27bc436e87e7991d0d05dbf5267c (diff)
downloadcompcert-81e91f965e7b1afbea8d1630015e75f11f0a3afd.tar.gz
compcert-81e91f965e7b1afbea8d1630015e75f11f0a3afd.zip
Merge branch 'master' into dwarf
Conflicts: powerpc/PrintAsm.ml
Diffstat (limited to 'cparser/Env.ml')
-rw-r--r--cparser/Env.ml14
1 files changed, 11 insertions, 3 deletions
diff --git a/cparser/Env.ml b/cparser/Env.ml
index 355a9960..6610c159 100644
--- a/cparser/Env.ml
+++ b/cparser/Env.ml
@@ -266,16 +266,24 @@ let add_enum env id info =
open Printf
+let composite_tag_name name =
+ if name = "" then "<anonymous>" else name
+
let error_message = function
| Unbound_identifier name ->
sprintf "Unbound identifier '%s'" name
| Unbound_tag(name, kind) ->
- sprintf "Unbound %s '%s'" kind name
+ sprintf "Unbound %s '%s'" kind (composite_tag_name name)
| Tag_mismatch(name, expected, actual) ->
sprintf "'%s' was declared as a %s but is used as a %s"
- name actual expected
+ (composite_tag_name name) actual expected
| Unbound_typedef name ->
sprintf "Unbound typedef '%s'" name
| No_member(compname, compkind, memname) ->
sprintf "%s '%s' has no member named '%s'"
- compkind compname memname
+ compkind (composite_tag_name compname) memname
+
+let _ =
+ Printexc.register_printer
+ (function Error e -> Some (sprintf "Env.Error \"%s\"" (error_message e))
+ | _ -> None)