| //! 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 | |
| } |