//@ 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"
  );
}
