summaryrefslogtreecommitdiffstats
path: root/tests/ui/privacy/privacy-ns.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/privacy/privacy-ns.rs')
-rw-r--r--tests/ui/privacy/privacy-ns.rs114
1 files changed, 114 insertions, 0 deletions
diff --git a/tests/ui/privacy/privacy-ns.rs b/tests/ui/privacy/privacy-ns.rs
new file mode 100644
index 000000000..c32e3f178
--- /dev/null
+++ b/tests/ui/privacy/privacy-ns.rs
@@ -0,0 +1,114 @@
+// run-pass
+#![allow(non_snake_case)]
+
+
+// Check we do the correct privacy checks when we import a name and there is an
+// item with that name in both the value and type namespaces.
+
+// pretty-expanded FIXME #23616
+
+#![allow(dead_code)]
+#![allow(unused_imports)]
+
+
+// public type, private value
+pub mod foo1 {
+ pub trait Bar {
+ fn dummy(&self) { }
+ }
+ pub struct Baz;
+
+ fn Bar() { }
+}
+
+fn test_unused1() {
+ use foo1::*;
+}
+
+fn test_single1() {
+ use foo1::Bar;
+
+ let _x: Box<dyn Bar>;
+}
+
+fn test_list1() {
+ use foo1::{Bar,Baz};
+
+ let _x: Box<dyn Bar>;
+}
+
+fn test_glob1() {
+ use foo1::*;
+
+ let _x: Box<dyn Bar>;
+}
+
+// private type, public value
+pub mod foo2 {
+ trait Bar {
+ fn dummy(&self) { }
+ }
+ pub struct Baz;
+
+ pub fn Bar() { }
+}
+
+fn test_unused2() {
+ use foo2::*;
+}
+
+fn test_single2() {
+ use foo2::Bar;
+
+ Bar();
+}
+
+fn test_list2() {
+ use foo2::{Bar,Baz};
+
+ Bar();
+}
+
+fn test_glob2() {
+ use foo2::*;
+
+ Bar();
+}
+
+// public type, public value
+pub mod foo3 {
+ pub trait Bar {
+ fn dummy(&self) { }
+ }
+ pub struct Baz;
+
+ pub fn Bar() { }
+}
+
+fn test_unused3() {
+ use foo3::*;
+}
+
+fn test_single3() {
+ use foo3::Bar;
+
+ Bar();
+ let _x: Box<dyn Bar>;
+}
+
+fn test_list3() {
+ use foo3::{Bar,Baz};
+
+ Bar();
+ let _x: Box<dyn Bar>;
+}
+
+fn test_glob3() {
+ use foo3::*;
+
+ Bar();
+ let _x: Box<dyn Bar>;
+}
+
+fn main() {
+}