| //@ aux-build:common.rs |
| // ignore-tidy-linelength |
| //@ only-x86_64 |
| //@ run-pass |
| //@ needs-unwind Asserting on contents of error message |
| |
| #![feature(core_intrinsics, generic_assert)] |
| |
| extern crate common; |
| |
| #[derive(Clone, Copy, PartialEq)] |
| struct CopyNoDebug(i32); |
| |
| #[derive(Debug, PartialEq)] |
| struct NoCopyDebug(i32); |
| |
| #[derive(PartialEq)] |
| struct NoCopyNoDebug(i32); |
| |
| fn main() { |
| // Has Copy but does not have Debug |
| common::test!( |
| let mut copy_no_debug = CopyNoDebug(1); |
| [ copy_no_debug == CopyNoDebug(3) ] => "Assertion failed: copy_no_debug == CopyNoDebug(3)\nWith captures:\n copy_no_debug = N/A\n" |
| ); |
| |
| // Does not have Copy but has Debug |
| common::test!( |
| let mut no_copy_debug = NoCopyDebug(1); |
| [ no_copy_debug == NoCopyDebug(3) ] => "Assertion failed: no_copy_debug == NoCopyDebug(3)\nWith captures:\n no_copy_debug = N/A\n" |
| ); |
| |
| // Does not have Copy and does not have Debug |
| common::test!( |
| let mut no_copy_no_debug = NoCopyNoDebug(1); |
| [ no_copy_no_debug == NoCopyNoDebug(3) ] => "Assertion failed: no_copy_no_debug == NoCopyNoDebug(3)\nWith captures:\n no_copy_no_debug = N/A\n" |
| ); |
| |
| // Unevaluated (Expression short-circuited) |
| common::test!( |
| let mut elem = true; |
| [ false && elem ] => "Assertion failed: false && elem\nWith captures:\n elem = N/A\n" |
| ); |
| } |