Skip to content

Commit cb90a4f

Browse files
committed
privacy: port "item is private" diag
Signed-off-by: David Wood <[email protected]>
1 parent be9ebfd commit cb90a4f

File tree

3 files changed

+19
-6
lines changed

3 files changed

+19
-6
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
privacy-field-is-private = field `{$field_name}` of {$variant_descr} `{$def_path_str}` is private
22
privacy-field-is-private-is-update-syntax-label = field `{$field_name}` is private
33
privacy-field-is-private-label = private field
4+
5+
privacy-item-is-private = {$kind} `{$descr}` is private
6+
.label = private {$kind}

compiler/rustc_privacy/src/errors.rs

+10
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,13 @@ pub enum FieldIsPrivateLabel {
2727
span: Span,
2828
},
2929
}
30+
31+
#[derive(SessionDiagnostic)]
32+
#[error(privacy::item_is_private)]
33+
pub struct ItemIsPrivate<'a> {
34+
#[primary_span]
35+
#[label]
36+
pub span: Span,
37+
pub kind: &'a str,
38+
pub descr: String,
39+
}

compiler/rustc_privacy/src/lib.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ use std::marker::PhantomData;
3636
use std::ops::ControlFlow;
3737
use std::{cmp, fmt, mem};
3838

39-
use errors::{FieldIsPrivate, FieldIsPrivateLabel};
39+
use errors::{FieldIsPrivate, FieldIsPrivateLabel, ItemIsPrivate};
4040

4141
////////////////////////////////////////////////////////////////////////////////
4242
/// Generic infrastructure used to implement specific visitors below.
@@ -1073,11 +1073,11 @@ impl<'tcx> TypePrivacyVisitor<'tcx> {
10731073
fn check_def_id(&mut self, def_id: DefId, kind: &str, descr: &dyn fmt::Display) -> bool {
10741074
let is_error = !self.item_is_accessible(def_id);
10751075
if is_error {
1076-
self.tcx
1077-
.sess
1078-
.struct_span_err(self.span, &format!("{} `{}` is private", kind, descr))
1079-
.span_label(self.span, &format!("private {}", kind))
1080-
.emit();
1076+
self.tcx.sess.emit_err(ItemIsPrivate {
1077+
span: self.span,
1078+
kind,
1079+
descr: descr.to_string(),
1080+
});
10811081
}
10821082
is_error
10831083
}

0 commit comments

Comments
 (0)