lean4-htt/tests/lean/run/doCodeBlock.lean
2020-10-01 16:12:58 -07:00

38 lines
867 B
Text

import Lean
new_frontend
namespace Lean.Elab.Term.Do
def ref := Syntax.missing
def mkVarDecl (x : Name) (k : CodeBlock) : CodeBlock :=
mkVarDeclCore #[x] Syntax.missing k
def mkReassign (x : Name) (k : CodeBlock) : TermElabM CodeBlock :=
mkReassignCore #[x] Syntax.missing k
def print (c : CodeBlock) : TermElabM Unit := do
let msg := c.toMessageData
let msg ← addMessageContext msg
IO.println (← liftIO msg.toString)
pure ()
def tst : TermElabM Unit := do
let x := mkIdentFrom ref `x
let c ← mkIte ref mkNullNode (← `($x < 1))
(mkVarDecl `w (mkVarDecl `z (← mkReassign `x (mkReturn ref `z))))
(mkVarDecl `x (← mkReassign `y (mkBreak ref)))
print c
IO.println "-----"
let c ← concat c (mkVarDecl `w (← mkReassign `z (mkReturn ref `w)))
print c
let c ← mkReassign `w c
IO.println "-----"
print c
pure ()
#eval tst
end Lean.Elab.Term.Do