aboutsummaryrefslogtreecommitdiffhomepage
path: root/test-suite/bugs
diff options
context:
space:
mode:
authorGravatar Hugo Herbelin <Hugo.Herbelin@inria.fr>2017-05-22 10:13:47 +0200
committerGravatar Hugo Herbelin <Hugo.Herbelin@inria.fr>2018-03-27 12:49:33 +0200
commit414e4ea9f226ade9686da28ebee39cd1b93f42a6 (patch)
tree31608068084331524c6874bf3415397a37532378 /test-suite/bugs
parentcf44127379de49770232d6956b0455f92d6d6323 (diff)
Fixing #5547 (typability of return predicate in nested pattern-matching).
Answering to commit about #5500: we don't know in general if the return predicate T(y1,..,yn,x) in the intermediate step of a nested pattern-matching is a sort, but we don't even know if it is well-typed: retyping is not enough, we need full typing.
Diffstat (limited to 'test-suite/bugs')
-rw-r--r--test-suite/bugs/closed/5547.v16
1 files changed, 16 insertions, 0 deletions
diff --git a/test-suite/bugs/closed/5547.v b/test-suite/bugs/closed/5547.v
new file mode 100644
index 000000000..79633f489
--- /dev/null
+++ b/test-suite/bugs/closed/5547.v
@@ -0,0 +1,16 @@
+(* Checking typability of intermediate return predicates in nested pattern-matching *)
+
+Inductive A : (Type->Type) -> Type := J : A (fun x => x).
+Definition ret (x : nat * A (fun x => x))
+ := match x return Type with
+ | (y,z) => match z in A f return f Type with
+ | J => bool
+ end
+ end.
+Definition foo : forall x, ret x.
+Proof.
+Fail refine (fun x
+ => match x return ret x with
+ | (y,J) => true
+ end
+ ).