Closed
Description
Code
fn main() {
[(); return || {
let tx;
}]
}
Meta
rustc --version --verbose
:
rustc 1.54.0-nightly (ed597e7e1 2021-06-08)
binary: rustc
commit-hash: ed597e7e19d0fe716d9f81b1e840a5abbfd7c28d
commit-date: 2021-06-08
host: x86_64-unknown-linux-gnu
release: 1.54.0-nightly
LLVM version: 12.0.1
Error output
error[E0572]: return statement outside of function body
--> mutant.rs:2:10
|
2 | [(); return || {
| __________^
3 | | let tx;
4 | | }]
| |_____^
error: internal compiler error: compiler/rustc_typeck/src/check/fn_ctxt/_impl.rs:136:13: no type for local variable local let tx; (hir_id=HirId { owner: DefId(0:3 ~ mutant[8787]::main), local_id: 3 })
--> mutant.rs:3:9
|
3 | let tx;
| ^^^^^^^
thread 'rustc' panicked at 'Box<dyn Any>', /rustc/ed597e7e19d0fe716d9f81b1e840a5abbfd7c28d/compiler/rustc_errors/src/lib.rs:953:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md
note: rustc 1.54.0-nightly (ed597e7e1 2021-06-08) running on x86_64-unknown-linux-gnu
note: compiler flags: -Z mir-opt-level=3 -Z new-llvm-pass-manager=yes -Z unsound-mir-opts=yes -Z polonius=yes -Z polymorphize=yes -C debuginfo=2 -C opt-level=3 --crate-type staticlib
query stack during panic:
#0 [typeck] type-checking `main::{constant#0}`
#1 [eval_to_allocation_raw] const-evaluating + checking `main::{constant#0}`
end of query stack
error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0572`.
Backtrace
error[E0572]: return statement outside of function body
--> mutant.rs:2:10
|
2 | [(); return || {
| __________^
3 | | let tx;
4 | | }]
| |_____^
error: internal compiler error: compiler/rustc_typeck/src/check/fn_ctxt/_impl.rs:136:13: no type for local variable local let tx; (hir_id=HirId { owner: DefId(0:3 ~ mutant[8787]::main), local_id: 3 })
--> mutant.rs:3:9
|
3 | let tx;
| ^^^^^^^
thread 'rustc' panicked at 'Box<dyn Any>', /rustc/ed597e7e19d0fe716d9f81b1e840a5abbfd7c28d/compiler/rustc_errors/src/lib.rs:953:9
stack backtrace:
0: std::panicking::begin_panic
1: std::panic::panic_any
2: rustc_errors::HandlerInner::span_bug
3: rustc_errors::Handler::span_bug
4: rustc_middle::ty::context::tls::with_opt
5: rustc_middle::util::bug::opt_span_bug_fmt
6: rustc_middle::util::bug::span_bug_fmt
7: rustc_typeck::check::fn_ctxt::_impl::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::local_ty
8: <rustc_typeck::check::writeback::WritebackCx as rustc_hir::intravisit::Visitor>::visit_local
9: rustc_hir::intravisit::walk_block
10: <rustc_typeck::check::writeback::WritebackCx as rustc_hir::intravisit::Visitor>::visit_expr
11: <rustc_typeck::check::writeback::WritebackCx as rustc_hir::intravisit::Visitor>::visit_expr
12: <rustc_typeck::check::writeback::WritebackCx as rustc_hir::intravisit::Visitor>::visit_expr
13: rustc_typeck::check::writeback::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::resolve_type_vars_in_body
14: rustc_typeck::check::inherited::InheritedBuilder::enter
15: rustc_typeck::check::typeck
16: rustc_query_system::query::plumbing::get_query_impl
17: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::typeck
18: rustc_middle::ty::context::TyCtxt::typeck_opt_const_arg
19: rustc_mir::const_eval::eval_queries::eval_to_allocation_raw_provider
20: rustc_query_impl::<impl rustc_query_system::query::config::QueryAccessors<rustc_query_impl::plumbing::QueryCtxt> for rustc_query_impl::queries::eval_to_allocation_raw>::compute
21: rustc_query_system::query::plumbing::get_query_impl
22: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::eval_to_allocation_raw
23: rustc_mir::const_eval::eval_queries::eval_to_const_value_raw_provider
24: rustc_query_impl::<impl rustc_query_system::query::config::QueryAccessors<rustc_query_impl::plumbing::QueryCtxt> for rustc_query_impl::queries::eval_to_const_value_raw>::compute
25: rustc_query_system::query::plumbing::get_query_impl
26: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::eval_to_const_value_raw
27: rustc_middle::mir::interpret::queries::<impl rustc_middle::ty::context::TyCtxt>::const_eval_global_id
28: rustc_middle::mir::interpret::queries::<impl rustc_middle::ty::context::TyCtxt>::const_eval_resolve
29: rustc_infer::infer::InferCtxt::const_eval_resolve
30: rustc_trait_selection::traits::const_evaluatable::is_const_evaluatable
31: rustc_trait_selection::traits::fulfill::FulfillProcessor::progress_changed_obligations
32: rustc_data_structures::obligation_forest::ObligationForest<O>::process_obligations
33: <rustc_trait_selection::traits::fulfill::FulfillmentContext as rustc_infer::traits::engine::TraitEngine>::select_where_possible
34: rustc_typeck::check::fn_ctxt::_impl::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::resolve_vars_with_obligations
35: rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_kind
36: rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_with_expectation
37: rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_kind
38: rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_with_expectation
39: rustc_typeck::check::fn_ctxt::checks::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_block_with_expected
40: rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_with_expectation
41: rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_return_expr
42: rustc_typeck::check::check::check_fn
43: rustc_typeck::check::inherited::InheritedBuilder::enter
44: rustc_typeck::check::typeck
45: rustc_query_system::query::plumbing::get_query_impl
46: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::typeck
47: rustc_middle::ty::<impl rustc_middle::ty::context::TyCtxt>::par_body_owners
48: rustc_typeck::check::typeck_item_bodies
49: rustc_query_system::query::plumbing::get_query_impl
50: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::typeck_item_bodies
51: rustc_session::utils::<impl rustc_session::session::Session>::time
52: rustc_typeck::check_crate
53: rustc_interface::passes::analysis
54: rustc_query_system::query::plumbing::get_query_impl
55: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::analysis
56: rustc_interface::passes::QueryContext::enter
57: rustc_interface::queries::<impl rustc_interface::interface::Compiler>::enter
58: rustc_span::with_source_map
59: rustc_interface::interface::create_compiler_and_run
60: rustc_span::with_session_globals
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md
note: rustc 1.54.0-nightly (ed597e7e1 2021-06-08) running on x86_64-unknown-linux-gnu
note: compiler flags: -Z mir-opt-level=3 -Z new-llvm-pass-manager=yes -Z unsound-mir-opts=yes -Z polonius=yes -Z polymorphize=yes -C debuginfo=2 -C opt-level=3 --crate-type staticlib
query stack during panic:
#0 [typeck] type-checking `main::{constant#0}`
#1 [eval_to_allocation_raw] const-evaluating + checking `main::{constant#0}`
#2 [eval_to_const_value_raw] simplifying constant for the type system `main::{constant#0}`
#3 [typeck] type-checking `main`
#4 [typeck_item_bodies] type-checking all item bodies
#5 [analysis] running analysis passes on this crate
end of query stack
error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0572`.