summaryrefslogtreecommitdiffstats
path: root/src/test/ui/confuse-field-and-method/issue-33784.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/confuse-field-and-method/issue-33784.rs')
-rw-r--r--src/test/ui/confuse-field-and-method/issue-33784.rs33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/test/ui/confuse-field-and-method/issue-33784.rs b/src/test/ui/confuse-field-and-method/issue-33784.rs
new file mode 100644
index 000000000..e9bb1f9fb
--- /dev/null
+++ b/src/test/ui/confuse-field-and-method/issue-33784.rs
@@ -0,0 +1,33 @@
+use std::ops::Deref;
+
+struct Obj<F> where F: FnMut() -> u32 {
+ fn_ptr: fn() -> (),
+ closure: F,
+}
+
+struct C {
+ c_fn_ptr: fn() -> (),
+}
+
+struct D(C);
+
+impl Deref for D {
+ type Target = C;
+ fn deref(&self) -> &C {
+ &self.0
+ }
+}
+
+
+fn empty() {}
+
+fn main() {
+ let o = Obj { fn_ptr: empty, closure: || 42 };
+ let p = &o;
+ p.closure(); //~ ERROR no method named `closure` found
+ let q = &p;
+ q.fn_ptr(); //~ ERROR no method named `fn_ptr` found
+ let r = D(C { c_fn_ptr: empty });
+ let s = &r;
+ s.c_fn_ptr(); //~ ERROR no method named `c_fn_ptr` found
+}