I was in the middle of making a big changes to some code when this panic occurred. I was expecting a lot of compiler errors but got a compiler panic instead! :fearful: ## Version Info ``` $ rustc --version --verbose rustc 1.16.0 (30cf806ef 2017-03-10) binary: rustc commit-hash: 30cf806ef8881c41821fbd43e5cf3699c5290c16 commit-date: 2017-03-10 host: x86_64-unknown-linux-gnu release: 1.16.0 LLVM version: 3.9 $ cargo --version cargo-0.17.0-nightly (f9e5481 2017-03-03) ``` I ran the build with `cargo +nightly test` and the panic still occurred. ## Compiler Output Run `cargo test` to get this. Here's the full output with `RUST_BACKTRACE=1`: ``` error[E0412]: cannot find type `ArraySize` in this scope --> src/operations/item_type.rs:19:22 | 19 | size: Option<ArraySize>, | ^^^^^^^^^ not found in this scope | = help: possible candidate is found in another module, you can import it into scope: `use operations::scope::ArraySize;` error[E0412]: cannot find type `TypeId` in this scope --> src/core/io/stdio.rs:16:50 | 16 | fn define_stdin(scope: &mut ScopeStack, u8_type: TypeId) { | ^^^^^^ not found in this scope | = help: possible candidates are found in other modules, you can import them into scope: `use operations::scope::TypeId;` `use std::any::TypeId;` error[E0412]: cannot find type `ArraySize` in this scope --> src/operations/item_type.rs:19:22 | 19 | size: Option<ArraySize>, | ^^^^^^^^^ not found in this scope | = help: possible candidate is found in another module, you can import it into scope: `use operations::scope::ArraySize;` error[E0412]: cannot find type `TypeId` in this scope --> src/core/io/stdio.rs:16:50 | 16 | fn define_stdin(scope: &mut ScopeStack, u8_type: TypeId) { | ^^^^^^ not found in this scope | = help: possible candidates are found in other modules, you can import them into scope: `use operations::scope::TypeId;` `use std::any::TypeId;` error: no associated item named `Type` found for type `operations::scope::ScopeItem` in the current scope --> src/operations/type_definition.rs:15:13 | 15 | ScopeItem::Type(id) => Ok(id), | ^^^^^^^^^^^^^^^^^^^ error[E0223]: ambiguous associated type --> src/operations/type_definition.rs:16:13 | 16 | ScopeItem::BuiltInFunction {id, ..} => Ok(id), | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ambiguous associated type | = note: specify the type using the syntax `<operations::scope::ScopeItem as Trait>::BuiltInFunction` error: internal compiler error: /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/librustc/middle/mem_categorization.rs:1175: tuple struct pattern didn't resolve to variant or struct Err --> src/operations/type_definition.rs:15:13 | 15 | ScopeItem::Type(id) => Ok(id), | ^^^^^^^^^^^^^^^^^^^ error: no associated item named `Type` found for type `operations::scope::ScopeItem` in the current scope --> src/operations/type_definition.rs:15:13 | 15 | ScopeItem::Type(id) => Ok(id), | ^^^^^^^^^^^^^^^^^^^ error[E0223]: ambiguous associated type --> src/operations/type_definition.rs:16:13 | 16 | ScopeItem::BuiltInFunction {id, ..} => Ok(id), | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ambiguous associated type | = note: specify the type using the syntax `<operations::scope::ScopeItem as Trait>::BuiltInFunction` error: internal compiler error: /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/librustc/middle/mem_categorization.rs:1175: tuple struct pattern didn't resolve to variant or struct Err --> src/operations/type_definition.rs:15:13 | 15 | ScopeItem::Type(id) => Ok(id), | ^^^^^^^^^^^^^^^^^^^ note: the compiler unexpectedly panicked. this is a bug. note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports note: run with `RUST_BACKTRACE=1` for a backtrace thread 'rustc' panicked at 'Box<Any>', /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/librustc_errors/lib.rs:375 stack backtrace: 1: 0x7f862943740c - std::sys::imp::backtrace::tracing::imp::write::hf33ae72d0baa11ed at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:42 2: 0x7f86294459ae - std::panicking::default_hook::{{closure}}::h59672b733cc6a455 at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/panicking.rs:351 3: 0x7f8629445553 - std::panicking::default_hook::h1670459d2f3f8843 at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/panicking.rs:361 4: 0x7f8629445e4b - std::panicking::rust_panic_with_hook::hcf0ddb069e7beee7 at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/panicking.rs:555 5: 0x7f86263b79f8 - std::panicking::begin_panic::h7615035f91af0a46 6: 0x7f8626568165 - rustc::session::opt_span_bug_fmt::{{closure}}::hb8dfe55fdd29ba42 7: 0x7f8626567c65 - rustc::session::opt_span_bug_fmt::h0cd2e09801797662 8: 0x7f8626567af4 - rustc::session::span_bug_fmt::hd9d57beec0176564 9: 0x7f8626522e05 - rustc::middle::mem_categorization::MemCategorizationContext::cat_pattern_::hf9ee6cc28f4950bf 10: 0x7f8626502fe8 - rustc::middle::expr_use_visitor::ExprUseVisitor::walk_expr::h67cf415f4e516db4 11: 0x7f8626501e41 - rustc::middle::expr_use_visitor::ExprUseVisitor::consume_body::hf960393f75684590 12: 0x7f8627e09a1c - <rustc_typeck::check::upvar::AdjustBorrowKind<'a, 'gcx, 'tcx> as rustc::hir::intravisit::Visitor<'gcx>>::visit_fn::hcfd8923185beae25 13: 0x7f8627da9267 - rustc::hir::intravisit::walk_expr::hb6d0c21c465f62f9 14: 0x7f8627da8c1e - rustc::hir::intravisit::walk_expr::hb6d0c21c465f62f9 15: 0x7f8627da8f4e - rustc::hir::intravisit::walk_expr::hb6d0c21c465f62f9 16: 0x7f8627e08210 - rustc_typeck::check::upvar::<impl rustc_typeck::check::FnCtxt<'a, 'gcx, 'tcx>>::closure_analyze::h260e6c5912cc14b4 17: 0x7f8627e386a6 - rustc_typeck::check::check_bare_fn::h9f0916104d636ee0 18: 0x7f8627e35875 - rustc_typeck::check::check_item_bodies::hd9e8c6a8692f314b 19: 0x7f8627ea3497 - rustc_typeck::check_crate::h8c159f70d1009b33 20: 0x7f86297e3cd7 - rustc_driver::driver::phase_3_run_analysis_passes::{{closure}}::h040eea107b0d299b 21: 0x7f86297e06c6 - rustc_driver::driver::phase_3_run_analysis_passes::haec055f3322a38aa 22: 0x7f86297c4150 - rustc_driver::driver::compile_input::hd9f060ee16a643fb 23: 0x7f862980e844 - rustc_driver::run_compiler::h762802568c0e140e 24: 0x7f862971aedb - std::panicking::try::do_call::h935e2f773deaf841 25: 0x7f862944ec8a - __rust_maybe_catch_panic at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libpanic_unwind/lib.rs:98 26: 0x7f8629743112 - <F as alloc::boxed::FnBox<A>>::call_box::he43811d1f6894655 27: 0x7f8629444804 - std::sys::imp::thread::Thread::new::thread_start::he668872ac11287ba at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/liballoc/boxed.rs:624 at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/sys_common/thread.rs:21 at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/sys/unix/thread.rs:84 28: 0x7f8621efe6b9 - start_thread 29: 0x7f86290fa82c - clone 30: 0x0 - <unknown> note: the compiler unexpectedly panicked. this is a bug. note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports note: run with `RUST_BACKTRACE=1` for a backtrace thread 'rustc' panicked at 'Box<Any>', /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/librustc_errors/lib.rs:375 stack backtrace: 1: 0x7ff9adb2440c - std::sys::imp::backtrace::tracing::imp::write::hf33ae72d0baa11ed at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:42 2: 0x7ff9adb329ae - std::panicking::default_hook::{{closure}}::h59672b733cc6a455 at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/panicking.rs:351 3: 0x7ff9adb32553 - std::panicking::default_hook::h1670459d2f3f8843 at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/panicking.rs:361 4: 0x7ff9adb32e4b - std::panicking::rust_panic_with_hook::hcf0ddb069e7beee7 at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/panicking.rs:555 5: 0x7ff9aaaa49f8 - std::panicking::begin_panic::h7615035f91af0a46 6: 0x7ff9aac55165 - rustc::session::opt_span_bug_fmt::{{closure}}::hb8dfe55fdd29ba42 7: 0x7ff9aac54c65 - rustc::session::opt_span_bug_fmt::h0cd2e09801797662 8: 0x7ff9aac54af4 - rustc::session::span_bug_fmt::hd9d57beec0176564 9: 0x7ff9aac0fe05 - rustc::middle::mem_categorization::MemCategorizationContext::cat_pattern_::hf9ee6cc28f4950bf 10: 0x7ff9aabeffe8 - rustc::middle::expr_use_visitor::ExprUseVisitor::walk_expr::h67cf415f4e516db4 11: 0x7ff9aabeee41 - rustc::middle::expr_use_visitor::ExprUseVisitor::consume_body::hf960393f75684590 12: 0x7ff9ac4f6a1c - <rustc_typeck::check::upvar::AdjustBorrowKind<'a, 'gcx, 'tcx> as rustc::hir::intravisit::Visitor<'gcx>>::visit_fn::hcfd8923185beae25 13: 0x7ff9ac496267 - rustc::hir::intravisit::walk_expr::hb6d0c21c465f62f9 14: 0x7ff9ac495c1e - rustc::hir::intravisit::walk_expr::hb6d0c21c465f62f9 15: 0x7ff9ac495f4e - rustc::hir::intravisit::walk_expr::hb6d0c21c465f62f9 16: 0x7ff9ac4f5210 - rustc_typeck::check::upvar::<impl rustc_typeck::check::FnCtxt<'a, 'gcx, 'tcx>>::closure_analyze::h260e6c5912cc14b4 17: 0x7ff9ac5256a6 - rustc_typeck::check::check_bare_fn::h9f0916104d636ee0 18: 0x7ff9ac522875 - rustc_typeck::check::check_item_bodies::hd9e8c6a8692f314b 19: 0x7ff9ac590497 - rustc_typeck::check_crate::h8c159f70d1009b33 20: 0x7ff9aded0cd7 - rustc_driver::driver::phase_3_run_analysis_passes::{{closure}}::h040eea107b0d299b 21: 0x7ff9adecd6c6 - rustc_driver::driver::phase_3_run_analysis_passes::haec055f3322a38aa 22: 0x7ff9adeb1150 - rustc_driver::driver::compile_input::hd9f060ee16a643fb 23: 0x7ff9adefb844 - rustc_driver::run_compiler::h762802568c0e140e 24: 0x7ff9ade07edb - std::panicking::try::do_call::h935e2f773deaf841 25: 0x7ff9adb3bc8a - __rust_maybe_catch_panic at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libpanic_unwind/lib.rs:98 26: 0x7ff9ade30112 - <F as alloc::boxed::FnBox<A>>::call_box::he43811d1f6894655 27: 0x7ff9adb31804 - std::sys::imp::thread::Thread::new::thread_start::he668872ac11287ba at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/liballoc/boxed.rs:624 at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/sys_common/thread.rs:21 at /buildslave/rust-buildbot/slave/stable-dist-rustc-linux/build/src/libstd/sys/unix/thread.rs:84 28: 0x7ff9a65eb6b9 - start_thread 29: 0x7ff9ad7e782c - clone 30: 0x0 - <unknown> error: Could not compile `brain`. Build failed, waiting for other jobs to finish... error: build failed ``` Since I was in the middle of editing, there's no commit to point to, so I just attached my source code as is so you have something to debug. When you download it and run `cargo test`, the compiler should panic. The repo is called [brain-lang/brain](https://github.com/brain-lang/brain). I don't know how to narrow this issue down, or else I would try to find a smaller example for you. Hope this is good enough. [brain-rustc-panic.zip](https://github.com/rust-lang/rust/files/911716/brain-rustc-panic.zip)