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::Call(_, _) => "a function call",
|
||||||
ExprKind::Await(_, _) => "`.await`",
|
ExprKind::Await(_, _) => "`.await`",
|
||||||
ExprKind::Use(_, _) => "`.use`",
|
ExprKind::Use(_, _) => "`.use`",
|
||||||
|
ExprKind::Yield(YieldKind::Postfix(_)) => "`.yield`",
|
||||||
ExprKind::Match(_, _, MatchKind::Postfix) => "a postfix match",
|
ExprKind::Match(_, _, MatchKind::Postfix) => "a postfix match",
|
||||||
ExprKind::Err(_) => return Ok(with_postfix),
|
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);
|
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