]> git.lizzy.rs Git - rust.git/blob - tests/ui/drop_forget_ref.rs
Adapt the *.stderr files of the ui-tests to the tool_lints
[rust.git] / tests / ui / drop_forget_ref.rs
1 #![feature(tool_lints)]
2
3
4 #![warn(clippy::drop_ref, clippy::forget_ref)]
5 #![allow(clippy::toplevel_ref_arg, clippy::similar_names, clippy::needless_pass_by_value)]
6
7 use std::mem::{drop, forget};
8
9 struct SomeStruct;
10
11 fn main() {
12     drop(&SomeStruct);
13     forget(&SomeStruct);
14
15     let mut owned1 = SomeStruct;
16     drop(&owned1);
17     drop(&&owned1);
18     drop(&mut owned1);
19     drop(owned1); //OK
20     let mut owned2 = SomeStruct;
21     forget(&owned2);
22     forget(&&owned2);
23     forget(&mut owned2);
24     forget(owned2); //OK
25
26     let reference1 = &SomeStruct;
27     drop(reference1);
28     forget(&*reference1);
29
30     let reference2 = &mut SomeStruct;
31     drop(reference2);
32     let reference3 = &mut SomeStruct;
33     forget(reference3);
34
35     let ref reference4 = SomeStruct;
36     drop(reference4);
37     forget(reference4);
38 }
39
40 #[allow(dead_code)]
41 fn test_generic_fn_drop<T>(val: T) {
42     drop(&val);
43     drop(val); //OK
44 }
45
46 #[allow(dead_code)]
47 fn test_generic_fn_forget<T>(val: T) {
48     forget(&val);
49     forget(val); //OK
50 }
51
52 #[allow(dead_code)]
53 fn test_similarly_named_function() {
54     fn drop<T>(_val: T) {}
55     drop(&SomeStruct); //OK; call to unrelated function which happens to have the same name
56     std::mem::drop(&SomeStruct);
57     fn forget<T>(_val: T) {}
58     forget(&SomeStruct); //OK; call to unrelated function which happens to have the same name
59     std::mem::forget(&SomeStruct);
60 }