Closed
Description
This code
trait ListItem<'a> {
fn list_name() -> &'a str;
}
struct List<'a, T: ListItem<'a>> {
slice: &'a [T]
}
impl<'a, T: ListItem<'a>> Collection for List<'a, T> {
fn len(&self) -> uint {
0
}
}
fn main() {
}
Causes this ICE
test.rs:9:1: 13:2 error: internal compiler error: cannot relate bound region: ReEarlyBound(29, TypeSpace, 0, 'a) <= ReFree(25, BrNamed(syntax::ast::DefId{krate: 0u32, node: 29u32}, 'a))
test.rs:9 impl<'a, T: ListItem<'a>> Collection for List<'a, T> {
test.rs:10 fn len(&self) -> uint {
test.rs:11 0
test.rs:12 }
test.rs:13 }
RUSTC_BACKTRACE=1 output
task 'rustc' failed at 'Box<Any>', /home/rustbuild/src/rust-buildbot/slave/nightly-linux/build/src/libsyntax/ast_util.rs:776
stack backtrace:
1: 0x7f998a9c7460 - rt::backtrace::imp::write::h18b753371f3f9ce4UYq
2: 0x7f998a9ca610 - failure::on_fail::h8b148d7ea01ad414Bkr
3: 0x7f998b195510 - unwind::begin_unwind_inner::h95325e05b1285682pie
4: 0x7f9987478890 - unwind::begin_unwind::h11886784450375267201
5: 0x7f99874787e0 - diagnostic::SpanHandler::span_bug::h7e01102b77dc6ccfdqF
6: 0x7f998b720150 - driver::session::Session::span_bug::h64271874b664f154Jty
7: 0x7f998bbb2800 - middle::typeck::infer::region_inference::RegionVarBindings<'a>::make_subregion::h4d9c94c5e2a52f9fXj4
8: 0x7f998bb9a490 - middle::typeck::infer::sub::Sub<'f>.Combine::regions::h01a279f6c3dd5fbfQJ6
9: 0x7f998bb9a800 - middle::typeck::infer::sub::Sub<'f>.Combine::contraregions::hdda7ddc886cfbc7fgJ6
10: 0x7f998bbc42c0 - middle::typeck::infer::combine::Combine::substs::h6143560546622796331
11: 0x7f998bbecee0 - middle::typeck::infer::mk_sub_trait_refs::closure.126361
12: 0x7f998bbecc10 - middle::typeck::infer::InferCtxt<'a>::commit_if_ok::closure.126353
13: 0x7f998bbeca60 - middle::typeck::infer::InferCtxt<'a>::commit_unconditionally::h84882112510864248
14: 0x7f998ba8fa40 - middle::typeck::infer::mk_sub_trait_refs::hd5dd1a653add0c8fLFb
15: 0x7f998ba8f3b0 - middle::typeck::check::vtable::relate_trait_refs::hd2353c5413fef28cRpK
16: 0x7f998ba939a0 - middle::typeck::check::vtable::lookup_vtable_from_bounds::closure.121800
17: 0x7f998ba5ce10 - middle::ty::each_bound_trait_and_supertraits::h200637ff3ab6a085cvH
18: 0x7f998ba8d630 - middle::typeck::check::vtable::lookup_vtables_for_param::closure.121773
19: 0x7f998ba5ce10 - middle::ty::each_bound_trait_and_supertraits::h200637ff3ab6a085cvH
20: 0x7f998ba8d0b0 - middle::typeck::check::vtable::lookup_vtables_for_param::h4434ba5a22fe5e6dibK
21: 0x7f998ba8b0b0 - middle::typeck::check::vtable::lookup_vtables::h4da8aebbea78be1dk5J
22: 0x7f998b812080 - middle::typeck::check::vtable::check_param_bounds::h504b9dc2d6d8e4a7zLL
23: 0x7f998b811d90 - middle::kind::check_bounds_on_structs_or_enums_in_type_if_possible::closure.110610
24: 0x7f998ba59290 - middle::ty::walk_ty::closure.120581
25: 0x7f998b7f80b0 - middle::ty::maybe_walk_ty::h867184bbacff06f7dOD
26: 0x7f998b808c30 - middle::kind::check_bounds_on_structs_or_enums_in_type_if_possible::h826a0efdd31cf77fSPw
27: 0x7f998b8007a0 - middle::kind::check_item::h5a6fe2387dac9563Agw
28: 0x7f998b8041c0 - middle::kind::check_crate::h3dde9f98fbaa1ff7a4v
29: 0x7f998b56e940 - util::common::time::h630719443776585502
30: 0x7f998bd92a60 - driver::driver::phase_3_run_analysis_passes::ha7a07a1607fe33bfuWw
31: 0x7f998bd8dc00 - driver::driver::compile_input::h99199d0ae0e721f6AIw
32: 0x7f998be21cd0 - driver::run_compiler::h23c8c067c597dffdtfA
33: 0x7f998be21be0 - driver::main_args::closure.137253
34: 0x7f998be33ab0 - task::TaskBuilder<S>::try_future::closure.138373
35: 0x7f998be338b0 - task::TaskBuilder<S>::spawn_internal::closure.138350
36: 0x7f998c855dc0 - task::spawn_opts::closure.8268
37: 0x7f998b1eda90 - rust_try_inner
38: 0x7f998b1eda80 - rust_try
39: 0x7f998b192b80 - unwind::try::h897530fe9a04a6a3F6d
40: 0x7f998b192920 - task::Task::run::ha1dfd395f272d95cZcd
41: 0x7f998c855b80 - task::spawn_opts::closure.8214
42: 0x7f998b194760 - thread::thread_start::hb2d1975aedb783e1LBd
43: 0x7f998a45f060 - start_thread
44: 0x7f998ae62489 - __clone
45: 0x0 - <unknown>
rustc -v: rustc 0.12.0-pre-nightly (833277e2d 2014-08-25 00:00:59 +0000)
uname -a: Linux 3.16.1-1-ARCH #1 SMP PREEMPT Thu Aug 14 07:40:19 CEST 2014 x86_64 GNU/Linux