Changeset 8a919cf
- Timestamp:
- May 25, 2023, 6:44:01 PM (2 years ago)
- Branches:
- ast-experimental, master
- Children:
- 687b663, c26bea2a
- Parents:
- a5aa5bf
- File:
-
- 1 edited
-
tests/array.cfa (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tests/array.cfa
ra5aa5bf r8a919cf 37 37 #endif 38 38 39 int a1[0];39 int a1[0]; 40 40 E1( int a2[*]; ) 41 41 #ifndef __cforall … … 43 43 #endif 44 44 45 int m1[0][3];46 E1( int m2[*][*]; )47 int m4[3][3];45 int m1[0][3]; 46 E1( int m2[*][*]; ) 47 int m4[3][3]; 48 48 49 typedef int T;49 typedef int T; 50 50 51 int fred(int n) {52 E1( int a1[]; )53 E1( int a2[*]; )54 int a4[3];55 int T[3];56 int a5[n];57 }51 int fred(int n) { 52 E1( int a1[]; ) 53 E1( int a2[*]; ) 54 int a4[3]; 55 int T[3]; 56 int a5[n]; 57 } 58 58 59 int mary( int T[3], // same as: int *T60 int p1[const 3], // same as: int const *p161 int p2[static 3], // same as T, but length >=3 checked62 int p3[static const 3] // both above: 3 is static, p3 is const63 ) {64 }59 int mary( int T[3], // same as: int *T 60 int p1[const 3], // same as: int const *p1 61 int p2[static 3], // same as T, but length >=3 checked 62 int p3[static const 3] // both above: 3 is static, p3 is const 63 ) { 64 } 65 65 66 // function taking (), returning pointer to array of ints67 int (*tom())[3] {68 }66 // function taking (), returning pointer to array of ints 67 int (*tom())[3] { 68 } 69 69 70 // function taking (), returning pointer to function of same type as mary71 int (*(jane)())( int T[3],72 int p1[const 3],73 int p2[static 3],74 int p3[static const 3]75 ) {76 }70 // function taking (), returning pointer to function of same type as mary 71 int (*(jane)())( int T[3], 72 int p1[const 3], 73 int p2[static 3], 74 int p3[static const 3] 75 ) { 76 } 77 77 78 // functions returning same exotic pointers, in CFA's non-onion syntax79 #ifdef __cforall80 [ * [3] int ] toms_twin(...) {81 }82 [ * [int]( [3] int T,83 [const 3] int p1,84 [static 3] int p2,85 [static const 3] int p386 )87 ] janes_twin(...) {88 }89 #endif78 // functions returning same exotic pointers, in CFA's non-onion syntax 79 #ifdef __cforall 80 [ * [3] int ] toms_twin(...) { 81 } 82 [ * [int]( [3] int T, 83 [const 3] int p1, 84 [static 3] int p2, 85 [static const 3] int p3 86 ) 87 ] janes_twin(...) { 88 } 89 #endif 90 90 91 91 92 int fm1( int, int, int[][*] ); 93 int fm1( int r, int c, int m[][c] ) {}94 int fm2( int r, int c, int (*m)[c] ) {} // same as fm195 E2( int fm3( int r, int c, int m[][static c] ) {} ) // that's not static96 E3( int fm4( int r, int c, int m[][] ); ) // m's immediate element type is incomplete97 int fm5( int, int, int[*][*] ); // same as fm1 decl92 // int fm1( int, int, int[][*] ); // TODO: investigate gcc-11 warning 93 // int fm1( int r, int c, int m[][c] ) {} 94 int fm2( int r, int c, int (*m)[c] ) {} // same as fm1 95 E2( int fm3( int r, int c, int m[][static c] ) {} ) // that's not static 96 E3( int fm4( int r, int c, int m[][] ); ) // m's immediate element type is incomplete 97 int fm5( int, int, int[*][*] ); // same as fm1 decl 98 98 #ifndef __cforall 99 int fm5( int r, int c, int m[r][c] ) {} // BUG 276: CFA chokes but should accept100 // C: same as fm1 defn99 int fm5( int r, int c, int m[r][c] ) {} // BUG 276: CFA chokes but should accept 100 // C: same as fm1 defn 101 101 #endif 102 102
Note:
See TracChangeset
for help on using the changeset viewer.