29 lines
873 B
Text
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)
|