Skip to content

ICE on recursive type #4363

Closed
Closed

Description

@davidhalperin
enum FingerTree<A> {
    Empty,
    Single(A),
    Deep(Node<A>)
}

struct Node<A> {
    count: int,
    front: Digit<A>,
    inner: ~FingerTree<(A,A)>,
    back: Digit<A>
}

struct Digit<A> {
    count: int,
    content: [Option<A>, ..4]
}

fn FingerTree<A>() -> FingerTree<A> { Empty }

Note: inner: ~FingerTree<(A,A)>, seems to be the problematic bit. If I make it inner: ~FingerTree<A>, it will compile.

rust: task 7f01a0105d80 ran out of stack
/usr/local/bin/../lib/librustrt.so(_ZN9rust_task13begin_failureEPKcS1_m+0x4b)[0x7f01a68cf4fb]
/usr/local/bin/../lib/librustrt.so(_ZN9rust_task9new_stackEm+0x158)[0x7f01a68cf9c8]
/usr/local/bin/../lib/librustrt.so(+0x2d0f9)[0x7f01a68e30f9]
/usr/local/bin/../lib/librustrt.so(upcall_new_stack+0x280)[0x7f01a68d3060]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(+0x782792)[0x7f01a7294792]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty14__extensions__10meth_3566210iter_bytes15_abfbbb3dea17df3_05E+0x85)[0x7f01a6ddda35]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(+0x2ddcb7)[0x7f01a6defcb7]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(+0x2db57d)[0x7f01a6ded57d]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty14fold_sty_to_ty13_f379ae3486733_05E+0xa5)[0x7f01a6df4985]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty19fold_regions_and_ty17_3db05a7d86315db93_05E+0x4cb)[0x7f01a6df668b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(+0x2e6c54)[0x7f01a6df8c54]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(+0x112a01)[0x7f01a6c24a01]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(+0x2e50ea)[0x7f01a6df70ea]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty19fold_regions_and_ty17_3db05a7d86315db93_05E+0x26a)[0x7f01a6df642a]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(+0x2e6c54)[0x7f01a6df8c54]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(+0x2e2b64)[0x7f01a6df4b64]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty14fold_sty_to_ty13_f379ae3486733_05E+0x5a)[0x7f01a6df493a]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty19fold_regions_and_ty17_3db05a7d86315db93_05E+0x4cb)[0x7f01a6df668b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(+0x2e6c54)[0x7f01a6df8c54]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty5subst17_6886f1198945c8923_05E+0x2fb)[0x7f01a6cc770b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty17lookup_field_type17_20ec4ec279466ae73_05E+0x1bb)[0x7f01a6d24e6b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(+0x30b842)[0x7f01a6e1d842]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x5e1)[0x7f01a6e00311]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
error: internal compiler error: unexpected failure
note: the compiler hit an unexpected failure path. this is a bug
note: try running with RUST_LOG=rustc=1,::rt::backtrace to get further details and report the results to github.com/mozilla/rust/issues
rust: task failed at 'explicit failure', /home/david/rust/src/librustc/rustc.rc:425
/usr/local/bin/../lib/librustrt.so(_ZN9rust_task13begin_failureEPKcS1_m+0x4b)[0x7f01a68cf4fb]
/usr/local/bin/../lib/librustrt.so(+0x2d0f9)[0x7f01a68e30f9]
/usr/local/bin/../lib/librustrt.so(upcall_fail+0x1b0)[0x7f01a68d1cb0]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(+0xa2dbb)[0x7f01a807ddbb]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(+0x37b6e)[0x7f01a8012b6e]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(+0xb34d0)[0x7f01a808e4d0]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN7monitor17_3dc9d53d274031c13_05E+0x29de)[0x7f01a729153e]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(+0x7827fc)[0x7f01a72947fc]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN4main16_2fb85b4a659c4103_05E+0x86)[0x7f01a7294406]
/usr/local/bin/../lib/librustrt.so(_Z18task_start_wrapperP10spawn_args+0x24)[0x7f01a68cfd64]
rust: domain main @0xe0f1f0 root task failed
rust: task failed at 'killed', /home/david/rust/src/libcore/task/mod.rs:570
/usr/local/bin/../lib/librustrt.so(_ZN9rust_task13begin_failureEPKcS1_m+0x4b)[0x7f01a68cf4fb]
/usr/local/bin/../lib/librustrt.so(+0x2d0f9)[0x7f01a68e30f9]
/usr/local/bin/../lib/librustrt.so(upcall_fail+0x1b0)[0x7f01a68d1cb0]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(+0xa2dbb)[0x7f01a807ddbb]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(+0x37b6e)[0x7f01a8012b6e]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(_ZN4task5yield17_56812fae66173efd3_05E+0xbd)[0x7f01a803fe9d]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(+0x91c56)[0x7f01a806cc56]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(+0xb34d0)[0x7f01a808e4d0]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(_ZN7private11weaken_task17_ababfc7d1239606c3_05E+0xd9)[0x7f01a806ca99]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(+0x9198b)[0x7f01a806c98b]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(+0x8c563)[0x7f01a8067563]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(+0x7c29f)[0x7f01a805729f]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(+0xb34d0)[0x7f01a808e4d0]
/usr/local/bin/../lib/librustrt.so(_Z18task_start_wrapperP10spawn_args+0x24)[0x7f01a68cfd64]

