llvm-project/clang/test/Analysis/traversal-algorithm.mm

214 lines
5.4 KiB
Plaintext

// RUN: %clang_analyze_cc1 -analyzer-checker=debug.DumpTraversal -analyzer-max-loop 4 -std=c++11 %s | FileCheck -check-prefix=DFS %s
int a();
int b();
int c();
int work();
void test(id input) {
if (a()) {
if (a())
b();
else
c();
} else {
if (b())
a();
else
c();
}
if (a())
work();
}
void testLoops(id input) {
while (a()) {
work();
work();
work();
}
for (int i = 0; i != b(); ++i) {
work();
}
for (id x in input) {
work();
work();
work();
}
int z[] = {1,2,3};
for (int y : z) {
work();
work();
work();
}
}
// This ordering assumes that false cases happen before the true cases.
// DFS:27 WhileStmt
// DFS-next:33 ForStmt
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:--END PATH--
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:--END PATH--
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:33 ForStmt
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:--END PATH--
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:33 ForStmt
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:--END PATH--
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:33 ForStmt
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:--END PATH--
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:27 WhileStmt
// DFS-next:33 ForStmt
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:--END PATH--
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:33 ForStmt
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:--END PATH--
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:33 ForStmt
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:--END PATH--
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:33 ForStmt
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:--END PATH--
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:27 WhileStmt
// DFS-next:33 ForStmt
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:--END PATH--
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:33 ForStmt
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:--END PATH--
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:33 ForStmt
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:--END PATH--
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:33 ForStmt
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:--END PATH--
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:27 WhileStmt
// DFS-next:33 ForStmt
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:--END PATH--
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:33 ForStmt
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:--END PATH--
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:33 ForStmt
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:--END PATH--
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:33 ForStmt
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:44 CXXForRangeStmt
// DFS-next:--END PATH--
// DFS-next:37 ObjCForCollectionStmt
// DFS-next:10 IfStmt
// DFS-next:16 IfStmt
// DFS-next:22 IfStmt
// DFS-next:--END PATH--
// DFS-next:--END PATH--
// DFS-next:22 IfStmt
// DFS-next:--END PATH--
// DFS-next:--END PATH--
// DFS-next:11 IfStmt
// DFS-next:22 IfStmt
// DFS-next:--END PATH--
// DFS-next:--END PATH--
// DFS-next:22 IfStmt
// DFS-next:--END PATH--
// DFS-next:--END PATH--