Skip to content

Commit 00d4ac3

Browse files
committed
Rollup merge of rust-lang#32970 - taralx:patch-2, r=alexcrichton
Accommodate the case where dup lang items are entirely external. Fixes rust-lang#32961
2 parents 9873771 + 37e59b9 commit 00d4ac3

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

src/librustc/middle/lang_items.rs

+13-7
Original file line numberDiff line numberDiff line change
@@ -189,13 +189,19 @@ impl<'a, 'tcx> LanguageItemCollector<'a, 'tcx> {
189189
match self.items.items[item_index] {
190190
Some(original_def_id) if original_def_id != item_def_id => {
191191
let cstore = &self.session.cstore;
192-
let span = self.ast_map.span_if_local(item_def_id)
193-
.expect("we should have found local duplicate earlier");
194-
let mut err = struct_span_err!(self.session,
195-
span,
196-
E0152,
197-
"duplicate lang item found: `{}`.",
198-
LanguageItems::item_name(item_index));
192+
let name = LanguageItems::item_name(item_index);
193+
let mut err = match self.ast_map.span_if_local(item_def_id) {
194+
Some(span) => struct_span_err!(
195+
self.session,
196+
span,
197+
E0152,
198+
"duplicate lang item found: `{}`.",
199+
name),
200+
None => self.session.struct_err(&format!(
201+
"duplicate lang item in crate `{}`: `{}`.",
202+
cstore.crate_name(item_def_id.krate),
203+
name)),
204+
};
199205
if let Some(span) = self.ast_map.span_if_local(original_def_id) {
200206
span_note!(&mut err, span,
201207
"first defined here.");

0 commit comments

Comments
 (0)