| line | true | false | branch | 
 
| 26 | 0 | 14 | class Test : public panda::Refcnt { | 
 
| 45 | 1 | 0 | function f = &void_func; | 
 
| 46 | 1 | 0 | REQUIRE(true); | 
 
|  | 1 | 0 | REQUIRE(true); | 
 
|  | 1 | 0 | REQUIRE(true); | 
 
|  | 1 | 0 | REQUIRE(true); | 
 
|  | 0 | 0 | REQUIRE(true); | 
 
|  | 0 | 0 | REQUIRE(true); | 
 
| 50 | 1 | 0 | function f; | 
 
| 51 | 1 | 0 | f = &plus_one; | 
 
|  | 1 | 0 | f = &plus_one; | 
 
| 52 | 1 | 0 | REQUIRE(f(1) == 2); | 
 
|  | 1 | 0 | REQUIRE(f(1) == 2); | 
 
|  | 1 | 0 | REQUIRE(f(1) == 2); | 
 
|  | 1 | 0 | REQUIRE(f(1) == 2); | 
 
|  | 1 | 0 | REQUIRE(f(1) == 2); | 
 
|  | 1 | 0 | REQUIRE(f(1) == 2); | 
 
|  | 0 | 0 | REQUIRE(f(1) == 2); | 
 
|  | 0 | 0 | REQUIRE(f(1) == 2); | 
 
| 56 | 1 | 0 | function f; | 
 
| 57 | 1 | 0 | f = plus_one; | 
 
|  | 1 | 0 | f = plus_one; | 
 
| 58 | 1 | 0 | REQUIRE(f(1) == 2); | 
 
|  | 1 | 0 | REQUIRE(f(1) == 2); | 
 
|  | 1 | 0 | REQUIRE(f(1) == 2); | 
 
|  | 1 | 0 | REQUIRE(f(1) == 2); | 
 
|  | 1 | 0 | REQUIRE(f(1) == 2); | 
 
|  | 1 | 0 | REQUIRE(f(1) == 2); | 
 
|  | 0 | 0 | REQUIRE(f(1) == 2); | 
 
|  | 0 | 0 | REQUIRE(f(1) == 2); | 
 
| 63 | 1 | 0 | function f = [&](){return a;}; | 
 
| 64 | 1 | 0 | REQUIRE(f() == 13); | 
 
|  | 1 | 0 | REQUIRE(f() == 13); | 
 
|  | 1 | 0 | REQUIRE(f() == 13); | 
 
|  | 1 | 0 | REQUIRE(f() == 13); | 
 
|  | 1 | 0 | REQUIRE(f() == 13); | 
 
|  | 1 | 0 | REQUIRE(f() == 13); | 
 
|  | 0 | 0 | REQUIRE(f() == 13); | 
 
|  | 0 | 0 | REQUIRE(f() == 13); | 
 
| 68 | 1 | 0 | iptr t = new Test(); | 
 
|  | 1 | 0 | iptr t = new Test(); | 
 
| 70 | 1 | 0 | auto m = make_function(&Test::bar, t); | 
 
| 71 | 1 | 0 | REQUIRE(m() == 54); | 
 
|  | 1 | 0 | REQUIRE(m() == 54); | 
 
|  | 1 | 0 | REQUIRE(m() == 54); | 
 
|  | 1 | 0 | REQUIRE(m() == 54); | 
 
|  | 1 | 0 | REQUIRE(m() == 54); | 
 
|  | 1 | 0 | REQUIRE(m() == 54); | 
 
|  | 0 | 0 | REQUIRE(m() == 54); | 
 
|  | 0 | 0 | REQUIRE(m() == 54); | 
 
| 75 | 1 | 0 | iptr t = new Test(); | 
 
|  | 1 | 0 | iptr t = new Test(); | 
 
| 77 | 1 | 0 | auto f = make_function(&Test::bar, t); | 
 
| 78 | 1 | 0 | REQUIRE(f() == 54); | 
 
|  | 1 | 0 | REQUIRE(f() == 54); | 
 
|  | 1 | 0 | REQUIRE(f() == 54); | 
 
|  | 1 | 0 | REQUIRE(f() == 54); | 
 
|  | 1 | 0 | REQUIRE(f() == 54); | 
 
|  | 1 | 0 | REQUIRE(f() == 54); | 
 
|  | 0 | 0 | REQUIRE(f() == 54); | 
 
|  | 0 | 0 | REQUIRE(f() == 54); | 
 
| 80 | 1 | 0 | f = &foo2; | 
 
|  | 1 | 0 | f = &foo2; | 
 
| 81 | 1 | 0 | REQUIRE(f() == 1); | 
 
|  | 1 | 0 | REQUIRE(f() == 1); | 
 
|  | 1 | 0 | REQUIRE(f() == 1); | 
 
|  | 1 | 0 | REQUIRE(f() == 1); | 
 
|  | 1 | 0 | REQUIRE(f() == 1); | 
 
|  | 1 | 0 | REQUIRE(f() == 1); | 
 
|  | 0 | 0 | REQUIRE(f() == 1); | 
 
|  | 0 | 0 | REQUIRE(f() == 1); | 
 
| 84 | 1 | 0 | f = [&](){return a;}; | 
 
|  | 1 | 0 | f = [&](){return a;}; | 
 
| 85 | 1 | 0 | REQUIRE(f() == 13); | 
 
|  | 1 | 0 | REQUIRE(f() == 13); | 
 
|  | 1 | 0 | REQUIRE(f() == 13); | 
 
|  | 1 | 0 | REQUIRE(f() == 13); | 
 
|  | 1 | 0 | REQUIRE(f() == 13); | 
 
|  | 1 | 0 | REQUIRE(f() == 13); | 
 
|  | 0 | 0 | REQUIRE(f() == 13); | 
 
|  | 0 | 0 | REQUIRE(f() == 13); | 
 
| 89 | 1 | 0 | function f1_void = &void_func; | 
 
| 90 | 1 | 0 | function f2_void = &void_func; | 
 
| 91 | 1 | 0 | function f3_void = &void_func2; | 
 
| 93 | 1 | 0 | REQUIRE(f1_void == f2_void); | 
 
|  | 1 | 0 | REQUIRE(f1_void == f2_void); | 
 
|  | 1 | 0 | REQUIRE(f1_void == f2_void); | 
 
|  | 1 | 0 | REQUIRE(f1_void == f2_void); | 
 
|  | 1 | 0 | REQUIRE(f1_void == f2_void); | 
 
|  | 0 | 0 | REQUIRE(f1_void == f2_void); | 
 
|  | 0 | 0 | REQUIRE(f1_void == f2_void); | 
 
| 94 | 1 | 0 | REQUIRE(f1_void != f3_void); | 
 
|  | 1 | 0 | REQUIRE(f1_void != f3_void); | 
 
|  | 1 | 0 | REQUIRE(f1_void != f3_void); | 
 
|  | 1 | 0 | REQUIRE(f1_void != f3_void); | 
 
|  | 1 | 0 | REQUIRE(f1_void != f3_void); | 
 
|  | 0 | 0 | REQUIRE(f1_void != f3_void); | 
 
|  | 0 | 0 | REQUIRE(f1_void != f3_void); | 
 
| 96 | 1 | 0 | REQUIRE(f1_void == tmp_abstract_function(&void_func)); | 
 
|  | 1 | 0 | REQUIRE(f1_void == tmp_abstract_function(&void_func)); | 
 
|  | 1 | 0 | REQUIRE(f1_void == tmp_abstract_function(&void_func)); | 
 
|  | 1 | 0 | REQUIRE(f1_void == tmp_abstract_function(&void_func)); | 
 
|  | 1 | 0 | REQUIRE(f1_void == tmp_abstract_function(&void_func)); | 
 
|  | 1 | 0 | REQUIRE(f1_void == tmp_abstract_function(&void_func)); | 
 
|  | 0 | 0 | REQUIRE(f1_void == tmp_abstract_function(&void_func)); | 
 
|  | 0 | 0 | REQUIRE(f1_void == tmp_abstract_function(&void_func)); | 
 
| 97 | 1 | 0 | REQUIRE(f1_void != tmp_abstract_function(&void_func2)); | 
 
|  | 1 | 0 | REQUIRE(f1_void != tmp_abstract_function(&void_func2)); | 
 
|  | 1 | 0 | REQUIRE(f1_void != tmp_abstract_function(&void_func2)); | 
 
|  | 1 | 0 | REQUIRE(f1_void != tmp_abstract_function(&void_func2)); | 
 
|  | 1 | 0 | REQUIRE(f1_void != tmp_abstract_function(&void_func2)); | 
 
|  | 1 | 0 | REQUIRE(f1_void != tmp_abstract_function(&void_func2)); | 
 
|  | 0 | 0 | REQUIRE(f1_void != tmp_abstract_function(&void_func2)); | 
 
|  | 0 | 0 | REQUIRE(f1_void != tmp_abstract_function(&void_func2)); | 
 
| 108 | 1 | 0 | function    f1(&func_int); | 
 
| 109 | 1 | 0 | function f2(&func_int); | 
 
| 110 | 1 | 0 | function f3(&func_double); | 
 
| 111 | 1 | 0 | function f4(&func_int); | 
 
| 113 | 1 | 0 | CHECK(f1 == f2); | 
 
|  | 1 | 0 | CHECK(f1 == f2); | 
 
|  | 1 | 0 | CHECK(f1 == f2); | 
 
|  | 1 | 0 | CHECK(f1 == f2); | 
 
|  | 1 | 0 | CHECK(f1 == f2); | 
 
|  | 0 | 0 | CHECK(f1 == f2); | 
 
|  | 0 | 0 | CHECK(f1 == f2); | 
 
| 114 | 1 | 0 | CHECK(f1 != f3); | 
 
|  | 1 | 0 | CHECK(f1 != f3); | 
 
|  | 1 | 0 | CHECK(f1 != f3); | 
 
|  | 1 | 0 | CHECK(f1 != f3); | 
 
|  | 1 | 0 | CHECK(f1 != f3); | 
 
|  | 0 | 0 | CHECK(f1 != f3); | 
 
|  | 0 | 0 | CHECK(f1 != f3); | 
 
| 115 | 1 | 0 | CHECK(f2 != f3); | 
 
|  | 1 | 0 | CHECK(f2 != f3); | 
 
|  | 1 | 0 | CHECK(f2 != f3); | 
 
|  | 1 | 0 | CHECK(f2 != f3); | 
 
|  | 1 | 0 | CHECK(f2 != f3); | 
 
|  | 0 | 0 | CHECK(f2 != f3); | 
 
|  | 0 | 0 | CHECK(f2 != f3); | 
 
| 116 | 1 | 0 | CHECK(f2 == f4); | 
 
|  | 1 | 0 | CHECK(f2 == f4); | 
 
|  | 1 | 0 | CHECK(f2 == f4); | 
 
|  | 1 | 0 | CHECK(f2 == f4); | 
 
|  | 1 | 0 | CHECK(f2 == f4); | 
 
|  | 0 | 0 | CHECK(f2 == f4); | 
 
|  | 0 | 0 | CHECK(f2 == f4); | 
 
| 119 | 1 | 0 | function    ff1(i); | 
 
| 120 | 1 | 0 | function ff2(i); | 
 
| 122 | 1 | 0 | CHECK(ff1 == ff2); | 
 
|  | 1 | 0 | CHECK(ff1 == ff2); | 
 
|  | 1 | 0 | CHECK(ff1 == ff2); | 
 
|  | 1 | 0 | CHECK(ff1 == ff2); | 
 
|  | 1 | 0 | CHECK(ff1 == ff2); | 
 
|  | 0 | 0 | CHECK(ff1 == ff2); | 
 
|  | 0 | 0 | CHECK(ff1 == ff2); | 
 
| 132 | 1 | 0 | function f1 = lambda; | 
 
| 133 | 1 | 0 | function f2(f1); | 
 
| 134 | 1 | 0 | CHECK(f1 == f2); | 
 
|  | 1 | 0 | CHECK(f1 == f2); | 
 
|  | 1 | 0 | CHECK(f1 == f2); | 
 
|  | 1 | 0 | CHECK(f1 == f2); | 
 
|  | 1 | 0 | CHECK(f1 == f2); | 
 
|  | 0 | 0 | CHECK(f1 == f2); | 
 
|  | 0 | 0 | CHECK(f1 == f2); | 
 
| 135 | 1 | 0 | CHECK(f2 == f1); | 
 
|  | 1 | 0 | CHECK(f2 == f1); | 
 
|  | 1 | 0 | CHECK(f2 == f1); | 
 
|  | 1 | 0 | CHECK(f2 == f1); | 
 
|  | 1 | 0 | CHECK(f2 == f1); | 
 
|  | 0 | 0 | CHECK(f2 == f1); | 
 
|  | 0 | 0 | CHECK(f2 == f1); | 
 
| 139 | 1 | 0 | iptr t = new Test(); | 
 
|  | 1 | 0 | iptr t = new Test(); | 
 
| 140 | 1 | 0 | auto m1 = make_function(&Test::foo, t); | 
 
| 141 | 1 | 0 | auto m2 = make_method(&Test::foo); | 
 
| 142 | 1 | 0 | REQUIRE(m1 != *m2); | 
 
|  | 1 | 0 | REQUIRE(m1 != *m2); | 
 
|  | 1 | 0 | REQUIRE(m1 != *m2); | 
 
|  | 1 | 0 | REQUIRE(m1 != *m2); | 
 
|  | 1 | 0 | REQUIRE(m1 != *m2); | 
 
|  | 0 | 0 | REQUIRE(m1 != *m2); | 
 
|  | 0 | 0 | REQUIRE(m1 != *m2); | 
 
| 144 | 1 | 0 | m2->bind(t); | 
 
| 145 | 1 | 0 | REQUIRE(m1 == function(m2)); | 
 
|  | 1 | 0 | REQUIRE(m1 == function(m2)); | 
 
|  | 1 | 0 | REQUIRE(m1 == function(m2)); | 
 
|  | 1 | 0 | REQUIRE(m1 == function(m2)); | 
 
|  | 1 | 0 | REQUIRE(m1 == function(m2)); | 
 
|  | 1 | 0 | REQUIRE(m1 == function(m2)); | 
 
|  | 0 | 0 | REQUIRE(m1 == function(m2)); | 
 
|  | 0 | 0 | REQUIRE(m1 == function(m2)); | 
 
| 147 | 1 | 0 | iptr t2 = new Test(); | 
 
|  | 1 | 0 | iptr t2 = new Test(); | 
 
| 148 | 1 | 0 | m2->bind(t2); | 
 
| 149 | 1 | 0 | REQUIRE(m1 != *m2); | 
 
|  | 1 | 0 | REQUIRE(m1 != *m2); | 
 
|  | 1 | 0 | REQUIRE(m1 != *m2); | 
 
|  | 1 | 0 | REQUIRE(m1 != *m2); | 
 
|  | 1 | 0 | REQUIRE(m1 != *m2); | 
 
|  | 0 | 0 | REQUIRE(m1 != *m2); | 
 
|  | 0 | 0 | REQUIRE(m1 != *m2); | 
 
| 151 | 1 | 0 | auto m3 = make_method(&Test::foo2); | 
 
| 152 | 1 | 0 | REQUIRE(m1 != *m3); | 
 
|  | 1 | 0 | REQUIRE(m1 != *m3); | 
 
|  | 1 | 0 | REQUIRE(m1 != *m3); | 
 
|  | 1 | 0 | REQUIRE(m1 != *m3); | 
 
|  | 1 | 0 | REQUIRE(m1 != *m3); | 
 
|  | 0 | 0 | REQUIRE(m1 != *m3); | 
 
|  | 0 | 0 | REQUIRE(m1 != *m3); | 
 
| 158 | 1 | 0 | function l1 = [&](){return a;}; | 
 
| 159 | 1 | 0 | auto l2 = l1; | 
 
| 160 | 1 | 0 | function l3 = [&](){return a;}; | 
 
| 162 | 1 | 0 | REQUIRE(l1 == l2); | 
 
|  | 1 | 0 | REQUIRE(l1 == l2); | 
 
|  | 1 | 0 | REQUIRE(l1 == l2); | 
 
|  | 1 | 0 | REQUIRE(l1 == l2); | 
 
|  | 1 | 0 | REQUIRE(l1 == l2); | 
 
|  | 0 | 0 | REQUIRE(l1 == l2); | 
 
|  | 0 | 0 | REQUIRE(l1 == l2); | 
 
| 163 | 1 | 0 | REQUIRE(l1 != l3); | 
 
|  | 1 | 0 | REQUIRE(l1 != l3); | 
 
|  | 1 | 0 | REQUIRE(l1 != l3); | 
 
|  | 1 | 0 | REQUIRE(l1 != l3); | 
 
|  | 1 | 0 | REQUIRE(l1 != l3); | 
 
|  | 0 | 0 | REQUIRE(l1 != l3); | 
 
|  | 0 | 0 | REQUIRE(l1 != l3); | 
 
| 168 | 1 | 0 | function l = [&](){return a;}; | 
 
| 169 | 1 | 0 | function f = &foo2; | 
 
| 170 | 1 | 0 | iptr t = new Test(); | 
 
|  | 1 | 0 | iptr t = new Test(); | 
 
| 171 | 1 | 0 | auto m = make_function(&Test::bar, t); | 
 
| 173 | 1 | 0 | REQUIRE(l != f); | 
 
|  | 1 | 0 | REQUIRE(l != f); | 
 
|  | 1 | 0 | REQUIRE(l != f); | 
 
|  | 1 | 0 | REQUIRE(l != f); | 
 
|  | 1 | 0 | REQUIRE(l != f); | 
 
|  | 0 | 0 | REQUIRE(l != f); | 
 
|  | 0 | 0 | REQUIRE(l != f); | 
 
| 174 | 1 | 0 | REQUIRE(m != l); | 
 
|  | 1 | 0 | REQUIRE(m != l); | 
 
|  | 1 | 0 | REQUIRE(m != l); | 
 
|  | 1 | 0 | REQUIRE(m != l); | 
 
|  | 1 | 0 | REQUIRE(m != l); | 
 
|  | 0 | 0 | REQUIRE(m != l); | 
 
|  | 0 | 0 | REQUIRE(m != l); | 
 
| 175 | 1 | 0 | REQUIRE(m != f); | 
 
|  | 1 | 0 | REQUIRE(m != f); | 
 
|  | 1 | 0 | REQUIRE(m != f); | 
 
|  | 1 | 0 | REQUIRE(m != f); | 
 
|  | 1 | 0 | REQUIRE(m != f); | 
 
|  | 0 | 0 | REQUIRE(m != f); | 
 
|  | 0 | 0 | REQUIRE(m != f); | 
 
| 180 | 1 | 0 | function n; | 
 
| 181 | 1 | 0 | function l = [&](){return a;}; | 
 
| 182 | 1 | 0 | function f = &foo2; | 
 
| 183 | 1 | 0 | iptr t = new Test(); | 
 
|  | 1 | 0 | iptr t = new Test(); | 
 
| 184 | 1 | 0 | auto m = make_function(&Test::bar, t); | 
 
| 186 | 1 | 0 | REQUIRE_FALSE(l == n); | 
 
|  | 1 | 0 | REQUIRE_FALSE(l == n); | 
 
|  | 1 | 0 | REQUIRE_FALSE(l == n); | 
 
|  | 1 | 0 | REQUIRE_FALSE(l == n); | 
 
|  | 1 | 0 | REQUIRE_FALSE(l == n); | 
 
|  | 1 | 0 | REQUIRE_FALSE(l == n); | 
 
|  | 0 | 0 | REQUIRE_FALSE(l == n); | 
 
|  | 0 | 0 | REQUIRE_FALSE(l == n); | 
 
| 187 | 1 | 0 | REQUIRE_FALSE(f == n); | 
 
|  | 1 | 0 | REQUIRE_FALSE(f == n); | 
 
|  | 1 | 0 | REQUIRE_FALSE(f == n); | 
 
|  | 1 | 0 | REQUIRE_FALSE(f == n); | 
 
|  | 1 | 0 | REQUIRE_FALSE(f == n); | 
 
|  | 1 | 0 | REQUIRE_FALSE(f == n); | 
 
|  | 0 | 0 | REQUIRE_FALSE(f == n); | 
 
|  | 0 | 0 | REQUIRE_FALSE(f == n); | 
 
| 188 | 1 | 0 | REQUIRE_FALSE(m == n); | 
 
|  | 1 | 0 | REQUIRE_FALSE(m == n); | 
 
|  | 1 | 0 | REQUIRE_FALSE(m == n); | 
 
|  | 1 | 0 | REQUIRE_FALSE(m == n); | 
 
|  | 1 | 0 | REQUIRE_FALSE(m == n); | 
 
|  | 1 | 0 | REQUIRE_FALSE(m == n); | 
 
|  | 0 | 0 | REQUIRE_FALSE(m == n); | 
 
|  | 0 | 0 | REQUIRE_FALSE(m == n); | 
 
| 190 | 1 | 0 | REQUIRE_FALSE(n == l); | 
 
|  | 1 | 0 | REQUIRE_FALSE(n == l); | 
 
|  | 1 | 0 | REQUIRE_FALSE(n == l); | 
 
|  | 1 | 0 | REQUIRE_FALSE(n == l); | 
 
|  | 1 | 0 | REQUIRE_FALSE(n == l); | 
 
|  | 1 | 0 | REQUIRE_FALSE(n == l); | 
 
|  | 0 | 0 | REQUIRE_FALSE(n == l); | 
 
|  | 0 | 0 | REQUIRE_FALSE(n == l); | 
 
| 191 | 1 | 0 | REQUIRE_FALSE(n == f); | 
 
|  | 1 | 0 | REQUIRE_FALSE(n == f); | 
 
|  | 1 | 0 | REQUIRE_FALSE(n == f); | 
 
|  | 1 | 0 | REQUIRE_FALSE(n == f); | 
 
|  | 1 | 0 | REQUIRE_FALSE(n == f); | 
 
|  | 1 | 0 | REQUIRE_FALSE(n == f); | 
 
|  | 0 | 0 | REQUIRE_FALSE(n == f); | 
 
|  | 0 | 0 | REQUIRE_FALSE(n == f); | 
 
| 192 | 1 | 0 | REQUIRE_FALSE(n == m); | 
 
|  | 1 | 0 | REQUIRE_FALSE(n == m); | 
 
|  | 1 | 0 | REQUIRE_FALSE(n == m); | 
 
|  | 1 | 0 | REQUIRE_FALSE(n == m); | 
 
|  | 1 | 0 | REQUIRE_FALSE(n == m); | 
 
|  | 1 | 0 | REQUIRE_FALSE(n == m); | 
 
|  | 0 | 0 | REQUIRE_FALSE(n == m); | 
 
|  | 0 | 0 | REQUIRE_FALSE(n == m); | 
 
| 196 | 1 | 0 | function f1 = Test(1); | 
 
|  | 1 | 0 | function f1 = Test(1); | 
 
| 197 | 1 | 0 | function f2 = Test(2); | 
 
|  | 1 | 0 | function f2 = Test(2); | 
 
| 198 | 1 | 0 | function f11 = Test(1); | 
 
|  | 1 | 0 | function f11 = Test(1); | 
 
| 200 | 1 | 0 | REQUIRE(f1 != f2); | 
 
|  | 1 | 0 | REQUIRE(f1 != f2); | 
 
|  | 1 | 0 | REQUIRE(f1 != f2); | 
 
|  | 1 | 0 | REQUIRE(f1 != f2); | 
 
|  | 1 | 0 | REQUIRE(f1 != f2); | 
 
|  | 0 | 0 | REQUIRE(f1 != f2); | 
 
|  | 0 | 0 | REQUIRE(f1 != f2); | 
 
| 201 | 1 | 0 | REQUIRE(f1 == f11); | 
 
|  | 1 | 0 | REQUIRE(f1 == f11); | 
 
|  | 1 | 0 | REQUIRE(f1 == f11); | 
 
|  | 1 | 0 | REQUIRE(f1 == f11); | 
 
|  | 1 | 0 | REQUIRE(f1 == f11); | 
 
|  | 0 | 0 | REQUIRE(f1 == f11); | 
 
|  | 0 | 0 | REQUIRE(f1 == f11); | 
 
| 203 | 1 | 0 | auto tmp1 = tmp_abstract_function(Test(1)); // inited from rvalue | 
 
|  | 1 | 0 | auto tmp1 = tmp_abstract_function(Test(1)); // inited from rvalue | 
 
| 204 | 1 | 0 | REQUIRE(f1 == tmp1); | 
 
|  | 1 | 0 | REQUIRE(f1 == tmp1); | 
 
|  | 1 | 0 | REQUIRE(f1 == tmp1); | 
 
|  | 1 | 0 | REQUIRE(f1 == tmp1); | 
 
|  | 1 | 0 | REQUIRE(f1 == tmp1); | 
 
|  | 0 | 0 | REQUIRE(f1 == tmp1); | 
 
|  | 0 | 0 | REQUIRE(f1 == tmp1); | 
 
| 210 | 1 | 0 | function f = Tracer(10); | 
 
| 211 | 1 | 0 | auto f2 = f; | 
 
| 212 | 1 | 0 | f(11); | 
 
| 213 | 1 | 0 | f2(12); | 
 
| 215 | 1 | 0 | REQUIRE(Tracer::ctor_calls == 1); // 1 for temporary object Tracer(10); | 
 
|  | 1 | 0 | REQUIRE(Tracer::ctor_calls == 1); // 1 for temporary object Tracer(10); | 
 
|  | 1 | 0 | REQUIRE(Tracer::ctor_calls == 1); // 1 for temporary object Tracer(10); | 
 
|  | 1 | 0 | REQUIRE(Tracer::ctor_calls == 1); // 1 for temporary object Tracer(10); | 
 
|  | 1 | 0 | REQUIRE(Tracer::ctor_calls == 1); // 1 for temporary object Tracer(10); | 
 
|  | 0 | 0 | REQUIRE(Tracer::ctor_calls == 1); // 1 for temporary object Tracer(10); | 
 
|  | 0 | 0 | REQUIRE(Tracer::ctor_calls == 1); // 1 for temporary object Tracer(10); | 
 
| 216 | 1 | 0 | REQUIRE(Tracer::copy_calls == 0); | 
 
|  | 1 | 0 | REQUIRE(Tracer::copy_calls == 0); | 
 
|  | 1 | 0 | REQUIRE(Tracer::copy_calls == 0); | 
 
|  | 1 | 0 | REQUIRE(Tracer::copy_calls == 0); | 
 
|  | 1 | 0 | REQUIRE(Tracer::copy_calls == 0); | 
 
|  | 0 | 0 | REQUIRE(Tracer::copy_calls == 0); | 
 
|  | 0 | 0 | REQUIRE(Tracer::copy_calls == 0); | 
 
| 217 | 1 | 0 | REQUIRE(Tracer::move_calls == 1); // 1 construction from tmp object function f = Tracer(10); | 
 
|  | 1 | 0 | REQUIRE(Tracer::move_calls == 1); // 1 construction from tmp object function f = Tracer(10); | 
 
|  | 1 | 0 | REQUIRE(Tracer::move_calls == 1); // 1 construction from tmp object function f = Tracer(10); | 
 
|  | 1 | 0 | REQUIRE(Tracer::move_calls == 1); // 1 construction from tmp object function f = Tracer(10); | 
 
|  | 1 | 0 | REQUIRE(Tracer::move_calls == 1); // 1 construction from tmp object function f = Tracer(10); | 
 
|  | 0 | 0 | REQUIRE(Tracer::move_calls == 1); // 1 construction from tmp object function f = Tracer(10); | 
 
|  | 0 | 0 | REQUIRE(Tracer::move_calls == 1); // 1 construction from tmp object function f = Tracer(10); | 
 
| 218 | 1 | 0 | REQUIRE(Tracer::dtor_calls == 2); | 
 
|  | 1 | 0 | REQUIRE(Tracer::dtor_calls == 2); | 
 
|  | 1 | 0 | REQUIRE(Tracer::dtor_calls == 2); | 
 
|  | 1 | 0 | REQUIRE(Tracer::dtor_calls == 2); | 
 
|  | 1 | 0 | REQUIRE(Tracer::dtor_calls == 2); | 
 
|  | 0 | 0 | REQUIRE(Tracer::dtor_calls == 2); | 
 
|  | 0 | 0 | REQUIRE(Tracer::dtor_calls == 2); | 
 
| 224 | 1 | 0 | }; | 
 
