mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-11 07:34:18 +00:00
Auto merge of #11195 - thvdveld:fix-option-env-ifs-equal-cond, r=Manishearth
fix: false positive for `option_env!` in `ifs_same_cond` Clippy had a false positive for with `ifs_same_cond` when two if-let expressions have an `option_env!` macro. The fix is similar to the `env!` macro fix. The following example had a clippy error: ```rust if let Some(env1) = option_env!("ENV1") { // ... } else if let Some(env2) = option_env!("ENV2") { // ... } ``` See https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=01b85c61b56ddd900117fb247af04824 changelog: [`ifs_same_cond`]: fix false positive when using `option_env!` in if-let expressions.
This commit is contained in:
commit
7c5095c502
3 changed files with 13 additions and 6 deletions
|
@ -494,8 +494,11 @@ impl HirEqInterExpr<'_, '_, '_> {
|
||||||
loop {
|
loop {
|
||||||
use TokenKind::{BlockComment, LineComment, Whitespace};
|
use TokenKind::{BlockComment, LineComment, Whitespace};
|
||||||
if left_data.macro_def_id != right_data.macro_def_id
|
if left_data.macro_def_id != right_data.macro_def_id
|
||||||
|| (matches!(left_data.kind, ExpnKind::Macro(MacroKind::Bang, name) if name == sym::cfg)
|
|| (matches!(
|
||||||
&& !eq_span_tokens(self.inner.cx, left_data.call_site, right_data.call_site, |t| {
|
left_data.kind,
|
||||||
|
ExpnKind::Macro(MacroKind::Bang, name)
|
||||||
|
if name == sym::cfg || name == sym::option_env
|
||||||
|
) && !eq_span_tokens(self.inner.cx, left_data.call_site, right_data.call_site, |t| {
|
||||||
!matches!(t, Whitespace | LineComment { .. } | BlockComment { .. })
|
!matches!(t, Whitespace | LineComment { .. } | BlockComment { .. })
|
||||||
}))
|
}))
|
||||||
{
|
{
|
||||||
|
|
|
@ -46,6 +46,10 @@ fn ifs_same_cond() {
|
||||||
// ok, functions
|
// ok, functions
|
||||||
} else if v.len() == 42 {
|
} else if v.len() == 42 {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let Some(env1) = option_env!("ENV1") {
|
||||||
|
} else if let Some(env2) = option_env!("ENV2") {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn issue10272() {
|
fn issue10272() {
|
||||||
|
|
|
@ -36,13 +36,13 @@ LL | if 2 * a == 1 {
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
error: this `if` has the same condition as a previous `if`
|
error: this `if` has the same condition as a previous `if`
|
||||||
--> $DIR/ifs_same_cond.rs:54:15
|
--> $DIR/ifs_same_cond.rs:58:15
|
||||||
|
|
|
|
||||||
LL | } else if a.contains("ah") {
|
LL | } else if a.contains("ah") {
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
note: same as this
|
note: same as this
|
||||||
--> $DIR/ifs_same_cond.rs:53:8
|
--> $DIR/ifs_same_cond.rs:57:8
|
||||||
|
|
|
|
||||||
LL | if a.contains("ah") {
|
LL | if a.contains("ah") {
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
Loading…
Reference in a new issue