Activity

  1. catamorphism commented on Jan 6, 2013

    @catamorphism
    Contributor

    Thanks for the report. This is a known issue: #4218 -- but keep the bug reports coming, it's way better to deal with some duplicates than to not know about a bug :-)

  2. catamorphism commented on Jan 7, 2013

    @catamorphism
    Contributor

    Sorry, I was reading too fast. I think this is a different bug. I'll look at it more carefully.

  3. catamorphism commented on Jan 12, 2013

    @catamorphism
    Contributor

    I thought at first that the code here should be accepted, but no reflection, I think it shouldn't be. Instantiating FingerTree with (A, A) means that monomorphizing any function using a FingerTree will require an infinitely large type. The difference with A instead of (A, A) is that you can re-use the instance FingerTree<A>. Let me know if that's clear.

    With that said, of course, this should be a proper type error and not an ICE.

  4. catamorphism commented on Jan 12, 2013

    @catamorphism
    Contributor

    @nikomatsakis - I'd appreciate a second opinion here. I still think the type shouldn't be allowed, but I'm not sure I can explain why. It's definitely instantiable, and if I change (A, A) to ~(A, A), I think it should be representable too. But the version with the ~ also causes infinite recursion. So I'm not sure what check is needed to disallow this.

  5. catamorphism commented on Jan 12, 2013

    @catamorphism
    Contributor

    I'm thinking that an additional check, enforcing the rule "If types A and B are part of a mutually recursive cycle of types, then B must be used monomorphically when it occurs within A, and vice versa", would disallow this (thus, the program here would be rejected, but it would be accepted with (A, A) changed to A). However, adding a third check when we already check instantiability and representability makes me a little uncomfortable... is there a more general rule?

  6. nikomatsakis commented on Jan 12, 2013

    @nikomatsakis
    Contributor

    Interesting. I hadn't thought about this possibility for infinite type generation, though it seems obvious in retrospect. @catamorphism I'm not sure what the best rule is. I think the type is both instantiable and representable as is (considering each type independently, the size of any given type is computable for a given A). This is more of a monomorphizable criterion. There is a similar problem in function generation that we address by enforcing a maximum expansion depth in trans (which I've never been happy with, partly because I feel trans ought to be infallible). Still, it is rather tricky to summarize the correct criteria. If I understand it correctly, I think the one you proposed is too strict.

    Consider something like:

    struct A<T> {
        b: @B<T>
    }
    struct B<T> {
        a: @A<int>,
        b: @A<T>
    }
    

    Ignoring the question of instantiability, which can be addressed by adding some Option<> types, I feel like this ought to be legal. And yet B does not use A monomorphically. It seems like the rule is that when A<B...Z> transitively includes a reference to a type A<B'...Z'>, for each type parameter T in B...Z and T' in B'...Z' either T=T' or T does not include T'. I think this is the correct rule, but I would want to try and prove it. The basic idea is that the only way to generate an infinite type expansion is to keep building compound types that include the input types. It feels like there is a simple inductive argument that can make this case.

    I would like to replace the trans check with a similar test. I remember trying to think of a good rule for trans and getting frustrated because any rule I came up with amounted to tracing the call graph in a fairly complex and deep way---basically redoing the work trans was already doing. The simplest thing of course for this case would be to do what trans does: expand the type and keep a set of types we've seen. If the recursion depth ever grows too high then we abort.

    As for the annoyance of having three distinct admission tests for types, I hear you. I was already annoyed that there seemed to be a need for two such tests. But they all test different things and I don't see an obvious way to combine them.

  7. bblum commented on Mar 3, 2013

    @bblum
    Contributor

    Not sure if a more minimal example is needed, but here's one:

    struct X {
        x: Option<X>,
    }
    
    fn main() { }
    

    (If you remove the option, it errors, telling you to use an option.)

  8. graydon commented on Mar 22, 2013

    @graydon
    Contributor

    reproduced on 2013-03-22

  9. graydon commented on Mar 22, 2013

    @graydon
    Contributor

    non-critical for 0.6, de-milestoning

  10. ILyoan commented on May 8, 2013

    @ILyoan
    Contributor

    reproduced on d35eb6e

  11. catamorphism commented on Jun 27, 2013

    @catamorphism
    Contributor

    Nominating for milestone 1, well-defined. This is an annoying edge case, but I think it's important to specify what type definitions are acceptable.

  12. graydon commented on Aug 1, 2013

    @graydon
    Contributor

    accepted for well-defined milestone

  13. isabelmu commented on Feb 1, 2014

    @isabelmu
    Contributor

    @bblum's example is actually fixed by adding a non-representable error for structs (pull request #11839, issue #3779). Here is a new minimal example for this issue, usable as a test:

    struct Foo<A> {
      x: Option<~Foo<(A, A)>>
    }
    fn main() { let y: Foo<int> = Foo { x: None }; }
    

    Equally:

    enum Foo<A> { Empty,
                  Deep(~Foo<(A,A)>) }
    fn main() { let y: Foo<int> = Empty; }
    
  14. pcwalton commented on Jun 14, 2014

    @pcwalton
    Contributor

    Nominating for removal from 1.0 milestone, as this can be fixed backwards compatibly.

  15. removed this from the 1.0 milestone on Jun 19, 2014
  16. brson commented on Jun 19, 2014

    @brson
    Contributor

    P-high, not 1.0

  17. Twisol commented on Jan 4, 2015

    @Twisol
    Contributor

    This no longer causes an ICE. (Code modified slightly to match current syntax, disable style warnings, and add a main.)

    $ rustc foo.rs
    $ rustc --verbose --version
    rustc 0.13.0-nightly (c6c786671 2015-01-04 00:50:59 +0000)
    binary: rustc
    commit-hash: c6c786671d692d7b13c2e5c68a53001327b4b125
    commit-date: 2015-01-04 00:50:59 +0000
    host: x86_64-apple-darwin
    release: 0.13.0-nightly
    
    #![allow(dead_code, non_snake_case)]
    
    enum FingerTree<A> {
        Empty,
        Single(A),
        Deep(Node<A>)
    }
    
    struct Node<A> {
        count: int,
        front: Digit<A>,
        inner: Box<FingerTree<(A,A)>>,
        back: Digit<A>
    }
    
    struct Digit<A> {
        count: int,
        content: [Option<A>; 4]
    }
    
    fn FingerTree<A>() -> FingerTree<A> { FingerTree::Empty }
    
    fn main() {}
    
  18. steveklabnik commented on Jan 16, 2015

    @steveklabnik
    Contributor

    Thanks @Twisol !

  19. goffrie commented on Feb 8, 2015

    @goffrie
    Contributor

    I can still make rustc overflow its stack by using the recursive type:

    fn main() {
        let _ = FingerTree::Deep(Node { count: 0,
            front: Digit { count: 0, content: [None, None, None, None] },
            inner: Box::new(FingerTree::Single((1, 2))),
            back: Digit { count: 0, content: [None, None, None, None] }}
        );
    }
    % rustc wow.rs
    
    thread 'rustc' has overflowed its stack
    zsh: illegal hardware instruction (core dumped)  rustc wow.rs
    
  20. pnkfelix commented on Jul 30, 2018

    @pnkfelix
    Contributor

    The compiler is currently infinite-looping (but not, AFAICT, stack-overflowing) on the @goffrie example.

    Actually maybe I'll open a fresh issue to track this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-codegenArea: Code generationE-hardCall for participation: Hard difficulty. Experience needed to fix: A lot.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️P-mediumMedium priority

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions