Rollup merge of #78739 - hameerabbasi:issue-78654, r=nikomatsakis
Fix ICE on type error in async function Fixes #78654
This commit is contained in:
commit
171d29c9c5
@ -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"
|
||||||
|
19
src/test/ui/async-await/issues/issue-78654.full.stderr
Normal file
19
src/test/ui/async-await/issues/issue-78654.full.stderr
Normal 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`.
|
19
src/test/ui/async-await/issues/issue-78654.min.stderr
Normal file
19
src/test/ui/async-await/issues/issue-78654.min.stderr
Normal 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`.
|
16
src/test/ui/async-await/issues/issue-78654.rs
Normal file
16
src/test/ui/async-await/issues/issue-78654.rs
Normal 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() {}
|
Loading…
Reference in New Issue
Block a user