This PR fixes an issue that may have caused inline expressions in messages to be unnecessarily rendered on a separate line.
63 lines
1.6 KiB
Text
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 [])
|