// run-pass #![allow(dead_code)] // This test case exposes conditions where the encoding of a trait object type // with projection predicates would differ between this crate and the upstream // crate, because the predicates were encoded in different order within each // crate. This led to different symbol hashes of functions using these type, // which in turn led to linker errors because the two crates would not agree on // the symbol name. // The fix was to make the order in which predicates get encoded stable. // aux-build:issue-34796-aux.rs extern crate issue_34796_aux; fn mk() -> T { loop {} } struct Data { data: T, error: E, } fn main() { issue_34796_aux::bar(|()| { Data::<(), std::io::Error> { data: mk(), error: mk(), } }) }