Skip to content

Commit e576d88

Browse files
committed
Use Option<Symbol> in DuplicateLangItem.
For the the symbols that might not be present, instead of `kw::Empty`.
1 parent 3f32a32 commit e576d88

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

Diff for: compiler/rustc_passes/src/errors.rs

+13-7
Original file line numberDiff line numberDiff line change
@@ -1348,12 +1348,12 @@ pub(crate) struct DuplicateLangItem {
13481348
pub local_span: Option<Span>,
13491349
pub lang_item_name: Symbol,
13501350
pub crate_name: Symbol,
1351-
pub dependency_of: Symbol,
1351+
pub dependency_of: Option<Symbol>,
13521352
pub is_local: bool,
13531353
pub path: String,
13541354
pub first_defined_span: Option<Span>,
1355-
pub orig_crate_name: Symbol,
1356-
pub orig_dependency_of: Symbol,
1355+
pub orig_crate_name: Option<Symbol>,
1356+
pub orig_dependency_of: Option<Symbol>,
13571357
pub orig_is_local: bool,
13581358
pub orig_path: String,
13591359
pub(crate) duplicate: Duplicate,
@@ -1374,18 +1374,24 @@ impl<G: EmissionGuarantee> Diagnostic<'_, G> for DuplicateLangItem {
13741374
diag.code(E0152);
13751375
diag.arg("lang_item_name", self.lang_item_name);
13761376
diag.arg("crate_name", self.crate_name);
1377-
diag.arg("dependency_of", self.dependency_of);
1377+
if let Some(dependency_of) = self.dependency_of {
1378+
diag.arg("dependency_of", dependency_of);
1379+
}
13781380
diag.arg("path", self.path);
1379-
diag.arg("orig_crate_name", self.orig_crate_name);
1380-
diag.arg("orig_dependency_of", self.orig_dependency_of);
1381+
if let Some(orig_crate_name) = self.orig_crate_name {
1382+
diag.arg("orig_crate_name", orig_crate_name);
1383+
}
1384+
if let Some(orig_dependency_of) = self.orig_dependency_of {
1385+
diag.arg("orig_dependency_of", orig_dependency_of);
1386+
}
13811387
diag.arg("orig_path", self.orig_path);
13821388
if let Some(span) = self.local_span {
13831389
diag.span(span);
13841390
}
13851391
if let Some(span) = self.first_defined_span {
13861392
diag.span_note(span, fluent::passes_first_defined_span);
13871393
} else {
1388-
if self.orig_dependency_of.is_empty() {
1394+
if self.orig_dependency_of.is_none() {
13891395
diag.note(fluent::passes_first_defined_crate);
13901396
} else {
13911397
diag.note(fluent::passes_first_defined_crate_depends);

Diff for: compiler/rustc_passes/src/lang_items.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use rustc_hir::{LangItem, LanguageItems, MethodKind, Target};
1616
use rustc_middle::query::Providers;
1717
use rustc_middle::ty::{ResolverAstLowering, TyCtxt};
1818
use rustc_session::cstore::ExternCrate;
19-
use rustc_span::{Span, kw};
19+
use rustc_span::Span;
2020

2121
use crate::errors::{
2222
DuplicateLangItem, IncorrectTarget, LangItemOnIncorrectTarget, UnknownLangItem,
@@ -98,7 +98,7 @@ impl<'ast, 'tcx> LanguageItemCollector<'ast, 'tcx> {
9898
{
9999
let lang_item_name = lang_item.name();
100100
let crate_name = self.tcx.crate_name(item_def_id.krate);
101-
let mut dependency_of = kw::Empty;
101+
let mut dependency_of = None;
102102
let is_local = item_def_id.is_local();
103103
let path = if is_local {
104104
String::new()
@@ -112,8 +112,8 @@ impl<'ast, 'tcx> LanguageItemCollector<'ast, 'tcx> {
112112
};
113113

114114
let first_defined_span = self.item_spans.get(&original_def_id).copied();
115-
let mut orig_crate_name = kw::Empty;
116-
let mut orig_dependency_of = kw::Empty;
115+
let mut orig_crate_name = None;
116+
let mut orig_dependency_of = None;
117117
let orig_is_local = original_def_id.is_local();
118118
let orig_path = if orig_is_local {
119119
String::new()
@@ -127,11 +127,11 @@ impl<'ast, 'tcx> LanguageItemCollector<'ast, 'tcx> {
127127
};
128128

129129
if first_defined_span.is_none() {
130-
orig_crate_name = self.tcx.crate_name(original_def_id.krate);
130+
orig_crate_name = Some(self.tcx.crate_name(original_def_id.krate));
131131
if let Some(ExternCrate { dependency_of: inner_dependency_of, .. }) =
132132
self.tcx.extern_crate(original_def_id.krate)
133133
{
134-
orig_dependency_of = self.tcx.crate_name(*inner_dependency_of);
134+
orig_dependency_of = Some(self.tcx.crate_name(*inner_dependency_of));
135135
}
136136
}
137137

@@ -140,7 +140,7 @@ impl<'ast, 'tcx> LanguageItemCollector<'ast, 'tcx> {
140140
} else {
141141
match self.tcx.extern_crate(item_def_id.krate) {
142142
Some(ExternCrate { dependency_of: inner_dependency_of, .. }) => {
143-
dependency_of = self.tcx.crate_name(*inner_dependency_of);
143+
dependency_of = Some(self.tcx.crate_name(*inner_dependency_of));
144144
Duplicate::CrateDepends
145145
}
146146
_ => Duplicate::Crate,

0 commit comments

Comments
 (0)