// Copyright 2017 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(trait_alias)] trait SimpleAlias = Default; //~ERROR E0645 trait GenericAlias = Iterator; //~ERROR E0645 trait Partial = IntoIterator; //~ERROR E0645 trait Things {} trait Romeo {} struct The(T); struct Fore(T); impl Things for The {} impl Romeo for Fore {} trait WithWhere = Romeo + Romeo where Fore<(Art, Thou)>: Romeo; //~ERROR E0645 trait BareWhere = where The: Things; //~ERROR E0645 trait CD = Clone + Default; //~ERROR E0645 fn foo() -> (T, T) { let one = T::default(); let two = one.clone(); (one, two) } fn main() { let both = foo(); assert_eq!(both.0, 0); assert_eq!(both.1, 0); let both: (i32, i32) = foo(); assert_eq!(both.0, 0); assert_eq!(both.1, 0); }