History

A right fix for the array in struct initialization w/o '{' Parse a type if there is only one '(' before a type token. Otherwise a recursion will perform a job.

seyko committed 11 years ago

Commit bd531ec1 parent 367bb6f4 files · +116 −21Browse files

Showing the changes to tests/tests2 (3 of 4 files). Show all

Unified · Split

3 files
  1. tests/tests2/75_array_in_struct_init.c +33 −0
  2. tests/tests2/75_array_in_struct_init.expect +72 −0
  3. tests/tests2/Makefile +2 −1
tests/tests2/75_array_in_struct_init.c+33−0
@@ -0,0 +1,33 @@
1#include <stdio.h>
2
3/* This test is a snippet from the J interpreter */
4
5typedef long I;
6typedef struct{I c[4];I b,e,k;} PT;
7
8PT cases[] = {
9 ((I)4194304L +(I)2097152L +(I)67108864L), (I)262144L, (((I)1L +(I)256L +(I)4L +(I)8L +(I)16L +(I)64L +(I)128L +(I)268435456L +(I)536870912L +(I)1024L +(I)4096L +(I)8192L +(I)16384L)+((I)2L +(I)131072L +(I)2048L)+(I)32L +(I)32768L +(I)65536L), -1L, 1,2,1,
10 ((I)+4194304L +(I)2097152L +(I)67108864L)+( (I)524288L +(I)262144L +(((I)1L +(I)256L +(I)4L +(I)8L +(I)16L +(I)64L +(I)128L +(I)268435456L +(I)536870912L +(I)1024L +(I)4096L +(I)8192L +(I)16384L)+((I)2L +(I)131072L +(I)2048L)+(I)32L +(I)32768L +(I)65536L)), (I)262144L, (I)262144L, (((I)1L +(I)256L +(I)4L +(I)8L +(I)16L +(I)64L +(I)128L +(I)268435456L +(I)536870912L +(I)1024L +(I)4096L +(I)8192L +(I)16384L)+((I)2L +(I)131072L +(I)2048L)+(I)32L +(I)32768L +(I)65536L), 2,3,2,
11 ((I)4194304L +(I)2097152L +(I)67108864L)+( (I)524288L +(I)262144L +(((I)1L +(I)256L +(I)4L +(I)8L +(I)16L +(I)64L +(I)128L +(I)268435456L +(I)536870912L +(I)1024L +(I)4096L +(I)8192L +(I)16384L)+((I)2L +(I)131072L +(I)2048L)+(I)32L +(I)32768L +(I)65536L)), (((I)1L +(I)256L +(I)4L +(I)8L +(I)16L +(I)64L +(I)128L +(I)268435456L +(I)536870912L +(I)1024L +(I)4096L +(I)8192L +(I)16384L)+((I)2L +(I)131072L +(I)2048L)+(I)32L +(I)32768L +(I)65536L), (I)262144L, (((I)1L +(I)256L +(I)4L +(I)8L +(I)16L +(I)64L +(I)128L +(I)268435456L +(I)536870912L +(I)1024L +(I)4096L +(I)8192L +(I)16384L)+((I)2L +(I)131072L +(I)2048L)+(I)32L +(I)32768L +(I)65536L), 1,3,2,
12 ((I)4194304L +(I)2097152L +(I)67108864L)+( (I)524288L +(I)262144L +(((I)1L +(I)256L +(I)4L +(I)8L +(I)16L +(I)64L +(I)128L +(I)268435456L +(I)536870912L +(I)1024L +(I)4096L +(I)8192L +(I)16384L)+((I)2L +(I)131072L +(I)2048L)+(I)32L +(I)32768L +(I)65536L)), (I)262144L +(((I)1L +(I)256L +(I)4L +(I)8L +(I)16L +(I)64L +(I)128L +(I)268435456L +(I)536870912L +(I)1024L +(I)4096L +(I)8192L +(I)16384L)+((I)2L +(I)131072L +(I)2048L)+(I)32L +(I)32768L +(I)65536L), (I)524288L, -1L, 1,2,1,
13 ((I)4194304L +(I)2097152L +(I)67108864L)+( (I)524288L +(I)262144L +(((I)1L +(I)256L +(I)4L +(I)8L +(I)16L +(I)64L +(I)128L +(I)268435456L +(I)536870912L +(I)1024L +(I)4096L +(I)8192L +(I)16384L)+((I)2L +(I)131072L +(I)2048L)+(I)32L +(I)32768L +(I)65536L)), (I)262144L +(((I)1L +(I)256L +(I)4L +(I)8L +(I)16L +(I)64L +(I)128L +(I)268435456L +(I)536870912L +(I)1024L +(I)4096L +(I)8192L +(I)16384L)+((I)2L +(I)131072L +(I)2048L)+(I)32L +(I)32768L +(I)65536L), (I)1048576L, (I)262144L +(((I)1L +(I)256L +(I)4L +(I)8L +(I)16L +(I)64L +(I)128L +(I)268435456L +(I)536870912L +(I)1024L +(I)4096L +(I)8192L +(I)16384L)+((I)2L +(I)131072L +(I)2048L)+(I)32L +(I)32768L +(I)65536L), 1,3,1,
14 ((I)4194304L +(I)2097152L +(I)67108864L)+( (I)524288L +(I)262144L +(((I)1L +(I)256L +(I)4L +(I)8L +(I)16L +(I)64L +(I)128L +(I)268435456L +(I)536870912L +(I)1024L +(I)4096L +(I)8192L +(I)16384L)+((I)2L +(I)131072L +(I)2048L)+(I)32L +(I)32768L +(I)65536L)), (I)262144L +(((I)1L +(I)256L +(I)4L +(I)8L +(I)16L +(I)64L +(I)128L +(I)268435456L +(I)536870912L +(I)1024L +(I)4096L +(I)8192L +(I)16384L)+((I)2L +(I)131072L +(I)2048L)+(I)32L +(I)32768L +(I)65536L), (I)262144L, (I)262144L, 1,3,1,
15 ((I)4194304L +(I)2097152L +(I)67108864L), ((I)1048576L +(I)524288L +(I)262144L +(((I)1L +(I)256L +(I)4L +(I)8L +(I)16L +(I)64L +(I)128L +(I)268435456L +(I)536870912L +(I)1024L +(I)4096L +(I)8192L +(I)16384L)+((I)2L +(I)131072L +(I)2048L)+(I)32L +(I)32768L +(I)65536L)), ((I)1048576L +(I)524288L +(I)262144L +(((I)1L +(I)256L +(I)4L +(I)8L +(I)16L +(I)64L +(I)128L +(I)268435456L +(I)536870912L +(I)1024L +(I)4096L +(I)8192L +(I)16384L)+((I)2L +(I)131072L +(I)2048L)+(I)32L +(I)32768L +(I)65536L)), -1L, 1,2,1,
16 (I)33554432L +(((I)1L +(I)256L +(I)4L +(I)8L +(I)16L +(I)64L +(I)128L +(I)268435456L +(I)536870912L +(I)1024L +(I)4096L +(I)8192L +(I)16384L)+((I)2L +(I)131072L +(I)2048L)+(I)32L +(I)32768L +(I)65536L), (I)2097152L, ((I)1048576L +(I)524288L +(I)262144L +(((I)1L +(I)256L +(I)4L +(I)8L +(I)16L +(I)64L +(I)128L +(I)268435456L +(I)536870912L +(I)1024L +(I)4096L +(I)8192L +(I)16384L)+((I)2L +(I)131072L +(I)2048L)+(I)32L +(I)32768L +(I)65536L)), -1L, 0,2,1,
17 (I)67108864L, ((I)1048576L +(I)524288L +(I)262144L +(((I)1L +(I)256L +(I)4L +(I)8L +(I)16L +(I)64L +(I)128L +(I)268435456L +(I)536870912L +(I)1024L +(I)4096L +(I)8192L +(I)16384L)+((I)2L +(I)131072L +(I)2048L)+(I)32L +(I)32768L +(I)65536L)), (I)134217728L, -1L, 0,2,0,
18};
19
20int main() {
21 int i, j;
22
23 for(j=0; j < sizeof(cases)/sizeof(cases[0]); j++) {
24 for(i=0; i < sizeof(cases->c)/sizeof(cases->c[0]); i++)
25 printf("cases[%d].c[%d]=%ld\n", j, i, cases[j].c[i]);
26
27 printf("cases[%d].b=%ld\n", j, cases[j].b);
28 printf("cases[%d].e=%ld\n", j, cases[j].e);
29 printf("cases[%d].k=%ld\n", j, cases[j].k);
30 printf("\n");
31 }
32 return 0;
33}
tests/tests2/75_array_in_struct_init.expect+72−0
@@ -0,0 +1,72 @@
1cases[0].c[0]=73400320
2cases[0].c[1]=262144
3cases[0].c[2]=805567999
4cases[0].c[3]=-1
5cases[0].b=1
6cases[0].e=2
7cases[0].k=1
8
9cases[1].c[0]=879754751
10cases[1].c[1]=262144
11cases[1].c[2]=262144
12cases[1].c[3]=805567999
13cases[1].b=2
14cases[1].e=3
15cases[1].k=2
16
17cases[2].c[0]=879754751
18cases[2].c[1]=805567999
19cases[2].c[2]=262144
20cases[2].c[3]=805567999
21cases[2].b=1
22cases[2].e=3
23cases[2].k=2
24
25cases[3].c[0]=879754751
26cases[3].c[1]=805830143
27cases[3].c[2]=524288
28cases[3].c[3]=-1
29cases[3].b=1
30cases[3].e=2
31cases[3].k=1
32
33cases[4].c[0]=879754751
34cases[4].c[1]=805830143
35cases[4].c[2]=1048576
36cases[4].c[3]=805830143
37cases[4].b=1
38cases[4].e=3
39cases[4].k=1
40
41cases[5].c[0]=879754751
42cases[5].c[1]=805830143
43cases[5].c[2]=262144
44cases[5].c[3]=262144
45cases[5].b=1
46cases[5].e=3
47cases[5].k=1
48
49cases[6].c[0]=73400320
50cases[6].c[1]=807403007
51cases[6].c[2]=807403007
52cases[6].c[3]=-1
53cases[6].b=1
54cases[6].e=2
55cases[6].k=1
56
57cases[7].c[0]=839122431
58cases[7].c[1]=2097152
59cases[7].c[2]=807403007
60cases[7].c[3]=-1
61cases[7].b=0
62cases[7].e=2
63cases[7].k=1
64
65cases[8].c[0]=67108864
66cases[8].c[1]=807403007
67cases[8].c[2]=134217728
68cases[8].c[3]=-1
69cases[8].b=0
70cases[8].e=2
71cases[8].k=0
72
tests/tests2/Makefile+2−1
@@ -93,7 +93,8 @@ TESTS = \ · 92 unmodified lines
93 71_macro_empty_arg.test \93 71_macro_empty_arg.test \
94 72_long_long_constant.test \94 72_long_long_constant.test \
95 73_arm64.test \95 73_arm64.test \
96 74_nocode_wanted.test96 74_nocode_wanted.test \
97 75_array_in_struct_init.test
97 98
98 99
99# 34_array_assignment.test -- array assignment is not in C standard100# 34_array_assignment.test -- array assignment is not in C standard

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t