Skip to content

Commit bc4363b

Browse files
committed
CPP: Add a test of FunctionAccess and cases for FieldAccess.
1 parent 4543aaf commit bc4363b

File tree

5 files changed

+41
-0
lines changed

5 files changed

+41
-0
lines changed

cpp/ql/test/library-tests/access/FieldAccess/FieldAccess.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,3 +84,15 @@ int test_val00(S s) {
8484
int test_val01(U u) {
8585
return u.x;
8686
}
87+
88+
class MyClass {
89+
public:
90+
void myMethod(MyClass a, MyClass &b, MyClass *c) {
91+
a.x = b.y; // val, ref
92+
c->x = y; // ptr, ptr
93+
c->x = this->y; // ptr, ptr
94+
(&b)->y = (*c).y; // ptr, val
95+
}
96+
97+
int x, y;
98+
};

cpp/ql/test/library-tests/access/FieldAccess/FieldAccess.expected

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,11 @@
1616
| FieldAccess.cpp:77:12:77:13 | x1 | ref |
1717
| FieldAccess.cpp:81:12:81:13 | x1 | val |
1818
| FieldAccess.cpp:85:12:85:12 | x | val |
19+
| FieldAccess.cpp:91:7:91:7 | x | val |
20+
| FieldAccess.cpp:91:13:91:13 | y | ref |
21+
| FieldAccess.cpp:92:8:92:8 | x | ptr |
22+
| FieldAccess.cpp:92:12:92:12 | y | ptr |
23+
| FieldAccess.cpp:93:8:93:8 | x | ptr |
24+
| FieldAccess.cpp:93:18:93:18 | y | ptr |
25+
| FieldAccess.cpp:94:11:94:11 | y | ptr |
26+
| FieldAccess.cpp:94:20:94:20 | y | val |
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
2+
int myTarget(int);
3+
4+
int call(int (*target)(int), int val) {
5+
return target(val);
6+
}
7+
8+
void testFunctionAccess() {
9+
int (*myFunctionPointer)(int) = &myTarget; // FunctionAccess
10+
11+
call(myFunctionPointer, 1);
12+
call(myTarget, 2); // FunctionAccess
13+
(&myTarget)(3); // FunctionAccess
14+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
| FunctionAccess.cpp:9:36:9:43 | myTarget | FunctionAccess.cpp:2:5:2:12 | myTarget |
2+
| FunctionAccess.cpp:12:8:12:15 | myTarget | FunctionAccess.cpp:2:5:2:12 | myTarget |
3+
| FunctionAccess.cpp:13:5:13:12 | myTarget | FunctionAccess.cpp:2:5:2:12 | myTarget |
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import cpp
2+
3+
from FunctionAccess fa
4+
select fa, fa.getTarget()

0 commit comments

Comments
 (0)