Skip to content

chore(deps): bump eyre to 0.6.14 to fix expression-position bail! (supersedes #2843, #3086) - #3126

Merged
trunk-io[bot] merged 1 commit into
mainfrom
claude/eyre-0.6.14-lockfile-jnsk0k
Aug 11, 2026
Merged

trunk-io[bot] merged 1 commit into
mainfrom
claude/eyre-0.6.14-lockfile-jnsk0k

Conversation

@phil-opp

Copy link
Copy Markdown
Collaborator

Summary

Fixes #2835 upstream instead of in our source. eyre 0.6.14 removes the trailing semicolon from every arm of the bail! macro, which was the sole cause of the semicolon_in_expressions_from_macros / semicolon_in_expressions_from_non_local_macros diagnostics.

 macro_rules! bail {
     ($msg:literal $(,)?) => {
-        return $crate::private::Err($crate::eyre!($msg));
+        return $crate::private::Err($crate::eyre!($msg))
     };
     ($err:expr $(,)?) => {
-        return $crate::private::Err($crate::eyre!($err));
+        return $crate::private::Err($crate::eyre!($err))
     };
     ($fmt:expr, $($arg:tt)*) => {
-        return $crate::private::Err($crate::eyre!($fmt, $($arg)*));
+        return $crate::private::Err($crate::eyre!($fmt, $($arg)*))
     };
 }

The diff here is a one-package lockfile bump — no dora source changes.

Supersedes #2843 and #3086

Both open PRs fix this by hand-editing call sites (adding ; after block-tail bail!, wrapping bare match arms in a block). With 0.6.14 neither is needed: the lint has nothing left to fire on. Landing this instead avoids 365 lines of churn across 52 files and — more importantly — avoids a rule that every future bail! call site has to remember.

approach files touched
#2843 edit call sites 48
#3086 edit call sites 4
this PR bump dependency 1 (Cargo.lock)

Verification

Toolchain: rustc 1.99.0-nightly (12c36e253 2026-08-10).

Workspace-wide cargo +nightly check --all (excluding the three PyO3 crates), counting trailing semicolon in macro used in expression position:

eyre diagnostics
0.6.12 154 across 17 crates (cli 57, core 21, coordinator 17, node 17, daemon 10, …)
0.6.14 0

Isolated before/after on a minimal crate with #[deny(future_incompatible)], covering both reported shapes (block-tail bail!("boom") and bare match arm _ => bail!("nope")): fails to compile on 0.6.12, compiles clean on 0.6.14, identical source.

Also run:

Note on severity: the reporter in #2835 saw hard errors on nightly (da86f4d07 2026-07-24); on the nightly used here the non-local variant surfaces as future-incompat warnings. Which nightly builds hard-error varies, which is exactly why the dependency fix is the durable one.

The only future-incompat report left in the workspace comes from third-party static_init_macro v1.0.4 and is unrelated to this change.

Version delta review

0.6.12 → 0.6.14 also drops eyre's optional pyo3 dependency (a feature dora never enabled) and adds an autocfg build dependency (already in our tree). rust-version stays at 1.65.0, well under the workspace MSRV of 1.95.0.

Note

This bumps Cargo.lock only; the workspace requirement stays eyre = "0.6.12", so normal resolution picks up 0.6.14 and above. If you'd rather encode the fix as a hard floor — relevant only under minimal-version resolution — say the word and I'll bump the requirement to 0.6.14 too.

🤖 Generated with Claude Code

https://claude.ai/code/session_01BRDAyUb1r1nLd3i4Sc2UXy


Generated by Claude Code

eyre 0.6.14 removes the trailing semicolon from every arm of the `bail!`
macro. That semicolon was the sole cause of the
`semicolon_in_expressions_from_macros` /
`semicolon_in_expressions_from_non_local_macros` diagnostics reported in
 #2835, which fire whenever `bail!` is used as a block-tail expression or
as a bare `match` arm.

Bumping the lockfile clears all 154 affected call sites across 17 crates
without touching a single line of dora source, superseding the manual
semicolon insertion in #2843 and #3086.

Verified with rustc 1.99.0-nightly (12c36e253 2026-08-10):

  cargo +nightly check --all (excluding the PyO3 crates)
    eyre 0.6.12: 154 "trailing semicolon in macro used in expression
                 position" diagnostics
    eyre 0.6.14: 0

The only remaining future-incompat report comes from the third-party
`static_init_macro v1.0.4` and is unrelated.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BRDAyUb1r1nLd3i4Sc2UXy
@trunk-io

trunk-io Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

😎 Merged successfully - details.

Copy link
Copy Markdown
Collaborator Author

Automated review (Claude)

No issues found.

This is a Cargo.lock-only bump of eyre 0.6.12 → 0.6.14. The single new dependency edge (autocfg) is already present in the lockfile, so no new crate is introduced into the build graph. The bump satisfies the existing 0.6 constraint and touches no dora source, consistent with the stated goal of clearing the bail! macro diagnostics without manual edits.


🤖 This is a fully automated review by Claude — no human has verified these findings. Treat them as advisory.

Generated by Claude Code


Generated by Claude Code

@trunk-io
trunk-io Bot merged commit f3c032f into main Aug 11, 2026
25 of 27 checks passed
@trunk-io
trunk-io Bot deleted the claude/eyre-0.6.14-lockfile-jnsk0k branch August 11, 2026 21:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Build fails on newer Rust due to semicolon_in_expressions_from_macros

2 participants