Auto merge of #99948 - Dylan-DPC:rollup-ed5136t, r=Dylan-DPC
Rollup of 5 pull requests Successful merges: - #99311 (change maybe_body_owned_by to take local def id) - #99862 (Improve type mismatch w/ function signatures) - #99895 (don't call type ascription "cast") - #99900 (remove some manual hash stable impls) - #99903 (Add diagnostic when using public instead of pub) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
038f9e6bef
55 changed files with 332 additions and 295 deletions
|
@ -601,6 +601,17 @@ impl<'a> Parser<'a> {
|
|||
self.last_unexpected_token_span = Some(self.token.span);
|
||||
let mut err = self.struct_span_err(self.token.span, &msg_exp);
|
||||
|
||||
if let TokenKind::Ident(symbol, _) = &self.prev_token.kind {
|
||||
if symbol.as_str() == "public" {
|
||||
err.span_suggestion_short(
|
||||
self.prev_token.span,
|
||||
"write `pub` instead of `public` to make the item public",
|
||||
"pub",
|
||||
appl,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Add suggestion for a missing closing angle bracket if '>' is included in expected_tokens
|
||||
// there are unclosed angle brackets
|
||||
if self.unmatched_angle_bracket_count > 0
|
||||
|
|
|
@ -827,11 +827,12 @@ impl<'a> Parser<'a> {
|
|||
cast_expr: P<Expr>,
|
||||
) -> PResult<'a, P<Expr>> {
|
||||
let span = cast_expr.span;
|
||||
let maybe_ascription_span = if let ExprKind::Type(ascripted_expr, _) = &cast_expr.kind {
|
||||
Some(ascripted_expr.span.shrink_to_hi().with_hi(span.hi()))
|
||||
} else {
|
||||
None
|
||||
};
|
||||
let (cast_kind, maybe_ascription_span) =
|
||||
if let ExprKind::Type(ascripted_expr, _) = &cast_expr.kind {
|
||||
("type ascription", Some(ascripted_expr.span.shrink_to_hi().with_hi(span.hi())))
|
||||
} else {
|
||||
("cast", None)
|
||||
};
|
||||
|
||||
// Save the memory location of expr before parsing any following postfix operators.
|
||||
// This will be compared with the memory location of the output expression.
|
||||
|
@ -844,7 +845,7 @@ impl<'a> Parser<'a> {
|
|||
// If the resulting expression is not a cast, or has a different memory location, it is an illegal postfix operator.
|
||||
if !matches!(with_postfix.kind, ExprKind::Cast(_, _) | ExprKind::Type(_, _)) || changed {
|
||||
let msg = format!(
|
||||
"casts cannot be followed by {}",
|
||||
"{cast_kind} cannot be followed by {}",
|
||||
match with_postfix.kind {
|
||||
ExprKind::Index(_, _) => "indexing",
|
||||
ExprKind::Try(_) => "`?`",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue