source: tests/typedefRedef.cfa @ 65ef0cd

Last change on this file since 65ef0cd was 1d61b67, checked in by Thierry Delisle <tdelisle@…>, 3 years ago

Added attribute case to typedef replacement test.

  • Property mode set to 100644
File size: 1.3 KB
Line 
1typedef volatile struct Foo FooInterm;
2typedef const FooInterm Foo;
3#ifdef ERR1
4typedef struct Foo Foo;
5#endif
6
7typedef int ** pt;
8typedef int ** pt;
9
10#ifdef __CFA__
11extern "C" {
12#endif
13typedef int __io_read_fn ( char buf);
14typedef int __io_write_fn ( const char buf);
15
16
17__io_read_fn read;
18__io_write_fn write;
19#ifdef __CFA__
20}
21#endif
22
23int sz;
24typedef int FUNC(int, ...);
25typedef int FUNC(int, ...);
26
27typedef int ARR[];
28typedef int ARR[];
29#ifdef ERR1
30// if a typedef has an array dimension, it can only be redefined to the same dimension
31typedef int ARR[2];
32#endif
33
34typedef int X;
35typedef int Y;
36typedef Y Y2;
37typedef X X2;
38
39typedef Y2 Z;
40typedef X2 Z;
41
42typedef Z X2;
43typedef int X2;
44typedef Z X2;
45typedef int X2;
46
47X2 value  __attribute__((aligned(4 * sizeof(X2))));
48
49__attribute__((aligned(4 * sizeof(X2)))) struct rseq_cs {
50        int foo;
51};
52
53// xxx - this doesn't work yet due to parsing problems with generic types
54// #ifdef __CFA__
55// typedef forall(type T) void foo(T);
56// typedef forall(type T) void foo(T);
57// typedef forall(type S) void foo(S); // should be allowed to do this...
58// #endif
59
60int main() {
61        typedef int ARR[sz];
62
63        // can't redefine typedef which is VLA
64#if ERR1
65        typedef int ARR[sz];
66#endif
67
68        Foo * x;
69
70        typedef struct Bar Foo;
71        Foo * y;
72
73        typedef int *** pt;
74
75    #pragma GCC warning "Compiled"                      // force non-empty .expect file, NO TABS!!!
76}
Note: See TracBrowser for help on using the repository browser.