diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2013-05-31 11:31:38 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2013-06-01 09:16:46 -0700 |
| commit | 1e52eede31a1df3627bfa9f43b9d06c730895c01 (patch) | |
| tree | a2c6e5465401fa41ffa1ceb2930eee391067d97d /src | |
| parent | b8391ccea0b2e2718a4d4ef999e9f03583c7ddea (diff) | |
| download | rust-1e52eede31a1df3627bfa9f43b9d06c730895c01.tar.gz rust-1e52eede31a1df3627bfa9f43b9d06c730895c01.zip | |
librustc: Don't require `pub extern` to make extern functions visible
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc/middle/privacy.rs | 2 | ||||
| -rw-r--r-- | src/test/run-pass/pub-extern-privacy.rs | 14 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/librustc/middle/privacy.rs b/src/librustc/middle/privacy.rs index 5f88c25653d..0f00e9d596e 100644 --- a/src/librustc/middle/privacy.rs +++ b/src/librustc/middle/privacy.rs @@ -200,7 +200,7 @@ pub fn check_crate(tcx: ty::ctxt, f = |item_id| { match tcx.items.find(&item_id) { Some(&node_item(item, _)) => item.vis != public, - Some(&node_foreign_item(_, _, vis, _)) => vis != public, + Some(&node_foreign_item(*)) => false, Some(&node_method(method, impl_did, _)) => { match method.vis { private => true, diff --git a/src/test/run-pass/pub-extern-privacy.rs b/src/test/run-pass/pub-extern-privacy.rs new file mode 100644 index 00000000000..2927279f6a2 --- /dev/null +++ b/src/test/run-pass/pub-extern-privacy.rs @@ -0,0 +1,14 @@ +use std::cast::transmute; + +mod a { + extern { + pub fn free(x: *u8); + } +} + +fn main() { + unsafe { + a::free(transmute(0)); + } +} + |
