about summary refs log tree commit diff
path: root/src/librustc_metadata
diff options
context:
space:
mode:
authorAaron Hill <aa1ronham@gmail.com>2019-03-24 23:06:32 -0400
committerAaron Hill <aa1ronham@gmail.com>2019-04-14 00:37:25 -0400
commit7cc3ce3bbd59f0b5876a5d3c0b02aa8f893a2bdd (patch)
treee97d054a265d319ba16a1951ee7cb3061ee4b740 /src/librustc_metadata
parent21491dc7012ae50ecdc694b5ee664ecc502ae2c5 (diff)
downloadrust-7cc3ce3bbd59f0b5876a5d3c0b02aa8f893a2bdd.tar.gz
rust-7cc3ce3bbd59f0b5876a5d3c0b02aa8f893a2bdd.zip
Combine 'Extern' and 'ExternPrivate'
Diffstat (limited to 'src/librustc_metadata')
-rw-r--r--src/librustc_metadata/creader.rs11
-rw-r--r--src/librustc_metadata/locator.rs4
2 files changed, 8 insertions, 7 deletions
diff --git a/src/librustc_metadata/creader.rs b/src/librustc_metadata/creader.rs
index 53348e75aa9..7c5b5dc7113 100644
--- a/src/librustc_metadata/creader.rs
+++ b/src/librustc_metadata/creader.rs
@@ -133,7 +133,7 @@ impl<'a> CrateLoader<'a> {
             let source = &self.cstore.get_crate_data(cnum).source;
             if let Some(locs) = self.sess.opts.externs.get(&*name.as_str()) {
                 // Only use `--extern crate_name=path` here, not `--extern crate_name`.
-                let found = locs.iter().filter_map(|l| l.as_ref()).any(|l| {
+                let found = locs.iter().filter_map(|l| l.location.as_ref()).any(|l| {
                     let l = fs::canonicalize(l).ok();
                     source.dylib.as_ref().map(|p| &p.0) == l.as_ref() ||
                     source.rlib.as_ref().map(|p| &p.0) == l.as_ref()
@@ -202,13 +202,14 @@ impl<'a> CrateLoader<'a> {
         self.verify_no_symbol_conflicts(span, &crate_root);
 
         let mut private_dep = false;
-        if let Some(s) = self.sess.opts.extern_private.get(&name.as_str()) {
-            for path in s {
-                let p = Some(path.as_str());
+        if let Some(s) = self.sess.opts.externs.get(&name.as_str()) {
+            for entry in s {
+                let p = entry.location.as_ref().map(|s| s.as_str());
                 if p == lib.dylib.as_ref().and_then(|r| r.0.to_str()) ||
                     p == lib.rlib.as_ref().and_then(|r| r.0.to_str()) {
 
-                    private_dep = true;
+                    private_dep = !entry.public;
+                    break;
                 }
             }
         }
diff --git a/src/librustc_metadata/locator.rs b/src/librustc_metadata/locator.rs
index 81878c4f687..f56ca5af76e 100644
--- a/src/librustc_metadata/locator.rs
+++ b/src/librustc_metadata/locator.rs
@@ -444,9 +444,9 @@ impl<'a> Context<'a> {
             self.should_match_name = false;
             if let Some(s) = self.sess.opts.externs.get(&self.crate_name.as_str()) {
                 // Only use `--extern crate_name=path` here, not `--extern crate_name`.
-                if s.iter().any(|l| l.is_some()) {
+                if s.iter().any(|l| l.location.is_some()) {
                     return self.find_commandline_library(
-                        s.iter().filter_map(|l| l.as_ref()),
+                        s.iter().filter_map(|l| l.location.as_ref()),
                     );
                 }
             }