| 225 | 1 | 0 | REQUIRE(cb(3).value_or(42) == 3); | 
 
|  | 1 | 0 | REQUIRE(cb(3).value_or(42) == 3); | 
 
|  | 1 | 0 | REQUIRE(cb(3).value_or(42) == 3); | 
 
|  | 1 | 0 | REQUIRE(cb(3).value_or(42) == 3); | 
 
|  | 1 | 0 | REQUIRE(cb(3).value_or(42) == 3); | 
 
|  | 1 | 0 | REQUIRE(cb(3).value_or(42) == 3); | 
 
|  | 0 | 0 | REQUIRE(cb(3).value_or(42) == 3); | 
 
|  | 0 | 0 | REQUIRE(cb(3).value_or(42) == 3); | 
 
| 231 | 1 | 0 | }; | 
 
| 232 | 1 | 0 | REQUIRE(cb(3) == 3.0); | 
 
|  | 1 | 0 | REQUIRE(cb(3) == 3.0); | 
 
|  | 1 | 0 | REQUIRE(cb(3) == 3.0); | 
 
|  | 1 | 0 | REQUIRE(cb(3) == 3.0); | 
 
|  | 1 | 0 | REQUIRE(cb(3) == 3.0); | 
 
|  | 1 | 0 | REQUIRE(cb(3) == 3.0); | 
 
