summaryrefslogtreecommitdiffstats
path: root/src/test/ui/xcrate/xcrate-private-by-default.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
commit698f8c2f01ea549d77d7dc3338a12e04c11057b9 (patch)
tree173a775858bd501c378080a10dca74132f05bc50 /src/test/ui/xcrate/xcrate-private-by-default.rs
parentInitial commit. (diff)
downloadrustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.tar.xz
rustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.zip
Adding upstream version 1.64.0+dfsg1.upstream/1.64.0+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
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
+}