lean4-htt/tests/lean/withSetOptionIn.lean
Joachim Breitner 0e49576fe4
feat: guard_msgs to treat trace messages separate (#8267)
This PR makes `#guard_msgs` to treat `trace` messages separate from
`info`, `warning` and `error`. It also introduce the ability to say
`#guard_msgs (pass info`, like `(drop info)` so far, and also adds
`(check info)` as the explicit form of `(info)`, for completeness.

Fixes #8266
2025-05-09 05:44:34 +00:00

39 lines
894 B
Text

import Lean
/-!
# `withSetOptionIn`
This test checks that `withSetOptionIn` recurses into the command syntax (`stx[2]`) in
`set_option ... in <cmd>`.
Prior to #3806, `withSetOptionIn` erroneously recursed into the syntax `in` (`stx[1]`).
-/
open Lean Elab Command
/-- Trace `foo` when `set_option trace.debug true`. -/
elab "#trace_debug_foo" : command => do trace[debug] "foo"
/-- Elab `cmd` using `withSetOptionIn`. -/
elab "#test " cmd:command : command => withSetOptionIn elabCommand cmd
/-! ## Controls
Ensure that `#trace_debug_foo` works as expected.
-/
#guard_msgs in
#trace_debug_foo
/-- info: [debug] foo -/
#guard_msgs(trace) in
set_option trace.debug true in #trace_debug_foo
/-! ## Test
Should trace `[debug] foo`, and not log the error "unexpected command 'in'".
-/
/-- info: [debug] foo -/
#guard_msgs(trace) in
#test set_option trace.debug true in #trace_debug_foo