Skip to content

Associated types Order can cause ICE #18611

Closed
@mitsuhiko

Description

@mitsuhiko

Not sure how to properly describe the bug, but this causes an ICE:

#![feature(associated_types)]

struct SimulationInfo;

impl SimulationInfo {
    fn add_state<T: HasState>(&mut self, op: || -> <T as HasState>::State)
        -> Option<&mut <T as HasState>::State> {
        None
    }
}

trait HasState {
    type State;
}

Whereas this compiles:

#![feature(associated_types)]

struct SimulationInfo;

trait HasState {
    type State;
}

impl SimulationInfo {
    fn add_state<T: HasState>(&mut self, op: || -> <T as HasState>::State)
        -> Option<&mut <T as HasState>::State> {
        None
    }
}

Failure:

error: internal compiler error: unexpected panic
note: the compiler unexpectedly panicked. 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' panicked at 'No def'n found for DefId { krate: 0, node: 33 } in tcx.impl_or_trait_items', /Users/rustbuild/src/rust-buildbot/slave/nightly-mac/build/src/librustc/middle/ty.rs:4066

stack backtrace:
   1:        0x10d45a619 - rt::backtrace::imp::write::h03fee16d4a0b6b41moq
   2:        0x10d45d85c - failure::on_fail::h3e0f6b3c6c4bbcc3VEq
   3:        0x10d6bcf05 - unwind::begin_unwind_inner::h6c7f4532e72658d7SJd
   4:        0x10d6bcb9f - unwind::begin_unwind_fmt::h9863b25c438d6314kHd
   5:        0x10a408d50 - middle::ty::impl_or_trait_item::h8676078de6338b03J2J
   6:        0x10a7fe51e - middle::typeck::collect::convert_methods::ty_of_method::h1b65fc29f839dd39kEi
   7:        0x10a7a4b84 - middle::typeck::collect::convert::hf5d19782a9342fbfL7i
   8:        0x10a79c993 - middle::typeck::collect::collect_item_types::h2af040048993f98298h
   9:        0x10a1bb556 - util::common::time::h11920059333862041717
  10:        0x10a965478 - middle::typeck::check_crate::h50fcc5c8b39993f4LVn
  11:        0x10a9cdbcf - driver::driver::phase_3_run_analysis_passes::h1425a4ca465c7b097DA
  12:        0x10a9c82b8 - driver::driver::compile_input::h60bc42ef7fabbfd4SkA
  13:        0x10aa45ca8 - driver::run_compiler::h4031243f49082a9fw7D
  14:        0x10aa43ece - driver::run::closure.145349
  15:        0x10a1d381b - task::TaskBuilder<S>::try_future::closure.103709
  16:        0x10a1d3713 - task::TaskBuilder<S>::spawn_internal::closure.103680
  17:        0x10a15398d - task::NativeSpawner.Spawner::spawn::closure.8526
  18:        0x10d72320c - rust_try_inner
  19:        0x10d7231f6 - rust_try
  20:        0x10d6ba677 - unwind::try::hab84862d0081b274cyd
  21:        0x10d6ba50c - task::Task::run::h39093ecd59554b49ZJc
  22:        0x10a1537b3 - task::NativeSpawner.Spawner::spawn::closure.8463
  23:        0x10d6bbd37 - thread::thread_start::h589be8c0a398d299e5c
  24:     0x7fff9260c2fc - _pthread_body
  25:     0x7fff9260c279 - _pthread_body

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-associated-itemsArea: Associated items (types, constants & functions)E-needs-testCall for participation: An issue has been fixed and does not reproduce, but no test has been added.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions