Rollup merge of #78739 - hameerabbasi:issue-78654, r=nikomatsakis

Fix ICE on type error in async function

Fixes #78654
This commit is contained in:
Mara Bos 2020-11-05 10:29:57 +01:00 committed by GitHub
commit 171d29c9c5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 55 additions and 0 deletions

View File

@ -605,6 +605,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
let ret_ty = self.inh.infcx.shallow_resolve(ret_ty); let ret_ty = self.inh.infcx.shallow_resolve(ret_ty);
let ret_vid = match *ret_ty.kind() { let ret_vid = match *ret_ty.kind() {
ty::Infer(ty::TyVar(ret_vid)) => ret_vid, ty::Infer(ty::TyVar(ret_vid)) => ret_vid,
ty::Error(_) => return None,
_ => span_bug!( _ => span_bug!(
self.tcx.def_span(expr_def_id), self.tcx.def_span(expr_def_id),
"async fn generator return type not an inference variable" "async fn generator return type not an inference variable"

View File

@ -0,0 +1,19 @@
error[E0573]: expected type, found built-in attribute `feature`
--> $DIR/issue-78654.rs:10:15
|
LL | impl<const H: feature> Foo {
| ^^^^^^^ not a type
error[E0207]: the const parameter `H` is not constrained by the impl trait, self type, or predicates
--> $DIR/issue-78654.rs:10:12
|
LL | impl<const H: feature> Foo {
| ^ unconstrained const parameter
|
= note: expressions using a const parameter must map each value to a distinct output value
= note: proving the result of expressions other than the parameter are unique is not supported
error: aborting due to 2 previous errors
Some errors have detailed explanations: E0207, E0573.
For more information about an error, try `rustc --explain E0207`.

View File

@ -0,0 +1,19 @@
error[E0573]: expected type, found built-in attribute `feature`
--> $DIR/issue-78654.rs:10:15
|
LL | impl<const H: feature> Foo {
| ^^^^^^^ not a type
error[E0207]: the const parameter `H` is not constrained by the impl trait, self type, or predicates
--> $DIR/issue-78654.rs:10:12
|
LL | impl<const H: feature> Foo {
| ^ unconstrained const parameter
|
= note: expressions using a const parameter must map each value to a distinct output value
= note: proving the result of expressions other than the parameter are unique is not supported
error: aborting due to 2 previous errors
Some errors have detailed explanations: E0207, E0573.
For more information about an error, try `rustc --explain E0207`.

View File

@ -0,0 +1,16 @@
// edition:2018
// revisions: full min
#![cfg_attr(full, feature(const_generics))]
#![cfg_attr(full, allow(incomplete_features))]
#![cfg_attr(min, feature(min_const_generics))]
struct Foo;
impl<const H: feature> Foo {
//~^ ERROR: expected type, found built-in attribute `feature`
//~^^ ERROR: the const parameter `H` is not constrained by the impl trait, self type, or predicates
async fn biz() {}
}
fn main() {}