diff --git a/clippy_lints/src/write.rs b/clippy_lints/src/write.rs index a019e23a301..0b52981bfa5 100644 --- a/clippy_lints/src/write.rs +++ b/clippy_lints/src/write.rs @@ -290,22 +290,24 @@ fn check_tts(cx: &EarlyContext<'a>, tts: &ThinTokenStream, is_write: bool) -> Op idx += 1; }, ExprKind::Assign(lhs, rhs) => { - if let ExprKind::Path(_, p) = &lhs.node { - let mut all_simple = true; - let mut seen = false; - for arg in &args { - match arg.position { - | ArgumentImplicitlyIs(_) - | ArgumentIs(_) - => {}, - ArgumentNamed(name) => if *p == name { - seen = true; - all_simple &= arg.format == SIMPLE; - }, + if let ExprKind::Lit(_) = rhs.node { + if let ExprKind::Path(_, p) = &lhs.node { + let mut all_simple = true; + let mut seen = false; + for arg in &args { + match arg.position { + | ArgumentImplicitlyIs(_) + | ArgumentIs(_) + => {}, + ArgumentNamed(name) => if *p == name { + seen = true; + all_simple &= arg.format == SIMPLE; + }, + } + } + if all_simple && seen { + span_lint(cx, lint, rhs.span, "literal with an empty format string"); } - } - if all_simple && seen { - span_lint(cx, lint, rhs.span, "literal with an empty format string"); } } }, diff --git a/tests/ui/print_literal.rs b/tests/ui/print_literal.rs index 272e1c168d3..620349bab33 100644 --- a/tests/ui/print_literal.rs +++ b/tests/ui/print_literal.rs @@ -8,6 +8,7 @@ fn main() { println!("Hello"); let world = "world"; println!("Hello {}", world); + println!("Hello {world}", world=world); println!("3 in hex is {:X}", 3); println!("2 + 1 = {:.4}", 3); println!("2 + 1 = {:5.4}", 3); diff --git a/tests/ui/write_literal.rs b/tests/ui/write_literal.rs index b09640a18eb..fe1f83a2790 100644 --- a/tests/ui/write_literal.rs +++ b/tests/ui/write_literal.rs @@ -11,6 +11,7 @@ fn main() { writeln!(&mut v, "Hello"); let world = "world"; writeln!(&mut v, "Hello {}", world); + writeln!(&mut v, "Hello {world}", world); writeln!(&mut v, "3 in hex is {:X}", 3); writeln!(&mut v, "2 + 1 = {:.4}", 3); writeln!(&mut v, "2 + 1 = {:5.4}", 3);