#![feature(trivial_bounds)] #![allow(unused)] #![deny(trivial_bounds)] struct A where i32: Copy; //~ ERROR trait X {} trait Y: Copy {} trait Z { type S: Copy; } // Check only the bound the user writes trigger the lint fn trivial_elaboration() where T: X + Z, i32: Y {} // OK fn global_param() where i32: X<()> {} //~ ERROR // Should only error on the trait bound, not the implicit // projection bound ::S == i32. fn global_projection() where i32: Z {} //~ ERROR impl A { fn new() -> A { A } } // Lifetime bounds should be linted as well fn global_lifetimes() where i32: 'static, &'static str: 'static {} //~^ ERROR //~| ERROR fn local_lifetimes<'a>() where i32: 'a, &'a str: 'a {} // OK fn global_outlives() where 'static: 'static {} //~ ERROR // Check that each bound is checked individually fn mixed_bounds() where i32: X + Copy {} //~ ERROR fn main() {}