lean4-htt/tests/lean/run/matchNoPostponing.lean
2021-01-27 14:45:31 +01:00

17 lines
623 B
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/- In the following example, type of `x` and `y` could be any type `α` s.t. `[OfNat α]`.
It relies on `SyntheticMVarKind.withDefault` to set `α := Nat`.
Moreover, we must commit to `α := Nat` before we try to build de `matcher` since
`mkMatcher` assumes `matchType` does not contain metavariables.
We accomplish that by invoking `synthesizeSyntheticMVarsNoPostponing` at `elabMatch`. -/
def foo : IO Unit := do
let (x, y) ← pure (0, 0);
IO.println x
private def f (x : Nat) : Option Nat :=
none
private def g (xs : List (Nat × Nat)) : IO Unit :=
xs.forM fun x =>
match f x.fst with
| _ => pure ()