Skip to content

Commit 09ff0ba

Browse files
committed
Fix emitting lint
1 parent 8b6f3dd commit 09ff0ba

File tree

2 files changed

+31
-18
lines changed

2 files changed

+31
-18
lines changed

src/librustc_privacy/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@ rustc = { path = "../librustc" }
1313
rustc_typeck = { path = "../librustc_typeck" }
1414
syntax = { path = "../libsyntax" }
1515
syntax_pos = { path = "../libsyntax_pos" }
16-
rustc_data_structures = { path = "../librustc_data_structures" }
16+
rustc_data_structures = { path = "../librustc_data_structures" }
17+
log = "0.4"

src/librustc_privacy/lib.rs

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
#[macro_use] extern crate rustc;
1111
#[macro_use] extern crate syntax;
12+
#[macro_use] extern crate log;
1213
extern crate rustc_typeck;
1314
extern crate syntax_pos;
1415
extern crate rustc_data_structures;
@@ -1451,6 +1452,7 @@ impl<'a, 'tcx> Visitor<'tcx> for ObsoleteVisiblePrivateTypesVisitor<'a, 'tcx> {
14511452

14521453
struct SearchInterfaceForPrivateItemsVisitor<'a, 'tcx: 'a> {
14531454
tcx: TyCtxt<'a, 'tcx, 'tcx>,
1455+
item_id: ast::NodeId,
14541456
item_def_id: DefId,
14551457
span: Span,
14561458
/// The visitor checks that each component type is at least this visible.
@@ -1516,16 +1518,18 @@ impl<'a, 'tcx: 'a> SearchInterfaceForPrivateItemsVisitor<'a, 'tcx> {
15161518
&format!("{} (error {})", msg, err_code));
15171519
}
15181520

1519-
if self.leaks_private_dep(trait_ref.def_id) {
1520-
self.tcx.lint_node(lint::builtin::LEAKED_PRIVATE_DEPENDENCY,
1521-
node_id,
1522-
self.span,
1523-
&format!("trait `{}` from private dependency '{}' in public \
1524-
interface", trait_ref,
1525-
trait_ref.def_id.krate));
1521+
}
1522+
1523+
if self.leaks_private_dep(trait_ref.def_id) {
1524+
self.tcx.lint_node(lint::builtin::LEAKED_PRIVATE_DEPENDENCY,
1525+
self.item_id,
1526+
self.span,
1527+
&format!("trait `{}` from private dependency '{}' in public \
1528+
interface", trait_ref,
1529+
self.tcx.crate_name(trait_ref.def_id.krate)));
15261530

1527-
}
15281531
}
1532+
15291533
}
15301534

15311535
/// An item is 'leaked' from a private dependency if all
@@ -1537,9 +1541,13 @@ impl<'a, 'tcx: 'a> SearchInterfaceForPrivateItemsVisitor<'a, 'tcx> {
15371541
if !self.tcx.features().public_private_dependencies {
15381542
return false
15391543
}
1540-
self.required_visibility == ty::Visibility::Public &&
1544+
let ret = self.required_visibility == ty::Visibility::Public &&
15411545
!item_id.is_local() &&
1542-
!self.public_crates.contains(&item_id.krate)
1546+
!self.public_crates.contains(&item_id.krate);
1547+
1548+
1549+
debug!("leaks_private_dep(item_id={:?})={}", item_id, ret);
1550+
return ret;
15431551
}
15441552
}
15451553

@@ -1601,14 +1609,17 @@ impl<'a, 'tcx: 'a> TypeVisitor<'tcx> for SearchInterfaceForPrivateItemsVisitor<'
16011609
}
16021610
}
16031611

1604-
if self.leaks_private_dep(def_id) {
1605-
self.tcx.lint_node(lint::builtin::LEAKED_PRIVATE_DEPENDENCY,
1606-
node_id,
1607-
self.span,
1608-
&format!("type '{}' from private dependency '{}' in \
1609-
public interface", ty, def_id.krate));
1610-
}
16111612
}
1613+
1614+
if self.leaks_private_dep(def_id) {
1615+
self.tcx.lint_node(lint::builtin::LEAKED_PRIVATE_DEPENDENCY,
1616+
self.item_id,
1617+
self.span,
1618+
&format!("type '{}' from private dependency '{}' in \
1619+
public interface", ty,
1620+
self.tcx.crate_name(def_id.krate)));
1621+
}
1622+
16121623
}
16131624

16141625
ty.super_visit_with(self)
@@ -1673,6 +1684,7 @@ impl<'a, 'tcx> PrivateItemsInPublicInterfacesVisitor<'a, 'tcx> {
16731684

16741685
SearchInterfaceForPrivateItemsVisitor {
16751686
tcx: self.tcx,
1687+
item_id,
16761688
item_def_id: self.tcx.hir().local_def_id(item_id),
16771689
span: self.tcx.hir().span(item_id),
16781690
required_visibility,

0 commit comments

Comments
 (0)