summaryrefslogtreecommitdiffstats
path: root/tests/ui/xcrate/xcrate-private-by-default.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
commit218caa410aa38c29984be31a5229b9fa717560ee (patch)
treec54bd55eeb6e4c508940a30e94c0032fbd45d677 /tests/ui/xcrate/xcrate-private-by-default.rs
parentReleasing progress-linux version 1.67.1+dfsg1-1~progress7.99u1. (diff)
downloadrustc-218caa410aa38c29984be31a5229b9fa717560ee.tar.xz
rustc-218caa410aa38c29984be31a5229b9fa717560ee.zip
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/ui/xcrate/xcrate-private-by-default.rs')
-rw-r--r--tests/ui/xcrate/xcrate-private-by-default.rs45
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/ui/xcrate/xcrate-private-by-default.rs b/tests/ui/xcrate/xcrate-private-by-default.rs
new file mode 100644
index 000000000..299cff54f
--- /dev/null
+++ b/tests/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
+}