-
Notifications
You must be signed in to change notification settings - Fork 13.6k
Closed
Labels
A-linkageArea: linking into static, shared libraries and binariesArea: linking into static, shared libraries and binaries
Description
STR
mod private {
pub struct Struct;
}
pub mod public {
pub struct Struct;
}
struct PrivateStruct;
pub struct Triplet {
pub left: public::Struct, // OK public type in exported signature
//pub middle: PrivateStruct, // OK private in exported signature is rejected
//~^ error: private type in exported type signature
pub right: private::Struct, // BAD private type in exported signature is accepted
}
rustc --crate-type=lib lib.rs
successfully compiles, but it should error with error: private type in exported type signature
with span on pub right: private::Struct
.
Sanity check that private::Struct
is actually private:
extern crate lib;
fn main() {
let _ = lib::PrivateStruct; //~ error: struct `PrivateStruct` is private
let _ = lib::private::Struct; //~ error: struct `Struct` is private
let _ = lib::public::Struct;
}
Errors (as expected) with:
sanity-check.rs:4:13: 4:31 error: struct `PrivateStruct` is private
sanity-check.rs:4 let _ = lib::PrivateStruct; //~ error: struct `PrivateStruct` is private
^~~~~~~~~~~~~~~~~~
sanity-check.rs:5:13: 5:33 error: struct `Struct` is private
sanity-check.rs:5 let _ = lib::private::Struct; //~ error: struct `Struct` is private
^~~~~~~~~~~~~~~~~~~~
error: aborting due to 2 previous errors
Version
rustc 0.13.0-dev (e4761c85b 2014-10-15 09:57:18 +0000)
This is supposed to be banned by RFC #136
cc @pcwalton
Metadata
Metadata
Assignees
Labels
A-linkageArea: linking into static, shared libraries and binariesArea: linking into static, shared libraries and binaries