lean4-htt/tests/lean/macro_scopes.lean
2019-03-21 15:11:05 -07:00

29 lines
873 B
Text

import init.lean.expander init.io
open Lean.Expander -- for coercions
open Lean.Parser
open Lean.Parser.Term
local attribute [reducible] MacroScope
#exit -- Disabled until we implement new VM
-- TODO(Sebastian): `Syntax.toFormat` should probably propagate scopes by itself in the end
#eval (do {
let stx := review pi {op := Syntax.atom {val := "Π"}, binders := ["a"], range := review sort sort.View.Type},
-- tag root with {1}
let stx := stx.flipScopes [1],
IO.println stx,
-- tag root with {2} and propagate once
let stx := stx.flipScopes [2],
some n ← pure stx.asNode,
let stx := Syntax.mkNode n.kind n.args,
IO.println stx,
-- flip {2}
let stx := stx.flipScopes [2],
IO.println stx,
-- propagate once, only {1} remains
some n ← pure stx.asNode,
let stx := Syntax.mkNode n.kind n.args,
IO.println stx
} : ExceptT String IO Unit)