about summary refs log tree commit diff
path: root/tests/ui/resolve/privacy-struct-ctor.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/resolve/privacy-struct-ctor.rs')
-rw-r--r--tests/ui/resolve/privacy-struct-ctor.rs47
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/ui/resolve/privacy-struct-ctor.rs b/tests/ui/resolve/privacy-struct-ctor.rs
new file mode 100644
index 00000000000..0eecc7f8cc5
--- /dev/null
+++ b/tests/ui/resolve/privacy-struct-ctor.rs
@@ -0,0 +1,47 @@
+// aux-build:privacy-struct-ctor.rs
+
+extern crate privacy_struct_ctor as xcrate;
+
+mod m {
+    pub struct S(u8);
+    pub struct S2 {
+        s: u8
+    }
+
+    pub mod n {
+        pub(in m) struct Z(pub(in m::n) u8);
+    }
+
+    use m::n::Z; // OK, only the type is imported
+
+    fn f() {
+        n::Z;
+        //~^ ERROR tuple struct constructor `Z` is private
+        Z;
+        //~^ ERROR expected value, found struct `Z`
+    }
+}
+
+use m::S; // OK, only the type is imported
+use m::S2; // OK, only the type is imported
+
+fn main() {
+    m::S;
+    //~^ ERROR tuple struct constructor `S` is private
+    let _: S = m::S(2);
+    //~^ ERROR tuple struct constructor `S` is private
+    S;
+    //~^ ERROR expected value, found struct `S`
+    m::n::Z;
+    //~^ ERROR tuple struct constructor `Z` is private
+
+    S2;
+    //~^ ERROR expected value, found struct `S2`
+
+    xcrate::m::S;
+    //~^ ERROR tuple struct constructor `S` is private
+    xcrate::S;
+    //~^ ERROR expected value, found struct `xcrate::S`
+    xcrate::m::n::Z;
+    //~^ ERROR tuple struct constructor `Z` is private
+}