Closed
Description
I ran across the error mentioned in the title and was prompted to report it here. rustc --version says:
rustc 1.0.0-dev (a0f86de 2015-01-20 16:05:33 +0000)
I boiled the problematic source down to the following:
use std::rand::{Rng, StdRng};
fn maker<T, F: Fn(usize) -> T>(count: usize, f: F) -> Vec<T> {
let mut vec = Vec::with_capacity(count);
for i in (0..count) {
vec.push(f(i))
}
vec
}
fn main() {
let mut rng = StdRng::new().unwrap();
let outer = maker(10, |i: usize| {
maker(10, |j: usize| {
rng.gen::<i32>()
})
});
}
Compiling this with rustc results in the following:
divmod.rs:14:19: 16:10 error: internal compiler error: aliasability violation with closure
divmod.rs:14 maker(10, |j: usize| {
divmod.rs:15 rng.gen::<i32>()
divmod.rs:16 })
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>', /home/haehnle/software/rust/rust/src/libsyntax/diagnostic.rs:126
stack backtrace:
1: 0x7f21c4060770 - sys::backtrace::write::hbfbe574d5ac79465eRt
2: 0x7f21c4082640 - failure::on_fail::hac49ad8bfddefde2J4z
3: 0x7f21c3ff0ec0 - rt::unwind::begin_unwind_inner::hd718a69632d588d7XJz
4: 0x7f21beba4880 - rt::unwind::begin_unwind::h8730598182994992412
5: 0x7f21beba4810 - diagnostic::SpanHandler::span_bug::h1e2d9daefb0dc2baEpF
6: 0x7f21c1f328c0 - session::Session::span_bug::hceb8496714e777dfAcp
7: 0x7f21c2abbfd0 - borrowck::BorrowckCtxt<'a, 'tcx>::report_aliasability_violation::hfb956e845bfbedc6i3f
8: 0x7f21c2ac35c0 - borrowck::gather_loans::check_aliasability::h6869eada53537427Ouc
9: 0x7f21c2ac1120 - borrowck::gather_loans::GatherLoanCtxt<'a, 'tcx>.euv..Delegate<'tcx>::borrow::h766d85cacc46a23cBpc
10: 0x7f21c2ab3a30 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, 'tcx, TYPER>::walk_captures::unboxed_closure.13697
11: 0x7f21c2aae650 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, 'tcx, TYPER>::walk_expr::h5881053512374983811
12: 0x7f21c2ab33f0 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, 'tcx, TYPER>::consume_expr::h15904022551803142840
13: 0x7f21c2aae650 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, 'tcx, TYPER>::walk_expr::h5881053512374983811
14: 0x7f21c2ab33f0 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, 'tcx, TYPER>::consume_expr::h15904022551803142840
15: 0x7f21c2aae160 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, 'tcx, TYPER>::walk_block::h6225175670038727907
16: 0x7f21c2aae650 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, 'tcx, TYPER>::walk_expr::h5881053512374983811
17: 0x7f21c2ab33f0 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, 'tcx, TYPER>::consume_expr::h15904022551803142840
18: 0x7f21c2aae160 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, 'tcx, TYPER>::walk_block::h6225175670038727907
19: 0x7f21c2ad88f0 - borrowck::build_borrowck_dataflow_data::h20fbbabc08a99758cQe
20: 0x7f21c2ad5630 - borrowck::borrowck_fn::h7db236c4f7804f18zNe
21: 0x7f21c2ad7770 - visit::walk_expr::h9297717943178526058
22: 0x7f21c2ad7770 - visit::walk_expr::h9297717943178526058
23: 0x7f21c2ad7d20 - visit::walk_block::h2927548346589881657
24: 0x7f21c2ad5630 - borrowck::borrowck_fn::h7db236c4f7804f18zNe
25: 0x7f21c2ad6540 - borrowck::borrowck_item::h0f3b90d02a71b9f1xMe
26: 0x7f21c2ad6ab0 - borrowck::check_crate::hc5485323970718eapHe
27: 0x7f21c45bf480 - driver::phase_3_run_analysis_passes::hd1f98033b42f7478WFa
28: 0x7f21c45acca0 - driver::compile_input::hfc013628096d192cCba
29: 0x7f21c4677a10 - run_compiler::h017fe6509f8a740fl9b
30: 0x7f21c4676180 - thunk::F.Invoke<A, R>::invoke::h5504034000784657795
31: 0x7f21c46750e0 - rt::unwind::try::try_fn::h6064716710695359836
32: 0x7f21c40f3e10 - rust_try_inner
33: 0x7f21c40f3e00 - rust_try
34: 0x7f21c4675390 - thunk::F.Invoke<A, R>::invoke::h9170660814324098360
35: 0x7f21c40702b0 - sys::thread::thread_start::he7e2984bcefcedbdzGw
36: 0x7f21be3bbfe0 - start_thread
37: 0x7f21c3c91859 - __clone