about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/comp/metadata/creader.rs21
-rw-r--r--src/libstd/freebsd_os.rs1
-rw-r--r--src/libstd/linux_os.rs1
-rw-r--r--src/libstd/macos_os.rs1
-rw-r--r--src/libstd/win32_os.rs1
-rw-r--r--src/test/compile-fail/empty-linkname2.rs7
6 files changed, 19 insertions, 13 deletions
diff --git a/src/comp/metadata/creader.rs b/src/comp/metadata/creader.rs
index 8c6204d1105..de7fe882aa1 100644
--- a/src/comp/metadata/creader.rs
+++ b/src/comp/metadata/creader.rs
@@ -57,17 +57,20 @@ fn visit_item(e: env, i: @ast::item) {
         }
 
         let cstore = e.sess.get_cstore();
-        let native_name = i.ident;
+        let native_name =
+            alt attr::get_meta_item_value_str_by_name(i.attrs, "link_name") {
+              some(nn) {
+                if nn == "" {
+                    e.sess.span_fatal(
+                        i.span,
+                        "empty #[link_name] not allowed; use #[nolink].");
+                }
+                nn
+              }
+              none. { i.ident }
+            };
         let already_added = false;
         if vec::len(attr::find_attrs_by_name(i.attrs, "nolink")) == 0u {
-            alt attr::get_meta_item_value_str_by_name(i.attrs, "link_name") {
-              some(nn) { native_name = nn; }
-              none. { }
-            }
-            if native_name == "" {
-                e.sess.span_fatal(i.span,
-                    "empty #[link_name] not allowed; use #[nolink].");
-            }
             already_added = !cstore::add_used_library(cstore, native_name);
         }
         let link_args = attr::find_attrs_by_name(i.attrs, "link_args");
diff --git a/src/libstd/freebsd_os.rs b/src/libstd/freebsd_os.rs
index 4fecf418213..596db37bea9 100644
--- a/src/libstd/freebsd_os.rs
+++ b/src/libstd/freebsd_os.rs
@@ -24,7 +24,6 @@ export fsync_fd;
 // FIXME Somehow merge stuff duplicated here and macosx_os.rs. Made difficult
 // by https://github.com/graydon/rust/issues#issue/268
 
-#[link_name = ""]               // FIXME remove after #[nolink] is snapshotted
 #[nolink]
 #[abi = "cdecl"]
 native mod libc {
diff --git a/src/libstd/linux_os.rs b/src/libstd/linux_os.rs
index 7e7f0407f77..965d8f1eaff 100644
--- a/src/libstd/linux_os.rs
+++ b/src/libstd/linux_os.rs
@@ -24,7 +24,6 @@ export fsync_fd;
 // FIXME Somehow merge stuff duplicated here and macosx_os.rs. Made difficult
 // by https://github.com/graydon/rust/issues#issue/268
 
-#[link_name = ""]               // FIXME remove after #[nolink] is snapshotted
 #[nolink]
 #[abi = "cdecl"]
 native mod libc {
diff --git a/src/libstd/macos_os.rs b/src/libstd/macos_os.rs
index 35c7b19bb3d..9cca6fe77e1 100644
--- a/src/libstd/macos_os.rs
+++ b/src/libstd/macos_os.rs
@@ -18,7 +18,6 @@ export fsync_fd;
 // FIXME Refactor into unix_os module or some such. Doesn't
 // seem to work right now.
 
-#[link_name = ""] // FIXME: Remove after snapshotting
 #[nolink]
 #[abi = "cdecl"]
 native mod libc {
diff --git a/src/libstd/win32_os.rs b/src/libstd/win32_os.rs
index 0996a87737a..ff45648cdba 100644
--- a/src/libstd/win32_os.rs
+++ b/src/libstd/win32_os.rs
@@ -2,7 +2,6 @@ import core::option;
 import core::ctypes::*;
 
 #[abi = "cdecl"]
-#[link_name = ""]               // FIXME remove after #[nolink] is snapshotted
 #[nolink]
 native mod libc {
     fn read(fd: fd_t, buf: *u8, count: size_t) -> ssize_t;
diff --git a/src/test/compile-fail/empty-linkname2.rs b/src/test/compile-fail/empty-linkname2.rs
new file mode 100644
index 00000000000..567208f7897
--- /dev/null
+++ b/src/test/compile-fail/empty-linkname2.rs
@@ -0,0 +1,7 @@
+// error-pattern:empty #[link_name] not allowed; use #[nolink].
+// Issue #1326
+
+#[link_name = ""]
+#[nolink]
+native mod foo {
+}