Use span_label
as it looks better when we show pattern missing bind… · rust-lang/rust@733fd03 (original) (raw)
`@@ -1129,7 +1129,7 @@ impl<'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'_, 'ast, 'ra, 'tcx> {
`
1129
1129
`) {
`
1130
1130
`let [segment] = path else { return };
`
1131
1131
`let None = following_seg else { return };
`
1132
``
`-
'outer: for rib in self.ribs[ValueNS].iter().rev() {
`
``
1132
`+
for rib in self.ribs[ValueNS].iter().rev() {
`
1133
1133
`for (def_id, spans) in &rib.patterns_with_skipped_bindings {
`
1134
1134
`if let Some(fields) = self.r.field_idents(*def_id) {
`
1135
1135
`for field in fields {
`
`@@ -1141,38 +1141,21 @@ impl<'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'_, 'ast, 'ra, 'tcx> {
`
1141
1141
` spans.iter().map(|(s, _)| *s).collect::<Vec<_>>().into();
`
1142
1142
` err.span_note(
`
1143
1143
` multispan,
`
1144
``
`-
"this pattern had a recovered parse error which likely \
`
1145
``
`-
lost the expected fields",
`
``
1144
`+
"this pattern had a recovered parse error which likely lost \
`
``
1145
`+
the expected fields",
`
1146
1146
`);
`
1147
1147
` err.downgrade_to_delayed_bug();
`
1148
1148
`}
`
1149
``
`-
let mut multispan: MultiSpan = spans
`
1150
``
`-
.iter()
`
1151
``
`-
.filter(|(_, had_error)| had_error.is_ok())
`
1152
``
`-
.map(|(sp, _)| *sp)
`
1153
``
`-
.collect::<Vec<_>>()
`
1154
``
`-
.into();
`
1155
``
`-
let def_span = self.r.def_span(*def_id);
`
1156
1149
`let ty = self.r.tcx.item_name(*def_id);
`
1157
``
`-
multispan.push_span_label(def_span, String::new());
`
1158
``
`-
multispan.push_span_label(field.span, "defined here".to_string());
`
1159
``
`-
for (span, ) in spans.iter().filter(|(, had_err)| had_err.is_ok()) {
`
1160
``
`-
multispan.push_span_label(
`
``
1150
`+
for (span, _) in spans {
`
``
1151
`+
err.span_label(
`
1161
1152
`*span,
`
1162
1153
`format!(
`
1163
1154
`` "this pattern doesn't include {field}
, which is \
``
1164
1155
`` available in {ty}
",
``
1165
1156
`),
`
1166
1157
`);
`
1167
1158
`}
`
1168
``
`-
err.span_note(
`
1169
``
`-
multispan,
`
1170
``
`-
format!(
`
1171
``
`` -
"{ty}
has a field {field}
which could have been included \
``
1172
``
`-
in this pattern, but it wasn't",
`
1173
``
`-
),
`
1174
``
`-
);
`
1175
``
`-
break 'outer;
`
1176
1159
`}
`
1177
1160
`}
`
1178
1161
`}
`