// stderr-per-bitwidth
use std::mem::transmute;

fn get_flag<const FlagSet: bool, const ShortName: char>() -> Option<char> {
  if FlagSet {
    Some(ShortName)
  } else {
    None
  }
}

union CharRaw {
  byte: u8,
  character: char,
}

union BoolRaw {
  byte: u8,
  boolean: bool,
}

const char_raw: CharRaw = CharRaw { byte: 0xFF };
const bool_raw: BoolRaw = BoolRaw { byte: 0x42 };

fn main() {
  // Test that basic cases don't work
  assert!(get_flag::<true, 'c'>().is_some());
  assert!(get_flag::<false, 'x'>().is_none());
  get_flag::<false, 0xFF>();
  //~^ ERROR mismatched types
  get_flag::<7, 'c'>();
  //~^ ERROR mismatched types
  get_flag::<42, 0x5ad>();
  //~^ ERROR mismatched types
  //~| ERROR mismatched types


  get_flag::<false, { unsafe { char_raw.character } }>();
  //~^ ERROR evaluation of constant value failed
  //~| uninitialized
  get_flag::<{ unsafe { bool_raw.boolean } }, 'z'>();
  //~^ ERROR it is undefined behavior
  get_flag::<{ unsafe { bool_raw.boolean } }, { unsafe { char_raw.character } }>();
  //~^ ERROR evaluation of constant value failed
  //~| uninitialized
  //~| ERROR it is undefined behavior
}
