diff options
| author | Manish Goregaokar <manishsmail@gmail.com> | 2016-04-16 01:16:45 +0530 |
|---|---|---|
| committer | Manish Goregaokar <manishsmail@gmail.com> | 2016-04-16 01:18:11 +0530 |
| commit | 00d4ac32c57b67fe08efcaf65346d267cfafba42 (patch) | |
| tree | cd3ecf76f657dbf8042e8078e006cc8619cc73a8 /src | |
| parent | 9873771187707fd3f164b6efc8b6841caf0a7f3f (diff) | |
| parent | 37e59b9239095bf8b0e0d1ae9952707593395956 (diff) | |
| download | rust-00d4ac32c57b67fe08efcaf65346d267cfafba42.tar.gz rust-00d4ac32c57b67fe08efcaf65346d267cfafba42.zip | |
Rollup merge of #32970 - taralx:patch-2, r=alexcrichton
Accommodate the case where dup lang items are entirely external. Fixes #32961
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc/middle/lang_items.rs | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/librustc/middle/lang_items.rs b/src/librustc/middle/lang_items.rs index 86531ced8df..83929c17ca3 100644 --- a/src/librustc/middle/lang_items.rs +++ b/src/librustc/middle/lang_items.rs @@ -189,13 +189,19 @@ impl<'a, 'tcx> LanguageItemCollector<'a, 'tcx> { match self.items.items[item_index] { Some(original_def_id) if original_def_id != item_def_id => { let cstore = &self.session.cstore; - let span = self.ast_map.span_if_local(item_def_id) - .expect("we should have found local duplicate earlier"); - let mut err = struct_span_err!(self.session, - span, - E0152, - "duplicate lang item found: `{}`.", - LanguageItems::item_name(item_index)); + let name = LanguageItems::item_name(item_index); + let mut err = match self.ast_map.span_if_local(item_def_id) { + Some(span) => struct_span_err!( + self.session, + span, + E0152, + "duplicate lang item found: `{}`.", + name), + None => self.session.struct_err(&format!( + "duplicate lang item in crate `{}`: `{}`.", + cstore.crate_name(item_def_id.krate), + name)), + }; if let Some(span) = self.ast_map.span_if_local(original_def_id) { span_note!(&mut err, span, "first defined here."); |
