aboutsummaryrefslogtreecommitdiffhomepage
path: root/engine
diff options
context:
space:
mode:
authorGravatar Maxime Dénès <mail@maximedenes.fr>2017-10-06 12:45:33 +0200
committerGravatar Maxime Dénès <mail@maximedenes.fr>2017-10-06 12:45:33 +0200
commit3de25a6f91ec3cc5c9173ab7c93caee87cae578f (patch)
tree31cf6d23bb35bef3b090a5ed66f21e9d1da2627b /engine
parentef11a1240c14560e199527ae6d8a6eb893da1438 (diff)
parent40260a31cd197f655e6d3e0570a88d96fc1a9cac (diff)
Merge PR #1119: Fixing bug BZ#5769 (generating a name "_" out of a type "_something")
Diffstat (limited to 'engine')
-rw-r--r--engine/namegen.ml14
1 files changed, 13 insertions, 1 deletions
diff --git a/engine/namegen.ml b/engine/namegen.ml
index 1dd29e6ea..2e62b8901 100644
--- a/engine/namegen.ml
+++ b/engine/namegen.ml
@@ -43,6 +43,8 @@ let default_non_dependent_ident = Id.of_string default_non_dependent_string
let default_dependent_ident = Id.of_string "x"
+let default_generated_non_letter_string = "x"
+
(**********************************************************************)
(* Globality of identifiers *)
@@ -107,7 +109,17 @@ let head_name sigma c = (* Find the head constant of a constr if any *)
hdrec c
let lowercase_first_char id = (* First character of a constr *)
- Unicode.lowercase_first_char (Id.to_string id)
+ let s = Id.to_string id in
+ match Unicode.split_at_first_letter s with
+ | None ->
+ (* General case: nat -> n *)
+ Unicode.lowercase_first_char s
+ | Some (s,s') ->
+ if String.length s' = 0 then
+ (* No letter, e.g. __, or __'_, etc. *)
+ default_generated_non_letter_string
+ else
+ s ^ Unicode.lowercase_first_char s'
let sort_hdchar = function
| Prop(_) -> "P"