// RUN: clang-tidy %s -checks='-*,hicpp-signed-bitwise' -- -std=c++11
// FIXME: Make the test work in all language modes.

#include "hicpp-signed-bitwise-standard-types.h"

void pure_bitmask_types() {
  // std::locale::category
  int SResult = 0;
  std::locale::category C = std::locale::category::ctype;

  SResult = std::locale::category::none | std::locale::category::collate;
  SResult|= std::locale::category::collate;
  SResult = std::locale::category::ctype & std::locale::category::monetary;
  SResult&= std::locale::category::monetary;
  SResult = std::locale::category::numeric ^ std::locale::category::time;
  SResult^= std::locale::category::time;
  SResult = std::locale::category::messages | std::locale::category::all;

  SResult = std::locale::category::all & C;
  SResult&= std::locale::category::all;
  SResult = std::locale::category::all | C;
  SResult|= std::locale::category::all;
  SResult = std::locale::category::all ^ C;
  SResult^= std::locale::category::all;

  // std::ctype_base::mask
  std::ctype_base::mask M = std::ctype_base::mask::punct;

  SResult = std::ctype_base::mask::space | std::ctype_base::mask::print;
  SResult = std::ctype_base::mask::cntrl & std::ctype_base::mask::upper;
  SResult = std::ctype_base::mask::lower ^ std::ctype_base::mask::alpha;
  SResult|= std::ctype_base::mask::digit | std::ctype_base::mask::punct;
  SResult&= std::ctype_base::mask::xdigit & std::ctype_base::mask::alnum;
  SResult^= std::ctype_base::mask::alnum ^ std::ctype_base::mask::graph;

  SResult&= std::ctype_base::mask::space & M;
  SResult|= std::ctype_base::mask::space | M;
  SResult^= std::ctype_base::mask::space ^ M;

  // std::ios_base::fmtflags
  std::ios_base::fmtflags F = std::ios_base::fmtflags::floatfield;

  SResult = std::ios_base::fmtflags::dec | std::ios_base::fmtflags::oct;
  SResult = std::ios_base::fmtflags::hex & std::ios_base::fmtflags::basefield;
  SResult = std::ios_base::fmtflags::left ^ std::ios_base::fmtflags::right;
  SResult|= std::ios_base::fmtflags::internal | std::ios_base::fmtflags::adjustfield;
  SResult&= std::ios_base::fmtflags::scientific & std::ios_base::fmtflags::fixed;
  SResult^= std::ios_base::fmtflags::floatfield ^ std::ios_base::fmtflags::boolalpha;
  SResult = std::ios_base::fmtflags::showbase | std::ios_base::fmtflags::showpoint;
  SResult = std::ios_base::fmtflags::showpos & std::ios_base::fmtflags::skipws;
  SResult = std::ios_base::fmtflags::unitbuf ^ std::ios_base::fmtflags::uppercase;

  SResult|= std::ios_base::fmtflags::unitbuf | F;
  SResult&= std::ios_base::fmtflags::unitbuf & F;
  SResult^= std::ios_base::fmtflags::unitbuf ^ F;

  // std::ios_base::iostate
  std::ios_base::iostate S = std::ios_base::iostate::goodbit;

  SResult^= std::ios_base::iostate::goodbit | std::ios_base::iostate::badbit;
  SResult|= std::ios_base::iostate::failbit & std::ios_base::iostate::eofbit;
  SResult&= std::ios_base::iostate::failbit ^ std::ios_base::iostate::eofbit;

  SResult = std::ios_base::iostate::goodbit | S;
  SResult = std::ios_base::iostate::goodbit & S;
  SResult = std::ios_base::iostate::goodbit ^ S;

  // std::ios_base::openmode
  std::ios_base::openmode B = std::ios_base::openmode::binary;

  SResult = std::ios_base::openmode::app | std::ios_base::openmode::binary;
  SResult = std::ios_base::openmode::in & std::ios_base::openmode::out;
  SResult = std::ios_base::openmode::trunc ^ std::ios_base::openmode::ate;

  SResult&= std::ios_base::openmode::trunc | B;
  SResult^= std::ios_base::openmode::trunc & B;
  SResult|= std::ios_base::openmode::trunc ^ B;
}

void still_forbidden() {
  // std::locale::category
  unsigned int UResult = 0u;
  int SResult = 0;

  SResult = std::ctype_base::mask::print ^ 8u;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  SResult = std::ctype_base::mask::cntrl | 8;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  SResult = std::ctype_base::mask::upper & 8;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  SResult = std::ctype_base::mask::lower ^ -8;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  
  // Staying within the allowed standard types is ok for bitwise assignment
  // operations.
  std::ctype_base::mask var = std::ctype_base::mask::print;
  SResult<<= std::ctype_base::mask::upper;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  SResult>>= std::ctype_base::mask::upper;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  SResult &= std::ctype_base::mask::upper;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  SResult |= std::ctype_base::mask::upper;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  SResult ^= std::ctype_base::mask::upper;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator

  UResult = std::locale::category::collate << 1u;
  UResult = std::locale::category::ctype << 1;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  UResult = std::locale::category::monetary >> 1u;
  UResult = std::locale::category::numeric >> 1;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator

  UResult = ~std::locale::category::messages;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a unary bitwise operator
  SResult = ~std::locale::category::all;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a unary bitwise operator

  // std::ctype_base::mask
  UResult = std::ctype_base::mask::space | 8;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  UResult = std::ctype_base::mask::print & 8u;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  UResult = std::ctype_base::mask::cntrl ^ -8;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator

  UResult = std::ctype_base::mask::upper << 1;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  UResult = std::ctype_base::mask::lower << 1u;
  UResult = std::ctype_base::mask::alpha >> 1u;
  UResult = std::ctype_base::mask::digit >> 1u;

  UResult = ~std::ctype_base::mask::punct;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a unary bitwise operator
  SResult = ~std::ctype_base::mask::xdigit;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a unary bitwise operator

  // std::ios_base::fmtflags
  UResult = std::ios_base::fmtflags::dec | 1;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  UResult = std::ios_base::fmtflags::oct & 1u;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  UResult = std::ios_base::fmtflags::hex ^ -1;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator

  UResult = std::ios_base::fmtflags::basefield >> 1;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  UResult = std::ios_base::fmtflags::left >> 1u;
  UResult = std::ios_base::fmtflags::right << 1;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  UResult = std::ios_base::fmtflags::internal << 1u;

  UResult = ~std::ios_base::fmtflags::adjustfield;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a unary bitwise operator
  SResult = ~std::ios_base::fmtflags::scientific;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a unary bitwise operator

  // std::ios_base::iostate
  UResult = std::ios_base::iostate::goodbit | 8;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  UResult = std::ios_base::iostate::badbit & 8u;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  UResult = std::ios_base::iostate::failbit ^ -8;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator

  UResult = std::ios_base::iostate::eofbit << 1;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  UResult = std::ios_base::iostate::goodbit << 1u;
  UResult = std::ios_base::iostate::badbit >> 1;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  UResult = std::ios_base::iostate::failbit >> 1u;

  UResult = ~std::ios_base::iostate::eofbit;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a unary bitwise operator
  SResult = ~std::ios_base::iostate::goodbit;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a unary bitwise operator

  // std::ios_base::openmode
  UResult = std::ios_base::app | 8;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  UResult = std::ios_base::binary & 8u;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  UResult = std::ios_base::in ^ -8;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator

  UResult = std::ios_base::out >> 1;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  UResult = std::ios_base::trunc >> 1u;
  UResult = std::ios_base::ate << 1;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a binary bitwise operator
  UResult = std::ios_base::ate << 1u;

  UResult = ~std::ios_base::openmode::app;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a unary bitwise operator
  SResult = ~std::ios_base::openmode::binary;
  // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use of a signed integer operand with a unary bitwise operator
}
