diff options
| author | msozeau | 2008-03-27 00:57:38 +0000 |
|---|---|---|
| committer | msozeau | 2008-03-27 00:57:38 +0000 |
| commit | 9eeb0905d1d6f2c9e7b9be83660335838d2c1295 (patch) | |
| tree | c41f29ec9c3d627ae89484ba368145a5fc9c2dd1 /parsing | |
| parent | 57eec1e1e4efd09f5181297d87b1908c284e6951 (diff) | |
Various fixes on typeclasses:
- Better interface in constrintern w.r.t. evars used during typechecking
- Add "unsatisfiable_constraints" exception which gives back the raw
evar_map that was not satisfied during typeclass search (presentation
could be improved).
- Correctly infer the minimal sort for typeclasses declared as
definitions (everything was in type before).
- Really handle priorities in typeclass eauto: goals produced with higher
priority (lowest number) instances are tried before other of lower
priority goals, regardless of the number of subgoals.
- Change inverse to a notation for flip, now that universe polymorphic
definitions are handled correctly.
- Add EquivalenceDec class similar to SetoidDec, declaring decision
procedures for equivalences.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@10724 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'parsing')
| -rw-r--r-- | parsing/g_vernac.ml4 | 4 | ||||
| -rw-r--r-- | parsing/ppvernac.ml | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/parsing/g_vernac.ml4 b/parsing/g_vernac.ml4 index 40c6180f0d..df29d50964 100644 --- a/parsing/g_vernac.ml4 +++ b/parsing/g_vernac.ml4 @@ -475,14 +475,14 @@ GEXTEND Gram (* Type classes, new syntax without artificial sup. *) | IDENT "Class"; qid = identref; pars = binders_let; - s = [ ":"; c = sort -> loc, c | -> (loc,Rawterm.RType None) ]; + s = [ ":"; c = sort -> Some (loc, c) | -> None ]; props = typeclass_field_types -> VernacClass (qid, pars, s, [], props) (* Type classes *) | IDENT "Class"; sup = OPT [ l = delimited_binders_let; "=>" -> l ]; qid = identref; pars = binders_let; - s = [ ":"; c = sort -> loc, c | -> (loc,Rawterm.RType None) ]; + s = [ ":"; c = sort -> Some (loc, c) | -> None ]; props = typeclass_field_types -> VernacClass (qid, pars, s, (match sup with None -> [] | Some l -> l), props) diff --git a/parsing/ppvernac.ml b/parsing/ppvernac.ml index 92d56e078d..7ca1964ead 100644 --- a/parsing/ppvernac.ml +++ b/parsing/ppvernac.ml @@ -701,7 +701,7 @@ let rec pr_vernac = function str"Class" ++ spc () ++ pr_lident id ++ (* prlist_with_sep (spc) (pr_lident_constr (spc() ++ str ":" ++ spc())) par ++ *) pr_and_type_binders_arg par ++ - spc () ++ str":" ++ spc() ++ pr_rawsort (snd ar) ++ + (match ar with Some ar -> spc () ++ str":" ++ spc() ++ pr_rawsort (snd ar) | None -> mt()) ++ spc () ++ str"where" ++ spc () ++ prlist_with_sep (fun () -> str";" ++ spc()) (fun (lid,oc,c) -> pr_lident_constr ((if oc then str" :>" else str" :") ++ spc()) (lid,c)) props ) |
