We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
This results in an ICE on stable, beta and rustc 1.28.0-nightly (f28c7ae 2018-06-19):
playground link: https://play.rust-lang.org/?gist=82c2c0d876394594dd551249ff707698&version=nightly&mode=debug
fn main() { |_: [_; return || {}] | {} }
changing return to a move, continue, or break fails to compile with a normal message.
return
move
continue
break
Backtrace:
error[E0572]: return statement outside of function body --> src\main.rs:2:14 | 2 | |_: [_; return || {}] | {} | ^^^^^^^^^^^^ error: internal compiler error: librustc_typeck\check\upvar.rs:115: type of closure expr NodeId(14) is not a closure TyError --> src\main.rs:2:21 | 2 | |_: [_; return || {}] | {} | ^^^^^ thread 'main' panicked at 'Box<Any>', librustc_errors\lib.rs:499:9 stack backtrace: 0: <std::sync::mpsc::select::Select as core::fmt::Debug>::fmt 1: std::stdsimd::arch::detect::os::check_for 2: std::panicking::take_hook 3: std::panicking::take_hook 4: <rustc::ty::query::on_disk_cache::CacheEncoder<'enc, 'a, 'tcx, serialize::opaque::Encoder<'enc>> as serialize::serialize::SpecializedEncoder<rustc::ich::fingerprint::Fingerprint>>::specialized_encode 5: std::panicking::rust_panic_with_hook 6: <rustc_typeck::namespace::Namespace as core::fmt::Debug>::fmt 7: <rustc_typeck::check::op::Op as core::fmt::Debug>::fmt 8: <rustc_typeck::collect::has_late_bound_regions::LateBoundRegionsDetector<'a, 'tcx> as rustc::hir::intravisit::Visitor<'tcx>>::visit_lifetime 9: <rustc_typeck::collect::has_late_bound_regions::LateBoundRegionsDetector<'a, 'tcx> as rustc::hir::intravisit::Visitor<'tcx>>::visit_lifetime 10: <rustc_typeck::collect::has_late_bound_regions::LateBoundRegionsDetector<'a, 'tcx> as rustc::hir::intravisit::Visitor<'tcx>>::visit_lifetime 11: <rustc_typeck::collect::has_late_bound_regions::LateBoundRegionsDetector<'a, 'tcx> as rustc::hir::intravisit::Visitor<'tcx>>::visit_lifetime 12: <rustc_typeck::check::Diverges as core::fmt::Debug>::fmt 13: <rustc_typeck::check::Diverges as core::fmt::Debug>::fmt 14: <unknown> 15: <rustc_typeck::check::upvar::InferBorrowKindVisitor<'a, 'gcx, 'tcx> as rustc::hir::intravisit::Visitor<'gcx>>::visit_expr 16: <unknown> 17: <rustc_typeck::collect::has_late_bound_regions::LateBoundRegionsDetector<'a, 'tcx> as rustc::hir::intravisit::Visitor<'tcx>>::visit_lifetime 18: <rustc_typeck::check_unused::CollectExternCrateVisitor<'a, 'tcx> as rustc::hir::itemlikevisit::ItemLikeVisitor<'v>>::visit_item 19: <rustc_typeck::coherence::unsafety::UnsafetyChecker<'cx, 'tcx> as rustc::hir::itemlikevisit::ItemLikeVisitor<'v>>::visit_trait_item 20: rustc::ty::query::on_disk_cache::__ty_decoder_impl::<impl serialize::serialize::Decoder for rustc::ty::query::on_disk_cache::CacheDecoder<'a, 'tcx, 'x>>::read_str 21: rustc::ty::context::tls::track_diagnostic 22: rustc::ty::context::tls::track_diagnostic 23: rustc::dep_graph::graph::DepGraph::assert_ignored 24: rustc::ty::context::tls::track_diagnostic 25: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::try_print_query_stack 26: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::try_print_query_stack 27: rustc::ty::query::<impl rustc::ty::context::TyCtxt<'a, 'tcx, 'lcx>>::typeck_tables_of 28: rustc_mir::interpret::const_eval::const_eval_provider 29: rustc::ty::query::on_disk_cache::__ty_decoder_impl::<impl serialize::serialize::Decoder for rustc::ty::query::on_disk_cache::CacheDecoder<'a, 'tcx, 'x>>::read_str 30: rustc::ty::context::tls::track_diagnostic 31: rustc::ty::context::tls::track_diagnostic 32: rustc::dep_graph::graph::DepGraph::assert_ignored 33: rustc::ty::context::tls::track_diagnostic 34: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::try_print_query_stack 35: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::try_print_query_stack 36: <rustc::traits::project::AssociatedTypeNormalizer<'a, 'b, 'gcx, 'tcx> as rustc::ty::fold::TypeFolder<'gcx, 'tcx>>::fold_const 37: rustc::ty::structural_impls::<impl rustc::ty::context::Lift<'tcx> for rustc::middle::const_val::ErrKind<'a>>::lift_to_tcx 38: <rustc::traits::project::AssociatedTypeNormalizer<'a, 'b, 'gcx, 'tcx> as rustc::ty::fold::TypeFolder<'gcx, 'tcx>>::fold_ty 39: <rustc_typeck::check_unused::CollectExternCrateVisitor<'a, 'tcx> as rustc::hir::itemlikevisit::ItemLikeVisitor<'v>>::visit_item 40: <rustc_typeck::check_unused::CollectExternCrateVisitor<'a, 'tcx> as rustc::hir::itemlikevisit::ItemLikeVisitor<'v>>::visit_item 41: <rustc_typeck::check::FnCtxt<'a, 'gcx, 'tcx> as rustc_typeck::astconv::AstConv<'gcx, 'tcx>>::normalize_ty 42: <rustc_typeck::check::autoderef::AutoderefKind as core::fmt::Debug>::fmt 43: <rustc_typeck::collect::has_late_bound_regions::LateBoundRegionsDetector<'a, 'tcx> as rustc::hir::intravisit::Visitor<'tcx>>::visit_lifetime 44: <rustc_typeck::collect::has_late_bound_regions::LateBoundRegionsDetector<'a, 'tcx> as rustc::hir::intravisit::Visitor<'tcx>>::visit_lifetime 45: <unknown> 46: <rustc_typeck::check::FnCtxt<'a, 'gcx, 'tcx> as rustc_typeck::astconv::AstConv<'gcx, 'tcx>>::record_ty 47: <rustc_typeck::check::FnCtxt<'a, 'gcx, 'tcx> as rustc_typeck::astconv::AstConv<'gcx, 'tcx>>::record_ty 48: <rustc_typeck::check::FnCtxt<'a, 'gcx, 'tcx> as rustc_typeck::astconv::AstConv<'gcx, 'tcx>>::record_ty 49: <rustc_typeck::check::FnCtxt<'a, 'gcx, 'tcx> as rustc_typeck::astconv::AstConv<'gcx, 'tcx>>::record_ty 50: <rustc_typeck::check::FnCtxt<'a, 'gcx, 'tcx> as rustc_typeck::astconv::AstConv<'gcx, 'tcx>>::record_ty 51: <rustc_typeck::check::FnCtxt<'a, 'gcx, 'tcx> as rustc_typeck::astconv::AstConv<'gcx, 'tcx>>::record_ty 52: <rustc_typeck::check::GatherLocalsVisitor<'a, 'gcx, 'tcx> as rustc::hir::intravisit::Visitor<'gcx>>::visit_pat 53: <rustc_typeck::collect::has_late_bound_regions::LateBoundRegionsDetector<'a, 'tcx> as rustc::hir::intravisit::Visitor<'tcx>>::visit_lifetime 54: <rustc_typeck::check_unused::CollectExternCrateVisitor<'a, 'tcx> as rustc::hir::itemlikevisit::ItemLikeVisitor<'v>>::visit_item 55: <rustc_typeck::coherence::unsafety::UnsafetyChecker<'cx, 'tcx> as rustc::hir::itemlikevisit::ItemLikeVisitor<'v>>::visit_trait_item 56: rustc::ty::query::on_disk_cache::__ty_decoder_impl::<impl serialize::serialize::Decoder for rustc::ty::query::on_disk_cache::CacheDecoder<'a, 'tcx, 'x>>::read_str 57: rustc::ty::context::tls::track_diagnostic 58: rustc::ty::context::tls::track_diagnostic 59: rustc::dep_graph::graph::DepGraph::assert_ignored 60: rustc::ty::context::tls::track_diagnostic 61: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::try_print_query_stack 62: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::try_print_query_stack 63: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::try_print_query_stack 64: <rustc_typeck::check::Diverges as core::fmt::Debug>::fmt 65: <rustc_typeck::coherence::unsafety::UnsafetyChecker<'cx, 'tcx> as rustc::hir::itemlikevisit::ItemLikeVisitor<'v>>::visit_trait_item 66: rustc::ty::context::tls::track_diagnostic 67: rustc::ty::context::tls::track_diagnostic 68: rustc::dep_graph::graph::DepGraph::assert_ignored 69: rustc::ty::context::tls::track_diagnostic 70: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::try_print_query_stack 71: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::try_print_query_stack 72: rustc_typeck::check_crate 73: <rustc_driver::Compilation as core::fmt::Debug>::fmt 74: rustc_driver::set_sigpipe_handler 75: <unknown> 76: rustc_driver::driver::compile_input 77: rustc_driver::run_compiler 78: rustc_driver::target_features::add_configuration 79: rustc_driver::set_sigpipe_handler 80: _rust_maybe_catch_panic 81: <rustc_driver::derive_registrar::Finder as rustc::hir::itemlikevisit::ItemLikeVisitor<'v>>::visit_item 82: rustc_driver::main 83: <unknown> 84: std::panicking::update_panic_count 85: _rust_maybe_catch_panic 86: std::rt::lang_start_internal 87: <unknown> 88: <unknown> 89: BaseThreadInitThunk 90: RtlUserThreadStart query stack during panic: #0 [typeck_tables_of] processing `main::{{closure}}::{{constant}}` #1 [const_eval] const-evaluating `main::{{closure}}::{{constant}}` #2 [typeck_tables_of] processing `main` #3 [typeck_item_bodies] type-checking all item bodies end of query stack error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0572`. 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: rustc 1.28.0-nightly (f28c7aef7 2018-06-19) running on x86_64-pc-windows-msvc
The text was updated successfully, but these errors were encountered:
Update:
a more simplified version:
fn main() { [(); return || {}]; }
Sorry, something went wrong.
TyError
analyze_closure
Auto merge of #51723 - estebank:abolish-ice, r=oli-obk
a51e807
Accept `TyError` in `analyze_closure` to avoid ICE Fix #51714.
No branches or pull requests
This results in an ICE on stable, beta and rustc 1.28.0-nightly (f28c7ae 2018-06-19):
playground link: https://play.rust-lang.org/?gist=82c2c0d876394594dd551249ff707698&version=nightly&mode=debug
changing
return
to amove
,continue
, orbreak
fails to compile with a normal message.Backtrace:
The text was updated successfully, but these errors were encountered: