Closed
Description
Code
code from ./src/test/ui/parser/issue-35813-postfix-after-cast.rs
#![crate_type = "lib"]
#![feature(type_ascription)]
use std::future::Future;
use std::pin::Pin;
pub async fn cast_then_await() {
Box::pin(noop()) as Pin<Box<dyn Future<Output = ()>>>.await;
//~^ ERROR: casts cannot be followed by `.await`
}
Meta
The ICE was introduced in 941343e
Error output
error[E0670]: `async fn` is not permitted in Rust 2015
--> ./src/test/ui/parser/issue-35813-postfix-after-cast.rs:7:5
|
7 | pub async fn cast_then_await() {
| ^^^^^ to use `async fn`, switch to Rust 2018 or later
|
= help: set `edition = "2018"` in `Cargo.toml`
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
error: casts cannot be followed by a field access
--> ./src/test/ui/parser/issue-35813-postfix-after-cast.rs:8:5
|
8 | Box::pin(noop()) as Pin<Box<dyn Future<Output = ()>>>.await;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
help: try surrounding the expression in parentheses
|
8 | (Box::pin(noop()) as Pin<Box<dyn Future<Output = ()>>>).await;
| ^ ^
error[E0425]: cannot find function `noop` in this scope
--> ./src/test/ui/parser/issue-35813-postfix-after-cast.rs:8:14
|
8 | Box::pin(noop()) as Pin<Box<dyn Future<Output = ()>>>.await;
| ^^^^ not found in this scope
error: internal compiler error: compiler/rustc_middle/src/ty/subst.rs:529:17: type parameter `A/#1` (A/1) out of range when substituting, substs=[std::boxed::Box<dyn std::future::Future<Output = ()>>]
thread 'rustc' panicked at 'Box<Any>', /rustc/e0d9f793990d20f8f640097e28556886ba5362f0/compiler/rustc_errors/src/lib.rs:904: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.51.0-nightly (e0d9f7939 2021-02-01) running on x86_64-unknown-linux-gnu
query stack during panic:
#0 [typeck] type-checking `cast_then_await`
#1 [mir_built] building MIR for `cast_then_await`
end of query stack
error: aborting due to 4 previous errors
Some errors have detailed explanations: E0425, E0670.
For more information about an error, try `rustc --explain E0425`.
Backtrace
error: internal compiler error: compiler/rustc_middle/src/ty/subst.rs:529:17: type parameter `A/#1` (A/1) out of range when substituting, substs=[std::boxed::Box<dyn std::future::Future<Output = ()>>]
thread 'rustc' panicked at 'Box<Any>', /rustc/e0d9f793990d20f8f640097e28556886ba5362f0/compiler/rustc_errors/src/lib.rs:904:9
stack backtrace:
0: 0x7f9533c47f77 - std::backtrace_rs::backtrace::libunwind::trace::h8bc78f7bc1f75bdb
at /rustc/e0d9f793990d20f8f640097e28556886ba5362f0/library/std/src/../../backtrace/src/backtrace/libunwind.rs:90:5
1: 0x7f9533c47f77 - std::backtrace_rs::backtrace::trace_unsynchronized::ha4c961c9576f95ba
at /rustc/e0d9f793990d20f8f640097e28556886ba5362f0/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: 0x7f9533c47f77 - std::sys_common::backtrace::_print_fmt::hc20cfdc233d6eb02
at /rustc/e0d9f793990d20f8f640097e28556886ba5362f0/library/std/src/sys_common/backtrace.rs:67:5
3: 0x7f9533c47f77 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h04bea14549780a0f
at /rustc/e0d9f793990d20f8f640097e28556886ba5362f0/library/std/src/sys_common/backtrace.rs:46:22
4: 0x7f9533cb8e6c - core::fmt::write::h3868db8542c90941
at /rustc/e0d9f793990d20f8f640097e28556886ba5362f0/library/core/src/fmt/mod.rs:1096:17
5: 0x7f9533c3a7a2 - std::io::Write::write_fmt::h55dd75636eef6a5c
at /rustc/e0d9f793990d20f8f640097e28556886ba5362f0/library/std/src/io/mod.rs:1568:15
6: 0x7f9533c4bed5 - std::sys_common::backtrace::_print::h6439e8525077c7da
at /rustc/e0d9f793990d20f8f640097e28556886ba5362f0/library/std/src/sys_common/backtrace.rs:49:5
7: 0x7f9533c4bed5 - std::sys_common::backtrace::print::h02b685f728ce3931
at /rustc/e0d9f793990d20f8f640097e28556886ba5362f0/library/std/src/sys_common/backtrace.rs:36:9
8: 0x7f9533c4bed5 - std::panicking::default_hook::{{closure}}::h7c29625065fafae1
at /rustc/e0d9f793990d20f8f640097e28556886ba5362f0/library/std/src/panicking.rs:208:50
9: 0x7f9533c4ba33 - std::panicking::default_hook::hba441710bb71f4d5
at /rustc/e0d9f793990d20f8f640097e28556886ba5362f0/library/std/src/panicking.rs:225:9
10: 0x7f95344a50fb - rustc_driver::report_ice::h6029ac9bafd12823
11: 0x7f9533c4c7d6 - std::panicking::rust_panic_with_hook::ha936eb00e51bc4d9
at /rustc/e0d9f793990d20f8f640097e28556886ba5362f0/library/std/src/panicking.rs:595:17
12: 0x7f9535847f0e - std::panicking::begin_panic::{{closure}}::hdae1e04dfcfc639b
13: 0x7f9535847da9 - std::sys_common::backtrace::__rust_end_short_backtrace::hd6dc708cb1fca797
14: 0x7f9535847e12 - std::panicking::begin_panic::h59fa958ece2a476b
15: 0x7f9535aaf5cc - rustc_errors::HandlerInner::span_bug::h0ec02a9dae95f144
16: 0x7f9535ab01b3 - rustc_errors::Handler::span_bug::h05fed40c7f0d45e6
17: 0x7f9535ae7731 - rustc_middle::ty::context::tls::with_opt::hc2a6a371078389e7
18: 0x7f95373dad80 - rustc_middle::util::bug::opt_span_bug_fmt::h7e8cf5e228b48603
19: 0x7f9535aedeac - rustc_middle::util::bug::span_bug_fmt::h61c63dec8ea28135
20: 0x7f9536749594 - <rustc_middle::ty::subst::SubstFolder as rustc_middle::ty::fold::TypeFolder>::fold_ty::hc0107cf03ba5d160
21: 0x7f95367dbbc3 - rustc_middle::ty::FieldDef::ty::h994a756965c6f648
22: 0x7f95349f1a62 - rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_for_nested_field::hebcd688c86a9215f
23: 0x7f95349f1b1c - rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_for_nested_field::hebcd688c86a9215f
24: 0x7f9535f20cda - rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_kind::hd81ec70dfc42c6e0
25: 0x7f9535f18825 - rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_with_expectation::h07813aaad007b57a
26: 0x7f9535f2f3c6 - rustc_typeck::check::fn_ctxt::checks::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_stmt::hbf963b81ede9ede1
27: 0x7f9535f2fd3e - rustc_typeck::check::fn_ctxt::checks::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_block_with_expected::h526b5bb73f609d40
28: 0x7f9535f18825 - rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_with_expectation::h07813aaad007b57a
29: 0x7f9535f18825 - rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_with_expectation::h07813aaad007b57a
30: 0x7f9535f2fd72 - rustc_typeck::check::fn_ctxt::checks::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_block_with_expected::h526b5bb73f609d40
31: 0x7f9535f18825 - rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_with_expectation::h07813aaad007b57a
32: 0x7f9535f24f08 - rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_return_expr::h4ff0e0dbebbfe070
33: 0x7f9535f536c7 - rustc_typeck::check::check::check_fn::h00c489a359a0389f
34: 0x7f9535f141ea - rustc_typeck::check::closure::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_closure::h6ebe25414ecfb7d1
35: 0x7f9535f1bf95 - rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_kind::hd81ec70dfc42c6e0
36: 0x7f9535f18825 - rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_with_expectation::h07813aaad007b57a
37: 0x7f9535f2d20b - rustc_typeck::check::fn_ctxt::checks::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_argument_types::hf91eb4df9a1a17d0
38: 0x7f9535f12441 - rustc_typeck::check::callee::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::confirm_builtin_call::h8486a4c735573b0c
39: 0x7f9535f10bb6 - rustc_typeck::check::callee::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_call::h40de6b39d9bd3630
40: 0x7f9535f19233 - rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_kind::hd81ec70dfc42c6e0
41: 0x7f9535f18825 - rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_with_expectation::h07813aaad007b57a
42: 0x7f9535f24f08 - rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_return_expr::h4ff0e0dbebbfe070
43: 0x7f9535f536c7 - rustc_typeck::check::check::check_fn::h00c489a359a0389f
44: 0x7f953601e125 - rustc_infer::infer::InferCtxtBuilder::enter::h3e7527764ffa9f0a
45: 0x7f9536031a02 - rustc_typeck::check::typeck::h113247b58c447d56
46: 0x7f95373ef293 - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl::h27bb48bfa2deb7af
47: 0x7f95372aa5dc - rustc_middle::ty::query::plumbing::<impl rustc_query_system::query::QueryContext for rustc_middle::ty::context::TyCtxt>::start_query::{{closure}}::{{closure}}::{{closure}}::h9d95dbc61876508c
48: 0x7f95367a640f - rustc_query_system::query::plumbing::force_query_with_job::hf60085a2311782e6
49: 0x7f9536770d91 - rustc_query_system::query::plumbing::get_query_impl::h7fcccd7a01615de1
50: 0x7f95367d12cb - rustc_middle::ty::context::TyCtxt::typeck_opt_const_arg::hbae7650a277222f2
51: 0x7f95361d7802 - rustc_infer::infer::InferCtxtBuilder::enter::h306129bd89460654
52: 0x7f95361846af - rustc_mir_build::build::mir_built::ha7b1ee942555e765
53: 0x7f9536376575 - rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::mir_built>::compute::h48904240fdb27966
54: 0x7f95362678eb - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl::h72f394eff9f14175
55: 0x7f953629ecd9 - rustc_middle::ty::query::plumbing::<impl rustc_query_system::query::QueryContext for rustc_middle::ty::context::TyCtxt>::start_query::{{closure}}::{{closure}}::{{closure}}::h51de787e3e2f9a20
56: 0x7f953636d703 - rustc_query_system::query::plumbing::force_query_with_job::hf34e1ef95b731b82
57: 0x7f953635ff70 - rustc_query_system::query::plumbing::get_query_impl::ha20f54477ec1657a
58: 0x7f953638c1b5 - rustc_mir::transform::check_unsafety::unsafety_check_result::h1d95c842e338a43e
59: 0x7f953637c132 - core::ops::function::FnOnce::call_once::h7681b661fb0996b5
60: 0x7f95362c7fac - rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::unsafety_check_result>::compute::h114bce804998c2b5
61: 0x7f95362692b3 - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl::hd849e105cb9446f0
62: 0x7f953629ec17 - rustc_middle::ty::query::plumbing::<impl rustc_query_system::query::QueryContext for rustc_middle::ty::context::TyCtxt>::start_query::{{closure}}::{{closure}}::{{closure}}::h3189e2ef759c787a
63: 0x7f953636afb5 - rustc_query_system::query::plumbing::force_query_with_job::h55c14fdb18f9d21a
64: 0x7f95363664a7 - rustc_query_system::query::plumbing::get_query_impl::hd320c2b44dfe9e5c
65: 0x7f9536368ab1 - rustc_query_system::query::plumbing::ensure_query_impl::ha3094ecd18a36130
66: 0x7f95362e23d9 - rustc_mir::transform::mir_const::hb1c731185d52fb7c
67: 0x7f95362c7d65 - rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::mir_const>::compute::h2f92598270bc84fa
68: 0x7f95362678eb - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl::h72f394eff9f14175
69: 0x7f953629ecd9 - rustc_middle::ty::query::plumbing::<impl rustc_query_system::query::QueryContext for rustc_middle::ty::context::TyCtxt>::start_query::{{closure}}::{{closure}}::{{closure}}::h51de787e3e2f9a20
70: 0x7f953636d703 - rustc_query_system::query::plumbing::force_query_with_job::hf34e1ef95b731b82
71: 0x7f953635ff70 - rustc_query_system::query::plumbing::get_query_impl::ha20f54477ec1657a
72: 0x7f95362e2a7e - rustc_mir::transform::mir_promoted::hfd03776ab4ea681b
73: 0x7f9536390155 - rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::mir_promoted>::compute::h6265ff7afd976145
74: 0x7f9536267f5d - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl::h7d2a534fbe5e2b5d
75: 0x7f95362a3a3a - rustc_data_structures::stack::ensure_sufficient_stack::h11bea39979767815
76: 0x7f953636b903 - rustc_query_system::query::plumbing::force_query_with_job::h63d6d6b73f5ba35a
77: 0x7f9536351e95 - rustc_query_system::query::plumbing::get_query_impl::h47923df1dced4b9b
78: 0x7f95363a9a10 - rustc_mir::borrow_check::mir_borrowck::h20ccfe939d3a3a56
79: 0x7f95363905e2 - core::ops::function::FnOnce::call_once::h79d8e683c54ef83a
80: 0x7f9536c43abc - rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::mir_borrowck>::compute::h58752fbb19297f0e
81: 0x7f9536b85a53 - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl::h8acc93aecc8ed558
82: 0x7f9536bc7277 - rustc_middle::ty::query::plumbing::<impl rustc_query_system::query::QueryContext for rustc_middle::ty::context::TyCtxt>::start_query::{{closure}}::{{closure}}::{{closure}}::h29cb493336ddfe28
83: 0x7f9536c12618 - rustc_query_system::query::plumbing::force_query_with_job::h9d3c013bae4da5d6
84: 0x7f9536c00663 - rustc_query_system::query::plumbing::get_query_impl::hb26e3245160c76aa
85: 0x7f9536035530 - rustc_typeck::collect::type_of::type_of::ha4dcfab0f27f7038
86: 0x7f9536b8d560 - rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::type_of>::compute::hfb1e7762b6aa76f0
87: 0x7f9535f4aea9 - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl::he8ff1da88a1eccfd
88: 0x7f9535f834e0 - rustc_middle::ty::query::plumbing::<impl rustc_query_system::query::QueryContext for rustc_middle::ty::context::TyCtxt>::start_query::{{closure}}::{{closure}}::{{closure}}::h87b67c70bbe55b5f
89: 0x7f9535fea039 - rustc_query_system::query::plumbing::force_query_with_job::h95ec8f5b87f94ba9
90: 0x7f9535faf4f9 - rustc_query_system::query::plumbing::get_query_impl::h05c3a23c5103863d
91: 0x7f9535f56b7a - rustc_typeck::check::check::check_item_type::hafadd4e0d2dd7282
92: 0x7f9535f5efa2 - rustc_middle::hir::map::Map::visit_item_likes_in_module::hcabc11564900da0e
93: 0x7f9536b98c5c - rustc_typeck::check::check::check_mod_item_types::hd93010c12eac828e
94: 0x7f9536be4b9c - rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::check_mod_item_types>::compute::hffe8f3ab44cdce5e
95: 0x7f9535f4a1c3 - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl::hc50d188197926cdb
96: 0x7f9535f84775 - rustc_data_structures::stack::ensure_sufficient_stack::h76ec031ca3305d3e
97: 0x7f9535feb695 - rustc_query_system::query::plumbing::force_query_with_job::hc160624985ac14e9
98: 0x7f9535fe268f - rustc_query_system::query::plumbing::get_query_impl::hf100fe0884000017
99: 0x7f9535fe6007 - rustc_query_system::query::plumbing::ensure_query_impl::he59c10c66d1391ed
100: 0x7f9536bf0a21 - rustc_typeck::check_crate::h244544240d36d5a2
101: 0x7f9535e0bb8e - rustc_interface::passes::analysis::h464b015ec4fd1c4d
102: 0x7f953687e729 - rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::analysis>::compute::h488ee7db58e17433
103: 0x7f953687d28e - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl::h1ed17ff8c9334b72
104: 0x7f953687e807 - rustc_middle::ty::query::plumbing::<impl rustc_query_system::query::QueryContext for rustc_middle::ty::context::TyCtxt>::start_query::{{closure}}::{{closure}}::{{closure}}::hc07cb02ad54c9494
105: 0x7f9536863b99 - rustc_query_system::query::plumbing::force_query_with_job::h538a34873cd1fd46
106: 0x7f9536862f72 - rustc_query_system::query::plumbing::get_query_impl::h2b3ae432496b0c86
107: 0x7f953687e9ba - rustc_interface::passes::QueryContext::enter::h8fe0bfc836a76a84
108: 0x7f95368467d3 - rustc_interface::queries::<impl rustc_interface::interface::Compiler>::enter::h734423f4595e60ef
109: 0x7f953687e134 - rustc_span::with_source_map::h0b3994d7a2f67198
110: 0x7f95368477b7 - rustc_interface::interface::create_compiler_and_run::h4d7ef2129059135c
111: 0x7f953687edff - std::sys_common::backtrace::__rust_begin_short_backtrace::hcb0be55fe1a86377
112: 0x7f953686470a - core::ops::function::FnOnce::call_once{{vtable.shim}}::h0363f9b03bb4d9ca
113: 0x7f9533c5ccea - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h2895277a71fc2628
at /rustc/e0d9f793990d20f8f640097e28556886ba5362f0/library/alloc/src/boxed.rs:1521:9
114: 0x7f9533c5ccea - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h1b199c68a8d0f31e
at /rustc/e0d9f793990d20f8f640097e28556886ba5362f0/library/alloc/src/boxed.rs:1521:9
115: 0x7f9533c5ccea - std::sys::unix::thread::Thread::new::thread_start::h565bef3956c58d58
at /rustc/e0d9f793990d20f8f640097e28556886ba5362f0/library/std/src/sys/unix/thread.rs:71:17
116: 0x7f9533b4d3e9 - start_thread
117: 0x7f9533a6a293 - __GI___clone
118: 0x0 - <unknown>
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.51.0-nightly (e0d9f7939 2021-02-01) running on x86_64-unknown-linux-gnu
query stack during panic:
#0 [typeck] type-checking `cast_then_await`
#1 [mir_built] building MIR for `cast_then_await`
#2 [unsafety_check_result] unsafety-checking `cast_then_await`
#3 [mir_const] processing MIR for `cast_then_await`
#4 [mir_promoted] processing `cast_then_await`
#5 [mir_borrowck] borrow-checking `cast_then_await`
#6 [type_of] computing type of `cast_then_await::{opaque#0}`
#7 [check_mod_item_types] checking item types in top-level module
#8 [analysis] running analysis passes on this crate
end of query stack
error: aborting due to 4 previous errors
Some errors have detailed explanations: E0425, E0670.
For more information about an error, try `rustc --explain E0425`.