From 3050d90930c54e4552f286807751356514f997ba Mon Sep 17 00:00:00 2001 From: Theemathas Chirananthavat Date: Thu, 29 Dec 2016 18:45:41 -0800 Subject: [PATCH] Add forget_ref tests. Also rename drop_ref.rs to drop_forget_ref.rs in tests/compile-fail. --- tests/compile-fail/drop_forget_ref.rs | 60 +++++++++++++++++++++++++++ tests/compile-fail/drop_ref.rs | 42 ------------------- 2 files changed, 60 insertions(+), 42 deletions(-) create mode 100644 tests/compile-fail/drop_forget_ref.rs delete mode 100644 tests/compile-fail/drop_ref.rs diff --git a/tests/compile-fail/drop_forget_ref.rs b/tests/compile-fail/drop_forget_ref.rs new file mode 100644 index 00000000000..55cfe63dac4 --- /dev/null +++ b/tests/compile-fail/drop_forget_ref.rs @@ -0,0 +1,60 @@ +#![feature(plugin)] +#![plugin(clippy)] + +#![deny(drop_ref, forget_ref)] +#![allow(toplevel_ref_arg, similar_names)] + +use std::mem::{drop, forget}; + +struct SomeStruct; + +fn main() { + drop(&SomeStruct); //~ERROR call to `std::mem::drop` with a reference argument + forget(&SomeStruct); //~ERROR call to `std::mem::forget` with a reference argument + + let mut owned1 = SomeStruct; + drop(&owned1); //~ERROR call to `std::mem::drop` with a reference argument + drop(&&owned1); //~ERROR call to `std::mem::drop` with a reference argument + drop(&mut owned1); //~ERROR call to `std::mem::drop` with a reference argument + drop(owned1); //OK + let mut owned2 = SomeStruct; + forget(&owned2); //~ERROR call to `std::mem::forget` with a reference argument + forget(&&owned2); //~ERROR call to `std::mem::forget` with a reference argument + forget(&mut owned2); //~ERROR call to `std::mem::forget` with a reference argument + forget(owned2); //OK + + let reference1 = &SomeStruct; + drop(reference1); //~ERROR call to `std::mem::drop` with a reference argument + forget(&*reference1); //~ERROR call to `std::mem::forget` with a reference argument + + let reference2 = &mut SomeStruct; + drop(reference2); //~ERROR call to `std::mem::drop` with a reference argument + let reference3 = &mut SomeStruct; + forget(reference3); //~ERROR call to `std::mem::forget` with a reference argument + + let ref reference4 = SomeStruct; + drop(reference4); //~ERROR call to `std::mem::drop` with a reference argument + forget(reference4); //~ERROR call to `std::mem::forget` with a reference argument +} + +#[allow(dead_code)] +fn test_generic_fn_drop(val: T) { + drop(&val); //~ERROR call to `std::mem::drop` with a reference argument + drop(val); //OK +} + +#[allow(dead_code)] +fn test_generic_fn_forget(val: T) { + forget(&val); //~ERROR call to `std::mem::forget` with a reference argument + forget(val); //OK +} + +#[allow(dead_code)] +fn test_similarly_named_function() { + fn drop(_val: T) {} + drop(&SomeStruct); //OK; call to unrelated function which happens to have the same name + std::mem::drop(&SomeStruct); //~ERROR call to `std::mem::drop` with a reference argument + fn forget(_val: T) {} + forget(&SomeStruct); //OK; call to unrelated function which happens to have the same name + std::mem::forget(&SomeStruct); //~ERROR call to `std::mem::forget` with a reference argument +} diff --git a/tests/compile-fail/drop_ref.rs b/tests/compile-fail/drop_ref.rs deleted file mode 100644 index 76d7d9ca21b..00000000000 --- a/tests/compile-fail/drop_ref.rs +++ /dev/null @@ -1,42 +0,0 @@ -#![feature(plugin)] -#![plugin(clippy)] - -#![deny(drop_ref)] -#![allow(toplevel_ref_arg, similar_names)] - -use std::mem::drop; - -struct SomeStruct; - -fn main() { - drop(&SomeStruct); //~ERROR call to `std::mem::drop` with a reference argument - - let mut owned = SomeStruct; - drop(&owned); //~ERROR call to `std::mem::drop` with a reference argument - drop(&&owned); //~ERROR call to `std::mem::drop` with a reference argument - drop(&mut owned); //~ERROR call to `std::mem::drop` with a reference argument - drop(owned); //OK - - let reference1 = &SomeStruct; - drop(reference1); //~ERROR call to `std::mem::drop` with a reference argument - drop(&*reference1); //~ERROR call to `std::mem::drop` with a reference argument - - let reference2 = &mut SomeStruct; - drop(reference2); //~ERROR call to `std::mem::drop` with a reference argument - - let ref reference3 = SomeStruct; - drop(reference3); //~ERROR call to `std::mem::drop` with a reference argument -} - -#[allow(dead_code)] -fn test_generic_fn(val: T) { - drop(&val); //~ERROR call to `std::mem::drop` with a reference argument - drop(val); //OK -} - -#[allow(dead_code)] -fn test_similarly_named_function() { - fn drop(_val: T) {} - drop(&SomeStruct); //OK; call to unrelated function which happens to have the same name - std::mem::drop(&SomeStruct); //~ERROR call to `std::mem::drop` with a reference argument -}