blob: 80938e50b67a770d0c0279e52df93148f9a5641d [file] [log] [blame]
//! Test that closures only implement `Clone` if all captured values implement `Clone`.
//!
//! When a closure captures variables from its environment, it can only be cloned
//! if all those captured variables are cloneable. This test makes sure the compiler
//! properly rejects attempts to clone closures that capture non-Clone types.
//@ compile-flags: --diagnostic-width=300
struct NonClone(i32);
fn main() {
let captured_value = NonClone(5);
let closure = move || {
let _ = captured_value.0;
};
closure.clone();
//~^ ERROR the trait bound `NonClone: Clone` is not satisfied
}