diff options
| author | gareuselesinge | 2013-07-29 13:56:09 +0000 |
|---|---|---|
| committer | gareuselesinge | 2013-07-29 13:56:09 +0000 |
| commit | 30f0ac30c21d53588b6ff6143c76560b3d1437d8 (patch) | |
| tree | b689b9a2a36e91fff804be39f86c0289764c1886 | |
| parent | 5b012a717082f443a383b081eb5df5a3ee45be31 (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.out | 5 | ||||
| -rw-r--r-- | test-suite/output/Arguments_renaming.v | 2 | ||||
| -rw-r--r-- | toplevel/vernacentries.ml | 14 |
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; |
