summaryrefslogtreecommitdiffstats
path: root/src/tools/clippy/tests/ui/vec_box_sized.rs
blob: fd3a7543ee1a9301101cc5b21da297c4d9b1ec29 (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
//@run-rustfix

#![allow(dead_code)]

struct SizedStruct(i32);
struct UnsizedStruct([i32]);
struct BigStruct([i32; 10000]);

/// The following should trigger the lint
mod should_trigger {
    use super::SizedStruct;
    const C: Vec<Box<i32>> = Vec::new();
    static S: Vec<Box<i32>> = Vec::new();

    struct StructWithVecBox {
        sized_type: Vec<Box<SizedStruct>>,
    }

    struct A(Vec<Box<SizedStruct>>);
    struct B(Vec<Vec<Box<(u32)>>>);
}

/// The following should not trigger the lint
mod should_not_trigger {
    use super::{BigStruct, UnsizedStruct};

    struct C(Vec<Box<UnsizedStruct>>);
    struct D(Vec<Box<BigStruct>>);

    struct StructWithVecBoxButItsUnsized {
        unsized_type: Vec<Box<UnsizedStruct>>,
    }

    struct TraitVec<T: ?Sized> {
        // Regression test for #3720. This was causing an ICE.
        inner: Vec<Box<T>>,
    }
}

mod inner_mod {
    mod inner {
        pub struct S;
    }

    mod inner2 {
        use super::inner::S;

        pub fn f() -> Vec<Box<S>> {
            vec![]
        }
    }
}

fn main() {}