ci: allow the non-local variant of the semicolon-in-expressions lint in u256 - #11131
Merged
Conversation
…lint rustc splits `semicolon_in_expressions_from_macros` by macro locality, and `uint::construct_uint!` falls under the non-local variant. The docs jobs deny all warnings, so `cargo doc --all-features --document-private-items` fails to compile zebra-chain on the Book and Advisory Checks workflows. Only nightly knows the new lint name, so `unknown_lints` keeps the allow valid on stable and MSRV toolchains.
oxarbitrage
approved these changes
Jul 28, 2026
Contributor
Merge Queue Status
This pull request spent 46 seconds in the queue, including 9 seconds running CI. Required conditions to merge
|
6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
The Book workflow has been red on every push to
mainsince 2026-07-27, and the weekly Advisory Checks workflow fails the same way. Both build docs on nightly with-D warnings, andzebra-chainno longer compiles under it:No Zebra change caused this. rustc split
semicolon_in_expressions_from_macrosinto two lints, by where the macro is defined:semicolon_in_expressions_from_macrossemicolon_in_expressions_from_non_local_macrosuint::construct_uint!comes from an external crate, so it moved out from under the existing allow and into a lint nothing was silencing.uint 0.10.0is the latest release, so no upstream version fixes the expansion.This is a hotfix for red
main, so it has no prior issue.Solution
Allow both lint names in
u256.rs, together withunknown_lints.All three are required. Only nightly knows the new name, so naming it directly makes stable emit
unknown_lints, which is warn-by-default and therefore fatal under clippy's-D warnings.A single
#![allow(future_incompatible)]would have covered both names and survived any future split, but rustc rejects it here:allow(future_incompatible) is ignored unless specified at crate level, and crate level is far too broad.Tests
Checked against the three toolchains CI uses:
unknown_lintsbook.ymldocs command (cargo doc --no-deps --workspace --all-features --document-private-itemsunder the full CIRUSTDOCFLAGS) exits 0 on nightly 1.99.0.cargo clippy -p zebra-chain --all-features --all-targets -- -D warningsis clean on stable.cargo test -p zebra-chain --lib work::passes, 43 tests.Specifications & References
Follow-up Work
book.ymlandadvisory.ymlpair an unpinnednightlytoolchain with-D warnings, so any rustc lint addition or split turnsmainred. This is the second occurrence in ten days. Pinning the nightly is a trade-off worth its own discussion.book.ymlalso points readers tolint.yml:jobs.docs, which no longer exists.AI Disclosure
PR Checklist
type(scope): description