mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 23:04:33 +00:00
Rollup merge of #75267 - estebank:cleanup, r=Dylan-DPC
Small cleanup * Add docstring to `Parser` field * Remove unnecessary `unwrap` * Remove unnecessary borrow * Fix indentation of some `teach`text output
This commit is contained in:
commit
81546de429
@ -103,6 +103,8 @@ pub struct Parser<'a> {
|
||||
/// error.
|
||||
pub(super) unclosed_delims: Vec<UnmatchedBrace>,
|
||||
last_unexpected_token_span: Option<Span>,
|
||||
/// Span pointing at the `:` for the last type ascription the parser has seen, and whether it
|
||||
/// looked like it could have been a mistyped path or literal `Option:Some(42)`).
|
||||
pub last_type_ascription: Option<(Span, bool /* likely path typo */)>,
|
||||
/// If present, this `Parser` is not parsing Rust code but rather a macro call.
|
||||
subparser_name: Option<&'static str>,
|
||||
|
@ -226,7 +226,7 @@ impl<'a> PathSource<'a> {
|
||||
ValueNS => "method or associated constant",
|
||||
MacroNS => bug!("associated macro"),
|
||||
},
|
||||
PathSource::Expr(parent) => match &parent.as_ref().map(|p| &p.kind) {
|
||||
PathSource::Expr(parent) => match parent.as_ref().map(|p| &p.kind) {
|
||||
// "function" here means "anything callable" rather than `DefKind::Fn`,
|
||||
// this is not precise but usually more helpful than just "value".
|
||||
Some(ExprKind::Call(call_expr, _)) => match &call_expr.kind {
|
||||
|
@ -1114,7 +1114,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||
tcx.sess.struct_span_err(pat.span, "`..` cannot be used in union patterns").emit();
|
||||
}
|
||||
} else if !etc && !unmentioned_fields.is_empty() {
|
||||
unmentioned_err = Some(self.error_unmentioned_fields(pat.span, &unmentioned_fields));
|
||||
unmentioned_err = Some(self.error_unmentioned_fields(pat, &unmentioned_fields));
|
||||
}
|
||||
match (inexistent_fields_err, unmentioned_err) {
|
||||
(Some(mut i), Some(mut u)) => {
|
||||
@ -1299,7 +1299,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||
|
||||
fn error_unmentioned_fields(
|
||||
&self,
|
||||
span: Span,
|
||||
pat: &Pat<'_>,
|
||||
unmentioned_fields: &[Ident],
|
||||
) -> DiagnosticBuilder<'tcx> {
|
||||
let field_names = if unmentioned_fields.len() == 1 {
|
||||
@ -1312,23 +1312,23 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||
.join(", ");
|
||||
format!("fields {}", fields)
|
||||
};
|
||||
let mut diag = struct_span_err!(
|
||||
let mut err = struct_span_err!(
|
||||
self.tcx.sess,
|
||||
span,
|
||||
pat.span,
|
||||
E0027,
|
||||
"pattern does not mention {}",
|
||||
field_names
|
||||
);
|
||||
diag.span_label(span, format!("missing {}", field_names));
|
||||
if self.tcx.sess.teach(&diag.get_code().unwrap()) {
|
||||
diag.note(
|
||||
err.span_label(pat.span, format!("missing {}", field_names));
|
||||
if self.tcx.sess.teach(&err.get_code().unwrap()) {
|
||||
err.note(
|
||||
"This error indicates that a pattern for a struct fails to specify a \
|
||||
sub-pattern for every one of the struct's fields. Ensure that each field \
|
||||
from the struct's definition is mentioned in the pattern, or use `..` to \
|
||||
ignore unwanted fields.",
|
||||
);
|
||||
}
|
||||
diag
|
||||
err
|
||||
}
|
||||
|
||||
fn check_pat_box(
|
||||
|
Loading…
Reference in New Issue
Block a user