Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 22d5e9b

Browse files
committed
C++: Add test cases involving pointer qualifiers.
1 parent 900c8b7 commit 22d5e9b

2 files changed

Lines changed: 40 additions & 20 deletions

File tree

cpp/ql/test/library-tests/dataflow/models-as-data/FlowSummaryNode.expected

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@
1212
| tests.cpp:181:6:181:20 | [summary] to write: ReturnValue in madSelfToReturn | ReturnNode | madSelfToReturn | madSelfToReturn |
1313
| tests.cpp:209:7:209:30 | [summary param] this in namespaceMadSelfToReturn | ParameterNode | namespaceMadSelfToReturn | namespaceMadSelfToReturn |
1414
| tests.cpp:209:7:209:30 | [summary] to write: ReturnValue in namespaceMadSelfToReturn | ReturnNode | namespaceMadSelfToReturn | namespaceMadSelfToReturn |
15-
| tests.cpp:285:5:285:29 | [summary param] 0 in madCallArg0ReturnToReturn | ParameterNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn |
16-
| tests.cpp:285:5:285:29 | [summary] read: Argument[0].Parameter[this] in madCallArg0ReturnToReturn | PostUpdateNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn |
17-
| tests.cpp:285:5:285:29 | [summary] read: Argument[0].ReturnValue in madCallArg0ReturnToReturn | OutNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn |
18-
| tests.cpp:285:5:285:29 | [summary] to write: Argument[0].Parameter[this] in madCallArg0ReturnToReturn | ArgumentNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn |
19-
| tests.cpp:285:5:285:29 | [summary] to write: ReturnValue in madCallArg0ReturnToReturn | ReturnNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn |
20-
| tests.cpp:287:6:287:25 | [summary param] 0 in madCallArg0WithValue | ParameterNode | madCallArg0WithValue | madCallArg0WithValue |
21-
| tests.cpp:287:6:287:25 | [summary param] 1 in madCallArg0WithValue | ParameterNode | madCallArg0WithValue | madCallArg0WithValue |
22-
| tests.cpp:287:6:287:25 | [summary] read: Argument[0].Parameter[0] in madCallArg0WithValue | PostUpdateNode | madCallArg0WithValue | madCallArg0WithValue |
23-
| tests.cpp:287:6:287:25 | [summary] read: Argument[0].Parameter[this] in madCallArg0WithValue | PostUpdateNode | madCallArg0WithValue | madCallArg0WithValue |
24-
| tests.cpp:287:6:287:25 | [summary] to write: Argument[0].Parameter[0] in madCallArg0WithValue | ArgumentNode | madCallArg0WithValue | madCallArg0WithValue |
25-
| tests.cpp:287:6:287:25 | [summary] to write: Argument[0].Parameter[this] in madCallArg0WithValue | ArgumentNode | madCallArg0WithValue | madCallArg0WithValue |
26-
| tests.cpp:287:6:287:25 | [summary] to write: Argument[1] in madCallArg0WithValue | PostUpdateNode | madCallArg0WithValue | madCallArg0WithValue |
15+
| tests.cpp:305:5:305:29 | [summary param] 0 in madCallArg0ReturnToReturn | ParameterNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn |
16+
| tests.cpp:305:5:305:29 | [summary] read: Argument[0].Parameter[this] in madCallArg0ReturnToReturn | PostUpdateNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn |
17+
| tests.cpp:305:5:305:29 | [summary] read: Argument[0].ReturnValue in madCallArg0ReturnToReturn | OutNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn |
18+
| tests.cpp:305:5:305:29 | [summary] to write: Argument[0].Parameter[this] in madCallArg0ReturnToReturn | ArgumentNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn |
19+
| tests.cpp:305:5:305:29 | [summary] to write: ReturnValue in madCallArg0ReturnToReturn | ReturnNode | madCallArg0ReturnToReturn | madCallArg0ReturnToReturn |
20+
| tests.cpp:307:6:307:25 | [summary param] 0 in madCallArg0WithValue | ParameterNode | madCallArg0WithValue | madCallArg0WithValue |
21+
| tests.cpp:307:6:307:25 | [summary param] 1 in madCallArg0WithValue | ParameterNode | madCallArg0WithValue | madCallArg0WithValue |
22+
| tests.cpp:307:6:307:25 | [summary] read: Argument[0].Parameter[0] in madCallArg0WithValue | PostUpdateNode | madCallArg0WithValue | madCallArg0WithValue |
23+
| tests.cpp:307:6:307:25 | [summary] read: Argument[0].Parameter[this] in madCallArg0WithValue | PostUpdateNode | madCallArg0WithValue | madCallArg0WithValue |
24+
| tests.cpp:307:6:307:25 | [summary] to write: Argument[0].Parameter[0] in madCallArg0WithValue | ArgumentNode | madCallArg0WithValue | madCallArg0WithValue |
25+
| tests.cpp:307:6:307:25 | [summary] to write: Argument[0].Parameter[this] in madCallArg0WithValue | ArgumentNode | madCallArg0WithValue | madCallArg0WithValue |
26+
| tests.cpp:307:6:307:25 | [summary] to write: Argument[1] in madCallArg0WithValue | PostUpdateNode | madCallArg0WithValue | madCallArg0WithValue |

