about summary refs log tree commit diff
path: root/tests/ui/confuse-field-and-method/issue-33784.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/confuse-field-and-method/issue-33784.rs')
-rw-r--r--tests/ui/confuse-field-and-method/issue-33784.rs33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/ui/confuse-field-and-method/issue-33784.rs b/tests/ui/confuse-field-and-method/issue-33784.rs
new file mode 100644
index 00000000000..e9bb1f9fb46
--- /dev/null
+++ b/tests/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
+}