@@ -40,21 +40,21 @@ class A
4040 cc.insert (nullptr );
4141 ct.insert (new C ());
4242 sink (&cc); // no flow
43- sink (&ct); // flow [NOT DETECTED by IR]
43+ sink (&ct); // $ast= flow $f-:ir=flow
4444 }
4545 void f1 ()
4646 {
4747 C *c = new C ();
4848 B *b = B::make (c);
49- sink (b->c ); // flow [NOT DETECTED by IR]
49+ sink (b->c ); // $ast= flow $f-:ir=flow
5050 }
5151
5252 void f2 ()
5353 {
5454 B *b = new B ();
5555 b->set (new C1 ());
56- sink (b->get ()); // flow [NOT DETECTED by IR]
57- sink ((new B (new C ()))->get ()); // flow [NOT DETECTED by IR]
56+ sink (b->get ()); // $ast= flow $f-:ir=flow
57+ sink ((new B (new C ()))->get ()); // $ast= flow $f-:ir=flow
5858 }
5959
6060 void f3 ()
@@ -63,7 +63,7 @@ class A
6363 B *b2;
6464 b2 = setOnB (b1, new C2 ());
6565 sink (b1->c ); // no flow
66- sink (b2->c ); // flow [NOT DETECTED by IR]
66+ sink (b2->c ); // $ast= flow $f-:ir=flow
6767 }
6868
6969 void f4 ()
@@ -72,7 +72,7 @@ class A
7272 B *b2;
7373 b2 = setOnBWrap (b1, new C2 ());
7474 sink (b1->c ); // no flow
75- sink (b2->c ); // flow [NOT DETECTED by IR]
75+ sink (b2->c ); // $ast= flow $f-:ir=flow
7676 }
7777
7878 B *setOnBWrap (B *b1, C *c)
@@ -104,7 +104,7 @@ class A
104104 {
105105 if (C1 *c1 = dynamic_cast <C1 *>(c))
106106 {
107- sink (c1->a ); // flow [NOT DETECTED by IR]
107+ sink (c1->a ); // $ast= flow $f-:ir=flow
108108 }
109109 C *cc;
110110 if (C2 *c2 = dynamic_cast <C2 *>(c))
@@ -117,7 +117,7 @@ class A
117117 }
118118 if (C1 *c1 = dynamic_cast <C1 *>(cc))
119119 {
120- sink (c1->a ); // no flow, stopped by cast to C2 [FALSE POSITIVE in AST]
120+ sink (c1->a ); // $f+:ast= flow
121121 }
122122 }
123123
@@ -129,7 +129,7 @@ class A
129129 {
130130 B *b = new B ();
131131 f7 (b);
132- sink (b->c ); // flow [NOT DETECTED by IR]
132+ sink (b->c ); // $ast= flow $f-:ir=flow
133133 }
134134
135135 class D
@@ -149,9 +149,9 @@ class A
149149 {
150150 B *b = new B ();
151151 D *d = new D (b, r ());
152- sink (d->b ); // flow x2 [NOT DETECTED by IR]
153- sink (d->b ->c ); // flow [NOT DETECTED by IR]
154- sink (b->c ); // flow
152+ sink (d->b ); // $ast= flow 143:25 $ast=flow 150:12 $f-:ir=flow
153+ sink (d->b ->c ); // $ast= flow $f-:ir=flow
154+ sink (b->c ); // $ast,ir= flow
155155 }
156156
157157 void f10 ()
@@ -162,11 +162,11 @@ class A
162162 MyList *l3 = new MyList (nullptr , l2);
163163 sink (l3->head ); // no flow, b is nested beneath at least one ->next
164164 sink (l3->next ->head ); // no flow
165- sink (l3->next ->next ->head ); // flow [NOT DETECTED by IR]
165+ sink (l3->next ->next ->head ); // $ast= flow $f-:ir=flow
166166 sink (l3->next ->next ->next ->head ); // no flow
167167 for (MyList *l = l3; l != nullptr ; l = l->next )
168168 {
169- sink (l->head ); // flow [NOT DETECTED by IR]
169+ sink (l->head ); // $ast= flow $f-:ir=flow
170170 }
171171 }
172172
0 commit comments