// check-pass // Check tautalogically false `Copy` bounds #![feature(trivial_bounds)] fn copy_string(t: String) -> String where String: Copy { //~ WARNING trivial_bounds is_copy(&t); let x = t; drop(t); t } fn copy_out_string(t: &String) -> String where String: Copy { //~ WARNING trivial_bounds *t } fn copy_string_with_param(x: String) where String: Copy { //~ WARNING trivial_bounds let y = x; let z = x; } // Check that no reborrowing occurs fn copy_mut<'a>(t: &&'a mut i32) -> &'a mut i32 where for<'b> &'b mut i32: Copy { //~^ WARNING trivial_bounds is_copy(t); let x = *t; drop(x); x } fn is_copy(t: &T) {} fn main() {}