diff options
| -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 64b63548d4..462fe1eb1d 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 |
