lean4-htt/tests/lean/run/inlineExpr.lean
jrr6 d31dfe92de
fix: account for namespaces/open decls in inlineExpr (#9108)
This PR fixes an issue that may have caused inline expressions in
messages to be unnecessarily rendered on a separate line.
2025-07-01 19:28:22 +00:00

63 lines
1.6 KiB
Text

import Lean.Meta
/-!
# Tests for the `inlineExpr` function
`inlineExpr` should print the given expression inline, unless it exceeds a given length, in which
case it is moved to an indented block.
-/
open Lean Meta
opaque shortFun : Nat → Nat
opaque shortConst : Nat
def runTest (e : Expr) : MetaM Unit := do
let msg := inlineExpr e (maxInlineLength := 30)
logInfo m!"Before{msg}After"
/-- info: Before `shortFun shortConst` After -/
#guard_msgs in
#eval runTest <| .app (.const ``shortFun []) (.const ``shortConst [])
opaque functionWithLongName : Nat → Nat
opaque constantWithLongName : Nat
/--
info: Before
functionWithLongName constantWithLongName
After
-/
#guard_msgs in
#eval runTest <| .app (.const ``functionWithLongName []) (.const ``constantWithLongName [])
/-! Ensure that length computation accounts for namespace occlusion: -/
namespace ExceptionallyLongNamespaceThatWillNotBePrinted
opaque Bar.Baz : Nat → Nat
/--
info: Before `Bar.Baz Nat.zero` After
-/
#guard_msgs in
#eval runTest <| .app (.const ``Bar.Baz []) (.const ``Nat.zero [])
end ExceptionallyLongNamespaceThatWillNotBePrinted
/-! Test `trailing` variant: -/
def runTestTrailing (e : Expr) : MetaM Unit := do
let msg := inlineExprTrailing e (maxInlineLength := 30)
logInfo m!"Before{msg}"
/-- info: Before `shortFun shortConst` -/
#guard_msgs in
#eval runTestTrailing <| .app (.const ``shortFun []) (.const ``shortConst [])
/--
info: Before
functionWithLongName constantWithLongName
-/
#guard_msgs in
#eval runTestTrailing <| .app (.const ``functionWithLongName []) (.const ``constantWithLongName [])