mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-04 19:29:07 +00:00
bail in collect_trait_impl_trait_tys if signatures reference errors
This commit is contained in:
parent
ba64ba8b0d
commit
bcaf210575
@ -373,6 +373,7 @@ pub fn collect_trait_impl_trait_tys<'tcx>(
|
|||||||
tcx.fn_sig(impl_m.def_id),
|
tcx.fn_sig(impl_m.def_id),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
impl_sig.error_reported()?;
|
||||||
let impl_return_ty = impl_sig.output();
|
let impl_return_ty = impl_sig.output();
|
||||||
|
|
||||||
// Normalize the trait signature with liberated bound vars, passing it through
|
// Normalize the trait signature with liberated bound vars, passing it through
|
||||||
@ -387,6 +388,7 @@ pub fn collect_trait_impl_trait_tys<'tcx>(
|
|||||||
)
|
)
|
||||||
.fold_with(&mut collector);
|
.fold_with(&mut collector);
|
||||||
let trait_sig = ocx.normalize(&norm_cause, param_env, unnormalized_trait_sig);
|
let trait_sig = ocx.normalize(&norm_cause, param_env, unnormalized_trait_sig);
|
||||||
|
trait_sig.error_reported()?;
|
||||||
let trait_return_ty = trait_sig.output();
|
let trait_return_ty = trait_sig.output();
|
||||||
|
|
||||||
let wf_tys = FxIndexSet::from_iter(
|
let wf_tys = FxIndexSet::from_iter(
|
||||||
|
16
src/test/ui/async-await/in-trait/bad-signatures.rs
Normal file
16
src/test/ui/async-await/in-trait/bad-signatures.rs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
// edition:2021
|
||||||
|
|
||||||
|
#![feature(async_fn_in_trait)]
|
||||||
|
//~^ WARN the feature `async_fn_in_trait` is incomplete
|
||||||
|
|
||||||
|
trait MyTrait {
|
||||||
|
async fn bar(&abc self);
|
||||||
|
//~^ ERROR expected identifier, found keyword `self`
|
||||||
|
//~| ERROR expected one of `:`, `@`, or `|`, found keyword `self`
|
||||||
|
}
|
||||||
|
|
||||||
|
impl MyTrait for () {
|
||||||
|
async fn bar(&self) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
26
src/test/ui/async-await/in-trait/bad-signatures.stderr
Normal file
26
src/test/ui/async-await/in-trait/bad-signatures.stderr
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
error: expected identifier, found keyword `self`
|
||||||
|
--> $DIR/bad-signatures.rs:7:23
|
||||||
|
|
|
||||||
|
LL | async fn bar(&abc self);
|
||||||
|
| ^^^^ expected identifier, found keyword
|
||||||
|
|
||||||
|
error: expected one of `:`, `@`, or `|`, found keyword `self`
|
||||||
|
--> $DIR/bad-signatures.rs:7:23
|
||||||
|
|
|
||||||
|
LL | async fn bar(&abc self);
|
||||||
|
| -----^^^^
|
||||||
|
| | |
|
||||||
|
| | expected one of `:`, `@`, or `|`
|
||||||
|
| help: declare the type after the parameter binding: `<identifier>: <type>`
|
||||||
|
|
||||||
|
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/bad-signatures.rs:3:12
|
||||||
|
|
|
||||||
|
LL | #![feature(async_fn_in_trait)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
|
||||||
|
= note: `#[warn(incomplete_features)]` on by default
|
||||||
|
|
||||||
|
error: aborting due to 2 previous errors; 1 warning emitted
|
||||||
|
|
Loading…
Reference in New Issue
Block a user