GCC Code Coverage Report


Directory: ./
File: src/ast/nodes.cpp
Date: 2023-04-27 00:55:30
Exec Total Coverage
Lines: 31 48 64.6%
Functions: 11 14 78.6%
Branches: 447 906 49.3%

Line Branch Exec Source
1 #include "nodes.h"
2 #include "magic.h"
3 #include "ops.h"
4
5 namespace lython {
6
7 ExprNode* None();
8 ExprNode* True();
9 ExprNode* False();
10
11 // --------------------------------------------------------------------
12 // to-string
13
14 String str(NodeKind k) {
15 #define CASEGEN(name) \
16 case NodeKind::name: \
17 return #name;
18
19 #define X(name, _) CASEGEN(name)
20 #define SECTION(name) CASEGEN(name)
21 #define EXPR(name, _) CASEGEN(name)
22 #define STMT(name, _) CASEGEN(name)
23 #define MOD(name, _) CASEGEN(name)
24 #define MATCH(name, _) CASEGEN(name)
25
26
68/82
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✓ Branch 2 taken 9 times.
✓ Branch 3 taken 7 times.
✓ Branch 4 taken 18 times.
✓ Branch 5 taken 10 times.
✓ Branch 6 taken 7 times.
✓ Branch 7 taken 7 times.
✓ Branch 8 taken 10 times.
✓ Branch 9 taken 10 times.
✓ Branch 10 taken 7 times.
✓ Branch 11 taken 7 times.
✓ Branch 12 taken 7 times.
✓ Branch 13 taken 7 times.
✓ Branch 14 taken 7 times.
✓ Branch 15 taken 9 times.
✓ Branch 16 taken 7 times.
✓ Branch 17 taken 15 times.
✓ Branch 18 taken 7 times.
✓ Branch 19 taken 9 times.
✓ Branch 20 taken 9 times.
✓ Branch 21 taken 199 times.
✓ Branch 22 taken 9 times.
✓ Branch 23 taken 8 times.
✓ Branch 24 taken 7 times.
✓ Branch 25 taken 489 times.
✓ Branch 26 taken 10 times.
✓ Branch 27 taken 22 times.
✓ Branch 28 taken 8 times.
✓ Branch 29 taken 6 times.
✓ Branch 30 taken 6 times.
✓ Branch 31 taken 6 times.
✓ Branch 32 taken 85 times.
✓ Branch 33 taken 6 times.
✓ Branch 34 taken 6 times.
✓ Branch 35 taken 246 times.
✓ Branch 36 taken 6 times.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 6 times.
✓ Branch 46 taken 60 times.
✓ Branch 47 taken 11 times.
✓ Branch 48 taken 14 times.
✓ Branch 49 taken 7 times.
✓ Branch 50 taken 34 times.
✓ Branch 51 taken 8 times.
✓ Branch 52 taken 11 times.
✓ Branch 53 taken 8 times.
✓ Branch 54 taken 7 times.
✓ Branch 55 taken 7 times.
✓ Branch 56 taken 8 times.
✓ Branch 57 taken 8 times.
✓ Branch 58 taken 7 times.
✓ Branch 59 taken 8 times.
✓ Branch 60 taken 8 times.
✓ Branch 61 taken 8 times.
✓ Branch 62 taken 7 times.
✓ Branch 63 taken 7 times.
✓ Branch 64 taken 56 times.
✓ Branch 65 taken 32 times.
✓ Branch 66 taken 7 times.
✓ Branch 67 taken 7 times.
✓ Branch 68 taken 9 times.
✓ Branch 69 taken 7 times.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✓ Branch 72 taken 9 times.
✓ Branch 73 taken 2 times.
✓ Branch 74 taken 3 times.
✓ Branch 75 taken 2 times.
✓ Branch 76 taken 1 times.
✓ Branch 77 taken 1 times.
✓ Branch 78 taken 1 times.
✓ Branch 79 taken 1 times.
✗ Branch 80 not taken.
✗ Branch 81 not taken.
1660 switch (k) {
27
68/94
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✓ Branch 10 taken 9 times.
✓ Branch 14 taken 7 times.
✓ Branch 18 taken 18 times.
✓ Branch 22 taken 10 times.
✓ Branch 26 taken 7 times.
✓ Branch 30 taken 7 times.
✓ Branch 34 taken 10 times.
✓ Branch 38 taken 10 times.
✓ Branch 42 taken 7 times.
✓ Branch 46 taken 7 times.
✓ Branch 50 taken 7 times.
✓ Branch 54 taken 7 times.
✓ Branch 58 taken 7 times.
✓ Branch 62 taken 9 times.
✓ Branch 66 taken 7 times.
✓ Branch 70 taken 15 times.
✓ Branch 74 taken 7 times.
✓ Branch 78 taken 9 times.
✓ Branch 82 taken 9 times.
✓ Branch 86 taken 199 times.
✓ Branch 90 taken 9 times.
✓ Branch 94 taken 8 times.
✓ Branch 98 taken 7 times.
✓ Branch 102 taken 489 times.
✓ Branch 106 taken 10 times.
✓ Branch 110 taken 22 times.
✓ Branch 114 taken 8 times.
✓ Branch 118 taken 6 times.
✓ Branch 122 taken 6 times.
✓ Branch 126 taken 6 times.
✓ Branch 130 taken 85 times.
✓ Branch 134 taken 6 times.
✓ Branch 138 taken 6 times.
✓ Branch 142 taken 246 times.
✓ Branch 146 taken 6 times.
✗ Branch 150 not taken.
✗ Branch 151 not taken.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✗ Branch 158 not taken.
✗ Branch 159 not taken.
✗ Branch 162 not taken.
✗ Branch 163 not taken.
✗ Branch 166 not taken.
✗ Branch 167 not taken.
✗ Branch 170 not taken.
✗ Branch 171 not taken.
✗ Branch 174 not taken.
✗ Branch 175 not taken.
✗ Branch 178 not taken.
✗ Branch 179 not taken.
✓ Branch 182 taken 6 times.
✓ Branch 186 taken 60 times.
✓ Branch 190 taken 11 times.
✓ Branch 194 taken 14 times.
✓ Branch 198 taken 7 times.
✓ Branch 202 taken 34 times.
✓ Branch 206 taken 8 times.
✓ Branch 210 taken 11 times.
✓ Branch 214 taken 8 times.
✓ Branch 218 taken 7 times.
✓ Branch 222 taken 7 times.
✓ Branch 226 taken 8 times.
✓ Branch 230 taken 8 times.
✓ Branch 234 taken 7 times.
✓ Branch 238 taken 8 times.
✓ Branch 242 taken 8 times.
✓ Branch 246 taken 8 times.
✓ Branch 250 taken 7 times.
✓ Branch 254 taken 7 times.
✓ Branch 258 taken 56 times.
✓ Branch 262 taken 32 times.
✓ Branch 266 taken 7 times.
✓ Branch 270 taken 7 times.
✓ Branch 274 taken 9 times.
✓ Branch 278 taken 7 times.
✗ Branch 282 not taken.
✗ Branch 283 not taken.
✗ Branch 286 not taken.
✗ Branch 287 not taken.
✓ Branch 290 taken 9 times.
✓ Branch 294 taken 2 times.
✓ Branch 298 taken 3 times.
✓ Branch 302 taken 2 times.
✓ Branch 306 taken 1 times.
✓ Branch 310 taken 1 times.
✓ Branch 314 taken 1 times.
✓ Branch 318 taken 1 times.
✗ Branch 322 not taken.
✗ Branch 323 not taken.
1660 NODEKIND_ENUM(X, SECTION, EXPR, STMT, MOD, MATCH)
28
29 default: break;
30 }
31
32 #undef X
33 #undef SECTION
34 #undef EXPR
35 #undef STMT
36 #undef MOD
37 #undef MATCH
38 return "<invalid>";
39 }
40
41 void print(BoolOperator const& v, std::ostream& out) {
42
2/3
✓ Branch 0 taken 8 times.
✓ Branch 1 taken 9 times.
✗ Branch 2 not taken.
17 switch (v) {
43 #define OP(name, kw, _) \
44 case BoolOperator::name: { \
45 out << #kw; \
46 return; \
47 }
48 17 BOOL_OPERATORS(OP)
49
50 default: break;
51 #undef OP
52 }
53 }
54
55 void print(BinaryOperator const& v, std::ostream& out) {
56
5/17
✗ Branch 0 not taken.
✓ Branch 1 taken 19 times.
✓ Branch 2 taken 11 times.
✓ Branch 3 taken 3 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
35 switch (v) {
57 #define OP(name, kw, _) \
58 case BinaryOperator::name: { \
59 out << #name; \
60 return; \
61 }
62 35 BINARY_OPERATORS(OP)
63
64 default: break;
65 #undef OP
66 }
67 }
68
69 void print(UnaryOperator const& v, std::ostream& out) {
70
4/6
✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 3 times.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
15 switch (v) {
71 #define OP(name, kw, _) \
72 case UnaryOperator::name: { \
73 out << #name; \
74 return; \
75 }
76 15 UNARY_OPERATORS(OP)
77
78 #undef OP
79 }
80 }
81
82 void print(CmpOperator const& v, std::ostream& out) {
83
8/12
✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 4 times.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 34 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 4 times.
✓ Branch 8 taken 4 times.
✓ Branch 9 taken 4 times.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
67 switch (v) {
84 #define OP(name, kw, _) \
85 case CmpOperator::name: { \
86 out << #name; \
87 return; \
88 }
89 67 COMP_OPERATORS(OP)
90
91 #undef OP
92 }
93 }
94
95 void ClassDef::Attr::dump(std::ostream& out) {
96 out << name << ": " << str(type) << " = " << str(stmt);
97 }
98
99 StringRef operator_magic_name(BinaryOperator const& v, bool reverse) {
100
101 #define OP(name, kw, magic) \
102 static StringRef m_##name = String("__" #magic "__"); \
103 static StringRef mr_##name = String("__r" #magic "__");
104
105
128/256
✓ Branch 0 taken 12 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 12 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 12 times.
✓ Branch 10 taken 12 times.
✓ Branch 15 taken 12 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 12 times.
✗ Branch 19 not taken.
✓ Branch 22 taken 12 times.
✓ Branch 25 taken 12 times.
✓ Branch 30 taken 12 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 12 times.
✗ Branch 34 not taken.
✓ Branch 37 taken 12 times.
✓ Branch 40 taken 12 times.
✓ Branch 45 taken 12 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 12 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 12 times.
✓ Branch 55 taken 12 times.
✓ Branch 60 taken 12 times.
✗ Branch 61 not taken.
✓ Branch 63 taken 12 times.
✗ Branch 64 not taken.
✓ Branch 67 taken 12 times.
✓ Branch 70 taken 12 times.
✓ Branch 75 taken 12 times.
✗ Branch 76 not taken.
✓ Branch 78 taken 12 times.
✗ Branch 79 not taken.
✓ Branch 82 taken 12 times.
✓ Branch 85 taken 12 times.
✓ Branch 90 taken 12 times.
✗ Branch 91 not taken.
✓ Branch 93 taken 12 times.
✗ Branch 94 not taken.
✓ Branch 97 taken 12 times.
✓ Branch 100 taken 12 times.
✓ Branch 105 taken 12 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 12 times.
✗ Branch 109 not taken.
✓ Branch 112 taken 12 times.
✓ Branch 115 taken 12 times.
✓ Branch 120 taken 12 times.
✗ Branch 121 not taken.
✓ Branch 123 taken 12 times.
✗ Branch 124 not taken.
✓ Branch 127 taken 12 times.
✓ Branch 130 taken 12 times.
✓ Branch 135 taken 12 times.
✗ Branch 136 not taken.
✓ Branch 138 taken 12 times.
✗ Branch 139 not taken.
✓ Branch 142 taken 12 times.
✓ Branch 145 taken 12 times.
✓ Branch 150 taken 12 times.
✗ Branch 151 not taken.
✓ Branch 153 taken 12 times.
✗ Branch 154 not taken.
✓ Branch 157 taken 12 times.
✓ Branch 160 taken 12 times.
✓ Branch 165 taken 12 times.
✗ Branch 166 not taken.
✓ Branch 168 taken 12 times.
✗ Branch 169 not taken.
✓ Branch 172 taken 12 times.
✓ Branch 175 taken 12 times.
✓ Branch 180 taken 12 times.
✗ Branch 181 not taken.
✓ Branch 183 taken 12 times.
✗ Branch 184 not taken.
✓ Branch 187 taken 12 times.
✓ Branch 190 taken 12 times.
✓ Branch 195 taken 12 times.
✗ Branch 196 not taken.
✓ Branch 198 taken 12 times.
✗ Branch 199 not taken.
✓ Branch 202 taken 12 times.
✓ Branch 205 taken 12 times.
✓ Branch 210 taken 12 times.
✗ Branch 211 not taken.
✓ Branch 213 taken 12 times.
✗ Branch 214 not taken.
✓ Branch 217 taken 12 times.
✓ Branch 220 taken 12 times.
✓ Branch 225 taken 12 times.
✗ Branch 226 not taken.
✓ Branch 228 taken 12 times.
✗ Branch 229 not taken.
✓ Branch 232 taken 12 times.
✓ Branch 235 taken 12 times.
✓ Branch 240 taken 12 times.
✗ Branch 241 not taken.
✓ Branch 243 taken 12 times.
✗ Branch 244 not taken.
✓ Branch 247 taken 12 times.
✓ Branch 250 taken 12 times.
✓ Branch 255 taken 12 times.
✗ Branch 256 not taken.
✓ Branch 258 taken 12 times.
✗ Branch 259 not taken.
✓ Branch 262 taken 12 times.
✓ Branch 265 taken 12 times.
✓ Branch 270 taken 12 times.
✗ Branch 271 not taken.
✓ Branch 273 taken 12 times.
✗ Branch 274 not taken.
✓ Branch 277 taken 12 times.
✓ Branch 280 taken 12 times.
✓ Branch 285 taken 12 times.
✗ Branch 286 not taken.
✓ Branch 288 taken 12 times.
✗ Branch 289 not taken.
✓ Branch 292 taken 12 times.
✓ Branch 295 taken 12 times.
✓ Branch 300 taken 12 times.
✗ Branch 301 not taken.
✓ Branch 303 taken 12 times.
✗ Branch 304 not taken.
✓ Branch 307 taken 12 times.
✓ Branch 310 taken 12 times.
✓ Branch 315 taken 12 times.
✗ Branch 316 not taken.
✓ Branch 318 taken 12 times.
✗ Branch 319 not taken.
✓ Branch 322 taken 12 times.
✓ Branch 325 taken 12 times.
✓ Branch 330 taken 12 times.
✗ Branch 331 not taken.
✓ Branch 333 taken 12 times.
✗ Branch 334 not taken.
✓ Branch 337 taken 12 times.
✓ Branch 340 taken 12 times.
✓ Branch 345 taken 12 times.
✗ Branch 346 not taken.
✓ Branch 348 taken 12 times.
✗ Branch 349 not taken.
✓ Branch 352 taken 12 times.
✓ Branch 355 taken 12 times.
✓ Branch 360 taken 12 times.
✗ Branch 361 not taken.
✓ Branch 363 taken 12 times.
✗ Branch 364 not taken.
✓ Branch 367 taken 12 times.
✓ Branch 370 taken 12 times.
✓ Branch 375 taken 12 times.
✗ Branch 376 not taken.
✓ Branch 378 taken 12 times.
✗ Branch 379 not taken.
✓ Branch 382 taken 12 times.
✓ Branch 385 taken 12 times.
✓ Branch 390 taken 12 times.
✗ Branch 391 not taken.
✓ Branch 393 taken 12 times.
✗ Branch 394 not taken.
✓ Branch 397 taken 12 times.
✓ Branch 400 taken 12 times.
✓ Branch 405 taken 12 times.
✗ Branch 406 not taken.
✓ Branch 408 taken 12 times.
✗ Branch 409 not taken.
✓ Branch 412 taken 12 times.
✓ Branch 415 taken 12 times.
✓ Branch 420 taken 12 times.
✗ Branch 421 not taken.
✓ Branch 423 taken 12 times.
✗ Branch 424 not taken.
✓ Branch 427 taken 12 times.
✓ Branch 430 taken 12 times.
✓ Branch 435 taken 12 times.
✗ Branch 436 not taken.
✓ Branch 438 taken 12 times.
✗ Branch 439 not taken.
✓ Branch 442 taken 12 times.
✓ Branch 445 taken 12 times.
✓ Branch 450 taken 12 times.
✗ Branch 451 not taken.
✓ Branch 453 taken 12 times.
✗ Branch 454 not taken.
✓ Branch 457 taken 12 times.
✓ Branch 460 taken 12 times.
✓ Branch 465 taken 12 times.
✗ Branch 466 not taken.
✓ Branch 468 taken 12 times.
✗ Branch 469 not taken.
✓ Branch 472 taken 12 times.
✓ Branch 475 taken 12 times.
✗ Branch 481 not taken.
✗ Branch 482 not taken.
✗ Branch 485 not taken.
✗ Branch 486 not taken.
✗ Branch 489 not taken.
✗ Branch 490 not taken.
✗ Branch 493 not taken.
✗ Branch 494 not taken.
✗ Branch 497 not taken.
✗ Branch 498 not taken.
✗ Branch 501 not taken.
✗ Branch 502 not taken.
✗ Branch 505 not taken.
✗ Branch 506 not taken.
✗ Branch 509 not taken.
✗ Branch 510 not taken.
✗ Branch 513 not taken.
✗ Branch 514 not taken.
✗ Branch 517 not taken.
✗ Branch 518 not taken.
✗ Branch 521 not taken.
✗ Branch 522 not taken.
✗ Branch 525 not taken.
✗ Branch 526 not taken.
✗ Branch 529 not taken.
✗ Branch 530 not taken.
✗ Branch 533 not taken.
✗ Branch 534 not taken.
✗ Branch 537 not taken.
✗ Branch 538 not taken.
✗ Branch 541 not taken.
✗ Branch 542 not taken.
✗ Branch 545 not taken.
✗ Branch 546 not taken.
✗ Branch 549 not taken.
✗ Branch 550 not taken.
✗ Branch 553 not taken.
✗ Branch 554 not taken.
✗ Branch 557 not taken.
✗ Branch 558 not taken.
✗ Branch 561 not taken.
✗ Branch 562 not taken.
✗ Branch 565 not taken.
✗ Branch 566 not taken.
✗ Branch 569 not taken.
✗ Branch 570 not taken.
✗ Branch 573 not taken.
✗ Branch 574 not taken.
✗ Branch 577 not taken.
✗ Branch 578 not taken.
✗ Branch 581 not taken.
✗ Branch 582 not taken.
✗ Branch 585 not taken.
✗ Branch 586 not taken.
✗ Branch 589 not taken.
✗ Branch 590 not taken.
✗ Branch 593 not taken.
✗ Branch 594 not taken.
✗ Branch 597 not taken.
✗ Branch 598 not taken.
✗ Branch 601 not taken.
✗ Branch 602 not taken.
✗ Branch 605 not taken.
✗ Branch 606 not taken.
12 BINARY_OPERATORS(OP)
106
107 #undef OP
108
109
1/17
✗ Branch 0 not taken.
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
12 switch (v) {
110 #define OP(name, kw, _) \
111 case BinaryOperator::name: { \
112 return reverse ? mr_##name : m_##name; \
113 }
114
1/32
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 12 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
12 BINARY_OPERATORS(OP)
115
116 #undef OP
117 }
118
119 return StringRef("");
120 }
121
122 StringRef operator_magic_name(BoolOperator const& v, bool reverse) {
123
124 #define OP(name, kw, magic) \
125 static StringRef m_##name = String("__" #magic "__"); \
126 static StringRef mr_##name = String("__r" #magic "__");
127
128
20/32
✓ Branch 0 taken 12 times.
✓ Branch 1 taken 20 times.
✓ Branch 3 taken 12 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 12 times.
✓ Branch 10 taken 12 times.
✓ Branch 15 taken 12 times.
✓ Branch 16 taken 20 times.
✓ Branch 18 taken 12 times.
✗ Branch 19 not taken.
✓ Branch 22 taken 12 times.
✓ Branch 25 taken 12 times.
✓ Branch 30 taken 12 times.
✓ Branch 31 taken 20 times.
✓ Branch 33 taken 12 times.
✗ Branch 34 not taken.
✓ Branch 37 taken 12 times.
✓ Branch 40 taken 12 times.
✓ Branch 45 taken 12 times.
✓ Branch 46 taken 20 times.
✓ Branch 48 taken 12 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 12 times.
✓ Branch 55 taken 12 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✗ Branch 69 not taken.
✗ Branch 70 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
32 BOOL_OPERATORS(OP)
129
130 #undef OP
131
132
2/3
✓ Branch 0 taken 24 times.
✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
32 switch (v) {
133 #define OP(name, kw, _) \
134 case BoolOperator::name: { \
135 return reverse ? mr_##name : m_##name; \
136 }
137
4/4
✓ Branch 0 taken 6 times.
✓ Branch 1 taken 18 times.
✓ Branch 3 taken 4 times.
✓ Branch 4 taken 4 times.
32 BOOL_OPERATORS(OP)
138
139 default: break;
140 #undef OP
141 }
142
143 return StringRef("");
144 }
145
146 StringRef operator_magic_name(UnaryOperator const& v, bool reverse) {
147
148 #define OP(name, kw, magic) \
149 static StringRef m_##name = String("__" #magic "__"); \
150 static StringRef mr_##name = String("__r" #magic "__");
151
152
40/80
✓ Branch 0 taken 12 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 12 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 12 times.
✓ Branch 10 taken 12 times.
✓ Branch 15 taken 12 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 12 times.
✗ Branch 19 not taken.
✓ Branch 22 taken 12 times.
✓ Branch 25 taken 12 times.
✓ Branch 30 taken 12 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 12 times.
✗ Branch 34 not taken.
✓ Branch 37 taken 12 times.
✓ Branch 40 taken 12 times.
✓ Branch 45 taken 12 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 12 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 12 times.
✓ Branch 55 taken 12 times.
✓ Branch 60 taken 12 times.
✗ Branch 61 not taken.
✓ Branch 63 taken 12 times.
✗ Branch 64 not taken.
✓ Branch 67 taken 12 times.
✓ Branch 70 taken 12 times.
✓ Branch 75 taken 12 times.
✗ Branch 76 not taken.
✓ Branch 78 taken 12 times.
✗ Branch 79 not taken.
✓ Branch 82 taken 12 times.
✓ Branch 85 taken 12 times.
✓ Branch 90 taken 12 times.
✗ Branch 91 not taken.
✓ Branch 93 taken 12 times.
✗ Branch 94 not taken.
✓ Branch 97 taken 12 times.
✓ Branch 100 taken 12 times.
✓ Branch 105 taken 12 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 12 times.
✗ Branch 109 not taken.
✓ Branch 112 taken 12 times.
✓ Branch 115 taken 12 times.
✓ Branch 120 taken 12 times.
✗ Branch 121 not taken.
✓ Branch 123 taken 12 times.
✗ Branch 124 not taken.
✓ Branch 127 taken 12 times.
✓ Branch 130 taken 12 times.
✓ Branch 135 taken 12 times.
✗ Branch 136 not taken.
✓ Branch 138 taken 12 times.
✗ Branch 139 not taken.
✓ Branch 142 taken 12 times.
✓ Branch 145 taken 12 times.
✗ Branch 151 not taken.
✗ Branch 152 not taken.
✗ Branch 155 not taken.
✗ Branch 156 not taken.
✗ Branch 159 not taken.
✗ Branch 160 not taken.
✗ Branch 163 not taken.
✗ Branch 164 not taken.
✗ Branch 167 not taken.
✗ Branch 168 not taken.
✗ Branch 171 not taken.
✗ Branch 172 not taken.
✗ Branch 175 not taken.
✗ Branch 176 not taken.
✗ Branch 179 not taken.
✗ Branch 180 not taken.
✗ Branch 183 not taken.
✗ Branch 184 not taken.
✗ Branch 187 not taken.
✗ Branch 188 not taken.
12 UNARY_OPERATORS(OP)
153
154 #undef OP
155
156
1/6
✗ Branch 0 not taken.
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
12 switch (v) {
157 #define OP(name, kw, _) \
158 case UnaryOperator::name: { \
159 return reverse ? mr_##name : m_##name; \
160 }
161
1/10
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 12 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
12 UNARY_OPERATORS(OP)
162
163 #undef OP
164 }
165
166 return StringRef("");
167 }
168
169 StringRef operator_magic_name(CmpOperator const& v, bool reverse) {
170
171 #define OP(name, kw, magic) \
172 static StringRef m_##name = String("__" #magic "__"); \
173 static StringRef mr_##name = String("__r" #magic "__");
174
175
88/176
✓ Branch 0 taken 12 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 12 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 12 times.
✓ Branch 10 taken 12 times.
✓ Branch 15 taken 12 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 12 times.
✗ Branch 19 not taken.
✓ Branch 22 taken 12 times.
✓ Branch 25 taken 12 times.
✓ Branch 30 taken 12 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 12 times.
✗ Branch 34 not taken.
✓ Branch 37 taken 12 times.
✓ Branch 40 taken 12 times.
✓ Branch 45 taken 12 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 12 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 12 times.
✓ Branch 55 taken 12 times.
✓ Branch 60 taken 12 times.
✗ Branch 61 not taken.
✓ Branch 63 taken 12 times.
✗ Branch 64 not taken.
✓ Branch 67 taken 12 times.
✓ Branch 70 taken 12 times.
✓ Branch 75 taken 12 times.
✗ Branch 76 not taken.
✓ Branch 78 taken 12 times.
✗ Branch 79 not taken.
✓ Branch 82 taken 12 times.
✓ Branch 85 taken 12 times.
✓ Branch 90 taken 12 times.
✗ Branch 91 not taken.
✓ Branch 93 taken 12 times.
✗ Branch 94 not taken.
✓ Branch 97 taken 12 times.
✓ Branch 100 taken 12 times.
✓ Branch 105 taken 12 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 12 times.
✗ Branch 109 not taken.
✓ Branch 112 taken 12 times.
✓ Branch 115 taken 12 times.
✓ Branch 120 taken 12 times.
✗ Branch 121 not taken.
✓ Branch 123 taken 12 times.
✗ Branch 124 not taken.
✓ Branch 127 taken 12 times.
✓ Branch 130 taken 12 times.
✓ Branch 135 taken 12 times.
✗ Branch 136 not taken.
✓ Branch 138 taken 12 times.
✗ Branch 139 not taken.
✓ Branch 142 taken 12 times.
✓ Branch 145 taken 12 times.
✓ Branch 150 taken 12 times.
✗ Branch 151 not taken.
✓ Branch 153 taken 12 times.
✗ Branch 154 not taken.
✓ Branch 157 taken 12 times.
✓ Branch 160 taken 12 times.
✓ Branch 165 taken 12 times.
✗ Branch 166 not taken.
✓ Branch 168 taken 12 times.
✗ Branch 169 not taken.
✓ Branch 172 taken 12 times.
✓ Branch 175 taken 12 times.
✓ Branch 180 taken 12 times.
✗ Branch 181 not taken.
✓ Branch 183 taken 12 times.
✗ Branch 184 not taken.
✓ Branch 187 taken 12 times.
✓ Branch 190 taken 12 times.
✓ Branch 195 taken 12 times.
✗ Branch 196 not taken.
✓ Branch 198 taken 12 times.
✗ Branch 199 not taken.
✓ Branch 202 taken 12 times.
✓ Branch 205 taken 12 times.
✓ Branch 210 taken 12 times.
✗ Branch 211 not taken.
✓ Branch 213 taken 12 times.
✗ Branch 214 not taken.
✓ Branch 217 taken 12 times.
✓ Branch 220 taken 12 times.
✓ Branch 225 taken 12 times.
✗ Branch 226 not taken.
✓ Branch 228 taken 12 times.
✗ Branch 229 not taken.
✓ Branch 232 taken 12 times.
✓ Branch 235 taken 12 times.
✓ Branch 240 taken 12 times.
✗ Branch 241 not taken.
✓ Branch 243 taken 12 times.
✗ Branch 244 not taken.
✓ Branch 247 taken 12 times.
✓ Branch 250 taken 12 times.
✓ Branch 255 taken 12 times.
✗ Branch 256 not taken.
✓ Branch 258 taken 12 times.
✗ Branch 259 not taken.
✓ Branch 262 taken 12 times.
✓ Branch 265 taken 12 times.
✓ Branch 270 taken 12 times.
✗ Branch 271 not taken.
✓ Branch 273 taken 12 times.
✗ Branch 274 not taken.
✓ Branch 277 taken 12 times.
✓ Branch 280 taken 12 times.
✓ Branch 285 taken 12 times.
✗ Branch 286 not taken.
✓ Branch 288 taken 12 times.
✗ Branch 289 not taken.
✓ Branch 292 taken 12 times.
✓ Branch 295 taken 12 times.
✓ Branch 300 taken 12 times.
✗ Branch 301 not taken.
✓ Branch 303 taken 12 times.
✗ Branch 304 not taken.
✓ Branch 307 taken 12 times.
✓ Branch 310 taken 12 times.
✓ Branch 315 taken 12 times.
✗ Branch 316 not taken.
✓ Branch 318 taken 12 times.
✗ Branch 319 not taken.
✓ Branch 322 taken 12 times.
✓ Branch 325 taken 12 times.
✗ Branch 331 not taken.
✗ Branch 332 not taken.
✗ Branch 335 not taken.
✗ Branch 336 not taken.
✗ Branch 339 not taken.
✗ Branch 340 not taken.
✗ Branch 343 not taken.
✗ Branch 344 not taken.
✗ Branch 347 not taken.
✗ Branch 348 not taken.
✗ Branch 351 not taken.
✗ Branch 352 not taken.
✗ Branch 355 not taken.
✗ Branch 356 not taken.
✗ Branch 359 not taken.
✗ Branch 360 not taken.
✗ Branch 363 not taken.
✗ Branch 364 not taken.
✗ Branch 367 not taken.
✗ Branch 368 not taken.
✗ Branch 371 not taken.
✗ Branch 372 not taken.
✗ Branch 375 not taken.
✗ Branch 376 not taken.
✗ Branch 379 not taken.
✗ Branch 380 not taken.
✗ Branch 383 not taken.
✗ Branch 384 not taken.
✗ Branch 387 not taken.
✗ Branch 388 not taken.
✗ Branch 391 not taken.
✗ Branch 392 not taken.
✗ Branch 395 not taken.
✗ Branch 396 not taken.
✗ Branch 399 not taken.
✗ Branch 400 not taken.
✗ Branch 403 not taken.
✗ Branch 404 not taken.
✗ Branch 407 not taken.
✗ Branch 408 not taken.
✗ Branch 411 not taken.
✗ Branch 412 not taken.
✗ Branch 415 not taken.
✗ Branch 416 not taken.
12 COMP_OPERATORS(OP)
176
177 #undef OP
178
179
1/12
✗ Branch 0 not taken.
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
12 switch (v) {
180 #define OP(name, kw, _) \
181 case CmpOperator::name: { \
182 return reverse ? mr_##name : m_##name; \
183 }
184
1/22
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 12 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
12 COMP_OPERATORS(OP)
185
186 #undef OP
187 }
188
189 return StringRef("");
190 }
191
192 // FIXME: this is a hack
193 // to avoid cicle we should just make a reference to the type that cycles
194 bool Arrow::add_arg_type(ExprNode* arg_type) {
195
1/2
✓ Branch 0 taken 206 times.
✗ Branch 1 not taken.
206 if (arg_type != this) {
196 206 args.push_back(arg_type);
197
198
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 206 times.
206 if (has_circle(this)) {
199 args.pop_back();
200 return false;
201 }
202
203 206 return true;
204 }
205 kwwarn("trying to assing self to an arrow argument");
206 return false;
207 }
208
209 bool Arrow::set_arg_type(int i, ExprNode* arg_type) {
210
211
1/2
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
8 if (arg_type != this) {
212 8 ExprNode* old = args[i];
213 8 args[i] = arg_type;
214
215
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
8 if (has_circle(this)) {
216 args[i] = old;
217 return false;
218 }
219
220 8 return true;
221 }
222
223 kwwarn("trying to assing self to an arrow argument");
224 return false;
225 }
226
227 // ------------------------------------------
228 } // namespace lython
229