Skip to content

ICE with associated types and submodules #19173

Closed
@erickt

Description

@erickt

Found an ICE playing with the experimental associated types:

#![feature(associated_types)]

impl<'a> IntoBuffer for &'a [u8] {
    type T = &'a [u8];

    fn into_buffer(self) -> &'a [u8] {
        self
    }
}

pub trait IntoBuffer {
    type T;

    fn into_buffer(self) -> <Self as IntoBuffer>::T;
}

fn main() {}

Errors with:

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:4323

stack backtrace:
   1:        0x113062ba2 - rt::backtrace::imp::write::h7579c368c127979b6it
   2:        0x113065d3d - failure::on_fail::h8be83c0fdfea739bdBt
   3:        0x1132d8f65 - unwind::begin_unwind_inner::h4bdb4ca88294d49812c
   4:        0x1132d8baf - unwind::begin_unwind_fmt::hae17deb499932f75c0c
   5:        0x110158c84 - middle::ty::impl_or_trait_item::h4faeda649e6a6f19H64
   6:        0x1105141d9 - middle::typeck::collect::ImplCtxt<'a, 'tcx>.AstConv<'tcx>::associated_type_binding::h9055dfc46b8c27bakJG
   7:        0x110527559 - middle::typeck::astconv::create_substs_for_ast_path::h5023519427691145276
   8:        0x110436fcc - middle::typeck::collect::convert::h0d3126dddfce9a9eF3G
   9:        0x11042cf73 - middle::typeck::collect::collect_item_types::h2e912e08bc7db61fCYF
  10:        0x1106c0f96 - util::common::time::h15512248264236370325
  11:        0x1106c02ee - middle::typeck::check_crate::h7708c70a36786f0djVL
  12:        0x10fcb1d93 - driver::driver::phase_3_run_analysis_passes::h5c1577ba8747ac80bfS
  13:        0x10fca62bc - driver::driver::compile_input::h6cd958c13fa99356VVR
  14:        0x10fd24ab5 - driver::run_compiler::h3464f6d73ed1e2efpUT
  15:        0x10fd2328e - driver::run::closure.59750
  16:        0x10fb3ab9b - task::TaskBuilder<S>::try_future::closure.39054
  17:        0x10fb3aa93 - task::TaskBuilder<S>::spawn_internal::closure.39025
  18:        0x10fafe7bd - task::NativeSpawner.Spawner::spawn::closure.2477
  19:        0x11333b82c - rust_try_inner
  20:        0x11333b816 - rust_try
  21:        0x1132d6707 - unwind::try::h52975ec5962bbd4bmRc
  22:        0x1132d659c - task::Task::run::h585d701e145fcc2392b
  23:        0x10fafe5e3 - task::NativeSpawner.Spawner::spawn::closure.2401
  24:        0x1132d7dd7 - thread::thread_start::hfcf722effb78e787foc
  25:     0x7fff88b882fc - _pthread_body
  26:     0x7fff88b88279 - _pthread_body

However, if you swap the order of the trait and impl it works.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-associated-itemsArea: Associated items (types, constants & functions)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions