-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Open
Labels
C-bugCategory: Clippy is not doing the correct thingCategory: Clippy is not doing the correct thingI-false-negativeIssue: The lint should have been triggered on code, but wasn'tIssue: The lint should have been triggered on code, but wasn't
Description
Summary
Including references in the result value, and the presence of type annotations on the assignment both seem to have an effect on the detection.
Lint Name
manual_map
Reproducer
I tried this code:
#![allow(dead_code, unused)]
static TRUE: bool = true;
static FALSE: bool = false;
static STRINGS: [&str; 2] = ["hello", "hi"];
pub fn clippy_repo_auto_types(i: usize) {
let trimmed = if let Some(v) = STRINGS.get(i) {
Some(v.trim())
} else {
None
};
let len = if let Some(v) = STRINGS.get(i) {
Some(v.len())
} else {
None
};
let is_long = if let Some(v) = STRINGS.get(i) {
Some(if v.len() > 3 { &TRUE } else { &FALSE })
} else {
None
};
}
pub fn clippy_repro_explicit_types(i: usize) {
let trimmed: Option<&'static str> = if let Some(v) = STRINGS.get(i) {
Some(v.trim())
} else {
None
};
let len: Option<usize> = if let Some(v) = STRINGS.get(i) {
Some(v.len())
} else {
None
};
let is_long: Option<&'static bool> = if let Some(v) = STRINGS.get(i) {
Some(if v.len() > 3 { &TRUE } else { &FALSE })
} else {
None
};
}
pub fn clippy_repro_trim(i: usize) -> Option<&'static str> {
if let Some(v) = STRINGS.get(i) {
Some(v.trim())
} else {
None
}
}
pub fn clippy_repro_bool(i: usize) -> Option<&'static bool> {
if let Some(v) = STRINGS.get(i) {
Some(if v.len() > 3 { &TRUE } else { &FALSE })
} else {
None
}
}There are 8 occurrences which I believe break the manual_map rule.
On 1.90, we see 3 warnings: https://godbolt.org/z/KqTf7Gqjc
Going back to 1.86, there were 6 warnings: https://godbolt.org/z/nEx57EeoE
Seems like #14389 would match the timeline of a change made between 14 February, 2025 and 28 March, 2025.
Metadata
Metadata
Assignees
Labels
C-bugCategory: Clippy is not doing the correct thingCategory: Clippy is not doing the correct thingI-false-negativeIssue: The lint should have been triggered on code, but wasn'tIssue: The lint should have been triggered on code, but wasn't