about summary refs log tree commit diff
diff options
context:
space:
mode:
authorKiet Tran <ktt3ja@gmail.com>2014-07-20 22:11:43 -0700
committerAlex Crichton <alex@alexcrichton.com>2014-07-21 09:54:59 -0700
commit6807349e8fe37eb19dd6d9c41fb24430fdf0e54b (patch)
treea4eccd1705a4a83b9f0b932f094e7b815a7a249b
parent2daa097077dc988bb7fc818754950b21cd42727c (diff)
downloadrust-6807349e8fe37eb19dd6d9c41fb24430fdf0e54b.tar.gz
rust-6807349e8fe37eb19dd6d9c41fb24430fdf0e54b.zip
privacy: Add publically-reexported foreign item to exported item set
Close #15740
-rw-r--r--src/librustc/middle/privacy.rs2
-rw-r--r--src/test/compile-fail/lint-dead-code-3.rs5
2 files changed, 6 insertions, 1 deletions
diff --git a/src/librustc/middle/privacy.rs b/src/librustc/middle/privacy.rs
index 910f4ad212a..62b5299f8fb 100644
--- a/src/librustc/middle/privacy.rs
+++ b/src/librustc/middle/privacy.rs
@@ -325,7 +325,7 @@ impl<'a> Visitor<()> for EmbargoVisitor<'a> {
     }
 
     fn visit_foreign_item(&mut self, a: &ast::ForeignItem, _: ()) {
-        if self.prev_exported && a.vis == ast::Public {
+        if (self.prev_exported && a.vis == ast::Public) || self.reexports.contains(&a.id) {
             self.exported_items.insert(a.id);
         }
     }
diff --git a/src/test/compile-fail/lint-dead-code-3.rs b/src/test/compile-fail/lint-dead-code-3.rs
index 4687d66ca53..e34bfb10a71 100644
--- a/src/test/compile-fail/lint-dead-code-3.rs
+++ b/src/test/compile-fail/lint-dead-code-3.rs
@@ -16,6 +16,11 @@
 
 extern crate libc;
 
+pub use x = extern_foo;
+extern {
+    fn extern_foo();
+}
+
 struct Foo; //~ ERROR: code is never used
 impl Foo {
     fn foo(&self) { //~ ERROR: code is never used