source: tests/typedefRedef.cfa @ d96f7c4

Last change on this file since d96f7c4 was 2853d6f, checked in by Michael Brooks <mlbrooks@…>, 3 weeks ago

Remove uses of warnings to show test success. Eliminate simple causes of other warnings from affected tests and remove the result from WFLAG_OPT_LAX.

Many affected tests also formerly used -fsyntax-only to avoid errors at later compilation stages, or at runtime. Repair such tests to actually work though runtime, and remove them from SYNTAX_ONLY_CODE.

Group tests listed under WFLAGS_OPT according to why they should receive lax treatment. Add reason WFLGAS_OPT_LAX_EXPECT_WARN and give the original list reason WFLGAS_OPT_LAX_TO_INVESTIGATE.

Tests whose purpose is to show a warning are listed as both SYNTAX_ONLY_CODE (so that the warning is the output) and WFLGAS_OPT_LAX_EXPECT_WARN (to document this fact).

  • Property mode set to 100644
File size: 1.5 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 [ float[], char[], int[] ] ARRSa;
35typedef [ float[], char[], int[] ] ARRSa;
36#ifdef ERR1
37typedef [ float[], char[2], int[] ] ARRSa;
38#endif
39
40typedef int ARRSb[][1][2][3];
41typedef int ARRSb[][1][2][3];
42#ifdef ERR1
43typedef int ARRSb[][1][2][99];
44#endif
45
46typedef int X;
47typedef int Y;
48typedef Y Y2;
49typedef X X2;
50
51typedef Y2 Z;
52typedef X2 Z;
53
54typedef Z X2;
55typedef int X2;
56typedef Z X2;
57typedef int X2;
58
59X2 value  __attribute__((aligned(4 * sizeof(X2))));
60
61__attribute__((aligned(4 * sizeof(X2)))) struct rseq_cs {
62        int foo;
63};
64
65// xxx - this doesn't work yet due to parsing problems with generic types
66// #ifdef __CFA__
67// typedef forall(type T) void foo(T);
68// typedef forall(type T) void foo(T);
69// typedef forall(type S) void foo(S); // should be allowed to do this...
70// #endif
71
72int main() {
73        typedef int ARR[sz];
74
75        // can't redefine typedef which is VLA
76#if ERR1
77        typedef int ARR[sz];
78#endif
79
80        Foo * x;        (void) x;
81
82        typedef struct Bar Foo;
83        Foo * y;        (void) y;
84
85        typedef int *** pt;
86
87        printf("done\n");
88}
Note: See TracBrowser for help on using the repository browser.