Closed
Description
$ 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
Labels
No labels