// Copyright 2018 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. #![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() {}