Closed
Description
Hi, I've been giving rust a try and hit my first compiler bug today. I was playing around with traits and ran into an error with the following code:
trait A{
fn as_A(&self) -> &A {self}
}
impl<T> A for T {}
trait B: A {
fn as_B(&self) -> &B {self}
}
impl<T> B for T{}
fn main() {
let i = 5i;
let a: &A = i.as_A();
let b: &B = a.as_B();
}
In particular it seems it's the last line in main
that breaks things, if I comment that out it compiles (and runs) without issue.
Here's output from rustc:
error: internal compiler error: trying to take the sizing type of A, an unsized type
note: the compiler hit an unexpected failure path. this is a bug.
note: we would appreciate a bug report: http://doc.rust-lang.org/complement-bugreport.html
note: run with `RUST_BACKTRACE=1` for a backtrace
task 'rustc' failed at 'Box<Any>', /Users/rustbuild/src/rust-buildbot/slave/nightly-mac/build/src/libsyntax/diagnostic.rs:169
stack backtrace:
1: 0x10989b379 - rt::backtrace::imp::write::h2414555c4c37a887I3q
2: 0x10989e6d1 - failure::on_fail::h1701d0172e857b91mkr
3: 0x109b250e5 - unwind::begin_unwind_inner::h88d806fd0639a3f8PQd
4: 0x1078cfcf7 - unwind::begin_unwind::h4539702463021714404
5: 0x1078d0503 - diagnostic::Handler::bug::hd29f0a8937d8d898OnF
6: 0x106529788 - driver::session::Session::bug::hd2c0dce8f59c4470H8w
7: 0x1068d3cf0 - middle::trans::type_of::sizing_type_of::h313347362780bbe6uA9
8: 0x106902f76 - middle::trans::meth::get_vtable::h23eb4b91988d1ee1CAk
9: 0x10690244b - middle::trans::expr::apply_adjustments::unsized_info::h2fa4212e33caf84cE32
10: 0x106904666 - middle::trans::expr::apply_adjustments::unsize_expr::closure.123231
11: 0x10690488f - middle::trans::expr::apply_adjustments::into_fat_ptr::h47c26a86c19956e7Xa3
12: 0x106901a77 - middle::trans::expr::apply_adjustments::apply_autoref::h7b9d1991ca519eb3BQ2
13: 0x10690133e - middle::trans::expr::apply_adjustments::apply_autoref::h7b9d1991ca519eb3BQ2
14: 0x1068c2eea - middle::trans::expr::trans::hdc96210c715b5b95PE2
15: 0x1068c0ca2 - middle::trans::expr::trans_into::hfe3428499c973cb55A2
16: 0x1068c1224 - middle::trans::controlflow::trans_block::h1e499b6fd0a7e6e5JJY
17: 0x10696e0c0 - middle::trans::base::trans_closure::haf692ac5faf172742Le
18: 0x1068b3f18 - middle::trans::base::trans_fn::hdec6118bfe3b4ab7fXe
19: 0x1068b58af - middle::trans::monomorphize::monomorphic_fn::h864824dfcc4e7eceCbY
20: 0x1068eb542 - middle::trans::callee::trans_fn_ref_with_substs::h673f3c4696e53bccgv1
21: 0x1068e81ab - middle::trans::callee::trans_fn_ref::hf20ab71f600338cdQj1
22: 0x1068c9fb3 - middle::trans::meth::trans_method_callee::hfdc6530e298ffac4A3j
23: 0x1068f097b - middle::trans::callee::trans_method_call::closure.123088
24: 0x1068c86d4 - middle::trans::callee::trans_call_inner::h301f3b9e709a1322YQ1
25: 0x1068f07a7 - middle::trans::callee::trans_method_call::h67d120293015b7dcrM1
26: 0x1068fe68a - middle::trans::expr::trans_rvalue_dps_unadjusted::h54db2681bd07dae8lY3
27: 0x1068fd3b6 - middle::trans::expr::trans_unadjusted::h9cc2b45c52809552Jl3
28: 0x1068c22d8 - middle::trans::expr::trans::hdc96210c715b5b95PE2
29: 0x1068c0ca2 - middle::trans::expr::trans_into::hfe3428499c973cb55A2
30: 0x10699902e - middle::trans::_match::store_local::closure.127328
31: 0x106998e95 - middle::trans::_match::mk_binding_alloca::h9094225994960386624
32: 0x1069653ed - middle::trans::_match::store_local::h947208861053437209h
33: 0x1068c048a - middle::trans::base::init_local::h2aaa53b640774791CUd
34: 0x1068bfa28 - middle::trans::controlflow::trans_stmt::ha7f02b72ef27a137NEY
35: 0x1068c1128 - middle::trans::controlflow::trans_block::h1e499b6fd0a7e6e5JJY
36: 0x10696e0c0 - middle::trans::base::trans_closure::haf692ac5faf172742Le
37: 0x1068b3f18 - middle::trans::base::trans_fn::hdec6118bfe3b4ab7fXe
38: 0x1068b13ba - middle::trans::base::trans_item::he6ebd92b5686816fogf
39: 0x1069776a8 - middle::trans::base::trans_crate::h2c2cc9b3b16c339cEgg
40: 0x106d7e2c5 - driver::driver::phase_4_translate_to_llvm::hee626525d2620f45Fzw
41: 0x106d77043 - driver::driver::compile_input::hc14952e9836c6a78L6v
42: 0x106df5354 - driver::run_compiler::h030d1894305ee9d6DWz
43: 0x106df3546 - driver::main_args::closure.146018
44: 0x10655793b - task::TaskBuilder<S>::try_future::closure.101302
45: 0x106557833 - task::TaskBuilder<S>::spawn_internal::closure.101273
46: 0x1064d233d - task::spawn_opts::closure.8577
47: 0x109b895ec - rust_try_inner
48: 0x109b895d6 - rust_try
49: 0x109b224f7 - unwind::try::h30d9faee9b52a896xFd
50: 0x109b2236c - task::Task::run::hd688c2a33087bff5MVc
51: 0x1064d2192 - task::spawn_opts::closure.8516
52: 0x109b2402a - thread::thread_start::hb8f9fbaf424323191fd
53: 0x7fff88b84899 - _pthread_body
54: 0x7fff88b8472a - _pthread_struct_init
I am using rustc 0.12.0-nightly (94b0aace1 2014-09-27 23:12:54 +0000)
on OS X 10.9.4