diff options
| -rw-r--r-- | src/comp/metadata/creader.rs | 21 | ||||
| -rw-r--r-- | src/libstd/freebsd_os.rs | 1 | ||||
| -rw-r--r-- | src/libstd/linux_os.rs | 1 | ||||
| -rw-r--r-- | src/libstd/macos_os.rs | 1 | ||||
| -rw-r--r-- | src/libstd/win32_os.rs | 1 | ||||
| -rw-r--r-- | src/test/compile-fail/empty-linkname2.rs | 7 |
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 { +} |
