Change:
I was trying to compile the following code: And got the following compiler error: Version info:
Still ICEs.
Minimal:
Triage: tracked by glacier
No longer ICEs today. E-needstest. I'm somewhat concerned though because this is the second glacier-tracked ICE that I've seen "fixed."
This was only broken because of the old code.

Discussion:
<ins> // 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 <LICENSE-APACHE or // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your // option. This file may not be copied, modified, or distributed // except according to those terms. #![feature(rustc_attrs)] #![allow(warnings)] struct Attr { name: String, value: String, } struct Element { attrs: Vec<Box<Attr>>, } impl Element { pub unsafe fn get_attr<'a>(&'a self, name: &str) { self.attrs .iter() .find(|attr| { let attr: &&Box<Attr> = std::mem::transmute(attr); true }); } } #[rustc_error] fn main() { //~ ERROR compilation successful let element = Element { attrs: Vec::new() }; let _ = unsafe { element.get_attr("foo") }; } </ins>

<ins> // 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 <LICENSE-APACHE or // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your // option. This file may not be copied, modified, or distributed // except according to those terms. #![feature(rustc_attrs)] #![allow(warnings)] trait A<T> {} struct B<T> where B<T>: A<B<T>> { t: T } #[rustc_error] fn main() { //~ ERROR compilation successful } </ins>

<ins> // 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 <LICENSE-APACHE or // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your // option. This file may not be copied, modified, or distributed // except according to those terms. #![feature(unboxed_closures, fn_traits, rustc_attrs)] struct Foo; impl<A> FnOnce<(A,)> for Foo { type Output = (); extern "rust-call" fn call_once(self, (_,): (A,)) { } } #[rustc_error] fn main() { //~ ERROR compilation successful println!("{:?}", Foo("bar")); } </ins>

<ins> // 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 <LICENSE-APACHE or // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your // option. This file may not be copied, modified, or distributed // except according to those terms. #![feature(unboxed_closures, fn_traits, rustc_attrs)] #[rustc_error] fn main() { //~ ERROR compilation successful let k = |x: i32| { x + 1 }; Fn::call(&k, (0,)); } </ins>

<ins> // 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 <LICENSE-APACHE or // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your // option. This file may not be copied, modified, or distributed // except according to those terms. #![feature(rustc_attrs)] #![allow(warnings)] trait Mirror { type It; } impl<T> Mirror for T { type It = Self; } #[rustc_error] fn main() { //~ ERROR compilation successful let c: <u32 as Mirror>::It = 5; const CCCC: <u32 as Mirror>::It = 5; } </ins>