diff options
| author | herbelin | 2011-11-17 22:19:25 +0000 |
|---|---|---|
| committer | herbelin | 2011-11-17 22:19:25 +0000 |
| commit | e0dfeeba32d84d57157da699e9e622992e7ed258 (patch) | |
| tree | 02205e32b796e273b16d31544aaa92ed9ffd2ca3 | |
| parent | 292f55ed41ed1de9ed45c75266b37b6c4dba4140 (diff) | |
Fixing new bug introduced in r14665 when fixing bug #1834.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14674 85f007b7-540e-0410-9357-904b9bb8a0f7
| -rw-r--r-- | pretyping/cases.ml | 1 | ||||
| -rw-r--r-- | test-suite/success/CasesDep.v | 13 |
2 files changed, 14 insertions, 0 deletions
diff --git a/pretyping/cases.ml b/pretyping/cases.ml index 12a0ecac78..0454d4dcb9 100644 --- a/pretyping/cases.ml +++ b/pretyping/cases.ml @@ -898,6 +898,7 @@ let rec extract_predicate ccl = function let pred = extract_predicate ccl tms in if dep<>Anonymous then subst1 cur pred else pred | Pushed ((cur,IsInd (_,IndType(_,realargs),_)),_,(dep,_))::tms -> + let realargs = List.rev realargs in let k = if dep<>Anonymous then 1 else 0 in let tms = lift_tomatch_stack (List.length realargs + k) tms in let pred = extract_predicate ccl tms in diff --git a/test-suite/success/CasesDep.v b/test-suite/success/CasesDep.v index af6e2cd336..8fde93c1ba 100644 --- a/test-suite/success/CasesDep.v +++ b/test-suite/success/CasesDep.v @@ -513,3 +513,16 @@ Definition test (s:step E E) := Inductive K : nat -> Type := KC : forall (p q:nat), K p. Definition get : K O -> nat := fun x => match x with KC p q => q end. + +(* Checking correct order of substitution of realargs *) +(* (was broken from revision 14664 to 14669) *) +(* Example extracted from contrib CoLoR *) + +Inductive EQ : nat -> nat -> Prop := R x y : EQ x y. + +Check fun e t (d1 d2:EQ e t) => + match d1 in EQ e1 t1, d2 in EQ e2 t2 return + (e1,t1) = (e2,t2) -> (e1,t1) = (e,t) -> 0=0 + with + | R _ _, R _ _ => fun _ _ => eq_refl + end. |