|  | 0 | 0 | REQUIRE(cb(3) == 3.0); | 
 
|  | 0 | 0 | REQUIRE(cb(3) == 3.0); | 
 
| 238 | 1 | 0 | }; | 
 
| 239 | 1 | 0 | REQUIRE(cb(3) == 10); | 
 
|  | 1 | 0 | REQUIRE(cb(3) == 10); | 
 
|  | 1 | 0 | REQUIRE(cb(3) == 10); | 
 
|  | 1 | 0 | REQUIRE(cb(3) == 10); | 
 
|  | 1 | 0 | REQUIRE(cb(3) == 10); | 
 
|  | 1 | 0 | REQUIRE(cb(3) == 10); | 
 
|  | 0 | 0 | REQUIRE(cb(3) == 10); | 
 
|  | 0 | 0 | REQUIRE(cb(3) == 10); | 
 
| 242 | 0 | 0 | virtual ~Base(){} | 
 
| 243 | 0 | 0 | virtual panda::string name() { return "base";} | 
 
| 245 | 0 | 1 | struct Derrived : Base { | 
 
| 246 | 2 | 0 | virtual panda::string name() override { return "override";} | 
 
| 253 | 1 | 0 | }; | 
 
| 255 | 1 | 0 | REQUIRE(cb(b).name() == b.name()); | 
 