cpp/ql/test/library-tests/dataflow/models-as-data/tests.cpp

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -213,9 +213,11 @@ namespace MyNamespace {
213213
MyNamespace::MyClass source3();
214214

215215
void test_class_members() {
216-
MyClass mc, mc2, mc3, mc4, mc5, mc6;
216+
MyClass mc, mc2, mc3, mc4, mc5, mc6, mc7;
217+
MyClass *ptr, *mc4_ptr;
217218
MyDerivedClass mdc;
218-
MyNamespace::MyClass mnc;
219+
MyNamespace::MyClass mnc, mnc2;
220+
MyNamespace::MyClass *mnc2_ptr;
219221

220222
// test class member sources
221223

@@ -253,26 +255,44 @@ void test_class_members() {
253255
mc2.madArg0ToSelf(source());
254256
sink(mc2); // $ MISSING: ir
255257

258+
ptr = new MyClass();
259+
sink(*ptr);
260+
ptr->madArg0ToSelf(0);
261+
sink(*ptr);
262+
ptr->madArg0ToSelf(source());
263+
sink(*ptr); // $ ir
264+
256265
mc3.madArg0ToField(source());
257266
sink(mc3.val); // $ MISSING: ir
258267

268+
mc4 = source2();
269+
mc4_ptr = &mc4;
270+
sink(mc4); // $ ir
271+
sink(mc4.madSelfToReturn()); // $ MISSING: ir
272+
sink(mc4.notASummary());
273+
sink(mc4_ptr->madSelfToReturn()); // $ MISSING: ir
274+
sink(mc4_ptr->notASummary());
259275
sink(source2().madSelfToReturn()); // $ ir
260276
sink(source2().notASummary());
261277

262-
mc4.val = source();
263-
sink(mc4.madFieldToReturn()); // $ MISSING: ir
278+
mc5.val = source();
279+
sink(mc5.madFieldToReturn()); // $ MISSING: ir
264280

281+
mnc2 = source3();
282+
mnc2_ptr = &mnc2;
283+
sink(mnc2.namespaceMadSelfToReturn()); // $ MISSING: ir
284+
sink(mnc2_ptr->namespaceMadSelfToReturn()); // $ MISSING: ir
265285
sink(source3().namespaceMadSelfToReturn()); // $ ir
266286

267287
// test class member sources + sinks + summaries together
268288

269289
mc.memberMadSinkArg0(mc.memberRemoteMadSource()); // $ ir
270290

271-
mc5.madArg0ToSelf(source());
272-
sink(mc5.madSelfToReturn()); // $ MISSING: ir
291+
mc6.madArg0ToSelf(source());
292+
sink(mc6.madSelfToReturn()); // $ MISSING: ir
273293

274-
mc6.madArg0ToField(source());
275-
sink(mc6.madFieldToReturn()); // $ MISSING: ir
294+
mc7.madArg0ToField(source());
295+
sink(mc7.madFieldToReturn()); // $ MISSING: ir
276296
}
277297

278298
// --- MAD cases involving function pointers ---

0 commit comments

Comments
 (0)