Skip to content

Commit

Permalink
Move lint emitter to its own method
Browse files Browse the repository at this point in the history
  • Loading branch information
estebank committed Oct 16, 2019
1 parent 916936c commit d2cb5a8
Showing 1 changed file with 27 additions and 18 deletions.
45 changes: 27 additions & 18 deletions src/librustc_mir/hair/pattern/_match.rs
Expand Up @@ -1739,24 +1739,7 @@ fn split_grouped_constructors<'p, 'tcx>(
let mut borders: Vec<_> = row_borders.chain(ctor_borders).collect();
borders.sort_unstable();

if let (true, Some(hir_id)) = (!overlaps.is_empty(), hir_id) {
let mut err = tcx.struct_span_lint_hir(
lint::builtin::OVERLAPPING_PATTERNS,
hir_id,
ctor_range.span,
"multiple patterns covering the same range",
);
err.span_label(ctor_range.span, "overlapping patterns");
for int_range in overlaps {
// Use the real type for user display of the ranges:
err.span_label(int_range.span, &format!(
"this range overlaps on `{}`",
IntRange::range_to_ctor(tcx, ty, int_range.range, DUMMY_SP)
.display(tcx),
));
}
err.emit();
}
lint_unreachable_patterns(tcx, hir_id, ctor_range, ty, overlaps);

// We're going to iterate through every pair of borders, making sure that each
// represents an interval of nonnegative length, and convert each such interval
Expand Down Expand Up @@ -1787,6 +1770,32 @@ fn split_grouped_constructors<'p, 'tcx>(
split_ctors
}

fn lint_unreachable_patterns(
tcx: TyCtxt<'tcx>,
hir_id: Option<HirId>,
ctor_range: IntRange<'tcx>,
ty: Ty<'tcx>,
overlaps: Vec<IntRange<'tcx>>,
) {
if let (true, Some(hir_id)) = (!overlaps.is_empty(), hir_id) {
let mut err = tcx.struct_span_lint_hir(
lint::builtin::OVERLAPPING_PATTERNS,
hir_id,
ctor_range.span,
"multiple patterns covering the same range",
);
err.span_label(ctor_range.span, "overlapping patterns");
for int_range in overlaps {
// Use the real type for user display of the ranges:
err.span_label(int_range.span, &format!(
"this range overlaps on `{}`",
IntRange::range_to_ctor(tcx, ty, int_range.range, DUMMY_SP).display(tcx),
));
}
err.emit();
}
}

fn constructor_covered_by_range<'tcx>(
tcx: TyCtxt<'tcx>,
param_env: ty::ParamEnv<'tcx>,
Expand Down

0 comments on commit d2cb5a8

Please sign in to comment.