]> git.lizzy.rs Git - rust.git/blob - src/test/ui/suggestions/confuse-field-and-method/issue-33784.rs
4cd50be50d4a57aaea417f1e81391e632823cc6c
[rust.git] / src / test / ui / suggestions / confuse-field-and-method / issue-33784.rs
1 // Copyright 2016 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11 use std::ops::Deref;
12
13 struct Obj<F> where F: FnMut() -> u32 {
14     fn_ptr: fn() -> (),
15     closure: F,
16 }
17
18 struct C {
19     c_fn_ptr: fn() -> (),
20 }
21
22 struct D(C);
23
24 impl Deref for D {
25     type Target = C;
26     fn deref(&self) -> &C {
27         &self.0
28     }
29 }
30
31
32 fn empty() {}
33
34 fn main() {
35     let o = Obj { fn_ptr: empty, closure: || 42 };
36     let p = &o;
37     p.closure(); //~ ERROR no method named `closure` found
38     let q = &p;
39     q.fn_ptr(); //~ ERROR no method named `fn_ptr` found
40     let r = D(C { c_fn_ptr: empty });
41     let s = &r;
42     s.c_fn_ptr(); //~ ERROR no method named `c_fn_ptr` found
43 }