Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ICE]: Cannot relate bound region #16747

Closed
crumblingstatue opened this issue Aug 25, 2014 · 2 comments · Fixed by #18099
Closed

[ICE]: Cannot relate bound region #16747

crumblingstatue opened this issue Aug 25, 2014 · 2 comments · Fixed by #18099
Labels
E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

Comments

@crumblingstatue
Copy link
Contributor

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

@flugsio
Copy link
Contributor

flugsio commented Aug 25, 2014

Duplicate? #16596

This code and the code in that issue gives no ICE on 0.11.0

@JustAPerson
Copy link
Contributor

The given example no longer causes an ICE on master.
http://is.gd/n0Ovjs
Output:

<anon>:5:1: 7:2 error: the parameter type `T` may not live long enough; consider adding an explicit lifetime bound `T:'a`...
<anon>:5 struct List<'a, T: ListItem<'a>> {
<anon>:6     slice: &'a [T],
<anon>:7 }
<anon>:5:1: 7:2 note: ...so that the reference type `&'a [T]` does not outlive the data it points at
<anon>:5 struct List<'a, T: ListItem<'a>> {
<anon>:6     slice: &'a [T],
<anon>:7 }
error: aborting due to previous error

However, following the prescribed advice of the compiler does seem to reproduce the ICE.
http://is.gd/PKO0dk
Output:

<anon>:9:1: 13:2 error: internal compiler error: cannot relate bound region: ReEarlyBound(31, TypeSpace, 0, 'a) <= ReFree(26, BrNamed(syntax::ast::DefId{krate: 0u32, node: 31u32}, 'a))
<anon>:9 impl<'a, T: 'a + ListItem<'a>> Collection for List<'a, T> {
<anon>:10     fn len(&self) -> uint {
<anon>:11         0
<anon>:12     }
<anon>:13 }
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>', /build/rust-git/src/rust/src/libsyntax/ast_util.rs:784

@ghost ghost added the E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. label Oct 3, 2014
bors added a commit that referenced this issue Oct 18, 2014
Closes #9249.
Closes #13105.
Closes #13837.
Closes #13847.
Closes #15207.
Closes #15261.
Closes #16048. 
Closes #16098.
Closes #16256.
Closes #16562.
Closes #16596.
Closes #16709.
Closes #16747.
Closes #17025.
Closes #17121.
Closes #17450.
Closes #17636.
matthiaskrgr pushed a commit to matthiaskrgr/rust that referenced this issue Mar 10, 2024
internal: Clean some stuff up

Just a bunch of small refactorings, mainly from browsing through `hir-def`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants