Skip to content

Nightly async fn ICE #65159

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Closed
DutchGhost opened this issue Oct 6, 2019 · 3 comments · Fixed by #65235
Closed

Nightly async fn ICE #65159

DutchGhost opened this issue Oct 6, 2019 · 3 comments · Fixed by #65235
Assignees
Labels
A-async-await Area: Async & Await AsyncAwait-Polish Async-await issues that are part of the "polish" area AsyncAwait-Triaged Async-await issues that have been triaged during a working group meeting. C-bug Category: This is a bug. glacier ICE tracked in rust-lang/glacier. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@DutchGhost
Copy link
Contributor

The following ICE's in nightly:

async fn copy() -> Result<()>
{
    Ok(())
}
Backtrace:
  Compiling playground v0.0.1 (/playground)
error[E0107]: wrong number of type arguments: expected 2, found 1
 --> src/lib.rs:1:20
  |
1 | async fn copy() -> Result<()>
  |                    ^^^^^^^^^^ expected 2 type arguments

thread 'rustc' panicked at 'called `Option::unwrap()` on a `None` value', src/libcore/option.rs:378:21
stack backtrace:
   0: backtrace::backtrace::libunwind::trace
             at /cargo/registry/src/github.heygears.com-1ecc6299db9ec823/backtrace-0.3.37/src/backtrace/libunwind.rs:88
   1: backtrace::backtrace::trace_unsynchronized
             at /cargo/registry/src/github.heygears.com-1ecc6299db9ec823/backtrace-0.3.37/src/backtrace/mod.rs:66
   2: std::sys_common::backtrace::_print_fmt
             at src/libstd/sys_common/backtrace.rs:76
   3: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
             at src/libstd/sys_common/backtrace.rs:60
   4: core::fmt::write
             at src/libcore/fmt/mod.rs:1028
   5: std::io::Write::write_fmt
             at src/libstd/io/mod.rs:1412
   6: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:64
   7: std::sys_common::backtrace::print
             at src/libstd/sys_common/backtrace.rs:49
   8: std::panicking::default_hook::{{closure}}
             at src/libstd/panicking.rs:196
   9: std::panicking::default_hook
             at src/libstd/panicking.rs:210
  10: rustc_driver::report_ice
  11: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:477
  12: std::panicking::continue_panic_fmt
             at src/libstd/panicking.rs:380
  13: rust_begin_unwind
             at src/libstd/panicking.rs:307
  14: core::panicking::panic_fmt
             at src/libcore/panicking.rs:84
  15: core::panicking::panic
             at src/libcore/panicking.rs:49
  16: rustc_typeck::check::closure::<impl rustc_typeck::check::FnCtxt>::supplied_sig_of_closure
  17: rustc_typeck::check::closure::<impl rustc_typeck::check::FnCtxt>::check_expr_closure
  18: rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_kind
  19: rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation_and_needs
  20: rustc_typeck::check::FnCtxt::check_argument_types
  21: rustc_typeck::check::callee::<impl rustc_typeck::check::FnCtxt>::confirm_builtin_call
  22: rustc_typeck::check::callee::<impl rustc_typeck::check::FnCtxt>::check_call
  23: rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_kind
  24: rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_expr_with_expectation_and_needs
  25: rustc_typeck::check::expr::<impl rustc_typeck::check::FnCtxt>::check_return_expr
  26: rustc_typeck::check::check_fn
  27: rustc::ty::context::GlobalCtxt::enter_local
  28: rustc_typeck::check::typeck_tables_of
  29: rustc::ty::query::__query_compute::typeck_tables_of
  30: rustc::ty::query::<impl rustc::ty::query::config::QueryAccessors for rustc::ty::query::queries::typeck_tables_of>::compute
  31: rustc::dep_graph::graph::DepGraph::with_task_impl
  32: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::get_query
  33: rustc::ty::query::__query_compute::typeck_tables_of
  34: rustc::ty::query::<impl rustc::ty::query::config::QueryAccessors for rustc::ty::query::queries::typeck_tables_of>::compute
  35: rustc::dep_graph::graph::DepGraph::with_task_impl
  36: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::get_query
  37: rustc_typeck::collect::checked_type_of
  38: rustc_typeck::collect::type_of
  39: rustc::ty::query::__query_compute::type_of
  40: rustc::ty::query::<impl rustc::ty::query::config::QueryAccessors for rustc::ty::query::queries::type_of>::compute
  41: rustc::dep_graph::graph::DepGraph::with_task_impl
  42: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::get_query
  43: rustc::hir::intravisit::walk_expr
  44: rustc::hir::intravisit::Visitor::visit_fn
  45: rustc::hir::intravisit::walk_item
  46: <rustc_typeck::collect::CollectItemTypesVisitor as rustc::hir::intravisit::Visitor>::visit_item
  47: rustc::hir::map::Map::visit_item_likes_in_module
  48: rustc_typeck::collect::collect_mod_item_types
  49: rustc::ty::query::__query_compute::collect_mod_item_types
  50: rustc::ty::query::<impl rustc::ty::query::config::QueryAccessors for rustc::ty::query::queries::collect_mod_item_types>::compute
  51: rustc::dep_graph::graph::DepGraph::with_task_impl
  52: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::get_query
  53: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::ensure_query
  54: rustc_typeck::check_crate::{{closure}}::{{closure}}
  55: rustc::util::common::time
  56: rustc_typeck::check_crate
  57: rustc_interface::passes::analysis
  58: rustc::ty::query::__query_compute::analysis
  59: rustc::dep_graph::graph::DepGraph::with_task_impl
  60: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::get_query
  61: rustc_interface::passes::BoxedGlobalCtxt::access::{{closure}}
  62: rustc_interface::passes::create_global_ctxt::{{closure}}
  63: rustc_interface::interface::run_compiler_in_existing_thread_pool
  64: std::thread::local::LocalKey<T>::with
  65: syntax::with_globals
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

error: internal compiler error: unexpected panic

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.40.0-nightly (787005079 2019-10-04) running on x86_64-unknown-linux-gnu

note: compiler flags: -C codegen-units=1 -C debuginfo=2 --crate-type lib

note: some of the compiler flags provided by cargo are hidden

Beta just errors normally, complaining that Result takes two parameters.

@JohnTitor JohnTitor added A-async-await Area: Async & Await C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ labels Oct 6, 2019
@jonas-schievink jonas-schievink added I-nominated T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Oct 6, 2019
@csmoe csmoe added the E-needs-bisection Call for participation: This issue needs bisection: https://github.com/rust-lang/cargo-bisect-rustc label Oct 6, 2019
@csmoe
Copy link
Member

csmoe commented Oct 6, 2019

@nikomatsakis this commit seems the one to blame.

let output_ty = self.obligations_for_self_ty(ret_vid)
.find_map(|(_, obligation)| {
if let ty::Predicate::Projection(ref proj_predicate) = obligation.predicate {
self.deduce_future_output_from_projection(
obligation.cause.span,
proj_predicate
)
} else {
None
}
})
.unwrap();

tested the snippet above with RUSTC_LOG=rustc_typeck::check=debug, rustc complained:

error[E0391]: cycle detected when processing `foo::{{opaque}}#0`
 --> t.rs:3:19
  |
3 | async fn foo() -> std::result::Result<()> {
  |                   ^^^^^^^^^^^^^^^^^^^^^^^
  |
note: ...which requires processing `foo::{{opaque}}#0`...
 --> t.rs:3:19
  |
3 | async fn foo() -> std::result::Result<()> {
  |                   ^^^^^^^^^^^^^^^^^^^^^^^
note: ...which requires processing `foo::{{opaque}}#0`...
 --> t.rs:3:19
  |
3 | async fn foo() -> std::result::Result<()> {
  |                   ^^^^^^^^^^^^^^^^^^^^^^^
  = note: ...which again requires processing `foo::{{opaque}}#0`, completing the cycle
note: cycle used when processing `foo`
 --> t.rs:3:1
  |
3 | async fn foo() -> std::result::Result<()> {
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RUSTC_LOG=rustc_typeck::check=debug error[E0107]: wrong number of type arguments: expected 2, found 1 --> t.rs:3:19 | 3 | async fn foo() -> std::result::Result<()> { | ^^^^^^^^^^^^^^^^^^^^^^^ expected 2 type arguments

[DEBUG rustc_typeck::check] check_fn(sig=([]; c_variadic: false)->impl std::future::Future, fn_id=HirId { owner: DefIndex(13), local_id: 0 }, param_env=ParamEnv { caller_bounds: [], reveal: UserFacing, def_id: None })
[DEBUG rustc_typeck::check] instantiate_opaque_types_from_value(parent_def_id=DefId(0:13 ~ t[317d]::foo[0]), value=impl std::future::Future)
[DEBUG rustc_typeck::check] check_fn: declared_ret_ty: impl std::future::Future, revealed_ret_ty: _
[DEBUG rustc_typeck::check::expr] >> type-checking: expr=expr(HirId { owner: DefIndex(13), local_id: 16 }: ::std::future::from_generator(move || )) expected=ExpectHasType()
[DEBUG rustc_typeck::check::expr] check_expr_kind(expr=expr(HirId { owner: DefIndex(13), local_id: 16 }: ::std::future::from_generator(move || )), expected=ExpectHasType(
), needs=None)
[DEBUG rustc_typeck::check::expr] >> type-checking: expr=expr(HirId { owner: DefIndex(13), local_id: 15 }: ::std::future::from_generator) expected=NoExpectation
[DEBUG rustc_typeck::check::expr] check_expr_kind(expr=expr(HirId { owner: DefIndex(13), local_id: 15 }: ::std::future::from_generator), expected=NoExpectation, needs=None)
[DEBUG rustc_typeck::check] resolve_ty_and_res_ufcs: qpath=Resolved(None, path(::std::future::from_generator)) hir_id=HirId { owner: DefIndex(13), local_id: 15 } span=t.rs:3:43: 5:2
[DEBUG rustc_typeck::check] instantiate_value_path(segments=[PathSegment { ident: {{root}}#0, hir_id: Some(HirId { owner: DefIndex(13), local_id: 11 }), res: Some(Err), args: None, infer_args: true }, PathSegment { ident: std#0, hir_id: Some(HirId { owner: DefIndex(13), local_id: 12 }), res: Some(Def(Mod, DefId(1:0 ~ std[5025]))), args: None, infer_args: true }, PathSegment { ident: future#0, hir_id: Some(HirId { owner: DefIndex(13), local_id: 13 }), res: Some(Def(Mod, DefId(1:5334 ~ std[5025]::future[0]))), args: None, infer_args: true }, PathSegment { ident: from_generator#0, hir_id: Some(HirId { owner: DefIndex(13), local_id: 14 }), res: Some(Err), args: None, infer_args: true }], self_ty=None, res=Def(Fn, DefId(1:5348 ~ std[5025]::future[0]::from_generator[0])), hir_id=HirId { owner: DefIndex(13), local_id: 15 })
[DEBUG rustc_typeck::check] write_user_type_annotation_from_substs: hir_id=HirId { owner: DefIndex(13), local_id: 15 } def_id=DefId(1:5348 ~ std[5025]::future[0]::from_generator[0]) substs=[] user_self_ty=None in fcx 0x70000faed8d0
[DEBUG rustc_typeck::check] write_user_type_annotation_from_substs: canonicalized=Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }], value: TypeOf(DefId(1:5348 ~ std[5025]::future[0]::from_generator[0]), UserSubsts { substs: [^0], user_self_ty: None }) }
[DEBUG rustc_typeck::check] write_user_type_annotation: hir_id=HirId { owner: DefIndex(13), local_id: 15 } canonical_user_type_annotation=Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }], value: TypeOf(DefId(1:5348 ~ std[5025]::future[0]::from_generator[0]), UserSubsts { substs: [^0], user_self_ty: None }) } tag=0x70000faed8d0
[DEBUG rustc_typeck::check] write_user_type_annotation: skipping identity substs
[DEBUG rustc_typeck::check] instantiate_bounds(bounds=GenericPredicates { parent: None, predicates: [(Binder(TraitPredicate()), /Users/pengtangjin/oss/rust/src/libstd/future.rs:21:23: 21:24), (Binder(TraitPredicate()), /Users/pengtangjin/oss/rust/src/libstd/future.rs:21:26: 21:47), (Binder(ProjectionPredicate(ProjectionTy { substs: [T], item_def_id: DefId(2:1765 ~ core[6f86]::ops[0]::generator[0]::Generator[0]::Yield[0]) }, ())), /Users/pengtangjin/oss/rust/src/libstd/future.rs:21:36: 21:46)] }, substs=[
]) = InstantiatedPredicates { predicates: [Binder(TraitPredicate(<_ as std::marker::Sized>)), Binder(TraitPredicate(<_ as std::ops::Generator>)), Binder(ProjectionPredicate(ProjectionTy { substs: [], item_def_id: DefId(2:1765 ~ core[6f86]::ops[0]::generator[0]::Generator[0]::Yield[0]) }, ()))] }, [/Users/pengtangjin/oss/rust/src/libstd/future.rs:21:23: 21:24, /Users/pengtangjin/oss/rust/src/libstd/future.rs:21:26: 21:47, /Users/pengtangjin/oss/rust/src/libstd/future.rs:21:36: 21:46]
[DEBUG rustc_typeck::check] register_predicate(Obligation(predicate=Binder(TraitPredicate(<
as std::marker::Sized>)), depth=0))
[DEBUG rustc_typeck::check] register_predicate(Obligation(predicate=Binder(TraitPredicate(<_ as std::ops::Generator>)), depth=0))
[DEBUG rustc_typeck::check] register_predicate(Obligation(predicate=Binder(ProjectionPredicate(ProjectionTy { substs: [], item_def_id: DefId(2:1765 ~ core[6f86]::ops[0]::generator[0]::Generator[0]::Yield[0]) }, ())), depth=0))
[DEBUG rustc_typeck::check] instantiate_type_scheme(value=fn(
) -> impl std::future::Future {std::future::from_generator::<>}, substs=[]) = fn() -> impl std::future::Future {std::future::from_generator::<>}
[DEBUG rustc_typeck::check] instantiate_value_path: type of HirId { owner: DefIndex(13), local_id: 15 } is fn() -> impl std::future::Future {std::future::from_generator::<>}
[DEBUG rustc_typeck::check] write_substs(HirId { owner: DefIndex(13), local_id: 15 }, []) in fcx 0x70000faed8d0
[DEBUG rustc_typeck::check] register_predicate(Obligation(predicate=WellFormed(
), depth=0))
[DEBUG rustc_typeck::check] write_ty(HirId { owner: DefIndex(13), local_id: 15 }, fn() -> impl std::future::Future {std::future::from_generator::<>}) in fcx 0x70000faed8d0
[DEBUG rustc_typeck::check::expr] type of expr ::std::future::from_generator (hir_id=HirId { owner: DefIndex(13), local_id: 15 }) is...
[DEBUG rustc_typeck::check::expr] ... fn() -> impl std::future::Future {std::future::from_generator::<>}, expected is NoExpectation
[DEBUG rustc_typeck::check] resolve_type_vars_with_obligations(ty=fn() -> impl std::future::Future {std::future::from_generator::<>})
[DEBUG rustc_typeck::check] resolve_type_vars_with_obligations: ty=fn() -> impl std::future::Future {std::future::from_generator::<>}
[DEBUG rustc_typeck::check::autoderef] autoderef: steps=[], cur_ty=fn() -> impl std::future::Future {std::future::from_generator::<>}
[DEBUG rustc_typeck::check::autoderef] autoderef stage #0 is fn() -> impl std::future::Future {std::future::from_generator::<>}
[DEBUG rustc_typeck::check] resolve_type_vars_with_obligations(ty=fn() -> impl std::future::Future {std::future::from_generator::<>})
[DEBUG rustc_typeck::check] resolve_type_vars_with_obligations: ty=fn() -> impl std::future::Future {std::future::from_generator::<>}
[DEBUG rustc_typeck::check::callee] try_overloaded_call_step(call_expr=expr(HirId { owner: DefIndex(13), local_id: 16 }: ::std::future::from_generator(move || )), adjusted_ty=fn() -> impl std::future::Future {std::future::from_generator::<>})
[DEBUG rustc_typeck::check] apply_adjustments(expr=expr(HirId { owner: DefIndex(13), local_id: 15 }: ::std::future::from_generator), adj=[])
[DEBUG rustc_typeck::check] resolve_type_vars_with_obligations(ty=impl std::future::Future)
[DEBUG rustc_typeck::check] resolve_type_vars_with_obligations: ty=impl std::future::Future
[DEBUG rustc_typeck::check] expected_inputs_for_expected_output(formal=[] -> impl std::future::Future, expected=[] -> ExpectHasType())
[DEBUG rustc_typeck::check] register_predicate(Obligation(predicate=WellFormed(
), depth=0))
[DEBUG rustc_typeck::check] check_argument_types: formal_tys=[""]
[DEBUG rustc_typeck::check] check_closures=false
[DEBUG rustc_typeck::check] check_closures=true
[DEBUG rustc_typeck::check] checking the argument
[DEBUG rustc_typeck::check::expr] >> type-checking: expr=expr(HirId { owner: DefIndex(13), local_id: 10 }: move ||) expected=ExpectHasType(
)
[DEBUG rustc_typeck::check::expr] check_expr_kind(expr=expr(HirId { owner: DefIndex(13), local_id: 10 }: move ||), expected=ExpectHasType(), needs=None)
[DEBUG rustc_typeck::check::closure] check_expr_closure(expr=expr(HirId { owner: DefIndex(13), local_id: 10 }: move ||),expected=ExpectHasType(
))
[DEBUG rustc_typeck::check::closure] deduce_expectations_from_expected_type(expected_ty=)
[DEBUG rustc_typeck::check] obligations_for_self_ty: self_ty=
#1t ty_var_root=#1t pending_obligations=[Obligation(predicate=Binder(TraitPredicate(< as std::marker::Sized>)), depth=0), Obligation(predicate=Binder(TraitPredicate(<_ as std::ops::Generator>)), depth=0), Obligation(predicate=Binder(ProjectionPredicate(ProjectionTy { substs: [], item_def_id: DefId(2:1765 ~ core[6f86]::ops[0]::generator[0]::Generator[0]::Yield[0]) }, ())), depth=0), Obligation(predicate=WellFormed(), depth=0)]
[DEBUG rustc_typeck::check] self_type_matches_expected_vid(trait_ref=Binder(<_ as std::marker::Sized>), self_ty=, expected_vid=#1t)
[DEBUG rustc_typeck::check] self_type_matches_expected_vid - found_vid=#1t
[DEBUG rustc_typeck::check::closure] deduce_expectations_from_obligations: obligation.predicate=Binder(TraitPredicate(<
as std::marker::Sized>))
[DEBUG rustc_typeck::check] self_type_matches_expected_vid(trait_ref=Binder(<_ as std::ops::Generator>), self_ty=, expected_vid=#1t)
[DEBUG rustc_typeck::check] self_type_matches_expected_vid - found_vid=#1t
[DEBUG rustc_typeck::check::closure] deduce_expectations_from_obligations: obligation.predicate=Binder(TraitPredicate(<
as std::ops::Generator>))
[DEBUG rustc_typeck::check] self_type_matches_expected_vid(trait_ref=Binder(<_ as std::ops::Generator>), self_ty=, expected_vid=#1t)
[DEBUG rustc_typeck::check] self_type_matches_expected_vid - found_vid=#1t
[DEBUG rustc_typeck::check::closure] deduce_expectations_from_obligations: obligation.predicate=Binder(ProjectionPredicate(ProjectionTy { substs: [
], item_def_id: DefId(2:1765 ~ core[6f86]::ops[0]::generator[0]::Generator[0]::Yield[0]) }, ()))
[DEBUG rustc_typeck::check::closure] deduce_sig_from_projection(Binder(ProjectionPredicate(ProjectionTy { substs: [], item_def_id: DefId(2:1765 ~ core[6f86]::ops[0]::generator[0]::Generator[0]::Yield[0]) }, ())))
[DEBUG rustc_typeck::check::closure] deduce_sig_from_projection: not return assoc item of generator
[DEBUG rustc_typeck::check] obligations_for_self_ty: self_ty=
#1t ty_var_root=#1t pending_obligations=[Obligation(predicate=Binder(TraitPredicate(< as std::marker::Sized>)), depth=0), Obligation(predicate=Binder(TraitPredicate(<_ as std::ops::Generator>)), depth=0), Obligation(predicate=Binder(ProjectionPredicate(ProjectionTy { substs: [], item_def_id: DefId(2:1765 ~ core[6f86]::ops[0]::generator[0]::Generator[0]::Yield[0]) }, ())), depth=0), Obligation(predicate=WellFormed(), depth=0)]
[DEBUG rustc_typeck::check] self_type_matches_expected_vid(trait_ref=Binder(<_ as std::marker::Sized>), self_ty=, expected_vid=#1t)
[DEBUG rustc_typeck::check] self_type_matches_expected_vid - found_vid=#1t
[DEBUG rustc_typeck::check] self_type_matches_expected_vid(trait_ref=Binder(<
as std::ops::Generator>), self_ty=, expected_vid=#1t)
[DEBUG rustc_typeck::check] self_type_matches_expected_vid - found_vid=#1t
[DEBUG rustc_typeck::check] self_type_matches_expected_vid(trait_ref=Binder(<
as std::ops::Generator>), self_ty=, expected_vid=#1t)
[DEBUG rustc_typeck::check] self_type_matches_expected_vid - found_vid=#1t
[DEBUG rustc_typeck::check::closure] check_closure(opt_kind=None, expected_sig=None)
[DEBUG rustc_typeck::check::closure] sig_of_closure_no_expectation()
[DEBUG rustc_typeck::check::closure] supplied_sig_of_closure(decl=FnDecl { inputs: [], output: DefaultReturn(t.rs:3:43: 5:2), c_variadic: false, implicit_self: None }, body.generator_kind=Some(Async(Fn)))
[DEBUG rustc_typeck::check::closure] supplied_sig_of_closure: closure is async fn body
[DEBUG rustc_typeck::check::closure] deduce_future_output_from_obligations(expr_def_id=DefId(0:15 ~ t[317d]::foo[0]::{{closure}}[0]))
[DEBUG rustc_typeck::check] obligations_for_self_ty: self_ty=
#0t ty_var_root=#0t pending_obligations=[Obligation(predicate=Binder(TraitPredicate(< as std::marker::Sized>)), depth=0), Obligation(predicate=Binder(TraitPredicate(<_ as std::ops::Generator>)), depth=0), Obligation(predicate=Binder(ProjectionPredicate(ProjectionTy { substs: [], item_def_id: DefId(2:1765 ~ core[6f86]::ops[0]::generator[0]::Generator[0]::Yield[0]) }, ())), depth=0), Obligation(predicate=WellFormed(), depth=0)]
[DEBUG rustc_typeck::check] self_type_matches_expected_vid(trait_ref=Binder(<_ as std::marker::Sized>), self_ty=, expected_vid=#0t)
[DEBUG rustc_typeck::check] self_type_matches_expected_vid - found_vid=#1t
[DEBUG rustc_typeck::check] self_type_matches_expected_vid(trait_ref=Binder(<
as std::ops::Generator>), self_ty=, expected_vid=#0t)
[DEBUG rustc_typeck::check] self_type_matches_expected_vid - found_vid=#1t
[DEBUG rustc_typeck::check] self_type_matches_expected_vid(trait_ref=Binder(<
as std::ops::Generator>), self_ty=, expected_vid=#0t)
[DEBUG rustc_typeck::check] self_type_matches_expected_vid - found_vid=_#1t
thread 'rustc' panicked at 'called Option::unwrap() on a None value', src/libcore/option.rs:378:21

@csmoe csmoe removed the E-needs-bisection Call for participation: This issue needs bisection: https://github.com/rust-lang/cargo-bisect-rustc label Oct 6, 2019
@nikomatsakis nikomatsakis self-assigned this Oct 8, 2019
@nikomatsakis nikomatsakis added AsyncAwait-Polish Async-await issues that are part of the "polish" area AsyncAwait-Triaged Async-await issues that have been triaged during a working group meeting. and removed I-nominated labels Oct 8, 2019
@nikomatsakis
Copy link
Contributor

I'll investigate tomorrow.

@nikomatsakis
Copy link
Contributor

Pending fix in #65235

Centril added a commit to Centril/rust that referenced this issue Oct 9, 2019
…eturn-ice, r=cramertj

don't assume we can *always* find a return type hint in async fn

In particular, we sometimes cannot if there is an earlier error.

Fixes rust-lang#65159

r? @cramertj, who reviewed the original PR
@rust-lang-glacier-bot rust-lang-glacier-bot added the glacier ICE tracked in rust-lang/glacier. label Oct 15, 2019
Centril added a commit to Centril/rust that referenced this issue Oct 15, 2019
…eturn-ice, r=cramertj

don't assume we can *always* find a return type hint in async fn

In particular, we sometimes cannot if there is an earlier error.

Fixes rust-lang#65159

r? @cramertj, who reviewed the original PR
Centril added a commit to Centril/rust that referenced this issue Oct 15, 2019
…eturn-ice, r=cramertj

don't assume we can *always* find a return type hint in async fn

In particular, we sometimes cannot if there is an earlier error.

Fixes rust-lang#65159

r? @cramertj, who reviewed the original PR
@bors bors closed this as completed in bbf4eb3 Oct 16, 2019
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
A-async-await Area: Async & Await AsyncAwait-Polish Async-await issues that are part of the "polish" area AsyncAwait-Triaged Async-await issues that have been triaged during a working group meeting. C-bug Category: This is a bug. glacier ICE tracked in rust-lang/glacier. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants