summaryrefslogtreecommitdiffstats
path: root/tests/ui/reachable/auxiliary
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/reachable/auxiliary')
-rw-r--r--tests/ui/reachable/auxiliary/issue-11225-1.rs18
-rw-r--r--tests/ui/reachable/auxiliary/issue-11225-2.rs28
-rw-r--r--tests/ui/reachable/auxiliary/issue-11225-3.rs28
-rw-r--r--tests/ui/reachable/auxiliary/unreachable_variant.rs5
4 files changed, 79 insertions, 0 deletions
diff --git a/tests/ui/reachable/auxiliary/issue-11225-1.rs b/tests/ui/reachable/auxiliary/issue-11225-1.rs
new file mode 100644
index 000000000..2c6f899a0
--- /dev/null
+++ b/tests/ui/reachable/auxiliary/issue-11225-1.rs
@@ -0,0 +1,18 @@
+mod inner {
+ pub trait Trait {
+ fn f(&self) { f(); }
+ fn f_ufcs(&self) { f_ufcs(); }
+ }
+
+ impl Trait for isize {}
+
+ fn f() {}
+ fn f_ufcs() {}
+}
+
+pub fn foo<T: inner::Trait>(t: T) {
+ t.f();
+}
+pub fn foo_ufcs<T: inner::Trait>(t: T) {
+ T::f_ufcs(&t);
+}
diff --git a/tests/ui/reachable/auxiliary/issue-11225-2.rs b/tests/ui/reachable/auxiliary/issue-11225-2.rs
new file mode 100644
index 000000000..4381f0a4e
--- /dev/null
+++ b/tests/ui/reachable/auxiliary/issue-11225-2.rs
@@ -0,0 +1,28 @@
+use inner::Trait;
+
+mod inner {
+ pub struct Foo;
+ pub trait Trait {
+ fn f(&self);
+ fn f_ufcs(&self);
+ }
+
+ impl Trait for Foo {
+ fn f(&self) { }
+ fn f_ufcs(&self) { }
+ }
+}
+
+pub trait Outer {
+ fn foo<T: Trait>(&self, t: T) { t.f(); }
+ fn foo_ufcs<T: Trait>(&self, t: T) { T::f(&t); }
+}
+
+impl Outer for isize {}
+
+pub fn foo<T: Outer>(t: T) {
+ t.foo(inner::Foo);
+}
+pub fn foo_ufcs<T: Outer>(t: T) {
+ T::foo_ufcs(&t, inner::Foo)
+}
diff --git a/tests/ui/reachable/auxiliary/issue-11225-3.rs b/tests/ui/reachable/auxiliary/issue-11225-3.rs
new file mode 100644
index 000000000..266e42a10
--- /dev/null
+++ b/tests/ui/reachable/auxiliary/issue-11225-3.rs
@@ -0,0 +1,28 @@
+trait PrivateTrait {
+ fn private_trait_method(&self);
+ fn private_trait_method_ufcs(&self);
+}
+
+struct PrivateStruct;
+
+impl PrivateStruct {
+ fn private_inherent_method(&self) { }
+ fn private_inherent_method_ufcs(&self) { }
+}
+
+impl PrivateTrait for PrivateStruct {
+ fn private_trait_method(&self) { }
+ fn private_trait_method_ufcs(&self) { }
+}
+
+#[inline]
+pub fn public_inlinable_function() {
+ PrivateStruct.private_trait_method();
+ PrivateStruct.private_inherent_method();
+}
+
+#[inline]
+pub fn public_inlinable_function_ufcs() {
+ PrivateStruct::private_trait_method(&PrivateStruct);
+ PrivateStruct::private_inherent_method(&PrivateStruct);
+}
diff --git a/tests/ui/reachable/auxiliary/unreachable_variant.rs b/tests/ui/reachable/auxiliary/unreachable_variant.rs
new file mode 100644
index 000000000..4e94a4b5e
--- /dev/null
+++ b/tests/ui/reachable/auxiliary/unreachable_variant.rs
@@ -0,0 +1,5 @@
+mod super_sekrit {
+ pub enum sooper_sekrit {
+ quux, baz
+ }
+}