diff options
| author | Hugo Herbelin | 2014-10-03 14:25:12 +0200 |
|---|---|---|
| committer | Hugo Herbelin | 2014-10-03 14:37:24 +0200 |
| commit | 8a26545845dc885d181486188b9a0ca4c15f51d6 (patch) | |
| tree | 0b9bb6cdbbddf9791027bf3c0234aa28c9e524b1 | |
| parent | 17b19d2b94680c9e312e44fdc512c6a8d8749db0 (diff) | |
Fixing #3623 (unbound evars in types in a call to "change with").
| -rw-r--r-- | pretyping/patternops.ml | 4 | ||||
| -rw-r--r-- | test-suite/bugs/closed/3623.v | 4 |
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. |
