feat(lint): new implicit_minimum_version_req lint#16321
Merged
epage merged 5 commits intorust-lang:masterfrom Dec 8, 2025
Merged
feat(lint): new implicit_minimum_version_req lint#16321epage merged 5 commits intorust-lang:masterfrom
implicit_minimum_version_req lint#16321epage merged 5 commits intorust-lang:masterfrom
Conversation
Collaborator
weihanglo
commented
Dec 1, 2025
Comment on lines
493
to
496
| --> Cargo.toml:7:[..] | ||
| | | ||
| 7 | bar = { git = '[ROOTURL]/bar', version = "0.1" } | ||
| | [..]^^^^^ |
Member
Author
There was a problem hiding this comment.
Because the redaction of [ROOTURL], we have no control oveer column number, so redact them.
weihanglo
commented
Dec 1, 2025
epage
reviewed
Dec 1, 2025
epage
reviewed
Dec 1, 2025
epage
reviewed
Dec 1, 2025
epage
reviewed
Dec 1, 2025
7fac520 to
fa31eaf
Compare
Collaborator
|
This PR was rebased onto a different master commit. Here's a range-diff highlighting what actually changed. Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers. |
implicit_minimum_version_req lint
7ce7163 to
20be772
Compare
epage
reviewed
Dec 8, 2025
epage
reviewed
Dec 8, 2025
epage
reviewed
Dec 8, 2025
epage
reviewed
Dec 8, 2025
20be772 to
62036ab
Compare
weihanglo
commented
Dec 8, 2025
| return None; | ||
| } | ||
|
|
||
| // This is a lossy suggestion that |
Member
Author
There was a problem hiding this comment.
Highlight that the suggestion is lossy
epage
reviewed
Dec 8, 2025
Add a new `cargo::implicit_minimum_version_req` lint: Only check if dependency has a single caret requirement. All other requirements (multiple, tilde, wildcard) are not linted by this rule, as they usually have significance on what version fields get specified. This currently lints only dependencies with no workspace inheritance.
This has a future performance that version requirments in `[workspace.dependencies]` shoud avoid reparse
62036ab to
864bf96
Compare
epage
approved these changes
Dec 8, 2025
weihanglo
added a commit
to weihanglo/cargo
that referenced
this pull request
Dec 9, 2025
`unknown_lints` is special that it analyzes only at package level, and warn if your lint is inherited from workspace. According to the discussion in <rust-lang#16321 (comment)>, we should lint against workspace always plus selected packages. This additionally handles unstable lint gating.
weihanglo
added a commit
to weihanglo/cargo
that referenced
this pull request
Dec 9, 2025
`unknown_lints` is special that it analyzes only at package level, and warn if your lint is inherited from workspace. According to the discussion in <rust-lang#16321 (comment)>, we should lint against workspace always plus selected packages. This additionally handles unstable lint gating.
github-merge-queue bot
pushed a commit
that referenced
this pull request
Dec 9, 2025
### What does this PR try to resolve? `unknown_lints` is special that it analyzes only at package level, and warn if your lint is inherited from workspace. According to the discussion in <#16321 (comment)>, we should lint against workspace always plus selected packages. This additionally handles unstable lint gating. ### How to test and review this PR? Two new tests are added to reflect that workspace lints were not analyzed if not inheriting.
bors
added a commit
to rust-lang/rust
that referenced
this pull request
Dec 13, 2025
Update cargo submodule 27 commits in 2c283a9a5c5968eeb9a8f12313f04feb1ff8dfac..c46423de7351e3c4c734b2faa86088a9f5d1302b 2025-12-04 16:47:28 +0000 to 2025-12-12 23:16:12 +0000 - feat(report): cargo report timings HTML replay (rust-lang/cargo#16377) - feat: stabilize `-Zconfig-include` (rust-lang/cargo#16284) - fix(package): Don't verify registry for --list (rust-lang/cargo#16341) - Fixed incorrect locking logic when artifact-dir == build-dir (rust-lang/cargo#16385) - feat(log): make timing messages ready for HTML replay (rust-lang/cargo#16382) - chore(deps): update msrv (1 version) to v1.92 (rust-lang/cargo#16381) - Downgrade curl-sys to 0.4.83 (rust-lang/cargo#16379) - fix(timing): more self-contained timing/log data (rust-lang/cargo#16378) - test: update to `proc_macro::tracked::path` (rust-lang/cargo#16380) - refactor(lint): move lints to separate modules (rust-lang/cargo#16364) - fix(index): Apply feedback from Cargo team (rust-lang/cargo#16369) - fix(lints): handle lints separately at ws pkg level (rust-lang/cargo#16367) - feat(lint): new `implicit_minimum_version_req` lint (rust-lang/cargo#16321) - fix(info): default to local without explicit reg (rust-lang/cargo#16358) - Remove `[no-mentions]` handler in our triagebot config (rust-lang/cargo#16361) - Don't read the config file twice when $CARGO_HOME is a symlink (rust-lang/cargo#16325) - fix(timings): forgot to negate filter (rust-lang/cargo#16352) - fix(doctest): Include all search paths with new build layout (rust-lang/cargo#16348) - fix(layout): Remove hashes from bins in new layout (rust-lang/cargo#16351) - docs(faq): Include an entry on disk space (rust-lang/cargo#16349) - feat(timings): derive concurrency data from unit data (rust-lang/cargo#16350) - perf(layout): Use unit_id, not pkg hash, for bin/lib pkg_dirs for new layout (rust-lang/cargo#16345) - Validate target source paths before compilation with clearer errors (rust-lang/cargo#16338) - test(doc): Remove unused build script (rust-lang/cargo#16344) - refactor(timings): store UnitData in RenderContext instead (rust-lang/cargo#16346) - perf(clean): Optimize (legacy) clean with multiple -p specifiers (rust-lang/cargo#16264) - test: Adjust output for out-of-tree build-dir (rust-lang/cargo#16343)
bors
added a commit
to rust-lang/rust
that referenced
this pull request
Dec 13, 2025
Update cargo submodule 29 commits in 2c283a9a5c5968eeb9a8f12313f04feb1ff8dfac..e91b2baa632c0c7e84216c91ecfe107c37d887c1 2025-12-04 16:47:28 +0000 to 2025-12-13 16:29:21 +0000 - refactor(lints): move from cargo::util::lints to cargo::lints (rust-lang/cargo#16392) - test(lint): redact more due to line got omitted (rust-lang/cargo#16391) - feat(report): cargo report timings HTML replay (rust-lang/cargo#16377) - feat: stabilize `-Zconfig-include` (rust-lang/cargo#16284) - fix(package): Don't verify registry for --list (rust-lang/cargo#16341) - Fixed incorrect locking logic when artifact-dir == build-dir (rust-lang/cargo#16385) - feat(log): make timing messages ready for HTML replay (rust-lang/cargo#16382) - chore(deps): update msrv (1 version) to v1.92 (rust-lang/cargo#16381) - Downgrade curl-sys to 0.4.83 (rust-lang/cargo#16379) - fix(timing): more self-contained timing/log data (rust-lang/cargo#16378) - test: update to `proc_macro::tracked::path` (rust-lang/cargo#16380) - refactor(lint): move lints to separate modules (rust-lang/cargo#16364) - fix(index): Apply feedback from Cargo team (rust-lang/cargo#16369) - fix(lints): handle lints separately at ws pkg level (rust-lang/cargo#16367) - feat(lint): new `implicit_minimum_version_req` lint (rust-lang/cargo#16321) - fix(info): default to local without explicit reg (rust-lang/cargo#16358) - Remove `[no-mentions]` handler in our triagebot config (rust-lang/cargo#16361) - Don't read the config file twice when $CARGO_HOME is a symlink (rust-lang/cargo#16325) - fix(timings): forgot to negate filter (rust-lang/cargo#16352) - fix(doctest): Include all search paths with new build layout (rust-lang/cargo#16348) - fix(layout): Remove hashes from bins in new layout (rust-lang/cargo#16351) - docs(faq): Include an entry on disk space (rust-lang/cargo#16349) - feat(timings): derive concurrency data from unit data (rust-lang/cargo#16350) - perf(layout): Use unit_id, not pkg hash, for bin/lib pkg_dirs for new layout (rust-lang/cargo#16345) - Validate target source paths before compilation with clearer errors (rust-lang/cargo#16338) - test(doc): Remove unused build script (rust-lang/cargo#16344) - refactor(timings): store UnitData in RenderContext instead (rust-lang/cargo#16346) - perf(clean): Optimize (legacy) clean with multiple -p specifiers (rust-lang/cargo#16264) - test: Adjust output for out-of-tree build-dir (rust-lang/cargo#16343)
github-actions bot
pushed a commit
to rust-lang/miri
that referenced
this pull request
Dec 14, 2025
Update cargo submodule 29 commits in 2c283a9a5c5968eeb9a8f12313f04feb1ff8dfac..e91b2baa632c0c7e84216c91ecfe107c37d887c1 2025-12-04 16:47:28 +0000 to 2025-12-13 16:29:21 +0000 - refactor(lints): move from cargo::util::lints to cargo::lints (rust-lang/cargo#16392) - test(lint): redact more due to line got omitted (rust-lang/cargo#16391) - feat(report): cargo report timings HTML replay (rust-lang/cargo#16377) - feat: stabilize `-Zconfig-include` (rust-lang/cargo#16284) - fix(package): Don't verify registry for --list (rust-lang/cargo#16341) - Fixed incorrect locking logic when artifact-dir == build-dir (rust-lang/cargo#16385) - feat(log): make timing messages ready for HTML replay (rust-lang/cargo#16382) - chore(deps): update msrv (1 version) to v1.92 (rust-lang/cargo#16381) - Downgrade curl-sys to 0.4.83 (rust-lang/cargo#16379) - fix(timing): more self-contained timing/log data (rust-lang/cargo#16378) - test: update to `proc_macro::tracked::path` (rust-lang/cargo#16380) - refactor(lint): move lints to separate modules (rust-lang/cargo#16364) - fix(index): Apply feedback from Cargo team (rust-lang/cargo#16369) - fix(lints): handle lints separately at ws pkg level (rust-lang/cargo#16367) - feat(lint): new `implicit_minimum_version_req` lint (rust-lang/cargo#16321) - fix(info): default to local without explicit reg (rust-lang/cargo#16358) - Remove `[no-mentions]` handler in our triagebot config (rust-lang/cargo#16361) - Don't read the config file twice when $CARGO_HOME is a symlink (rust-lang/cargo#16325) - fix(timings): forgot to negate filter (rust-lang/cargo#16352) - fix(doctest): Include all search paths with new build layout (rust-lang/cargo#16348) - fix(layout): Remove hashes from bins in new layout (rust-lang/cargo#16351) - docs(faq): Include an entry on disk space (rust-lang/cargo#16349) - feat(timings): derive concurrency data from unit data (rust-lang/cargo#16350) - perf(layout): Use unit_id, not pkg hash, for bin/lib pkg_dirs for new layout (rust-lang/cargo#16345) - Validate target source paths before compilation with clearer errors (rust-lang/cargo#16338) - test(doc): Remove unused build script (rust-lang/cargo#16344) - refactor(timings): store UnitData in RenderContext instead (rust-lang/cargo#16346) - perf(clean): Optimize (legacy) clean with multiple -p specifiers (rust-lang/cargo#16264) - test: Adjust output for out-of-tree build-dir (rust-lang/cargo#16343)
github-actions bot
pushed a commit
to rust-lang/rust-analyzer
that referenced
this pull request
Dec 15, 2025
Update cargo submodule 29 commits in 2c283a9a5c5968eeb9a8f12313f04feb1ff8dfac..e91b2baa632c0c7e84216c91ecfe107c37d887c1 2025-12-04 16:47:28 +0000 to 2025-12-13 16:29:21 +0000 - refactor(lints): move from cargo::util::lints to cargo::lints (rust-lang/cargo#16392) - test(lint): redact more due to line got omitted (rust-lang/cargo#16391) - feat(report): cargo report timings HTML replay (rust-lang/cargo#16377) - feat: stabilize `-Zconfig-include` (rust-lang/cargo#16284) - fix(package): Don't verify registry for --list (rust-lang/cargo#16341) - Fixed incorrect locking logic when artifact-dir == build-dir (rust-lang/cargo#16385) - feat(log): make timing messages ready for HTML replay (rust-lang/cargo#16382) - chore(deps): update msrv (1 version) to v1.92 (rust-lang/cargo#16381) - Downgrade curl-sys to 0.4.83 (rust-lang/cargo#16379) - fix(timing): more self-contained timing/log data (rust-lang/cargo#16378) - test: update to `proc_macro::tracked::path` (rust-lang/cargo#16380) - refactor(lint): move lints to separate modules (rust-lang/cargo#16364) - fix(index): Apply feedback from Cargo team (rust-lang/cargo#16369) - fix(lints): handle lints separately at ws pkg level (rust-lang/cargo#16367) - feat(lint): new `implicit_minimum_version_req` lint (rust-lang/cargo#16321) - fix(info): default to local without explicit reg (rust-lang/cargo#16358) - Remove `[no-mentions]` handler in our triagebot config (rust-lang/cargo#16361) - Don't read the config file twice when $CARGO_HOME is a symlink (rust-lang/cargo#16325) - fix(timings): forgot to negate filter (rust-lang/cargo#16352) - fix(doctest): Include all search paths with new build layout (rust-lang/cargo#16348) - fix(layout): Remove hashes from bins in new layout (rust-lang/cargo#16351) - docs(faq): Include an entry on disk space (rust-lang/cargo#16349) - feat(timings): derive concurrency data from unit data (rust-lang/cargo#16350) - perf(layout): Use unit_id, not pkg hash, for bin/lib pkg_dirs for new layout (rust-lang/cargo#16345) - Validate target source paths before compilation with clearer errors (rust-lang/cargo#16338) - test(doc): Remove unused build script (rust-lang/cargo#16344) - refactor(timings): store UnitData in RenderContext instead (rust-lang/cargo#16346) - perf(clean): Optimize (legacy) clean with multiple -p specifiers (rust-lang/cargo#16264) - test: Adjust output for out-of-tree build-dir (rust-lang/cargo#16343)
Kobzol
pushed a commit
to Kobzol/rustc_codegen_gcc
that referenced
this pull request
Dec 21, 2025
Update cargo submodule 29 commits in 2c283a9a5c5968eeb9a8f12313f04feb1ff8dfac..e91b2baa632c0c7e84216c91ecfe107c37d887c1 2025-12-04 16:47:28 +0000 to 2025-12-13 16:29:21 +0000 - refactor(lints): move from cargo::util::lints to cargo::lints (rust-lang/cargo#16392) - test(lint): redact more due to line got omitted (rust-lang/cargo#16391) - feat(report): cargo report timings HTML replay (rust-lang/cargo#16377) - feat: stabilize `-Zconfig-include` (rust-lang/cargo#16284) - fix(package): Don't verify registry for --list (rust-lang/cargo#16341) - Fixed incorrect locking logic when artifact-dir == build-dir (rust-lang/cargo#16385) - feat(log): make timing messages ready for HTML replay (rust-lang/cargo#16382) - chore(deps): update msrv (1 version) to v1.92 (rust-lang/cargo#16381) - Downgrade curl-sys to 0.4.83 (rust-lang/cargo#16379) - fix(timing): more self-contained timing/log data (rust-lang/cargo#16378) - test: update to `proc_macro::tracked::path` (rust-lang/cargo#16380) - refactor(lint): move lints to separate modules (rust-lang/cargo#16364) - fix(index): Apply feedback from Cargo team (rust-lang/cargo#16369) - fix(lints): handle lints separately at ws pkg level (rust-lang/cargo#16367) - feat(lint): new `implicit_minimum_version_req` lint (rust-lang/cargo#16321) - fix(info): default to local without explicit reg (rust-lang/cargo#16358) - Remove `[no-mentions]` handler in our triagebot config (rust-lang/cargo#16361) - Don't read the config file twice when $CARGO_HOME is a symlink (rust-lang/cargo#16325) - fix(timings): forgot to negate filter (rust-lang/cargo#16352) - fix(doctest): Include all search paths with new build layout (rust-lang/cargo#16348) - fix(layout): Remove hashes from bins in new layout (rust-lang/cargo#16351) - docs(faq): Include an entry on disk space (rust-lang/cargo#16349) - feat(timings): derive concurrency data from unit data (rust-lang/cargo#16350) - perf(layout): Use unit_id, not pkg hash, for bin/lib pkg_dirs for new layout (rust-lang/cargo#16345) - Validate target source paths before compilation with clearer errors (rust-lang/cargo#16338) - test(doc): Remove unused build script (rust-lang/cargo#16344) - refactor(timings): store UnitData in RenderContext instead (rust-lang/cargo#16346) - perf(clean): Optimize (legacy) clean with multiple -p specifiers (rust-lang/cargo#16264) - test: Adjust output for out-of-tree build-dir (rust-lang/cargo#16343)
Kobzol
pushed a commit
to Kobzol/rustc_codegen_cranelift
that referenced
this pull request
Dec 29, 2025
Update cargo submodule 29 commits in 2c283a9a5c5968eeb9a8f12313f04feb1ff8dfac..e91b2baa632c0c7e84216c91ecfe107c37d887c1 2025-12-04 16:47:28 +0000 to 2025-12-13 16:29:21 +0000 - refactor(lints): move from cargo::util::lints to cargo::lints (rust-lang/cargo#16392) - test(lint): redact more due to line got omitted (rust-lang/cargo#16391) - feat(report): cargo report timings HTML replay (rust-lang/cargo#16377) - feat: stabilize `-Zconfig-include` (rust-lang/cargo#16284) - fix(package): Don't verify registry for --list (rust-lang/cargo#16341) - Fixed incorrect locking logic when artifact-dir == build-dir (rust-lang/cargo#16385) - feat(log): make timing messages ready for HTML replay (rust-lang/cargo#16382) - chore(deps): update msrv (1 version) to v1.92 (rust-lang/cargo#16381) - Downgrade curl-sys to 0.4.83 (rust-lang/cargo#16379) - fix(timing): more self-contained timing/log data (rust-lang/cargo#16378) - test: update to `proc_macro::tracked::path` (rust-lang/cargo#16380) - refactor(lint): move lints to separate modules (rust-lang/cargo#16364) - fix(index): Apply feedback from Cargo team (rust-lang/cargo#16369) - fix(lints): handle lints separately at ws pkg level (rust-lang/cargo#16367) - feat(lint): new `implicit_minimum_version_req` lint (rust-lang/cargo#16321) - fix(info): default to local without explicit reg (rust-lang/cargo#16358) - Remove `[no-mentions]` handler in our triagebot config (rust-lang/cargo#16361) - Don't read the config file twice when $CARGO_HOME is a symlink (rust-lang/cargo#16325) - fix(timings): forgot to negate filter (rust-lang/cargo#16352) - fix(doctest): Include all search paths with new build layout (rust-lang/cargo#16348) - fix(layout): Remove hashes from bins in new layout (rust-lang/cargo#16351) - docs(faq): Include an entry on disk space (rust-lang/cargo#16349) - feat(timings): derive concurrency data from unit data (rust-lang/cargo#16350) - perf(layout): Use unit_id, not pkg hash, for bin/lib pkg_dirs for new layout (rust-lang/cargo#16345) - Validate target source paths before compilation with clearer errors (rust-lang/cargo#16338) - test(doc): Remove unused build script (rust-lang/cargo#16344) - refactor(timings): store UnitData in RenderContext instead (rust-lang/cargo#16346) - perf(clean): Optimize (legacy) clean with multiple -p specifiers (rust-lang/cargo#16264) - test: Adjust output for out-of-tree build-dir (rust-lang/cargo#16343)
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.
What does this PR try to resolve?
Add a new
cargo::implicit_minimum_version_reqlint:Only check if dependency has a single caret requirement.
All other requirements (multiple, tilde, wildcard)
are not linted by this rule, as they usually have significance
on what version fields get specified.
Fixes #15577
How to test and review this PR?
implicit_minimum_version_reqlint #16321 (comment)allowbecause this may get people a lot of warnings)implicit_minimum_version_reqlint #16321 (comment)implicit_minimum_version_reqlint #16321 (comment)implicit_minimum_version_reqlint #16321 (comment) suggesting the lowerest bound (adding missing zeros)