fix: delaborator: bind without lambda

This commit is contained in:
Sebastian Ullrich 2021-02-16 11:54:33 +01:00
parent 4ec85a39a5
commit 1490d095a8
3 changed files with 7 additions and 3 deletions

View file

@ -576,7 +576,7 @@ partial def delabDoElems : DelabM (List Syntax) := do
prependAndRec `(doElem|let $n:term ← $ma)
else
prependAndRec `(doElem|$ma:term)
| _ => delabAndRet
| _ => failure
else if e.isLet then
let Expr.letE n t v b _ ← getExpr | unreachable!
let n ← getUnusedName n b
@ -587,10 +587,10 @@ partial def delabDoElems : DelabM (List Syntax) := do
descend b 2 $
prependAndRec `(doElem|let $(mkIdent n) : $stxT := $stxV)
else
delabAndRet
let stx ← delab
[←`(doElem|$stx:term)]
where
prependAndRec x : DelabM _ := List.cons <$> x <*> delabDoElems
delabAndRet : DelabM _ := do let stx ← delab; [←`(doElem|$stx:term)]
@[builtinDelab app.Bind.bind]
def delabDo : Delab := whenPPOption getPPNotation do

View file

@ -100,3 +100,5 @@ set_option pp.structure_instance_type true in
discard <| pure 2
let y := 3
return x + y))
#eval checkM `(typeAs (Id Nat) (pure 1 >>= pure))

View file

@ -63,3 +63,5 @@ typeAs Nat
discard (pure 2)
let y : Nat := 3
pure (x + y))
typeAs (Id Nat)
(pure 1 >>= pure)