Skip to content

ICE when specializing function with wrong number of parameters #16338

Closed
@japaric

Description

@japaric

STR

use std::mem;
use std::raw::Slice;

unsafe fn foo<T>(s: &mut [T]) {
    // GOOD
    let Slice { data: data, len: len } = mem::transmute::<&mut [T], Slice<T>>(s);

    // ICE
    let Slice { data: data, len: len } = mem::transmute::<&mut [T]>(s);
}

fn main() {}

Output

ice.rs:9:42: 9:68 error: too few type parameters provided: expected 2 parameter(s) but found 1 parameter(s) [E0089]
ice.rs:9     let Slice { data: data, len: len } = mem::transmute::<&mut [T]>(s);
                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~
ice.rs:1:1: 1:1 error: internal compiler error: Type parameter <generic #0> out of range when substituting (root type=*const <generic #0>)
ice.rs:1 use std::mem;
         ^
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>', /var/tmp/paludis/build/dev-lang-rust-scm/work/rust-scm/src/libsyntax/ast_util.rs:784

Backtrace

   1:     0x7fa3eba4aea0 - rt::backtrace::imp::write::h8c6f09e2c045ded4t9p
   2:     0x7fa3eba4df40 - <unknown>
   3:     0x7fa3eff78870 - unwind::begin_unwind_inner::hde1fdf0d3c58be46M8d
   4:     0x7fa3ec5c5330 - <unknown>
   5:     0x7fa3ec5c5280 - diagnostic::SpanHandler::span_bug::hb643991b73dd73ceBID
   6:     0x7fa3f077ffa0 - driver::session::Session::span_bug::h1958b9cf10e9936dPix
   7:     0x7fa3f085b820 - middle::subst::SubstFolder<'a>.TypeFolder::fold_ty::hce1dda7c9bfc1345nuW
   8:     0x7fa3f085b820 - middle::subst::SubstFolder<'a>.TypeFolder::fold_ty::hce1dda7c9bfc1345nuW
   9:     0x7fa3f085b730 - <unknown>
  10:     0x7fa3f0aa35e0 - middle::ty::lookup_field_type::heb4c950674abc5c0L3F
  11:     0x7fa3f0afaa50 - middle::typeck::check::_match::check_struct_pat_fields::h528d0ebfe42c2cf1L2H
  12:     0x7fa3f0afdf30 - middle::typeck::check::_match::check_struct_pat::h2604e2d1497de3f1t9H
  13:     0x7fa3f0af05e0 - middle::typeck::check::_match::check_pat::h85bcdea4f0a9f3f86dI
  14:     0x7fa3f0c08610 - middle::typeck::check::check_decl_local::h5110173195dc124a2mV
  15:     0x7fa3f0c08830 - middle::typeck::check::check_stmt::h3bf06fef24ff92409oV
  16:     0x7fa3f0b72d90 - <unknown>
  17:     0x7fa3f0b6ebf0 - <unknown>
  18:     0x7fa3f0b6e910 - <unknown>
  19:     0x7fa3f0b67a90 - middle::typeck::check::check_item::h90885b67c7c48ea1m1Q
  20:     0x7fa3f0b6e710 - middle::typeck::check::check_item_types::h935cc44dce5d3acbQrQ
  21:     0x7fa3f05c02d0 - <unknown>
  22:     0x7fa3f0d7a940 - middle::typeck::check_crate::h679dbd3e8e3966d8GJh
  23:     0x7fa3f0e4b0d0 - driver::driver::phase_3_run_analysis_passes::ha24ce155c6a41a29Ibw
  24:     0x7fa3f0e46240 - driver::driver::compile_input::h2be4ad1a0cb48e63XXv
  25:     0x7fa3f0ee8d70 - <unknown>
  26:     0x7fa3f0ee8c80 - <unknown>
  27:     0x7fa3f0efac80 - <unknown>
  28:     0x7fa3f0efaa80 - <unknown>
  29:     0x7fa3f02d1d60 - <unknown>
  30:     0x7fa3effc7ec0 - <unknown>
  31:     0x7fa3effc7eb0 - rust_try
  32:     0x7fa3eff75ed0 - unwind::try::hbe9a6258c56c4daahXd
  33:     0x7fa3eff75c70 - task::Task::run::hf1f50bebcf947c0cT4c
  34:     0x7fa3f02d1b20 - <unknown>
  35:     0x7fa3eff77ab0 - <unknown>
  36:     0x7fa3eadca000 - start_thread
  37:     0x7fa3efc47269 - clone
  38:                0x0 - <unknown>

Version

rustc 0.12.0-pre (8a02304a4 2014-08-07 11:31:05 +0000)

Similar ICE message/backtrace to #15873 and #16218, but triggered differently.

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