File: generic2.c

package info (click to toggle)
chibicc 1.0.23.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,832 kB
  • sloc: ansic: 62,911; sh: 275; makefile: 92
file content (36 lines) | stat: -rw-r--r-- 1,431 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "test.h"
int main(int argc, char**argv) {

  ASSERT(1, ({ char c; _Generic(c << 1, int:1 ); }) );
  ASSERT(1, ({ short s; _Generic(s >> 1, int:1 ); }) );
  ASSERT(1, ({ struct { unsigned int c : 17; } s; _Generic(~s.c, int:1 ); }) );
  ASSERT(1, ({ struct { unsigned long long c : 17; } s; _Generic(~s.c, int:1 ); }) );

  ASSERT(1, ({ char c; _Generic(-c, int:1 ); }) );
  ASSERT(1, ({ short s; _Generic(+s, int:1 ); }) );

  ASSERT(1, _Generic((long){0}, long:1, long long:0) );
  ASSERT(1, _Generic((long long){0}, long long:1, long:0) );

  ASSERT(1, _Generic(1L, long:1, long long:0) );
  ASSERT(1, _Generic(1LL, long long:1, long:0) );

  ASSERT(1, _Generic(1UL, unsigned long:1, unsigned long long:0) );
  ASSERT(1, _Generic(1lu, unsigned long:1, unsigned long long:0) );

  ASSERT(1, _Generic(1ULL, unsigned long long:1, unsigned long:0) );
  ASSERT(1, _Generic(1llu, unsigned long long:1, unsigned long:0) );

  ASSERT(1, ({ unsigned long a; long long b; _Generic(a + b, unsigned long long:1, unsigned long:0); }) );

  
  // ASSERT(1, ({ void *p; _Generic(argc ? p : "a", void*:1, char*:2); }) );
  // ASSERT(1, ({ void *p; _Generic(argc ? "a" : p, void*:1, char*:2); }) );

  // ASSERT(1, ({ double *p; char *q; _Generic(argc ? p : q, void*:1 ); }) );
  // ASSERT(1, ({ double *p; char *q; _Generic(argc ? q : p, void*:1 ); }) );

  ASSERT(1, ({ int vla[argc]; _Generic(vla, int*:1 ); }) );

  printf("OK\n");
}