summaryrefslogtreecommitdiffstats
path: root/src/test/ui/xcrate/xcrate-private-by-default.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/xcrate/xcrate-private-by-default.rs')
-rw-r--r--src/test/ui/xcrate/xcrate-private-by-default.rs45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/test/ui/xcrate/xcrate-private-by-default.rs b/src/test/ui/xcrate/xcrate-private-by-default.rs
new file mode 100644
index 000000000..299cff54f
--- /dev/null
+++ b/src/test/ui/xcrate/xcrate-private-by-default.rs
@@ -0,0 +1,45 @@
+// aux-build:static_priv_by_default.rs
+
+extern crate static_priv_by_default;
+
+fn foo<T>() {}
+
+fn main() {
+ // Actual public items should be public
+ static_priv_by_default::a;
+ static_priv_by_default::b;
+ static_priv_by_default::c;
+ foo::<static_priv_by_default::d>();
+ foo::<static_priv_by_default::e>();
+
+ // publicly re-exported items should be available
+ static_priv_by_default::bar::e;
+ static_priv_by_default::bar::f;
+ static_priv_by_default::bar::g;
+ foo::<static_priv_by_default::bar::h>();
+ foo::<static_priv_by_default::bar::i>();
+
+ // private items at the top should be inaccessible
+ static_priv_by_default::j;
+ //~^ ERROR: static `j` is private
+ static_priv_by_default::k;
+ //~^ ERROR: function `k` is private
+ static_priv_by_default::l;
+ //~^ ERROR: struct `l` is private
+ foo::<static_priv_by_default::m>();
+ //~^ ERROR: enum `m` is private
+ foo::<static_priv_by_default::n>();
+ //~^ ERROR: type alias `n` is private
+
+ // public items in a private mod should be inaccessible
+ static_priv_by_default::foo::a;
+ //~^ ERROR: module `foo` is private
+ static_priv_by_default::foo::b;
+ //~^ ERROR: module `foo` is private
+ static_priv_by_default::foo::c;
+ //~^ ERROR: module `foo` is private
+ foo::<static_priv_by_default::foo::d>();
+ //~^ ERROR: module `foo` is private
+ foo::<static_priv_by_default::foo::e>();
+ //~^ ERROR: module `foo` is private
+}