Closed
Description
I've encountered an internal compiler error when building this code:
use std::iter::*;
pub struct Ilbm<'a> {
body_data: &'a[u8],
data_width: u16,
depth: u8,
mask: u8,
ham: bool,
}
impl<'a> Ilbm<'a> {
fn get_bit(buffer: &[u8], col: usize) -> u8 {
let byte_offset = col / 8;
let bit_offset = 7 - col % 8;
let byte_val = buffer[byte_offset];
(byte_val >> bit_offset) & 1
}
fn draw_row<'b>(&self, decoded_row_planes: Vec<&'b [u8]>) -> Box<Iterator<Item=u8> + 'b> {
let masking = self.mask == 1;
let ham_mask: u8 = if self.ham { if self.depth == 6 { 0x0F } else { 0x3F } } else { 0 };
let ham_shif: u8 = if self.ham { self.depth - 2 } else { 0 };
let depth = self.depth as usize;
Box::new((0..self.data_width)
.flat_map(move |col| {
if masking && Self::get_bit(decoded_row_planes[depth], col as usize) != 1 {
repeat(0).take(4)
}
else {
decoded_row_planes[depth][col as usize]
}
} ))
}
}
Meta
rustc --version --verbose
:
rustc 1.0.0-beta.3 (5241bf9c3 2015-04-25) (built 2015-04-25)
binary: rustc
commit-hash: 5241bf9c34d156ea6064367a33cbd7222eeb5789
commit-date: 2015-04-25
build-date: 2015-04-25
host: x86_64-apple-darwin
release: 1.0.0-beta.3
Backtrace:
thread 'rustc' panicked at 'Box<Any>', /Users/rustbuild/src/rust-buildbot/slave/beta-dist-rustc-mac/build/src/libsyntax/diagnostic.rs:149
stack backtrace:
1: 0x10affc33f - sys::backtrace::write::h0f2fc53eb11eb814gWr
2: 0x10b004942 - panicking::on_panic::hd617a4042e8486fciUv
3: 0x10afc1375 - rt::unwind::begin_unwind_inner::hd84dfec22ac3667d1Bv
4: 0x10a7a09fe - rt::unwind::begin_unwind::h17792509132866387090
5: 0x10a7a098a - diagnostic::SpanHandler::span_bug::hebb6215f61f436aaEqB
6: 0x10867405b - middle::infer::region_inference::RegionVarBindings<'a, 'tcx>::make_subregion::h4adb78ad460601ecS8u
7: 0x10862aeab - middle::infer::sub::Sub<'a, 'tcx>.TypeRelation<'a, 'tcx>::regions::h3f9ee82a2e72a144Mjx
8: 0x10862ac91 - middle::infer::sub::Sub<'a, 'tcx>.TypeRelation<'a, 'tcx>::relate_with_variance::h5672739467683317342
9: 0x10862a20b - middle::ty_relate::relate_substs::h2389761154872115822
10: 0x1086297fa - middle::ty_relate::relate_item_substs::h7360249961707336134
11: 0x10868b447 - middle::ty_relate::super_relate_tys::h10795509169925483940
12: 0x108621bb2 - middle::infer::sub::Sub<'a, 'tcx>.TypeRelation<'a, 'tcx>::tys::h3174a850422a5fc1pfx
13: 0x10868ff47 - middle::infer::InferCtxt<'a, 'tcx>::sub_types::hea49ed0ad06eecf898y
14: 0x107ccd1d5 - check::method::probe::ProbeContext<'a, 'tcx>::consider_candidates::h2b54d2790fd0880dXoi
15: 0x107cccf79 - check::method::probe::ProbeContext<'a, 'tcx>::pick_method::hc768ec9b0fb6e87dUki
16: 0x107ccc346 - check::method::probe::ProbeContext<'a, 'tcx>::pick_core::h3e5895ad5629b90bOfi
17: 0x107cc1cbc - check::method::probe::probe::closure.31574
18: 0x107cbf389 - check::method::probe::probe::hfbf147788d37ee49T4g
19: 0x107cd9ecd - check::method::resolve_ufcs::h9a77d5ebe946bd48d7j
20: 0x107d65c30 - check::check_expr_with_unifier::h1091590169474595220
21: 0x107cfaf2c - check::callee::check_call::hf304e98e66e2eee3Nhm
22: 0x107d61b0a - check::check_expr_with_unifier::h1091590169474595220
23: 0x107d0a18d - check::op::check_binop::h6504e0630336d4baFan
24: 0x107d498ae - check::check_expr_with_unifier::h4364205555285070129
25: 0x107d0a42e - check::op::check_binop::h6504e0630336d4baFan
26: 0x107d4343b - check::check_expr_with_unifier::h8963715346170232283
27: 0x107d2f66d - check::check_expr_with_unifier::check_then_else::h1d5d0ab6867397defIq
28: 0x107d49b8d - check::check_expr_with_unifier::h4364205555285070129
29: 0x107d191db - check::check_block_with_expected::h83c5e18f3456d9895hs
30: 0x107d49d85 - check::check_expr_with_unifier::h4364205555285070129
31: 0x107d191db - check::check_block_with_expected::h83c5e18f3456d9895hs
32: 0x107cfa508 - check::check_fn::h5c814037ea8a2362C4n
33: 0x107cf8966 - check::closure::check_expr_closure::h0b5d1648c0a7d5409Pl
34: 0x107d25f08 - check::check_expr_with_unifier::h8674341778859500334
35: 0x107d00d9c - check::check_argument_types::hbd54866e0651a010O5p
36: 0x107d0208a - check::check_method_argument_types::h42f31152b61f4a11d3p
37: 0x107d308cc - check::check_expr_with_unifier::check_method_call::h6fc40daeec19d10dlFq
38: 0x107d2595e - check::check_expr_with_unifier::h8674341778859500334
39: 0x107d00d9c - check::check_argument_types::hbd54866e0651a010O5p
40: 0x107cfe0be - check::callee::confirm_builtin_call::h98216b80db4bfd2f5qm
41: 0x107cfc849 - check::callee::check_call::hf304e98e66e2eee3Nhm
42: 0x107d49701 - check::check_expr_with_unifier::h4364205555285070129
43: 0x107d191db - check::check_block_with_expected::h83c5e18f3456d9895hs
44: 0x107cfa508 - check::check_fn::h5c814037ea8a2362C4n
45: 0x107d14599 - check::check_bare_fn::hd839ee74cb29d084bUn
46: 0x107d1d4c7 - check::check_method_body::hf8957dc76229cbd6Gvo
47: 0x107d124db - check::CheckItemBodiesVisitor<'a, 'tcx>.Visitor<'tcx>::visit_item::hc008350ec16b94ffeRn
48: 0x107ddbeda - check_crate::closure.38340
49: 0x107dd72e7 - check_crate::h7f9bbce56981d322gCC
50: 0x107b3c2d2 - driver::phase_3_run_analysis_passes::hb862dc042470f6e0nGa
51: 0x107b1e09c - driver::compile_input::h4747d8bb1c595fdfQba
52: 0x107be58f3 - run_compiler::hc8c95c5858347fdbz4b
53: 0x107be341a - boxed::F.FnBox<A>::call_box::h7872786064439979928
54: 0x107be28b7 - rt::unwind::try::try_fn::h10239991317224243769
55: 0x10b0857c8 - rust_try_inner
56: 0x10b0857b5 - rust_try
57: 0x107be2b90 - boxed::F.FnBox<A>::call_box::h4543691575426869824
58: 0x10b00348d - sys::thread::create::thread_start::h499b3be451a7bbb8AZu
59: 0x7fff91f30267 - _pthread_body
60: 0x7fff91f301e4 - _pthread_start