Skip to content

Commit 8046fea

Browse files
committed
Improve diagnostics when constant pattern is too generic
1 parent 6e50a22 commit 8046fea

File tree

1 file changed

+7
-1
lines changed
  • src/librustc_mir_build/hair/pattern

1 file changed

+7
-1
lines changed

src/librustc_mir_build/hair/pattern/mod.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use rustc_hir::pat_util::EnumerateAndAdjustIterator;
1616
use rustc_hir::RangeEnd;
1717
use rustc_index::vec::Idx;
1818
use rustc_middle::mir::interpret::{get_slice_bytes, sign_extend, ConstValue};
19-
use rustc_middle::mir::interpret::{LitToConstError, LitToConstInput};
19+
use rustc_middle::mir::interpret::{ErrorHandled, LitToConstError, LitToConstInput};
2020
use rustc_middle::mir::UserTypeProjection;
2121
use rustc_middle::mir::{BorrowKind, Field, Mutability};
2222
use rustc_middle::ty::subst::{GenericArg, SubstsRef};
@@ -834,6 +834,12 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> {
834834
pattern
835835
}
836836
}
837+
Err(ErrorHandled::TooGeneric) => {
838+
// While `Reported | Linted` cases will have diagnostics emitted already
839+
// it is not true for TooGeneric case, so we need to give user more information.
840+
self.tcx.sess.span_err(span, "constant pattern depends on a generic parameter");
841+
pat_from_kind(PatKind::Wild)
842+
}
837843
Err(_) => {
838844
self.tcx.sess.span_err(span, "could not evaluate constant pattern");
839845
pat_from_kind(PatKind::Wild)

0 commit comments

Comments
 (0)