|  | 1 | 0 | REQUIRE(cb(b).name() == b.name()); | 
 
|  | 1 | 0 | REQUIRE(cb(b).name() == b.name()); | 
 
|  | 1 | 0 | REQUIRE(cb(b).name() == b.name()); | 
 
|  | 1 | 0 | REQUIRE(cb(b).name() == b.name()); | 
 
|  | 1 | 0 | REQUIRE(cb(b).name() == b.name()); | 
 
|  | 1 | 0 | REQUIRE(cb(b).name() == b.name()); | 
 
|  | 1 | 0 | REQUIRE(cb(b).name() == b.name()); | 
 
|  | 0 | 0 | REQUIRE(cb(b).name() == b.name()); | 
 
|  | 0 | 0 | REQUIRE(cb(b).name() == b.name()); | 
 
| 264 | 1 | 0 | return wrapper; | 
 
| 272 | 1 | 0 | auto wrapper = lamda(); | 
 
| 273 | 1 | 0 | REQUIRE(wrapper(10) == 11); | 
 
|  | 1 | 0 | REQUIRE(wrapper(10) == 11); | 
 
|  | 1 | 0 | REQUIRE(wrapper(10) == 11); | 
 
|  | 1 | 0 | REQUIRE(wrapper(10) == 11); | 
 
