diff options
| author | Gary Guo <gary@garyguo.net> | 2020-07-30 06:17:18 +0100 |
|---|---|---|
| committer | Gary Guo <gary@garyguo.net> | 2020-07-30 06:17:18 +0100 |
| commit | 8046fea62263d50fc196ce07ccdc4534af321441 (patch) | |
| tree | 4a1aaa903af8c6aae09835be05a64ddebb31fff3 | |
| parent | 6e50a225fd67576e43bab1d4dfa3c97f310786a8 (diff) | |
| download | rust-8046fea62263d50fc196ce07ccdc4534af321441.tar.gz rust-8046fea62263d50fc196ce07ccdc4534af321441.zip | |
Improve diagnostics when constant pattern is too generic
| -rw-r--r-- | src/librustc_mir_build/hair/pattern/mod.rs | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/librustc_mir_build/hair/pattern/mod.rs b/src/librustc_mir_build/hair/pattern/mod.rs index a5c87bc963f..f813ba0c077 100644 --- a/src/librustc_mir_build/hair/pattern/mod.rs +++ b/src/librustc_mir_build/hair/pattern/mod.rs @@ -16,7 +16,7 @@ use rustc_hir::pat_util::EnumerateAndAdjustIterator; use rustc_hir::RangeEnd; use rustc_index::vec::Idx; use rustc_middle::mir::interpret::{get_slice_bytes, sign_extend, ConstValue}; -use rustc_middle::mir::interpret::{LitToConstError, LitToConstInput}; +use rustc_middle::mir::interpret::{ErrorHandled, LitToConstError, LitToConstInput}; use rustc_middle::mir::UserTypeProjection; use rustc_middle::mir::{BorrowKind, Field, Mutability}; use rustc_middle::ty::subst::{GenericArg, SubstsRef}; @@ -834,6 +834,12 @@ impl<'a, 'tcx> PatCtxt<'a, 'tcx> { pattern } } + Err(ErrorHandled::TooGeneric) => { + // While `Reported | Linted` cases will have diagnostics emitted already + // it is not true for TooGeneric case, so we need to give user more information. + self.tcx.sess.span_err(span, "constant pattern depends on a generic parameter"); + pat_from_kind(PatKind::Wild) + } Err(_) => { self.tcx.sess.span_err(span, "could not evaluate constant pattern"); pat_from_kind(PatKind::Wild) |
