Skip to content

✨ feat(mq-dap): add conditional/hit-count breakpoints, logpoints, and watch expressions#2010

Merged
harehare merged 5 commits into
mainfrom
feat/dap-conditional-breakpoints-watch-expressions
Jul 17, 2026
Merged

✨ feat(mq-dap): add conditional/hit-count breakpoints, logpoints, and watch expressions#2010
harehare merged 5 commits into
mainfrom
feat/dap-conditional-breakpoints-watch-expressions

Conversation

@harehare

Copy link
Copy Markdown
Owner

Summary

Extends the DAP breakpoint model with condition, hit_condition, and log_message support, evaluated against the live scope at the breakpoint location. Logpoints report via a new output event instead of stopping. Also implements the previously-unhandled SetExpression request (used for inline watch editing) and advertises the corresponding DAP capabilities.

Type of Change

  • 🐛 Bug fix
  • ✨ New feature
  • ♻️ Refactor
  • 📝 Documentation
  • ⚡ Performance
  • ✅ Test
  • 📦 Build / dependencies
  • 👷 CI

Checklist

  • I ran cargo fmt and cargo clippy and addressed any warnings
  • I ran just test-all and all tests pass
  • I added or updated tests covering this change
  • I updated relevant documentation (/docs, crate README.md) if needed
  • I added a changelog entry if this is a user-facing change

Additional Context

… watch expressions

Extends the DAP breakpoint model with condition, hit_condition, and
log_message support, evaluated against the live scope at the breakpoint
location. Logpoints report via a new output event instead of stopping.
Also implements the previously-unhandled SetExpression request (used
for inline watch editing) and advertises the corresponding DAP
capabilities.
@codspeed-hq

codspeed-hq Bot commented Jul 14, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 31 untouched benchmarks


Comparing feat/dap-conditional-breakpoints-watch-expressions (423abf2) with main (5ee8974)1

Open in CodSpeed

Footnotes

  1. No successful run was found on main (45a59c8) during the generation of this report, so 5ee8974 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report.

harehare added 4 commits July 14, 2026 20:34
…ession

Replace the hand-rolled ">= N"/"== N" prefix parser with the same
eval_debug_expr path already used for condition and log_message, binding
hit_count in scope. A bare number is still shorthand for "hit_count >= N",
but any other string is now a full mq expression that can also reference
other in-scope variables, e.g. "hit_count >= 2 && x == 4".
…nterpolation

Replace interpolate_log_message's hand-rolled {expr} scanner with mq's
own ${expr} interpolation syntax (lexer::parse_interpolation_segments),
reusing the same escape rules as s"..." literals. Also adds support for
${self} (current pipeline value) and ${$VAR} (env vars) in log messages.

This is a breaking change to logpoint message syntax: {x} -> ${x}.
…feature

It is only used by DAP logpoint message interpolation, so building
without the debugger feature was emitting a dead_code warning.
@harehare
harehare merged commit 322ef01 into main Jul 17, 2026
11 checks passed
@harehare
harehare deleted the feat/dap-conditional-breakpoints-watch-expressions branch July 17, 2026 00:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant