diff options
| author | Pierre-Marie Pédrot | 2017-02-22 13:44:16 +0100 |
|---|---|---|
| committer | Pierre-Marie Pédrot | 2017-02-22 13:44:16 +0100 |
| commit | 38c773f2053dd5ba27ae889bb4299ed90b9cc319 (patch) | |
| tree | 23eefe646b197c3005946e812cdc4795e7f5c5f4 /test-suite | |
| parent | d9d8977cf213f0d4b2e8d324c759c23df58ba457 (diff) | |
| parent | 27e8d8857ea5435ccec9eddd6c34324de82afd32 (diff) | |
Merge branch 'v8.6'
Diffstat (limited to 'test-suite')
| -rw-r--r-- | test-suite/bugs/closed/5346.v | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/test-suite/bugs/closed/5346.v b/test-suite/bugs/closed/5346.v new file mode 100644 index 0000000000..0118c18704 --- /dev/null +++ b/test-suite/bugs/closed/5346.v @@ -0,0 +1,29 @@ +Inductive comp : Type -> Type := +| Ret {T} : forall (v:T), comp T +| Bind {T T'} : forall (p: comp T') (p': T' -> comp T), comp T. + +Notation "'do' x .. y <- p1 ; p2" := + (Bind p1 (fun x => .. (fun y => p2) ..)) + (at level 60, right associativity, + x binder, y binder). + +Definition Fst1 A B (p: comp (A*B)) : comp A := + do '(a, b) <- p; + Ret a. + +Definition Fst2 A B (p: comp (A*B)) : comp A := + match tt with + | _ => Bind p (fun '(a, b) => Ret a) + end. + +Definition Fst3 A B (p: comp (A*B)) : comp A := + match tt with + | _ => do a <- p; + Ret (fst a) + end. + +Definition Fst A B (p: comp (A * B)) : comp A := + match tt with + | _ => do '(a, b) <- p; + Ret a + end. |
