diff options
| author | herbelin | 2007-05-10 15:31:46 +0000 |
|---|---|---|
| committer | herbelin | 2007-05-10 15:31:46 +0000 |
| commit | de6e0fdd9f3078b9b0ccf87ba8a7dcc9cc47c9aa (patch) | |
| tree | 33bc723ec517a6ad737b7ca52a7e71f643ed3158 /interp | |
| parent | afaa5d6ee5c27329423c152362e0969dc2d9afdd (diff) | |
Prise en compte réversibilité des notations de la forme "Notation Nil := @nil".
Ajout @ref au niveau constr pour allègement syntaxe.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@9819 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'interp')
| -rw-r--r-- | interp/constrextern.ml | 7 | ||||
| -rw-r--r-- | interp/notation.ml | 4 |
2 files changed, 7 insertions, 4 deletions
diff --git a/interp/constrextern.ml b/interp/constrextern.ml index 771a0b299d..cf4d2db0e4 100644 --- a/interp/constrextern.ml +++ b/interp/constrextern.ml @@ -834,10 +834,13 @@ and extern_symbol (tmp_scope,scopes as allscopes) vars t = function try (* Adjusts to the number of arguments expected by the notation *) let (t,args) = match t,n with - | RApp (_,f,args), Some n when List.length args > n -> + | RApp (_,(RRef _ as f),args), Some n when List.length args >= n -> let args1, args2 = list_chop n args in (if n = 0 then f else RApp (dummy_loc,f,args1)), args2 - | _ -> t,[] in + | RApp (_,(RRef _ as f),args), None -> f, args + | RRef _, Some 0 -> RApp (dummy_loc,t,[]), [] + | _, None -> t,[] + | _ -> raise No_match in (* Try matching ... *) let subst = match_aconstr t pat in (* Try availability of interpretation ... *) diff --git a/interp/notation.ml b/interp/notation.ml index c31ef54ec8..aaab6a933f 100644 --- a/interp/notation.ml +++ b/interp/notation.ml @@ -187,10 +187,10 @@ let cases_pattern_key = function | PatCstr (_,ref,_,_) -> RefKey (ConstructRef ref) | _ -> Oth -let aconstr_key = function +let aconstr_key = function (* Rem: AApp(ARef ref,[]) stands for @ref *) | AApp (ARef ref,args) -> RefKey ref, Some (List.length args) | AList (_,_,AApp (ARef ref,args),_,_) -> RefKey ref, Some (List.length args) - | ARef ref -> RefKey ref, Some 0 + | ARef ref -> RefKey ref, None | _ -> Oth, None let pattern_key = function |
