summaryrefslogtreecommitdiffstats
path: root/src/tools/clippy/tests/ui/linkedlist.rs
blob: 690ea810a6214072f1a1614304624f22cb30befc (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
#![feature(associated_type_defaults)]
#![warn(clippy::linkedlist)]
#![allow(unused, dead_code, clippy::needless_pass_by_value)]

extern crate alloc;
use alloc::collections::linked_list::LinkedList;

const C: LinkedList<i32> = LinkedList::new();
static S: LinkedList<i32> = LinkedList::new();

trait Foo {
    type Baz = LinkedList<u8>;
    fn foo(_: LinkedList<u8>);
    const BAR: Option<LinkedList<u8>>;
}

// Ok, we don’t want to warn for implementations; see issue #605.
impl Foo for LinkedList<u8> {
    fn foo(_: LinkedList<u8>) {}
    const BAR: Option<LinkedList<u8>> = None;
}

pub struct Bar {
    priv_linked_list_field: LinkedList<u8>,
    pub pub_linked_list_field: LinkedList<u8>,
}
impl Bar {
    fn foo(_: LinkedList<u8>) {}
}

// All of these test should be trigger the lint because they are not
// part of the public api
fn test(my_favorite_linked_list: LinkedList<u8>) {}
fn test_ret() -> Option<LinkedList<u8>> {
    None
}
fn test_local_not_linted() {
    let _: LinkedList<u8>;
}

// All of these test should be allowed because they are part of the
// public api and `avoid_breaking_exported_api` is `false` by default.
pub fn pub_test(the_most_awesome_linked_list: LinkedList<u8>) {}
pub fn pub_test_ret() -> Option<LinkedList<u8>> {
    None
}

fn main() {}