| #![warn(clippy::case_sensitive_file_extension_comparisons)] |
| |
| use std::string::String; |
| |
| struct TestStruct; |
| |
| impl TestStruct { |
| fn ends_with(self, _arg: &str) {} |
| } |
| |
| #[allow(dead_code)] |
| fn is_rust_file(filename: &str) -> bool { |
| std::path::Path::new(filename) |
| .extension() |
| .map_or(false, |ext| ext.eq_ignore_ascii_case("rs")) |
| } |
| |
| fn main() { |
| // std::string::String and &str should trigger the lint failure with .ext12 |
| let _ = std::path::Path::new(&String::new()) |
| .extension() |
| .map_or(false, |ext| ext.eq_ignore_ascii_case("ext12")); |
| let _ = std::path::Path::new("str") |
| .extension() |
| .map_or(false, |ext| ext.eq_ignore_ascii_case("ext12")); |
| |
| // The fixup should preserve the indentation level |
| { |
| let _ = std::path::Path::new("str") |
| .extension() |
| .map_or(false, |ext| ext.eq_ignore_ascii_case("ext12")); |
| } |
| |
| // The test struct should not trigger the lint failure with .ext12 |
| TestStruct {}.ends_with(".ext12"); |
| |
| // std::string::String and &str should trigger the lint failure with .EXT12 |
| let _ = std::path::Path::new(&String::new()) |
| .extension() |
| .map_or(false, |ext| ext.eq_ignore_ascii_case("EXT12")); |
| let _ = std::path::Path::new("str") |
| .extension() |
| .map_or(false, |ext| ext.eq_ignore_ascii_case("EXT12")); |
| |
| // Should not trigger the lint failure because of the calls to to_lowercase and to_uppercase |
| let _ = String::new().to_lowercase().ends_with(".EXT12"); |
| let _ = String::new().to_uppercase().ends_with(".EXT12"); |
| |
| // The test struct should not trigger the lint failure with .EXT12 |
| TestStruct {}.ends_with(".EXT12"); |
| |
| // Should not trigger the lint failure with .eXT12 |
| let _ = String::new().ends_with(".eXT12"); |
| let _ = "str".ends_with(".eXT12"); |
| TestStruct {}.ends_with(".eXT12"); |
| |
| // Should not trigger the lint failure with .EXT123 (too long) |
| let _ = String::new().ends_with(".EXT123"); |
| let _ = "str".ends_with(".EXT123"); |
| TestStruct {}.ends_with(".EXT123"); |
| |
| // Shouldn't fail if it doesn't start with a dot |
| let _ = String::new().ends_with("a.ext"); |
| let _ = "str".ends_with("a.extA"); |
| TestStruct {}.ends_with("a.ext"); |
| } |