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: Explicit deref of non-derefable type: _ #20108

Closed
oderwat opened this issue Dec 21, 2014 · 4 comments
Closed

ICE: Explicit deref of non-derefable type: _ #20108

oderwat opened this issue Dec 21, 2014 · 4 comments
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

@oderwat
Copy link

oderwat commented Dec 21, 2014

Following Code "suddenly" (TM) gives a compiler panick:

use std::iter::Iterator;

fn map<T, U, I: Iterator<T>>(fun: |T| -> U, mut iter: I) -> Vec<U> {
    let mut acc = vec![];
    for elt in iter {
        acc.push(fun(elt));
    }
    acc
}

fn main() {
    let x = map(|&x| x + 2, vec![1u,2,3].iter());
    println!("{}", x);
}
RUST_BACKTRACE=1 rustc main.rs
main.rs:12:15: 12:17 error: internal compiler error: Explicit deref of non-derefable type: _
main.rs:12  let x = map(|&x| x + 2, vec![1u,2,3].iter());
                         ^~
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
thread 'rustc' panicked at 'Box<Any>', /Users/rustbuild/src/rust-buildbot/slave/nightly-mac/build/src/libsyntax/diagnostic.rs:123

stack backtrace:
   1:        0x10748ec68 - sys::backtrace::write::h2d77a7138a20fe1euut
   2:        0x1074af7c3 - failure::on_fail::h2cc73921e1a3525egKz
   3:        0x10741aeaa - rt::unwind::begin_unwind_inner::h532a687405d73115Hrz
   4:        0x10531bd17 - rt::unwind::begin_unwind::h15459044600925994434
   5:        0x10531bcb0 - rt::unwind::begin_unwind::h15459044600925994434
   6:        0x10479129d - session::Session::span_bug::h716f9146fd05af890mn
   7:        0x104212102 - middle::mem_categorization::MemCategorizationContext<$u{27}t$C$$u{20}TYPER$GT$::cat_pattern::h11154186174841680722
   8:        0x1042022eb - check::regionck::link_pattern::h3d88852e6995969cnte
   9:        0x1041f731d - check::regionck::Rcx<$u{27}a$C$$u{20}$u{27}tcx$GT$::visit_fn_body::h3531a5331ab5d017eRc
  10:        0x1041fd2ae - check::regionck::visit_expr::hb02321dca5467066bgd
  11:        0x104201700 - visit::walk_expr::h3328713682639576950
  12:        0x1041fe1b7 - check::regionck::visit_expr::hb02321dca5467066bgd
  13:        0x1041ff87d - check::regionck::visit_local::hb9b4f9d3743633d9cdd
  14:        0x1041ff975 - visit::walk_block::h8586344471945380718
  15:        0x1041f7349 - check::regionck::Rcx<$u{27}a$C$$u{20}$u{27}tcx$GT$::visit_fn_body::h3531a5331ab5d017eRc
  16:        0x10429aa2b - check::check_bare_fn::h0d1902e379bc0448Vck
  17:        0x104292a13 - check::check_item::h8ef5214e6b2fce2clwk
  18:        0x10450c700 - check_crate::unboxed_closure.43369
  19:        0x104507ead - check_crate::h1dd3d2699b8432207Zy
  20:        0x103c0f1de - driver::phase_3_run_analysis_passes::he4e2174c0e224f23Ita
  21:        0x103bf211e - driver::compile_input::h344438f314911396vba
  22:        0x103d6a9d6 - thunk::F.Invoke<A,$u{20}R$GT$::invoke::h2961138960758151848
  23:        0x103d672d9 - rt::unwind::try::try_fn::h13787826984171194494
  24:        0x107515d29 - rust_try_inner
  25:        0x107515d16 - rust_try
  26:        0x103d679d7 - thunk::F.Invoke<A,$u{20}R$GT$::invoke::h9959509829464533531
  27:        0x10749ec84 - sys::thread::thread_start::h772e1e477575f4beXpw
  28:        0x107d8f2fc - _pthread_body
  29:        0x107d8f279 - _pthread_body
rustc --version --verbose
rustc 0.13.0-nightly (cc19e3380 2014-12-20 20:00:36 +0000)
binary: rustc
commit-hash: cc19e3380b4b7c63b6f1f79d1dfc213ea00e16cf
commit-date: 2014-12-20 20:00:36 +0000
host: x86_64-apple-darwin
release: 0.13.0-nightly

(probably a duplicate but the other code did not look similar to the one here in my eyes)

@oderwat
Copy link
Author

oderwat commented Dec 21, 2014

Following works:

use std::iter::Iterator;

fn map<T, U, I: Iterator<T>>(fun: |T| -> U, mut iter: I) -> Vec<U> {
    let mut acc = vec![];
    for elt in iter {
        acc.push(fun(elt));
    }
    acc
}

fn main() {
    let x = map(|x| *x + 2, vec![1u,2,3].iter());
    println!("{}", x);
}

@flaper87 flaper87 added the I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ label Dec 21, 2014
@flaper87 flaper87 changed the title Another internal compiler error: Explicit deref of non-derefable type: _ ICE: Explicit deref of non-derefable type: _ Dec 21, 2014
@tamird
Copy link
Contributor

tamird commented Apr 21, 2015

This doesn't compile today - can you refresh this to modern syntax?

@bltavares
Copy link
Contributor

I've tried to update the code using the compiler errors as a guide and I ended up with this:

use std::iter::Iterator;

fn map<T, U, I: Iterator<Item = T>>(fun: &(Fn(&T) -> U), mut iter: I) -> Vec<U> {
    let mut acc = vec![];
    for elt in iter {
        acc.push(fun(&elt));
    }
    acc
}

fn main() {
    let x = map(&|&x| x + 2, vec![1u32,2,3].iter());
    println!("{:?}", x);
}

It did not trigger ICE, but I'm not sure if it has the same semantics with the boxed closure.

@alexcrichton alexcrichton 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 24, 2015
@steveklabnik
Copy link
Member

Given the above comments, I'm giving this one a close. If anyone is still seeing this ICE somehow, please open a new bug. Thanks!

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

No branches or pull requests

6 participants