Skip to content

Conversation

@weihanglo
Copy link
Member

@weihanglo weihanglo commented Dec 1, 2025

What does this PR try to resolve?

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.

Fixes #15577

How to test and review this PR?

@rustbot rustbot added A-documenting-cargo-itself Area: Cargo's documentation A-workspaces Area: workspaces S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Dec 1, 2025
@rustbot
Copy link
Collaborator

rustbot commented Dec 1, 2025

r? @ehuss

rustbot has assigned @ehuss.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Comment on lines 493 to 496
--> Cargo.toml:7:[..]
|
7 | bar = { git = '[ROOTURL]/bar', version = "0.1" }
| [..]^^^^^
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because the redaction of [ROOTURL], we have no control oveer column number, so redact them.

@weihanglo weihanglo force-pushed the lint-imprecise-version-req branch from 7fac520 to fa31eaf Compare December 7, 2025 19:40
@rustbot
Copy link
Collaborator

rustbot commented Dec 7, 2025

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.

@weihanglo weihanglo changed the title feat(lint): imprecise_version_requirements feat(lint): new implicit_minimum_version_req lint Dec 7, 2025
@weihanglo weihanglo force-pushed the lint-imprecise-version-req branch 4 times, most recently from 7ce7163 to 20be772 Compare December 7, 2025 20:26
@weihanglo weihanglo force-pushed the lint-imprecise-version-req branch from 20be772 to 62036ab Compare December 8, 2025 22:06
return None;
}

// This is a lossy suggestion that
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Highlight that the suggestion is lossy

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
@weihanglo weihanglo force-pushed the lint-imprecise-version-req branch from 62036ab to 864bf96 Compare December 8, 2025 22:40
Copy link
Contributor

@epage epage left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@epage epage enabled auto-merge December 8, 2025 22:41
@epage epage added this pull request to the merge queue Dec 8, 2025
Merged via the queue into rust-lang:master with commit 14116aa Dec 8, 2025
28 checks passed
@rustbot rustbot removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Dec 8, 2025
@weihanglo weihanglo deleted the lint-imprecise-version-req branch December 9, 2025 00:13
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-documenting-cargo-itself Area: Cargo's documentation A-workspaces Area: workspaces

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Lint on version requirements without a fully specified minimum bound

4 participants