diff options
| author | Patryk Wychowaniec <pwychowaniec@pm.me> | 2021-01-02 19:45:11 +0100 |
|---|---|---|
| committer | Patryk Wychowaniec <pwychowaniec@pm.me> | 2021-01-10 13:07:40 +0100 |
| commit | d2f8e398f19b5b3d38646328ec158f50db6b8b06 (patch) | |
| tree | 2bda5bffd2730c12e6d4a0104ec720f76f17a9ae /compiler/rustc_metadata | |
| parent | 34628e5b533d35840b61c5db0665cf7633ed3c5a (diff) | |
| download | rust-d2f8e398f19b5b3d38646328ec158f50db6b8b06.tar.gz rust-d2f8e398f19b5b3d38646328ec158f50db6b8b06.zip | |
Rework diagnostics for wrong number of generic args
Diffstat (limited to 'compiler/rustc_metadata')
| -rw-r--r-- | compiler/rustc_metadata/src/rmeta/decoder.rs | 14 | ||||
| -rw-r--r-- | compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs | 3 |
2 files changed, 12 insertions, 5 deletions
diff --git a/compiler/rustc_metadata/src/rmeta/decoder.rs b/compiler/rustc_metadata/src/rmeta/decoder.rs index 6e381fd2965..e0b4eabf954 100644 --- a/compiler/rustc_metadata/src/rmeta/decoder.rs +++ b/compiler/rustc_metadata/src/rmeta/decoder.rs @@ -721,21 +721,25 @@ impl<'a, 'tcx> CrateMetadataRef<'a> { &self.raw_proc_macros.unwrap()[pos] } - fn item_ident(&self, item_index: DefIndex, sess: &Session) -> Ident { + fn try_item_ident(&self, item_index: DefIndex, sess: &Session) -> Result<Ident, String> { let name = self .def_key(item_index) .disambiguated_data .data .get_opt_name() - .expect("no name in item_ident"); + .ok_or_else(|| format!("Missing opt name for {:?}", item_index))?; let span = self .root .tables .ident_span .get(self, item_index) - .map(|data| data.decode((self, sess))) - .unwrap_or_else(|| panic!("Missing ident span for {:?} ({:?})", name, item_index)); - Ident::new(name, span) + .ok_or_else(|| format!("Missing ident span for {:?} ({:?})", name, item_index))? + .decode((self, sess)); + Ok(Ident::new(name, span)) + } + + fn item_ident(&self, item_index: DefIndex, sess: &Session) -> Ident { + self.try_item_ident(item_index, sess).unwrap() } fn def_kind(&self, index: DefIndex) -> DefKind { diff --git a/compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs b/compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs index b7f22885217..d01ef14e713 100644 --- a/compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs +++ b/compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs @@ -128,6 +128,9 @@ provide! { <'tcx> tcx, def_id, other, cdata, generator_kind => { cdata.generator_kind(def_id.index) } def_kind => { cdata.def_kind(def_id.index) } def_span => { cdata.get_span(def_id.index, &tcx.sess) } + def_ident_span => { + cdata.try_item_ident(def_id.index, &tcx.sess).ok().map(|ident| ident.span) + } lookup_stability => { cdata.get_stability(def_id.index).map(|s| tcx.intern_stability(s)) } |