|  | 1 | 0 | REQUIRE(wrapper(10) == 11); | 
 
|  | 1 | 0 | REQUIRE(wrapper(10) == 11); | 
 
|  | 0 | 0 | REQUIRE(wrapper(10) == 11); | 
 
|  | 0 | 0 | REQUIRE(wrapper(10) == 11); | 
 
| 276 | 1 | 0 | REQUIRE(Tracer::ctor_total() == Tracer::dtor_calls); | 
 
|  | 1 | 0 | REQUIRE(Tracer::ctor_total() == Tracer::dtor_calls); | 
 
|  | 1 | 0 | REQUIRE(Tracer::ctor_total() == Tracer::dtor_calls); | 
 
|  | 1 | 0 | REQUIRE(Tracer::ctor_total() == Tracer::dtor_calls); | 
 
|  | 1 | 0 | REQUIRE(Tracer::ctor_total() == Tracer::dtor_calls); | 
 
|  | 0 | 0 | REQUIRE(Tracer::ctor_total() == Tracer::dtor_calls); | 
 
|  | 0 | 0 | REQUIRE(Tracer::ctor_total() == Tracer::dtor_calls); | 
 
| 283 | 1 | 0 | function outer; | 
 
| 286 | 1 | 1 | if (a == 1) { | 
 
| 293 | 1 | 0 | outer = inner; | 
 
|  | 1 | 0 | outer = inner; | 
 
| 295 | 1 | 0 | outer(); | 
 
| 296 | 1 | 0 | REQUIRE(b == 43); | 
 
|  | 1 | 0 | REQUIRE(b == 43); | 
 
|  | 1 | 0 | REQUIRE(b == 43); | 
 
|  | 1 | 0 | REQUIRE(b == 43); | 
 
|  | 1 | 0 | REQUIRE(b == 43); | 
 
|  | 0 | 0 | REQUIRE(b == 43); | 
 
|  | 0 | 0 | REQUIRE(b == 43); | 
 
| 301 | 1 | 0 | function outer; | 
 
| 307 | 1 | 0 | outer = inner; | 
 
|  | 1 | 0 | outer = inner; | 
 
| 309 | 1 | 0 | outer(1); | 
 
| 310 | 1 | 0 | REQUIRE(a == 1); | 
 
|  | 1 | 0 | REQUIRE(a == 1); | 
 
|  | 1 | 0 | REQUIRE(a == 1); | 
 
|  | 1 | 0 | REQUIRE(a == 1); | 
 
|  | 1 | 0 | REQUIRE(a == 1); | 
 
|  | 0 | 0 | REQUIRE(a == 1); | 
 
|  | 0 | 0 | REQUIRE(a == 1); | 
 
| 316 | 1 | 0 | function f = fptr; | 
 
| 317 | 1 | 0 | REQUIRE(!f); | 
 
|  | 1 | 0 | REQUIRE(!f); | 
 
|  | 1 | 0 | REQUIRE(!f); | 
 
|  | 1 | 0 | REQUIRE(!f); | 
 
|  | 0 | 0 | REQUIRE(!f); | 
 
|  | 0 | 0 | REQUIRE(!f); | 
 
| 323 | 1 | 0 | auto m = make_function(meth); | 
 
| 324 | 1 | 0 | REQUIRE(!m); | 
 
|  | 1 | 0 | REQUIRE(!m); | 
 
|  | 1 | 0 | REQUIRE(!m); | 
 
|  | 1 | 0 | REQUIRE(!m); | 
 
|  | 0 | 0 | REQUIRE(!m); | 
 
|  | 0 | 0 | REQUIRE(!m); | 
 
| 337 | 1 | 0 | function f = s; | 
 
| 338 | 1 | 0 | REQUIRE(!f); | 
 
|  | 1 | 0 | REQUIRE(!f); | 
 
|  | 1 | 0 | REQUIRE(!f); | 
 
|  | 1 | 0 | REQUIRE(!f); | 
 
|  | 0 | 0 | REQUIRE(!f); | 
 
|  | 0 | 0 | REQUIRE(!f); | 
 
| 340 | 1 | 0 | f = s; | 
 
|  | 1 | 0 | f = s; | 
 
| 341 | 1 | 0 | REQUIRE(f); | 
 
|  | 1 | 0 | REQUIRE(f); | 
 
|  | 1 | 0 | REQUIRE(f); | 
 
|  | 1 | 0 | REQUIRE(f); | 
 
|  | 0 | 0 | REQUIRE(f); | 
 
|  | 0 | 0 | REQUIRE(f); | 
 
| 349 | 1 | 0 | }; | 
 
