Adds a recognizer for `Name` literal expressions. Handles `Name` constructors as well as the `Lean.Name.mkStr*` functions.
14 lines
344 B
Text
14 lines
344 B
Text
import Lean
|
||
open Lean
|
||
|
||
def encodeDecode [ToJson α] [FromJson α] (x : α) : Except String α := do
|
||
let json := toJson x
|
||
fromJson? json
|
||
|
||
/-- info: `5 -/
|
||
#guard_msgs in
|
||
#eval IO.ofExcept <| encodeDecode (Name.mkNum Name.anonymous 5)
|
||
|
||
/-- info: `bla.«foo.boo» -/
|
||
#guard_msgs in
|
||
#eval IO.ofExcept <| encodeDecode (Name.mkStr `bla "foo.boo")
|