aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--pretyping/pattern.ml2
-rw-r--r--pretyping/pattern.mli2
-rw-r--r--tactics/tacinterp.ml2
3 files changed, 3 insertions, 3 deletions
diff --git a/pretyping/pattern.ml b/pretyping/pattern.ml
index 1453aa218..979ecb0b1 100644
--- a/pretyping/pattern.ml
+++ b/pretyping/pattern.ml
@@ -132,7 +132,7 @@ let map_pattern_with_binders g f l = function
let map_pattern f = map_pattern_with_binders (fun () -> ()) (fun () -> f) ()
let rec instantiate_pattern lvar = function
- | PVar id as x -> (try List.assoc id lvar with Not_found -> x)
+ | PVar id as x -> (try Lazy.force(List.assoc id lvar) with Not_found -> x)
| (PFix _ | PCoFix _) -> error ("Not instantiable pattern")
| c -> map_pattern (instantiate_pattern lvar) c
diff --git a/pretyping/pattern.mli b/pretyping/pattern.mli
index 2ecb85ba4..ee0eefade 100644
--- a/pretyping/pattern.mli
+++ b/pretyping/pattern.mli
@@ -76,6 +76,6 @@ val pattern_of_rawconstr : rawconstr ->
patvar list * constr_pattern
val instantiate_pattern :
- (identifier * constr_pattern) list -> constr_pattern -> constr_pattern
+ (identifier * constr_pattern Lazy.t) list -> constr_pattern -> constr_pattern
val lift_pattern : int -> constr_pattern -> constr_pattern
diff --git a/tactics/tacinterp.ml b/tactics/tacinterp.ml
index fef9ba95a..0c7f65c2a 100644
--- a/tactics/tacinterp.ml
+++ b/tactics/tacinterp.ml
@@ -916,7 +916,7 @@ let give_context ctxt = function
(* Reads a pattern by substituing vars of lfun *)
let eval_pattern lfun c =
- let lvar = List.map (fun (id,c) -> (id,pattern_of_constr c)) lfun in
+ let lvar = List.map (fun (id,c) -> (id,lazy(pattern_of_constr c))) lfun in
instantiate_pattern lvar c
let read_pattern evc env lfun = function