about summary refs log tree commit diff
path: root/src/test/compile-fail
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/compile-fail')
-rw-r--r--src/test/compile-fail/issue-18343.rs24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/test/compile-fail/issue-18343.rs b/src/test/compile-fail/issue-18343.rs
index 3572e5084c1..802b21d211c 100644
--- a/src/test/compile-fail/issue-18343.rs
+++ b/src/test/compile-fail/issue-18343.rs
@@ -13,18 +13,30 @@ struct Obj<F> where F: FnMut() -> u32 {
     nfn: usize,
 }
 
+struct S<F> where F: FnMut() -> u32 {
+    v: Obj<F>,
+}
+
 fn func() -> u32 {
     0
 }
 
 fn main() {
-    let o = Obj { closure: || 42 };
+    let o = Obj { closure: || 42, nfn: 42 };
     o.closure(); //~ ERROR no method named `closure` found
-    //~^ NOTE use `(s.closure)(...)` if you meant to call the function stored in the `closure` field
-    let x = o.nfn(); //~ ERROR no method named `closure` found
-    //~^ NOTE did you mean `o.nfn`?
+    //~^ NOTE use `(o.closure)(...)` if you meant to call the function stored in the `closure` field
 
-    let b = Obj { closure: func };
+    // TODO move these to a new test for #2392
+    let x = o.nfn(); //~ ERROR no method named `nfn` found
+    //~^ NOTE did you mean to write `o.nfn`?
+
+    let b = Obj { closure: func, nfn: 5 };
     b.closure(); //~ ERROR no method named `closure` found
-    //~^ NOTE use `(s.closure)(...)` if you meant to call the function stored in the `closure` field
+    //~^ NOTE use `(b.closure)(...)` if you meant to call the function stored in the `closure` field
+
+    let s = S { v: b };
+    s.v.closure();//~ ERROR no method named `closure` found
+    //~^ NOTE use `(s.v.closure)(...)` if you meant to call the function stored in the `closure` field
+    s.v.nfn();//~ ERROR no method named `nfn` found
+    //~^ NOTE did you mean to write `s.v.nfn`?
 }