about summary refs log tree commit diff
path: root/src/tools/clippy/tests/ui/single_range_in_vec_init.rs
blob: 0888019e101ce59bc87c675fa70022562cc42928 (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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//@aux-build:proc_macros.rs
//@no-rustfix: overlapping suggestions
#![allow(clippy::no_effect, clippy::unnecessary_operation, clippy::useless_vec, unused)]
#![warn(clippy::single_range_in_vec_init)]

#[macro_use]
extern crate proc_macros;

macro_rules! a {
    () => {
        vec![0..200];
    };
}

fn awa<T: PartialOrd>(start: T, end: T) {
    [start..end];
}

fn awa_vec<T: PartialOrd>(start: T, end: T) {
    vec![start..end];
}

fn main() {
    // Lint
    [0..200];
    //~^ single_range_in_vec_init
    vec![0..200];
    //~^ single_range_in_vec_init
    [0u8..200];
    //~^ single_range_in_vec_init
    [0usize..200];
    //~^ single_range_in_vec_init
    [0..200usize];
    //~^ single_range_in_vec_init
    vec![0u8..200];
    //~^ single_range_in_vec_init
    vec![0usize..200];
    //~^ single_range_in_vec_init
    vec![0..200usize];
    //~^ single_range_in_vec_init
    // Only suggest collect
    [0..200isize];
    //~^ single_range_in_vec_init
    vec![0..200isize];
    //~^ single_range_in_vec_init
    // Do not lint
    [0..200, 0..100];
    vec![0..200, 0..100];
    [0.0..200.0];
    vec![0.0..200.0];
    // `Copy` is not implemented for `Range`, so this doesn't matter
    // FIXME: [0..200; 2];
    // FIXME: [vec!0..200; 2];

    // Unfortunately skips any macros
    a!();

    // Skip external macros and procedural macros
    external! {
        [0..200];
        vec![0..200];
    }
    with_span! {
        span
        [0..200];
        vec![0..200];
    }
}