Skip to content

ICE: When creating Box<FnOnce<(), ()>> from unsugared unboxed closure #16739

Closed
@japaric

Description

@japaric

STR

#![feature(unboxed_closures)]

struct Foo;

impl FnOnce<(), ()> for Foo {
    extern "rust-call" fn call_once(self, _: ()) {}
}

fn main() {
    // OK
    let _ = (box |:| {}) as Box<FnOnce<(), ()>>;

    // ICE
    let _ = box Foo as Box<FnOnce<(), ()>>;
}

Backtrace

task 'rustc' failed at 'assertion failed: index < LLVMCountParams(llfn)', /var/tmp/paludis/build/dev-lang-rust-scm/work/rust-scm/src/librustc_llvm/lib.rs:2041

stack backtrace:
   1:     0x7fb7eeb3f480 - rt::backtrace::imp::write::h1152902d41e3d933UYq
   2:     0x7fb7eeb42630 - <unknown>
   3:     0x7fb7f3090710 - unwind::begin_unwind_inner::h2d2ade2676f09803pie
   4:     0x7fb7ef24a4d0 - <unknown>
   5:     0x7fb7ef24a460 - get_param::hb758eec3c648c233Hxc
   6:     0x7fb7f3ab0ce0 - middle::trans::callee::trans_unboxing_shim::h2a20a0dc6bd6bcaa4l0
   7:     0x7fb7f3b697f0 - <unknown>
   8:     0x7fb7f3b6bbf0 - <unknown>
   9:     0x7fb7f3ac7830 - middle::trans::meth::trans_trait_cast::h072d1f530eebabfeFCj
  10:     0x7fb7f3ac4060 - <unknown>
  11:     0x7fb7f3ac3270 - <unknown>
  12:     0x7fb7f3a86270 - middle::trans::expr::trans::h747aacd7f3710e8boL1
  13:     0x7fb7f3a84a20 - middle::trans::expr::trans_to_lvalue::hb541e6a03a8e3d09Z31
  14:     0x7fb7f3b24b60 - middle::trans::_match::store_local::he57e710125ac8569PCg
  15:     0x7fb7f3a84180 - middle::trans::base::init_local::hfb093aefcbfd1663agc
  16:     0x7fb7f3a83790 - middle::trans::controlflow::trans_stmt::hb90be18b35bbdabdVUX
  17:     0x7fb7f3a850f0 - middle::trans::controlflow::trans_block::h29d3e959287f28066ZX
  18:     0x7fb7f3b2d0f0 - middle::trans::base::trans_closure::h9d2ca2e9b802af5cF8c
  19:     0x7fb7f3a76880 - middle::trans::base::trans_fn::h7d4da3ce8c357bcdskd
  20:     0x7fb7f3a71e80 - middle::trans::base::trans_item::hc24a7b2fa4f20f13sCd
  21:     0x7fb7f3b37790 - middle::trans::base::trans_crate::h3769d84143898d672we
  22:     0x7fb7f3efcd50 - driver::driver::phase_4_translate_to_llvm::h4b21525153d39d62Z1w
  23:     0x7fb7f3ef4030 - driver::driver::compile_input::hed1faeda6eed200dqEw
  24:     0x7fb7f3f88100 - <unknown>
  25:     0x7fb7f3f88010 - <unknown>
  26:     0x7fb7f3f99ee0 - <unknown>
  27:     0x7fb7f3f99ce0 - <unknown>
  28:     0x7fb7f33e8e80 - <unknown>
  29:     0x7fb7f30e09f0 - <unknown>
  30:     0x7fb7f30e09e0 - rust_try
  31:     0x7fb7f308dd80 - unwind::try::hb0f99c41baa56e2aF6d
  32:     0x7fb7f308db20 - task::Task::run::hf1685016641f31daZcd
  33:     0x7fb7f33e8c40 - <unknown>
  34:     0x7fb7f308f960 - <unknown>
  35:     0x7fb7edec1000 - start_thread
  36:     0x7fb7f2d5d269 - clone
  37:                0x0 - <unknown>

Version

rustc 0.12.0-pre (5ad7afc2d 2014-08-24 11:16:02 +0000)

cc @pcwalton

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-closuresArea: Closures (`|…| { … }`)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