lean4-htt/tests/lean/run/printDecls.lean
2022-07-11 14:19:41 -07:00

26 lines
834 B
Text

import Lean
open Lean
open Lean.Meta
-- Return true if `declName` should be ignored
def shouldIgnore (declName : Name) : Bool :=
declName.isInternal
|| match declName with
| .str _ s => "match_".isPrefixOf s || "proof_".isPrefixOf s || "eq_".isPrefixOf s
| _ => true
-- Print declarations that have the given prefix.
def printDecls (pre : Name) : MetaM Unit := do
let cs := (← getEnv).constants
cs.forM fun declName info => do
if pre.isPrefixOf declName && !shouldIgnore declName then
if let some docString ← findDocString? (← getEnv) declName then
IO.println s!"/-- {docString} -/\n{declName} : {← ppExpr info.type}"
else
IO.println s!"{declName} : {← ppExpr info.type}"
#eval printDecls `Array
#eval printDecls `List
#eval printDecls `Bool
#eval printDecls `Lean.Elab