| 350 | 1 | 0 | ff(val); | 
 
| 359 | 1 | 0 | s.method(20); | 
 
| 360 | 1 | 0 | REQUIRE(s.a == 20); | 
 
|  | 1 | 0 | REQUIRE(s.a == 20); | 
 
|  | 1 | 0 | REQUIRE(s.a == 20); | 
 
|  | 1 | 0 | REQUIRE(s.a == 20); | 
 
|  | 1 | 0 | REQUIRE(s.a == 20); | 
 
|  | 0 | 0 | REQUIRE(s.a == 20); | 
 
|  | 0 | 0 | REQUIRE(s.a == 20); | 
 
| 368 | 1 | 0 | }; | 
 
| 369 | 1 | 0 | int b = f(42); | 
 
| 370 | 1 | 0 | REQUIRE(a == 20); | 
 
|  | 1 | 0 | REQUIRE(a == 20); | 
 
|  | 1 | 0 | REQUIRE(a == 20); | 
 
|  | 1 | 0 | REQUIRE(a == 20); | 
 
|  | 1 | 0 | REQUIRE(a == 20); | 
 
|  | 0 | 0 | REQUIRE(a == 20); | 
 
|  | 0 | 0 | REQUIRE(a == 20); | 
 
| 371 | 1 | 0 | REQUIRE(b == 21); | 
 
