| //! This test checks that calling `.clone()` on a type that does |
| //! not implement the `Clone` trait results in a compilation error. |
| //! The `NotClone` and AlsoNotClone structs do not derive or |
| //! implement `Clone`, so attempting to clone them should fail. |
| |
| struct NotClone { |
| i: isize, |
| } |
| |
| fn not_clone(i: isize) -> NotClone { |
| NotClone { i } |
| } |
| |
| struct AlsoNotClone { |
| i: isize, |
| j: NotClone, |
| } |
| |
| fn also_not_clone(i: isize) -> AlsoNotClone { |
| AlsoNotClone { |
| i, |
| j: NotClone { i: i }, |
| } |
| } |
| |
| fn main() { |
| let x = not_clone(10); |
| let _y = x.clone(); |
| //~^ ERROR no method named `clone` found |
| |
| let x = also_not_clone(10); |
| let _y = x.clone(); |
| //~^ ERROR no method named `clone` found |
| } |