//@aux-build:proc_macros.rs #![allow(clippy::eq_op, clippy::needless_raw_string_hashes, clippy::no_effect, unused)] #![warn(clippy::string_lit_chars_any)] #[macro_use] extern crate proc_macros; struct NotStringLit; impl NotStringLit { fn chars(&self) -> impl Iterator<Item = char> { "c".chars() } } fn main() { let c = 'c'; "\\.+*?()|[]{}^$#&-~".chars().any(|x| x == c); r#"\.+*?()|[]{}^$#&-~"#.chars().any(|x| x == c); "\\.+*?()|[]{}^$#&-~".chars().any(|x| c == x); r#"\.+*?()|[]{}^$#&-~"#.chars().any(|x| c == x); #[rustfmt::skip] "\\.+*?()|[]{}^$#&-~".chars().any(|x| { x == c }); // Do not lint NotStringLit.chars().any(|x| x == c); "\\.+*?()|[]{}^$#&-~".chars().any(|x| { let c = 'c'; x == c }); "\\.+*?()|[]{}^$#&-~".chars().any(|x| { 1; x == c }); "\\.+*?()|[]{}^$#&-~".chars().any(|x| x == x); "\\.+*?()|[]{}^$#&-~".chars().any(|_x| c == c); matches!( c, '\\' | '.' | '+' | '*' | '(' | ')' | '|' | '[' | ']' | '{' | '}' | '^' | '$' | '#' | '&' | '-' | '~' ); external! { let c = 'c'; "\\.+*?()|[]{}^$#&-~".chars().any(|x| x == c); } with_span! { span let c = 'c'; "\\.+*?()|[]{}^$#&-~".chars().any(|x| x == c); } }