Skip to content

ICE when using associated constant as fixed-length array size #26402

Closed
@ProtectedMode

Description

@ProtectedMode

While trying to create a generic vector type, I stumbled upon the following ICE:

error: internal compiler error: unexpected panic
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports
thread 'rustc' panicked at 'path not fully resolved: PathResolution { base_def: DefTyParam(TypeSpace, 0, DefId { krate: 0, node: 13 }, "G"(66)), last_private: LastMod(AllPublic), depth: 1 }', ../src/librustc/middle/def.rs:81

This error occurs with the following code, which is a pretty minimal test case:

#![feature(associated_consts)]

trait GenericVector {
    const size: usize;
}

struct Vector<G: GenericVector> {
    data: [f32; G::size],
}

struct D3;

impl GenericVector for D3 {
    const size: usize = 3;
}

fn main() {
    let vector = Vector::<D3> {
        data: [0.0, 3],
    };
}

Backtrace:

   1:     0x7f9bcc7063d3 - sys::backtrace::write::h42760ef5ab82bcd2irs
   2:     0x7f9bcc70e521 - panicking::on_panic::h12f68dc29fcc5657Tax
   3:     0x7f9bcc6cd28a - rt::unwind::begin_unwind_inner::h68e746642e433893DQw
   4:     0x7f9bcc6cdec7 - rt::unwind::begin_unwind_fmt::h22d77de4e1204a17JPw
   5:     0x7f9bca663e0b - middle::const_eval::eval_const_expr_with_substs::h6757944525066075748
   6:     0x7f9bca611e0b - middle::const_eval::eval_const_expr_partial::hc18213693094f10f8Lk
   7:     0x7f9bcbeca428 - astconv::ast_ty_to_ty::hc4d699607bfa4965Qfw
   8:     0x7f9bcbf4848e - iter::Map<I, F>.Iterator::next::h9665268986370662205
   9:     0x7f9bcbf3a928 - collect::convert_struct::h6bc1f37bd9a66db7pky
  10:     0x7f9bcbf2b595 - collect::convert_item::h18e8c114ea4837bbrZx
  11:     0x7f9bcbf26c46 - collect::collect_item_types::h4321500fa840372f35w
  12:     0x7f9bcbf7a3b6 - check_crate::h15b94c5d979eb877VgD
  13:     0x7f9bccc6dcb9 - driver::phase_3_run_analysis_passes::h535099e77e0d0b0aHGa
  14:     0x7f9bccc4f55a - driver::compile_input::hf94b88e60b92b1d3Sba
  15:     0x7f9bccd0b2e7 - run_compiler::hd38788069be51651F7b
  16:     0x7f9bccd088d6 - boxed::F.FnBox<A>::call_box::h10971823990562187917
  17:     0x7f9bccd080d9 - rt::unwind::try::try_fn::h13260011850501376318
  18:     0x7f9bcc78aea8 - rust_try_inner
  19:     0x7f9bcc78ae95 - rust_try
  20:     0x7f9bcc6f9147 - rt::unwind::try::inner_try::hb6dce8ad1d668192wMw
  21:     0x7f9bccd082f9 - boxed::F.FnBox<A>::call_box::h7963608429107561708
  22:     0x7f9bcc70d151 - sys::thread::Thread::new::thread_start::h82e421ca205cff91sWv
  23:     0x7f9bc62706a9 - start_thread
  24:     0x7f9bcc358eec - clone
  25:                0x0 - <unknown>

Version:

rustc 1.2.0-nightly (20d23d8e5 2015-06-18)
binary: rustc
commit-hash: 20d23d8e57c0313c811135535d6872463cc6525d
commit-date: 2015-06-18
host: x86_64-unknown-linux-gnu
release: 1.2.0-nightly

I've searched for similar issues but all issues I found were either different or closed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    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