aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgareuselesinge2013-07-29 13:56:09 +0000
committergareuselesinge2013-07-29 13:56:09 +0000
commit30f0ac30c21d53588b6ff6143c76560b3d1437d8 (patch)
treeb689b9a2a36e91fff804be39f86c0289764c1886
parent5b012a717082f443a383b081eb5df5a3ee45be31 (diff)
better error message for unexpected renaming (closes #2987)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@16641 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--test-suite/output/Arguments_renaming.out5
-rw-r--r--test-suite/output/Arguments_renaming.v2
-rw-r--r--toplevel/vernacentries.ml14
3 files changed, 18 insertions, 3 deletions
diff --git a/test-suite/output/Arguments_renaming.out b/test-suite/output/Arguments_renaming.out
index 20042a5ed0..bdf0a0cf87 100644
--- a/test-suite/output/Arguments_renaming.out
+++ b/test-suite/output/Arguments_renaming.out
@@ -1,7 +1,9 @@
The command has indeed failed with message:
=> Error: To rename arguments the "rename" flag must be specified.
+Argument A renamed to B
The command has indeed failed with message:
=> Error: To rename arguments the "rename" flag must be specified.
+Argument A renamed to T
@eq_refl
: forall (B : Type) (y : B), y = y
eq_refl
@@ -106,3 +108,6 @@ The command has indeed failed with message:
=> Error: Argument z cannot be declared implicit.
The command has indeed failed with message:
=> Error: Extra argument y.
+The command has indeed failed with message:
+=> Error: To rename arguments the "rename" flag must be specified.
+Argument A renamed to R
diff --git a/test-suite/output/Arguments_renaming.v b/test-suite/output/Arguments_renaming.v
index b133e73355..e68fbd69f0 100644
--- a/test-suite/output/Arguments_renaming.v
+++ b/test-suite/output/Arguments_renaming.v
@@ -50,5 +50,5 @@ Fail Arguments eq_refl {F}, [F].
Fail Arguments eq_refl {F F}, [F] F.
Fail Arguments eq {F} x [z].
Fail Arguments eq {F} x z y.
-
+Fail Arguments eq {R} s t.
diff --git a/toplevel/vernacentries.ml b/toplevel/vernacentries.ml
index d583c4fe6f..ffc53f55bf 100644
--- a/toplevel/vernacentries.ml
+++ b/toplevel/vernacentries.ml
@@ -986,6 +986,12 @@ let vernac_declare_arguments locality r l nargs flags =
| x, _ -> x in
List.map (fun ns -> List.map name_anons (List.combine ns inf_names)) l in
let names_decl = List.map (List.map (fun (id, _,_,_,_) -> id)) l in
+ let renamed_arg = ref None in
+ let set_renamed a b =
+ if !renamed_arg = None && a <> b then renamed_arg := Some(b,a) in
+ let pr_renamed_arg () = match !renamed_arg with None -> ""
+ | Some (o,n) ->
+ "\nArgument "^string_of_id o ^" renamed to "^string_of_id n^"." in
let some_renaming_specified =
try
let names = Arguments_renaming.arguments_names sr in
@@ -1001,15 +1007,19 @@ let vernac_declare_arguments locality r l nargs flags =
| (Name x, _,_, true, _), Anonymous ->
error ("Argument "^Id.to_string x^" cannot be declared implicit.")
| (Name iid, _,_, true, max), Name id ->
+ set_renamed iid id;
b || not (Id.equal iid id), Some (ExplByName id, max, false)
- | (Name iid, _,_, _, _), Name id -> b || not (Id.equal iid id), None
+ | (Name iid, _,_, _, _), Name id ->
+ set_renamed iid id;
+ b || not (Id.equal iid id), None
| _ -> b, None)
sr (List.combine il inf_names) in
sr || sr', List.map_filter (fun x -> x) impl)
some_renaming_specified l in
if some_renaming_specified then
if not (List.mem `Rename flags) then
- error "To rename arguments the \"rename\" flag must be specified."
+ error ("To rename arguments the \"rename\" flag must be specified."
+ ^ pr_renamed_arg ())
else
Arguments_renaming.rename_arguments
(make_section_locality locality) sr names_decl;