summaryrefslogtreecommitdiffstats
path: root/src/tools/clippy/tests/ui/case_sensitive_file_extension_comparisons.rs
blob: 6f0485b5279b1112c173c8a5d07cfcbb872bd0d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#![warn(clippy::case_sensitive_file_extension_comparisons)]

use std::string::String;

struct TestStruct;

impl TestStruct {
    fn ends_with(self, arg: &str) {}
}

fn is_rust_file(filename: &str) -> bool {
    filename.ends_with(".rs")
}

fn main() {
    // std::string::String and &str should trigger the lint failure with .ext12
    let _ = String::new().ends_with(".ext12");
    let _ = "str".ends_with(".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 _ = String::new().ends_with(".EXT12");
    let _ = "str".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");
}