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_vid = match *ret_ty.kind() {
|
||||
ty::Infer(ty::TyVar(ret_vid)) => ret_vid,
|
||||
ty::Error(_) => return None,
|
||||
_ => span_bug!(
|
||||
self.tcx.def_span(expr_def_id),
|
||||
"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