summaryrefslogtreecommitdiffstats
path: root/tests/ui/privacy
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/privacy')
-rw-r--r--tests/ui/privacy/issue-111220-2-tuple-struct-fields-projection.rs33
-rw-r--r--tests/ui/privacy/issue-111220-2-tuple-struct-fields-projection.stderr9
-rw-r--r--tests/ui/privacy/issue-111220-tuple-struct-fields.rs46
-rw-r--r--tests/ui/privacy/issue-111220-tuple-struct-fields.stderr21
-rw-r--r--tests/ui/privacy/privacy2.stderr8
-rw-r--r--tests/ui/privacy/privacy3.stderr8
6 files changed, 111 insertions, 14 deletions
diff --git a/tests/ui/privacy/issue-111220-2-tuple-struct-fields-projection.rs b/tests/ui/privacy/issue-111220-2-tuple-struct-fields-projection.rs
new file mode 100644
index 000000000..f413b5027
--- /dev/null
+++ b/tests/ui/privacy/issue-111220-2-tuple-struct-fields-projection.rs
@@ -0,0 +1,33 @@
+mod b {
+ pub struct A(u32);
+}
+
+trait Id {
+ type Assoc;
+}
+impl Id for b::A {
+ type Assoc = b::A;
+}
+impl Id for u32 {
+ type Assoc = u32;
+}
+
+
+trait Trait<T> {
+ fn method(&self)
+ where
+ T: Id<Assoc = b::A>;
+}
+
+impl<T: Id> Trait<T> for <T as Id>::Assoc {
+ fn method(&self)
+ where
+ T: Id<Assoc = b::A>,
+ {
+ let Self(a) = self;
+ //~^ ERROR: tuple struct constructor `A` is private
+ println!("{a}");
+ }
+}
+
+fn main() {}
diff --git a/tests/ui/privacy/issue-111220-2-tuple-struct-fields-projection.stderr b/tests/ui/privacy/issue-111220-2-tuple-struct-fields-projection.stderr
new file mode 100644
index 000000000..231a4da8b
--- /dev/null
+++ b/tests/ui/privacy/issue-111220-2-tuple-struct-fields-projection.stderr
@@ -0,0 +1,9 @@
+error[E0603]: tuple struct constructor `A` is private
+ --> $DIR/issue-111220-2-tuple-struct-fields-projection.rs:27:13
+ |
+LL | let Self(a) = self;
+ | ^^^^^^^
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0603`.
diff --git a/tests/ui/privacy/issue-111220-tuple-struct-fields.rs b/tests/ui/privacy/issue-111220-tuple-struct-fields.rs
new file mode 100644
index 000000000..78d35fd96
--- /dev/null
+++ b/tests/ui/privacy/issue-111220-tuple-struct-fields.rs
@@ -0,0 +1,46 @@
+mod b {
+ #[derive(Default)]
+ pub struct A(u32);
+}
+
+impl b::A {
+ fn inherent_bypass(&self) {
+ let Self(x) = self;
+ //~^ ERROR: tuple struct constructor `A` is private
+ println!("{x}");
+ }
+}
+
+pub trait B {
+ fn f(&self);
+}
+
+impl B for b::A {
+ fn f(&self) {
+ let Self(a) = self;
+ //~^ ERROR: tuple struct constructor `A` is private
+ println!("{}", a);
+ }
+}
+
+pub trait Projector {
+ type P;
+}
+
+impl Projector for () {
+ type P = b::A;
+}
+
+pub trait Bypass2 {
+ fn f2(&self);
+}
+
+impl Bypass2 for <() as Projector>::P {
+ fn f2(&self) {
+ let Self(a) = self;
+ //~^ ERROR: tuple struct constructor `A` is private
+ println!("{}", a);
+ }
+}
+
+fn main() {}
diff --git a/tests/ui/privacy/issue-111220-tuple-struct-fields.stderr b/tests/ui/privacy/issue-111220-tuple-struct-fields.stderr
new file mode 100644
index 000000000..17a32379c
--- /dev/null
+++ b/tests/ui/privacy/issue-111220-tuple-struct-fields.stderr
@@ -0,0 +1,21 @@
+error[E0603]: tuple struct constructor `A` is private
+ --> $DIR/issue-111220-tuple-struct-fields.rs:8:13
+ |
+LL | let Self(x) = self;
+ | ^^^^^^^
+
+error[E0603]: tuple struct constructor `A` is private
+ --> $DIR/issue-111220-tuple-struct-fields.rs:20:13
+ |
+LL | let Self(a) = self;
+ | ^^^^^^^
+
+error[E0603]: tuple struct constructor `A` is private
+ --> $DIR/issue-111220-tuple-struct-fields.rs:40:13
+ |
+LL | let Self(a) = self;
+ | ^^^^^^^
+
+error: aborting due to 3 previous errors
+
+For more information about this error, try `rustc --explain E0603`.
diff --git a/tests/ui/privacy/privacy2.stderr b/tests/ui/privacy/privacy2.stderr
index 882f31465..c2a33ce1f 100644
--- a/tests/ui/privacy/privacy2.stderr
+++ b/tests/ui/privacy/privacy2.stderr
@@ -23,13 +23,7 @@ LL | pub fn foo() {}
error: requires `sized` lang_item
-error: requires `sized` lang_item
-
-error: requires `sized` lang_item
-
-error: requires `sized` lang_item
-
-error: aborting due to 6 previous errors
+error: aborting due to 3 previous errors
Some errors have detailed explanations: E0432, E0603.
For more information about an error, try `rustc --explain E0432`.
diff --git a/tests/ui/privacy/privacy3.stderr b/tests/ui/privacy/privacy3.stderr
index 42ce456d9..22c1e48b0 100644
--- a/tests/ui/privacy/privacy3.stderr
+++ b/tests/ui/privacy/privacy3.stderr
@@ -6,12 +6,6 @@ LL | use bar::gpriv;
error: requires `sized` lang_item
-error: requires `sized` lang_item
-
-error: requires `sized` lang_item
-
-error: requires `sized` lang_item
-
-error: aborting due to 5 previous errors
+error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0432`.