// RUN: %clang_cc1 -verify -ffixed-point %s

void func() {
  _Bool b;
  char c;
  int i;
  float f;
  double d;
  double _Complex dc;
  int _Complex ic;
  struct S {
    int i;
  } s;
  enum E {
    A
  } e;
  int *ptr;
  typedef int int_t;
  int_t i2;

  _Accum accum;
  _Fract fract = accum; // ok
  _Accum *accum_ptr;

  accum = dc;      // expected-error{{conversion between fixed point and '_Complex double' is not yet supported}}
  accum = ic;      // expected-error{{conversion between fixed point and '_Complex int' is not yet supported}}
  accum = s;       // expected-error{{assigning to '_Accum' from incompatible type 'struct S'}}
  accum = ptr;     // expected-error{{assigning to '_Accum' from incompatible type 'int *'}}
  accum_ptr = ptr; // expected-warning{{incompatible pointer types assigning to '_Accum *' from 'int *'}}

  dc = accum;      // expected-error{{conversion between fixed point and '_Complex double' is not yet supported}}
  ic = accum;      // expected-error{{conversion between fixed point and '_Complex int' is not yet supported}}
  s = accum;       // expected-error{{assigning to 'struct S' from incompatible type '_Accum'}}
  ptr = accum;     // expected-error{{assigning to 'int *' from incompatible type '_Accum'}}
  ptr = accum_ptr; // expected-warning{{incompatible pointer types assigning to 'int *' from '_Accum *'}}
}