|  | 1 | 0 | REQUIRE(b == 21); | 
 
|  | 1 | 0 | REQUIRE(b == 21); | 
 
|  | 1 | 0 | REQUIRE(b == 21); | 
 
|  | 1 | 0 | REQUIRE(b == 21); | 
 
|  | 0 | 0 | REQUIRE(b == 21); | 
 
|  | 0 | 0 | REQUIRE(b == 21); | 
 
| 376 | 1 | 0 | }; | 
 
| 377 | 1 | 0 | CHECK(f2(123) == 111); | 
 
|  | 1 | 0 | CHECK(f2(123) == 111); | 
 
|  | 1 | 0 | CHECK(f2(123) == 111); | 
 
|  | 1 | 0 | CHECK(f2(123) == 111); | 
 
|  | 1 | 0 | CHECK(f2(123) == 111); | 
 
|  | 1 | 0 | CHECK(f2(123) == 111); | 
 
|  | 0 | 0 | CHECK(f2(123) == 111); | 
 
|  | 0 | 0 | CHECK(f2(123) == 111); | 
 
| 380 | 1 | 0 | REQUIRE(sizeof...(args) == 1); | 
 
|  | 1 | 0 | REQUIRE(sizeof...(args) == 1); | 
 
|  | 1 | 0 | REQUIRE(sizeof...(args) == 1); | 
 
|  | 1 | 0 | REQUIRE(sizeof...(args) == 1); | 
 
|  | 1 | 0 | REQUIRE(sizeof...(args) == 1); | 
 
|  | 0 | 0 | REQUIRE(sizeof...(args) == 1); | 
 
|  | 0 | 0 | REQUIRE(sizeof...(args) == 1); | 
 
| 382 | 1 | 0 | }; | 
 
| 383 | 1 | 0 | CHECK(f3(123) == 111); | 
 
|  | 1 | 0 | CHECK(f3(123) == 111); | 
 
|  | 1 | 0 | CHECK(f3(123) == 111); | 
 
|  | 1 | 0 | CHECK(f3(123) == 111); | 
 
|  | 1 | 0 | CHECK(f3(123) == 111); | 
 
|  | 1 | 0 | CHECK(f3(123) == 111); | 
 
|  | 0 | 0 | CHECK(f3(123) == 111); | 
 
|  | 0 | 0 | CHECK(f3(123) == 111); | 
 
| 384 | 18 | 0 | } | 
 
|  | 18 | 0 | } |