Skip to content

ICE on let _ = [box 0u, ..1]; #18425

Closed
@neuschaefer

Description

@neuschaefer
$ cat ice.rs
fn main() {
    let _ = [box 1u, ..1];
}
$ RUST_BACKTRACE=1 rustc ice.rs
error: internal compiler error: unexpected failure
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 'assertion failed: !ty::type_moves_by_default(bcx.tcx(), elem.ty)', /home/jonathan/dev/rust/rust/src/librustc/middle/trans/tvec.rs:393

stack backtrace:
   1:     0x7f8e1e405800 - rt::backtrace::imp::write::h0662a1c45d689320NGp::v0.11.0
   2:     0x7f8e1e40c330 - failure::on_fail::h92f66b7d95b8639b21p::v0.11.0
   3:     0x7f8e2053d7d0 - unwind::begin_unwind_inner::h57a84064b3f53727pWd::v0.11.0
   4:     0x7f8e2053d280 - unwind::begin_unwind_fmt::h053a7715a24c2eb4STd::v0.11.0
   5:     0x7f8e20fee750 - middle::trans::tvec::write_content::h00cb816eb2b74f81OUv::v0.11.0
   6:     0x7f8e20f36200 - middle::trans::tvec::trans_fixed_vstore::h5adbffdc320afe2d0vv::v0.11.0
   7:     0x7f8e20f208b0 - middle::trans::expr::trans_rvalue_dps_unadjusted::h689b9323b3afb886Fmg::v0.11.0
   8:     0x7f8e20f1fa70 - middle::trans::expr::trans_unadjusted::h3f730988d466d9a6tSf::v0.11.0
   9:     0x7f8e20ee0a80 - middle::trans::expr::trans::he087c744c9a095c0ozf::v0.11.0
  10:     0x7f8e20ede6f0 - middle::trans::expr::trans_to_lvalue::h4f962c2163dc806fwRf::v0.11.0
  11:     0x7f8e20f9bec0 - middle::trans::_match::store_local::h13ea6ce0bc3c8da7ytu::v0.11.0
  12:     0x7f8e20eddd30 - middle::trans::base::init_local::h739798b4557d8f35DOp::v0.11.0
  13:     0x7f8e20edd290 - middle::trans::controlflow::trans_stmt::h9301f0cd92c135a9Mdc::v0.11.0
  14:     0x7f8e20edee90 - middle::trans::controlflow::trans_block::h0e683fd4ab389a9b2ic::v0.11.0
  15:     0x7f8e20fa1ca0 - middle::trans::base::trans_closure::hfc5546b0b67c2e69Ziq::v0.11.0
  16:     0x7f8e20eaedd0 - middle::trans::base::trans_fn::hb1aaea14688a26e20qq::v0.11.0
  17:     0x7f8e20ea7870 - middle::trans::base::trans_item::hb1f7f3470579d1d0rHq::v0.11.0
  18:     0x7f8e20fb2600 - middle::trans::base::trans_crate::hd1bcbe3f088e50d2yBr::v0.11.0
  19:     0x7f8e217ba970 - driver::driver::phase_4_translate_to_llvm::h989903e67a7029c29fq::v0.11.0
  20:     0x7f8e217b16b0 - driver::driver::compile_input::h56f6c654f3e0434aDTp::v0.11.0
  21:     0x7f8e2187e410 - driver::run_compiler::h1de2e2ef3feda7b9CDs::v0.11.0
  22:     0x7f8e2187e320 - driver::main_args::closure.101060
  23:     0x7f8e218933f0 - task::TaskBuilder<S>::try_future::closure.102198
  24:     0x7f8e21893010 - task::TaskBuilder<S>::spawn_internal::closure.102175
  25:     0x7f8e2089bd40 - task::spawn_opts::closure.7276
  26:     0x7f8e2059de30 - rust_try
  27:     0x7f8e20539de0 - unwind::try::hae56afb65f6531cdOKd::v0.11.0
  28:     0x7f8e20539ac0 - task::Task::run::h74b89a3f8286d790aWc::v0.11.0
  29:     0x7f8e2089bb00 - task::spawn_opts::closure.7222
  30:     0x7f8e2053c680 - thread::thread_start::h34ca16b382623b36Iid::v0.11.0
  31:     0x7f8e1de7dfe0 - start_thread
  32:     0x7f8e20209bf9 - __clone
  33:                0x0 - <unknown>

$ rustc --version
rustc 0.11.0 (aa1163b92de7717eb7c5eba002b4012e0574a7fe 2014-06-27 12:50:16 -0700)

This bug is also triggered with other "non-copyable types", such as String, and on newer versions of rustc, including the one currently running on http://play.rust-lang.org/.

Changing the size to 2 results in a proper error message:

ice.rs:2:11: 2:17 error: copying a value of non-copyable type `Box<uint>`
ice.rs:2        let _ = [box 1u, ..2];
                         ^~~~~~
ice.rs:2:11: 2:17 note: repeated element will be copied
ice.rs:2        let _ = [box 1u, ..2];
                         ^~~~~~
error: aborting due to previous error

The following snippet compiles fine and should be equivalent:

fn main() {
    let _ = [box 1u];
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions