Rollup merge of #144589 - compiler-errors:postfix-yield-after-cast, r=petrochenkov
Account for `.yield` in illegal postfix operator message Fixes rust-lang/rust#144527
This commit is contained in:
@@ -785,9 +785,13 @@ impl<'a> Parser<'a> {
|
||||
ExprKind::Call(_, _) => "a function call",
|
||||
ExprKind::Await(_, _) => "`.await`",
|
||||
ExprKind::Use(_, _) => "`.use`",
|
||||
ExprKind::Yield(YieldKind::Postfix(_)) => "`.yield`",
|
||||
ExprKind::Match(_, _, MatchKind::Postfix) => "a postfix match",
|
||||
ExprKind::Err(_) => return Ok(with_postfix),
|
||||
_ => unreachable!("parse_dot_or_call_expr_with_ shouldn't produce this"),
|
||||
_ => unreachable!(
|
||||
"did not expect {:?} as an illegal postfix operator following cast",
|
||||
with_postfix.kind
|
||||
),
|
||||
}
|
||||
);
|
||||
let mut err = self.dcx().struct_span_err(span, msg);
|
||||
|
||||
10
tests/ui/coroutine/postfix-yield-after-cast.rs
Normal file
10
tests/ui/coroutine/postfix-yield-after-cast.rs
Normal file
@@ -0,0 +1,10 @@
|
||||
// Regression test for <https://github.com/rust-lang/rust/issues/144527>.
|
||||
|
||||
#![feature(yield_expr, coroutines)]
|
||||
|
||||
fn main() {
|
||||
#[coroutine] || {
|
||||
0 as u8.yield
|
||||
//~^ ERROR cast cannot be followed by `.yield`
|
||||
};
|
||||
}
|
||||
13
tests/ui/coroutine/postfix-yield-after-cast.stderr
Normal file
13
tests/ui/coroutine/postfix-yield-after-cast.stderr
Normal file
@@ -0,0 +1,13 @@
|
||||
error: cast cannot be followed by `.yield`
|
||||
--> $DIR/postfix-yield-after-cast.rs:7:9
|
||||
|
|
||||
LL | 0 as u8.yield
|
||||
| ^^^^^^^
|
||||
|
|
||||
help: try surrounding the expression in parentheses
|
||||
|
|
||||
LL | (0 as u8).yield
|
||||
| + +
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
Reference in New Issue
Block a user