aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Herbelin2014-10-03 14:25:12 +0200
committerHugo Herbelin2014-10-03 14:37:24 +0200
commit8a26545845dc885d181486188b9a0ca4c15f51d6 (patch)
tree0b9bb6cdbbddf9791027bf3c0234aa28c9e524b1
parent17b19d2b94680c9e312e44fdc512c6a8d8749db0 (diff)
Fixing #3623 (unbound evars in types in a call to "change with").
-rw-r--r--pretyping/patternops.ml4
-rw-r--r--test-suite/bugs/closed/3623.v4
2 files changed, 6 insertions, 2 deletions
diff --git a/pretyping/patternops.ml b/pretyping/patternops.ml
index dc7aa848c8..8c553f6136 100644
--- a/pretyping/patternops.ml
+++ b/pretyping/patternops.ml
@@ -144,7 +144,7 @@ let pattern_of_constr env sigma t =
Evar (evk,args as ev) ->
(match snd (Evd.evar_source evk sigma) with
Evar_kinds.MatchingVar (true,id) ->
- ctx := (id,None,existential_type sigma ev)::!ctx;
+ ctx := (id,None,Evarutil.nf_evar sigma (existential_type sigma ev))::!ctx;
Some id
| _ -> None)
| _ -> None
@@ -159,7 +159,7 @@ let pattern_of_constr env sigma t =
| Evar (evk,ctxt as ev) ->
(match snd (Evd.evar_source evk sigma) with
| Evar_kinds.MatchingVar (b,id) ->
- ctx := (id,None,existential_type sigma ev)::!ctx;
+ ctx := (id,None,Evarutil.nf_evar sigma (existential_type sigma ev))::!ctx;
assert (not b); PMeta (Some id)
| Evar_kinds.GoalEvar -> PEvar (evk,Array.map (pattern_of_constr env) ctxt)
| _ -> PMeta None)
diff --git a/test-suite/bugs/closed/3623.v b/test-suite/bugs/closed/3623.v
new file mode 100644
index 0000000000..202b900164
--- /dev/null
+++ b/test-suite/bugs/closed/3623.v
@@ -0,0 +1,4 @@
+Require Import List.
+Goal (1 :: 2 :: nil) ++ (3::nil) = (1::2::3::nil).
+change (@app nat (?a :: ?b) ?c) with (a :: @app nat b c).
+Abort.