mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
C++: expand test for aggregate literals to include more nesting
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
struct someStruct {
|
||||
int i;
|
||||
int j;
|
||||
};
|
||||
struct someStruct {
|
||||
int i;
|
||||
int j;
|
||||
};
|
||||
|
||||
struct someOtherStruct {
|
||||
int a;
|
||||
@@ -13,27 +13,90 @@ union someUnion {
|
||||
double d;
|
||||
};
|
||||
|
||||
void f(int x, int y) {
|
||||
struct someStruct sInit1 = {
|
||||
.i = x + x,
|
||||
.j = y - y,
|
||||
};
|
||||
void f(int x, int y) {
|
||||
struct someStruct sInit1 = {
|
||||
.i = x + x,
|
||||
.j = y - y,
|
||||
};
|
||||
|
||||
struct someStruct sInit2 = { x + x, y - y };
|
||||
struct someStruct sInit2 = { x + x, y - y };
|
||||
|
||||
struct someStruct ss[] = {{x + x, y - y}, {x * x, y / y}};
|
||||
struct someStruct ss[] = {{x + x, y - y}, {x * x, y / y}};
|
||||
|
||||
struct someStruct sInit3 = { x };
|
||||
|
||||
// struct someStruct sInit4 = { .j = y }; Currently fails. Initializes 'i' with 'y' as well.
|
||||
struct someStruct sInit4 = { .j = y };
|
||||
|
||||
int aInit1[2] = { x, y };
|
||||
|
||||
int aInit2[2] = { x };
|
||||
|
||||
// int aInit3[2] = { [1] = y }; Currently fails. Initializes [0] with 'y' as well.
|
||||
int aInit3[2] = { [1] = y };
|
||||
|
||||
union someUnion uInit1 = { x };
|
||||
// union someUnion uInit2 = { .n = x }; Currently fails. Initializes .d with 'x' as well.
|
||||
// union someUnion uInit3 = { .d = 5.0 }; Currently fails. Initializes .n with '5.0' as well.
|
||||
union someUnion uInit2 = { .n = x };
|
||||
union someUnion uInit3 = { .d = 5.0 };
|
||||
}
|
||||
|
||||
struct complexStruct {
|
||||
struct someStruct sss[3];
|
||||
int as[3];
|
||||
struct someOtherStruct soss[3];
|
||||
int z;
|
||||
};
|
||||
|
||||
void g(int x, int y) {
|
||||
// Nested aggregate designated initializers
|
||||
struct complexStruct complexInit1 = {
|
||||
.as = {
|
||||
[2] = x,
|
||||
[0] = y,
|
||||
x+y // as[1]
|
||||
},
|
||||
.z = 42,
|
||||
.soss = {
|
||||
[1] = {
|
||||
.a = x+y,
|
||||
.b = x-y
|
||||
},
|
||||
[0] = {
|
||||
.b = x*y,
|
||||
.a = x/y
|
||||
}
|
||||
// soss[2] is value initializaed
|
||||
}
|
||||
// sss is value initialized
|
||||
};
|
||||
|
||||
// Nested aggregate non-designated initializers
|
||||
struct complexStruct complexInit2 = {
|
||||
{ // sss
|
||||
{ // sss[0]
|
||||
x, // sss[0].i
|
||||
y // sss[0].j
|
||||
},
|
||||
{ // sss[1]
|
||||
x+1, // sss[1].i
|
||||
// sss[1].j is value initialized
|
||||
}
|
||||
// ss[2] is value initialized
|
||||
},
|
||||
{ // as
|
||||
99, // as[0]
|
||||
x*y // as[1]
|
||||
// as[2] is value initialized
|
||||
},
|
||||
{ // soss
|
||||
{ // soss[0]
|
||||
123, // soss[0].a
|
||||
y+1 // soss[0].b
|
||||
},
|
||||
{ // soss[1]
|
||||
x, // soss[1].a
|
||||
// soss[1].b is value initialized
|
||||
}
|
||||
// soss[2] is value initialized
|
||||
}
|
||||
// z is value initialized
|
||||
};
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ union UnionWithMethods {
|
||||
void Init(int x, int y, int z) {
|
||||
StructWithBitfields s1 = { x, y, z };
|
||||
StructWithBitfields s2 = { x, y }; // s2.c is value initialized
|
||||
|
||||
StructWithBitfields s3 = {}; // s3 is value initialized
|
||||
UnionWithMethods u1 = { x };
|
||||
UnionWithMethods u2 = {};
|
||||
}
|
||||
|
||||
@@ -3,3 +3,15 @@
|
||||
| aggregate_literals.c:30:20:30:28 | {...} | file://:0:0:0:0 | int[2] | 0 | aggregate_literals.c:30:23:30:23 | x |
|
||||
| aggregate_literals.c:30:20:30:28 | {...} | file://:0:0:0:0 | int[2] | 1 | aggregate_literals.c:30:26:30:26 | y |
|
||||
| aggregate_literals.c:32:20:32:25 | {...} | file://:0:0:0:0 | int[2] | 0 | aggregate_literals.c:32:23:32:23 | x |
|
||||
| aggregate_literals.c:34:20:34:31 | {...} | file://:0:0:0:0 | int[2] | 1 | aggregate_literals.c:34:29:34:29 | y |
|
||||
| aggregate_literals.c:51:11:55:5 | {...} | file://:0:0:0:0 | int[3] | 0 | aggregate_literals.c:53:13:53:13 | y |
|
||||
| aggregate_literals.c:51:11:55:5 | {...} | file://:0:0:0:0 | int[3] | 1 | aggregate_literals.c:54:7:54:9 | ... + ... |
|
||||
| aggregate_literals.c:51:11:55:5 | {...} | file://:0:0:0:0 | int[3] | 2 | aggregate_literals.c:52:13:52:13 | x |
|
||||
| aggregate_literals.c:57:13:67:5 | {...} | file://:0:0:0:0 | someOtherStruct[3] | 0 | aggregate_literals.c:62:13:65:7 | {...} |
|
||||
| aggregate_literals.c:57:13:67:5 | {...} | file://:0:0:0:0 | someOtherStruct[3] | 1 | aggregate_literals.c:58:13:61:7 | {...} |
|
||||
| aggregate_literals.c:73:5:83:5 | {...} | file://:0:0:0:0 | someStruct[3] | 0 | aggregate_literals.c:74:7:77:7 | {...} |
|
||||
| aggregate_literals.c:73:5:83:5 | {...} | file://:0:0:0:0 | someStruct[3] | 1 | aggregate_literals.c:78:7:81:7 | {...} |
|
||||
| aggregate_literals.c:84:5:88:5 | {...} | file://:0:0:0:0 | int[3] | 0 | aggregate_literals.c:85:7:85:8 | 99 |
|
||||
| aggregate_literals.c:84:5:88:5 | {...} | file://:0:0:0:0 | int[3] | 1 | aggregate_literals.c:86:7:86:9 | ... * ... |
|
||||
| aggregate_literals.c:89:5:99:5 | {...} | file://:0:0:0:0 | someOtherStruct[3] | 0 | aggregate_literals.c:90:7:93:7 | {...} |
|
||||
| aggregate_literals.c:89:5:99:5 | {...} | file://:0:0:0:0 | someOtherStruct[3] | 1 | aggregate_literals.c:94:7:97:7 | {...} |
|
||||
|
||||
@@ -1 +1,6 @@
|
||||
| aggregate_literals.c:32:20:32:25 | {...} | file://:0:0:0:0 | int[2] | 1 |
|
||||
| aggregate_literals.c:34:20:34:31 | {...} | file://:0:0:0:0 | int[2] | 0 |
|
||||
| aggregate_literals.c:57:13:67:5 | {...} | file://:0:0:0:0 | someOtherStruct[3] | 2 |
|
||||
| aggregate_literals.c:73:5:83:5 | {...} | file://:0:0:0:0 | someStruct[3] | 2 |
|
||||
| aggregate_literals.c:84:5:88:5 | {...} | file://:0:0:0:0 | int[3] | 2 |
|
||||
| aggregate_literals.c:89:5:99:5 | {...} | file://:0:0:0:0 | someOtherStruct[3] | 2 |
|
||||
|
||||
@@ -7,7 +7,26 @@
|
||||
| aggregate_literals.c:24:47:24:60 | {...} | aggregate_literals.c:1:8:1:17 | someStruct | aggregate_literals.c:2:9:2:9 | i | aggregate_literals.c:24:48:24:52 | ... * ... |
|
||||
| aggregate_literals.c:24:47:24:60 | {...} | aggregate_literals.c:1:8:1:17 | someStruct | aggregate_literals.c:3:9:3:9 | j | aggregate_literals.c:24:55:24:59 | ... / ... |
|
||||
| aggregate_literals.c:26:31:26:36 | {...} | aggregate_literals.c:1:8:1:17 | someStruct | aggregate_literals.c:2:9:2:9 | i | aggregate_literals.c:26:34:26:34 | x |
|
||||
| aggregate_literals.c:28:31:28:41 | {...} | aggregate_literals.c:1:8:1:17 | someStruct | aggregate_literals.c:3:9:3:9 | j | aggregate_literals.c:28:39:28:39 | y |
|
||||
| aggregate_literals.c:36:29:36:34 | {...} | aggregate_literals.c:11:7:11:15 | someUnion | aggregate_literals.c:12:9:12:9 | n | aggregate_literals.c:36:32:36:32 | x |
|
||||
| aggregate_literals.c:37:29:37:39 | {...} | aggregate_literals.c:11:7:11:15 | someUnion | aggregate_literals.c:12:9:12:9 | n | aggregate_literals.c:37:37:37:37 | x |
|
||||
| aggregate_literals.c:38:29:38:41 | {...} | aggregate_literals.c:11:7:11:15 | someUnion | aggregate_literals.c:13:12:13:12 | d | aggregate_literals.c:38:37:38:39 | 5.0 |
|
||||
| aggregate_literals.c:50:38:69:3 | {...} | aggregate_literals.c:41:8:41:20 | complexStruct | aggregate_literals.c:43:9:43:10 | as | aggregate_literals.c:51:11:55:5 | {...} |
|
||||
| aggregate_literals.c:50:38:69:3 | {...} | aggregate_literals.c:41:8:41:20 | complexStruct | aggregate_literals.c:44:28:44:31 | soss | aggregate_literals.c:57:13:67:5 | {...} |
|
||||
| aggregate_literals.c:50:38:69:3 | {...} | aggregate_literals.c:41:8:41:20 | complexStruct | aggregate_literals.c:45:9:45:9 | z | aggregate_literals.c:56:10:56:11 | 42 |
|
||||
| aggregate_literals.c:58:13:61:7 | {...} | aggregate_literals.c:6:8:6:22 | someOtherStruct | aggregate_literals.c:7:9:7:9 | a | aggregate_literals.c:59:14:59:16 | ... + ... |
|
||||
| aggregate_literals.c:58:13:61:7 | {...} | aggregate_literals.c:6:8:6:22 | someOtherStruct | aggregate_literals.c:8:9:8:9 | b | aggregate_literals.c:60:14:60:16 | ... - ... |
|
||||
| aggregate_literals.c:62:13:65:7 | {...} | aggregate_literals.c:6:8:6:22 | someOtherStruct | aggregate_literals.c:7:9:7:9 | a | aggregate_literals.c:64:14:64:16 | ... / ... |
|
||||
| aggregate_literals.c:62:13:65:7 | {...} | aggregate_literals.c:6:8:6:22 | someOtherStruct | aggregate_literals.c:8:9:8:9 | b | aggregate_literals.c:63:14:63:16 | ... * ... |
|
||||
| aggregate_literals.c:72:38:101:3 | {...} | aggregate_literals.c:41:8:41:20 | complexStruct | aggregate_literals.c:42:23:42:25 | sss | aggregate_literals.c:73:5:83:5 | {...} |
|
||||
| aggregate_literals.c:72:38:101:3 | {...} | aggregate_literals.c:41:8:41:20 | complexStruct | aggregate_literals.c:43:9:43:10 | as | aggregate_literals.c:84:5:88:5 | {...} |
|
||||
| aggregate_literals.c:72:38:101:3 | {...} | aggregate_literals.c:41:8:41:20 | complexStruct | aggregate_literals.c:44:28:44:31 | soss | aggregate_literals.c:89:5:99:5 | {...} |
|
||||
| aggregate_literals.c:74:7:77:7 | {...} | aggregate_literals.c:1:8:1:17 | someStruct | aggregate_literals.c:2:9:2:9 | i | aggregate_literals.c:75:9:75:9 | x |
|
||||
| aggregate_literals.c:74:7:77:7 | {...} | aggregate_literals.c:1:8:1:17 | someStruct | aggregate_literals.c:3:9:3:9 | j | aggregate_literals.c:76:9:76:9 | y |
|
||||
| aggregate_literals.c:78:7:81:7 | {...} | aggregate_literals.c:1:8:1:17 | someStruct | aggregate_literals.c:2:9:2:9 | i | aggregate_literals.c:79:9:79:11 | ... + ... |
|
||||
| aggregate_literals.c:90:7:93:7 | {...} | aggregate_literals.c:6:8:6:22 | someOtherStruct | aggregate_literals.c:7:9:7:9 | a | aggregate_literals.c:91:9:91:11 | 123 |
|
||||
| aggregate_literals.c:90:7:93:7 | {...} | aggregate_literals.c:6:8:6:22 | someOtherStruct | aggregate_literals.c:8:9:8:9 | b | aggregate_literals.c:92:9:92:11 | ... + ... |
|
||||
| aggregate_literals.c:94:7:97:7 | {...} | aggregate_literals.c:6:8:6:22 | someOtherStruct | aggregate_literals.c:7:9:7:9 | a | aggregate_literals.c:95:9:95:9 | x |
|
||||
| aggregate_literals_cpp.cpp:23:29:23:40 | {...} | aggregate_literals_cpp.cpp:1:8:1:26 | StructWithBitfields | aggregate_literals_cpp.cpp:4:18:4:18 | a | aggregate_literals_cpp.cpp:23:32:23:32 | x |
|
||||
| aggregate_literals_cpp.cpp:23:29:23:40 | {...} | aggregate_literals_cpp.cpp:1:8:1:26 | StructWithBitfields | aggregate_literals_cpp.cpp:8:18:8:18 | b | aggregate_literals_cpp.cpp:23:35:23:35 | y |
|
||||
| aggregate_literals_cpp.cpp:23:29:23:40 | {...} | aggregate_literals_cpp.cpp:1:8:1:26 | StructWithBitfields | aggregate_literals_cpp.cpp:10:18:10:18 | c | aggregate_literals_cpp.cpp:23:38:23:38 | z |
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
| aggregate_literals.c:26:31:26:36 | {...} | aggregate_literals.c:1:8:1:17 | someStruct | aggregate_literals.c:3:9:3:9 | j |
|
||||
| aggregate_literals.c:28:31:28:41 | {...} | aggregate_literals.c:1:8:1:17 | someStruct | aggregate_literals.c:2:9:2:9 | i |
|
||||
| aggregate_literals.c:50:38:69:3 | {...} | aggregate_literals.c:41:8:41:20 | complexStruct | aggregate_literals.c:42:23:42:25 | sss |
|
||||
| aggregate_literals.c:72:38:101:3 | {...} | aggregate_literals.c:41:8:41:20 | complexStruct | aggregate_literals.c:45:9:45:9 | z |
|
||||
| aggregate_literals.c:78:7:81:7 | {...} | aggregate_literals.c:1:8:1:17 | someStruct | aggregate_literals.c:3:9:3:9 | j |
|
||||
| aggregate_literals.c:94:7:97:7 | {...} | aggregate_literals.c:6:8:6:22 | someOtherStruct | aggregate_literals.c:8:9:8:9 | b |
|
||||
| aggregate_literals_cpp.cpp:24:29:24:37 | {...} | aggregate_literals_cpp.cpp:1:8:1:26 | StructWithBitfields | aggregate_literals_cpp.cpp:10:18:10:18 | c |
|
||||
| aggregate_literals_cpp.cpp:25:29:25:31 | {...} | aggregate_literals_cpp.cpp:1:8:1:26 | StructWithBitfields | aggregate_literals_cpp.cpp:4:18:4:18 | a |
|
||||
| aggregate_literals_cpp.cpp:25:29:25:31 | {...} | aggregate_literals_cpp.cpp:1:8:1:26 | StructWithBitfields | aggregate_literals_cpp.cpp:8:18:8:18 | b |
|
||||
| aggregate_literals_cpp.cpp:25:29:25:31 | {...} | aggregate_literals_cpp.cpp:1:8:1:26 | StructWithBitfields | aggregate_literals_cpp.cpp:10:18:10:18 | c |
|
||||
| aggregate_literals_cpp.cpp:27:26:27:28 | {...} | aggregate_literals_cpp.cpp:13:7:13:22 | UnionWithMethods | aggregate_literals_cpp.cpp:18:12:18:12 | d |
|
||||
|
||||
Reference in New Issue
Block a user