diff options
author | herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2006-02-01 15:09:07 +0000 |
---|---|---|
committer | herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2006-02-01 15:09:07 +0000 |
commit | 9061e9a6476288252463ace449d6aa0e92f1b232 (patch) | |
tree | c8418db44231d6a9165892d4fe3630356016c003 | |
parent | 88ad2844b6480bd933c8a7bee29ec4c63a13fadf (diff) |
Optimisation filtrage sans lieurs (utile pour Ltac)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@7970 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r-- | pretyping/matching.ml | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/pretyping/matching.ml b/pretyping/matching.ml index 64b63548d..462fe1eb1 100644 --- a/pretyping/matching.ml +++ b/pretyping/matching.ml @@ -89,11 +89,15 @@ let matches_core convert allow_partial_app pat c = | PMeta (Some n), m -> let depth = List.length stk in - let frels = Intset.elements (free_rels cT) in - if List.for_all (fun i -> i > depth) frels then - constrain (n,lift (-depth) cT) sigma - else - raise PatternMatchingFailure + if depth = 0 then + (* Optimisation *) + constrain (n,cT) sigma + else + let frels = Intset.elements (free_rels cT) in + if List.for_all (fun i -> i > depth) frels then + constrain (n,lift (-depth) cT) sigma + else + raise PatternMatchingFailure | PMeta None, m -> sigma |