修订版 | 36 (tree) |
---|---|
时间 | 2018-07-20 09:09:04 |
作者 | jakobthomsen |
verify total recursion for simplest case
@@ -1,3 +1,3 @@ | ||
1 | -u32 test() = test(); // ERROR: recursion not allowed for total function | |
2 | - | |
1 | +u32 test(u64 n) = test(n); // ERROR: potentially endless recursion not allowed for total function | |
2 | +// NOTE: this test is important - TOTAL recursion is allowed but PARTIAL not! | |
3 | 3 | u32 main() = 0; |
@@ -98,15 +98,10 @@ | ||
98 | 98 | string boxget$(Box$ box); |
99 | 99 | void boxset$(mut Box$ box, string s); |
100 | 100 | |
101 | -void dummy$() | |
102 | -{ | |
103 | - let _ = 12345; | |
104 | -} | |
105 | - | |
106 | 101 | void move$(mut stack<u8> in, mut stack<u8> out) |
107 | 102 | { |
108 | 103 | switch<opt<u8>> pop_opt<u8>(in) |
109 | - case empty : dummy$() | |
104 | + case empty : {} | |
110 | 105 | case solid val: |
111 | 106 | { |
112 | 107 | push<u8>(out, val); |
@@ -232,7 +227,7 @@ | ||
232 | 227 | void PrSub$(StreamOut out, mut stack<u8> s) |
233 | 228 | { |
234 | 229 | switch<opt<u8>> pop_opt<u8>(s) |
235 | - case empty : dummy$() | |
230 | + case empty : {} | |
236 | 231 | case solid c : |
237 | 232 | { |
238 | 233 | Put(out, c); |
@@ -401,7 +396,7 @@ | ||
401 | 396 | void TestCompareStrings$(Streams streams, mut stack<string2$> data) |
402 | 397 | { |
403 | 398 | switch<opt<string2$>> pop_opt<string2$>(data) |
404 | - case empty : dummy$() | |
399 | + case empty : {} | |
405 | 400 | case solid pair: |
406 | 401 | { |
407 | 402 | PutStr(streams.out, "cmp("); Print<string>(streams.out, pair.x); PutStr(streams.out, ", "); Print<string>(streams.out, pair.y); PutStr(streams.out, ") = "); |
@@ -425,7 +420,7 @@ | ||
425 | 420 | void TestCompareTrees$(Streams streams, mut stack<tree2$> data) |
426 | 421 | { |
427 | 422 | switch<opt<tree2$>> pop_opt<tree2$>(data) |
428 | - case empty : dummy$() | |
423 | + case empty : {} | |
429 | 424 | case solid pair : |
430 | 425 | { |
431 | 426 | //PutStr(streams.out, "cmp("); Print<tree$>(streams.out, pair.x); PutStr(streams.out, ", "); Print<tree$>(streams.out, pair.y); PutStr(streams.out, ") = "); |
@@ -436,12 +431,16 @@ | ||
436 | 431 | }; |
437 | 432 | } |
438 | 433 | |
439 | -void fill$(mut stack<u64> s, u64 n) | |
434 | +void fill(mut stack<u64> s, u64 n) | |
440 | 435 | { |
441 | - if gtr<u64>(n, 0) then | |
436 | + reduce n | |
437 | + to: | |
442 | 438 | { |
443 | - push<u64>(s, sub<u64>(n, 1)); | |
444 | - fill$(s, sub<u64>(n, 1)); | |
439 | + push<u64>(s, n); | |
440 | + fill(s, n); | |
441 | + } | |
442 | + term: | |
443 | + { | |
445 | 444 | }; |
446 | 445 | } |
447 | 446 |
@@ -448,7 +447,7 @@ | ||
448 | 447 | void drain$(mut stack<u64> s) |
449 | 448 | { |
450 | 449 | switch<opt<u64>> pop_opt<u64>(s) |
451 | - case empty : dummy$() | |
450 | + case empty : {} | |
452 | 451 | case solid _ : drain$(s); |
453 | 452 | } |
454 | 453 |
@@ -455,7 +454,7 @@ | ||
455 | 454 | void TestStack$(Streams streams) |
456 | 455 | { |
457 | 456 | let mut stack<u64> s; |
458 | - fill$(s, 257); | |
457 | + fill(s, 257); | |
459 | 458 | Print<stack<u64>>(streams.out, s); |
460 | 459 | drain$(s); |
461 | 460 | Print<stack<u64>>(streams.out, s); |
@@ -940,24 +940,15 @@ | ||
940 | 940 | void Box$(struct Box$ *_0, const struct string *s); |
941 | 941 | void boxget$(struct string *_0, const struct Box$ *box); |
942 | 942 | void boxset$(void *_0, struct Box$ *box, const struct string *s); |
943 | -void dummy$(void *_0) | |
944 | -{ | |
945 | - { | |
946 | - } | |
947 | -} | |
948 | - | |
949 | 943 | void move$(void *_0, struct stack/*u8*/ *in, struct stack/*u8*/ *out) |
950 | 944 | { |
951 | 945 | { |
952 | 946 | struct stack/*u8*/ _1; memset(&_1, 0, sizeof(struct stack/*u8*/)); |
953 | 947 | { |
954 | - pop_opt(&_1, &*in, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 107); | |
948 | + pop_opt(&_1, &*in, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 102); | |
955 | 949 | } |
956 | 950 | if(!(_1).size) |
957 | 951 | { |
958 | - { | |
959 | - dummy$(0 /* _2 */); | |
960 | - } | |
961 | 952 | } |
962 | 953 | else |
963 | 954 | { |
@@ -964,7 +955,7 @@ | ||
964 | 955 | const uint8_t *val = (_1).data; |
965 | 956 | { |
966 | 957 | { |
967 | - push(0 /* _4 */, &*out, &*val, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 111); | |
958 | + push(0 /* _4 */, &*out, &*val, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 106); | |
968 | 959 | } |
969 | 960 | { |
970 | 961 | move$(0 /* _5 */, &*in, &*out); |
@@ -992,7 +983,7 @@ | ||
992 | 983 | { |
993 | 984 | uint8_t _4; memset(&_4, 0, sizeof(uint8_t)); |
994 | 985 | { |
995 | - at_get$(&_4, &*chars, &*idx, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 120); | |
986 | + at_get$(&_4, &*chars, &*idx, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 115); | |
996 | 987 | } |
997 | 988 | Put(0 /* _3 */, &*out, &_4); |
998 | 989 | _IGNORE_(_4); |
@@ -1042,13 +1033,13 @@ | ||
1042 | 1033 | _5 = 32; |
1043 | 1034 | uint8_t _6; memset(&_6, 0, sizeof(uint8_t)); |
1044 | 1035 | { |
1045 | - at_get$(&_6, &*chars, &*idx, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 133); | |
1036 | + at_get$(&_6, &*chars, &*idx, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 128); | |
1046 | 1037 | } |
1047 | 1038 | _4 = _5 | _6; |
1048 | 1039 | _IGNORE_(_6); |
1049 | 1040 | _IGNORE_(_5); |
1050 | 1041 | } |
1051 | - at_set$(0 /* _3 */, &*chars, &*idx, &_4, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 133); | |
1042 | + at_set$(0 /* _3 */, &*chars, &*idx, &_4, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 128); | |
1052 | 1043 | _IGNORE_(_4); |
1053 | 1044 | } |
1054 | 1045 | { |
@@ -1070,7 +1061,7 @@ | ||
1070 | 1061 | { |
1071 | 1062 | struct stack/*u8*/ _1; memset(&_1, 0, sizeof(struct stack/*u8*/)); |
1072 | 1063 | { |
1073 | - pop_opt(&_1, &*in, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 139); | |
1064 | + pop_opt(&_1, &*in, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 134); | |
1074 | 1065 | } |
1075 | 1066 | if(!(_1).size) |
1076 | 1067 | { |
@@ -1089,7 +1080,7 @@ | ||
1089 | 1080 | const uint8_t *ch = (_1).data; |
1090 | 1081 | { |
1091 | 1082 | { |
1092 | - push(0 /* _2 */, &*out, &*ch, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 147); | |
1083 | + push(0 /* _2 */, &*out, &*ch, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 142); | |
1093 | 1084 | } |
1094 | 1085 | bool _3; memset(&_3, 0, sizeof(bool)); |
1095 | 1086 | bool _4; |
@@ -1142,7 +1133,7 @@ | ||
1142 | 1133 | { |
1143 | 1134 | uint8_t _ch; memset(&_ch, 0, sizeof(uint8_t)); |
1144 | 1135 | { |
1145 | - at_get$(&_ch, &*chars, &*idx, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 163); | |
1136 | + at_get$(&_ch, &*chars, &*idx, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 158); | |
1146 | 1137 | } |
1147 | 1138 | bool _2; memset(&_2, 0, sizeof(bool)); |
1148 | 1139 | bool _3; |
@@ -1213,31 +1204,31 @@ | ||
1213 | 1204 | { |
1214 | 1205 | uint8_t _2; memset(&_2, 0, sizeof(uint8_t)); |
1215 | 1206 | _2 = 72; |
1216 | - push(0 /* _1 */, &_s, &_2, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 188); | |
1207 | + push(0 /* _1 */, &_s, &_2, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 183); | |
1217 | 1208 | _IGNORE_(_2); |
1218 | 1209 | } |
1219 | 1210 | { |
1220 | 1211 | uint8_t _3; memset(&_3, 0, sizeof(uint8_t)); |
1221 | 1212 | _3 = 101; |
1222 | - push(0 /* _2 */, &_s, &_3, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 189); | |
1213 | + push(0 /* _2 */, &_s, &_3, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 184); | |
1223 | 1214 | _IGNORE_(_3); |
1224 | 1215 | } |
1225 | 1216 | { |
1226 | 1217 | uint8_t _4; memset(&_4, 0, sizeof(uint8_t)); |
1227 | 1218 | _4 = 108; |
1228 | - push(0 /* _3 */, &_s, &_4, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 190); | |
1219 | + push(0 /* _3 */, &_s, &_4, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 185); | |
1229 | 1220 | _IGNORE_(_4); |
1230 | 1221 | } |
1231 | 1222 | { |
1232 | 1223 | uint8_t _5; memset(&_5, 0, sizeof(uint8_t)); |
1233 | 1224 | _5 = 108; |
1234 | - push(0 /* _4 */, &_s, &_5, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 191); | |
1225 | + push(0 /* _4 */, &_s, &_5, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 186); | |
1235 | 1226 | _IGNORE_(_5); |
1236 | 1227 | } |
1237 | 1228 | { |
1238 | 1229 | uint8_t _6; memset(&_6, 0, sizeof(uint8_t)); |
1239 | 1230 | _6 = 111; |
1240 | - push(0 /* _5 */, &_s, &_6, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 192); | |
1231 | + push(0 /* _5 */, &_s, &_6, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 187); | |
1241 | 1232 | _IGNORE_(_6); |
1242 | 1233 | } |
1243 | 1234 | clone$(&*_0, &_s, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/); |
@@ -1260,49 +1251,49 @@ | ||
1260 | 1251 | { |
1261 | 1252 | uint8_t _2; memset(&_2, 0, sizeof(uint8_t)); |
1262 | 1253 | _2 = 33; |
1263 | - push(0 /* _1 */, &_copy, &_2, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 201); | |
1254 | + push(0 /* _1 */, &_copy, &_2, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 196); | |
1264 | 1255 | _IGNORE_(_2); |
1265 | 1256 | } |
1266 | 1257 | { |
1267 | 1258 | uint8_t _3; memset(&_3, 0, sizeof(uint8_t)); |
1268 | 1259 | _3 = 32; |
1269 | - push(0 /* _2 */, &_chars, &_3, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 202); | |
1260 | + push(0 /* _2 */, &_chars, &_3, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 197); | |
1270 | 1261 | _IGNORE_(_3); |
1271 | 1262 | } |
1272 | 1263 | { |
1273 | 1264 | uint8_t _4; memset(&_4, 0, sizeof(uint8_t)); |
1274 | 1265 | _4 = 87; |
1275 | - push(0 /* _3 */, &_chars, &_4, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 203); | |
1266 | + push(0 /* _3 */, &_chars, &_4, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 198); | |
1276 | 1267 | _IGNORE_(_4); |
1277 | 1268 | } |
1278 | 1269 | { |
1279 | 1270 | uint8_t _5; memset(&_5, 0, sizeof(uint8_t)); |
1280 | 1271 | _5 = 111; |
1281 | - push(0 /* _4 */, &_chars, &_5, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 204); | |
1272 | + push(0 /* _4 */, &_chars, &_5, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 199); | |
1282 | 1273 | _IGNORE_(_5); |
1283 | 1274 | } |
1284 | 1275 | { |
1285 | 1276 | uint8_t _6; memset(&_6, 0, sizeof(uint8_t)); |
1286 | 1277 | _6 = 114; |
1287 | - push(0 /* _5 */, &_chars, &_6, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 205); | |
1278 | + push(0 /* _5 */, &_chars, &_6, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 200); | |
1288 | 1279 | _IGNORE_(_6); |
1289 | 1280 | } |
1290 | 1281 | { |
1291 | 1282 | uint8_t _7; memset(&_7, 0, sizeof(uint8_t)); |
1292 | 1283 | _7 = 108; |
1293 | - push(0 /* _6 */, &_chars, &_7, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 206); | |
1284 | + push(0 /* _6 */, &_chars, &_7, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 201); | |
1294 | 1285 | _IGNORE_(_7); |
1295 | 1286 | } |
1296 | 1287 | { |
1297 | 1288 | uint8_t _8; memset(&_8, 0, sizeof(uint8_t)); |
1298 | 1289 | _8 = 100; |
1299 | - push(0 /* _7 */, &_chars, &_8, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 207); | |
1290 | + push(0 /* _7 */, &_chars, &_8, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 202); | |
1300 | 1291 | _IGNORE_(_8); |
1301 | 1292 | } |
1302 | 1293 | { |
1303 | 1294 | uint8_t _9; memset(&_9, 0, sizeof(uint8_t)); |
1304 | 1295 | _9 = 46; |
1305 | - push(0 /* _8 */, &_chars, &_9, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 208); | |
1296 | + push(0 /* _8 */, &_chars, &_9, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 203); | |
1306 | 1297 | _IGNORE_(_9); |
1307 | 1298 | } |
1308 | 1299 | uint8_t _what; memset(&_what, 0, sizeof(uint8_t)); |
@@ -1406,13 +1397,10 @@ | ||
1406 | 1397 | { |
1407 | 1398 | struct stack/*u8*/ _1; memset(&_1, 0, sizeof(struct stack/*u8*/)); |
1408 | 1399 | { |
1409 | - pop_opt(&_1, &*s, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 233); | |
1400 | + pop_opt(&_1, &*s, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 228); | |
1410 | 1401 | } |
1411 | 1402 | if(!(_1).size) |
1412 | 1403 | { |
1413 | - { | |
1414 | - dummy$(0 /* _2 */); | |
1415 | - } | |
1416 | 1404 | } |
1417 | 1405 | else |
1418 | 1406 | { |
@@ -1447,7 +1435,7 @@ | ||
1447 | 1435 | { |
1448 | 1436 | struct string _4; memset(&_4, 0, sizeof(struct string)); |
1449 | 1437 | { |
1450 | - at_get$(&_4, &*strs, &*idx, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 246); | |
1438 | + at_get$(&_4, &*strs, &*idx, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 241); | |
1451 | 1439 | } |
1452 | 1440 | PutStr(0 /* _3 */, &*out, &_4); |
1453 | 1441 | string$dest(&_4); |
@@ -1544,7 +1532,7 @@ | ||
1544 | 1532 | { |
1545 | 1533 | struct typeid$ _ti; memset(&_ti, 0, sizeof(struct typeid$)); |
1546 | 1534 | { |
1547 | - at_get$(&_ti, &*tis, &*idx, sizeof(struct typeid$), (void (*)(void *))typeid$$dest, (void (*)(void *, const void *))typeid$$copy, 266); | |
1535 | + at_get$(&_ti, &*tis, &*idx, sizeof(struct typeid$), (void (*)(void *))typeid$$dest, (void (*)(void *, const void *))typeid$$copy, 261); | |
1548 | 1536 | } |
1549 | 1537 | { |
1550 | 1538 | const struct string *_4 = &(_ti).type; |
@@ -1635,31 +1623,31 @@ | ||
1635 | 1623 | { |
1636 | 1624 | struct string _2; memset(&_2, 0, sizeof(struct string)); |
1637 | 1625 | init$fromliteral(&_2, "Hello", 5); |
1638 | - push(0 /* _1 */, &_strs, &_2, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 286); | |
1626 | + push(0 /* _1 */, &_strs, &_2, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 281); | |
1639 | 1627 | string$dest(&_2); |
1640 | 1628 | } |
1641 | 1629 | { |
1642 | 1630 | struct string _3; memset(&_3, 0, sizeof(struct string)); |
1643 | 1631 | init$fromliteral(&_3, "World", 5); |
1644 | - push(0 /* _2 */, &_strs, &_3, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 287); | |
1632 | + push(0 /* _2 */, &_strs, &_3, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 282); | |
1645 | 1633 | string$dest(&_3); |
1646 | 1634 | } |
1647 | 1635 | { |
1648 | 1636 | struct string _4; memset(&_4, 0, sizeof(struct string)); |
1649 | 1637 | init$fromliteral(&_4, "?", 1); |
1650 | - push(0 /* _3 */, &_strs, &_4, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 288); | |
1638 | + push(0 /* _3 */, &_strs, &_4, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 283); | |
1651 | 1639 | string$dest(&_4); |
1652 | 1640 | } |
1653 | 1641 | { |
1654 | 1642 | struct string _5; memset(&_5, 0, sizeof(struct string)); |
1655 | 1643 | init$fromliteral(&_5, "?", 1); |
1656 | - push(0 /* _4 */, &_strs, &_5, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 289); | |
1644 | + push(0 /* _4 */, &_strs, &_5, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 284); | |
1657 | 1645 | string$dest(&_5); |
1658 | 1646 | } |
1659 | 1647 | { |
1660 | 1648 | struct string _6; memset(&_6, 0, sizeof(struct string)); |
1661 | 1649 | init$fromliteral(&_6, "?", 1); |
1662 | - push(0 /* _5 */, &_strs, &_6, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 290); | |
1650 | + push(0 /* _5 */, &_strs, &_6, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 285); | |
1663 | 1651 | string$dest(&_6); |
1664 | 1652 | } |
1665 | 1653 | clone$(&*_0, &_strs, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy); |
@@ -1677,7 +1665,7 @@ | ||
1677 | 1665 | } |
1678 | 1666 | struct string _top0; memset(&_top0, 0, sizeof(struct string)); |
1679 | 1667 | { |
1680 | - pop$(&_top0, &_strs, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 297); | |
1668 | + pop$(&_top0, &_strs, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 292); | |
1681 | 1669 | } |
1682 | 1670 | { |
1683 | 1671 | PutStr(0 /* _1 */, &*out, &_top0); |
@@ -1684,7 +1672,7 @@ | ||
1684 | 1672 | } |
1685 | 1673 | struct string _top1; memset(&_top1, 0, sizeof(struct string)); |
1686 | 1674 | { |
1687 | - pop$(&_top1, &_strs, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 298); | |
1675 | + pop$(&_top1, &_strs, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 293); | |
1688 | 1676 | } |
1689 | 1677 | { |
1690 | 1678 | PutStr(0 /* _2 */, &*out, &_top1); |
@@ -1691,7 +1679,7 @@ | ||
1691 | 1679 | } |
1692 | 1680 | struct string _top2; memset(&_top2, 0, sizeof(struct string)); |
1693 | 1681 | { |
1694 | - pop$(&_top2, &_strs, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 299); | |
1682 | + pop$(&_top2, &_strs, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 294); | |
1695 | 1683 | } |
1696 | 1684 | { |
1697 | 1685 | PutStr(0 /* _3 */, &*out, &_top2); |
@@ -1707,37 +1695,37 @@ | ||
1707 | 1695 | { |
1708 | 1696 | struct string _6; memset(&_6, 0, sizeof(struct string)); |
1709 | 1697 | init$fromliteral(&_6, "!", 1); |
1710 | - push(0 /* _5 */, &_strs2, &_6, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 303); | |
1698 | + push(0 /* _5 */, &_strs2, &_6, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 298); | |
1711 | 1699 | string$dest(&_6); |
1712 | 1700 | } |
1713 | 1701 | { |
1714 | 1702 | struct string _7; memset(&_7, 0, sizeof(struct string)); |
1715 | 1703 | init$fromliteral(&_7, "of", 2); |
1716 | - push(0 /* _6 */, &_strs, &_7, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 304); | |
1704 | + push(0 /* _6 */, &_strs, &_7, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 299); | |
1717 | 1705 | string$dest(&_7); |
1718 | 1706 | } |
1719 | 1707 | { |
1720 | 1708 | struct string _8; memset(&_8, 0, sizeof(struct string)); |
1721 | 1709 | init$fromliteral(&_8, "Memory", 6); |
1722 | - push(0 /* _7 */, &_strs, &_8, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 305); | |
1710 | + push(0 /* _7 */, &_strs, &_8, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 300); | |
1723 | 1711 | string$dest(&_8); |
1724 | 1712 | } |
1725 | 1713 | { |
1726 | 1714 | struct string _9; memset(&_9, 0, sizeof(struct string)); |
1727 | 1715 | init$fromliteral(&_9, "Manage", 6); |
1728 | - push(0 /* _8 */, &_strs, &_9, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 306); | |
1716 | + push(0 /* _8 */, &_strs, &_9, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 301); | |
1729 | 1717 | string$dest(&_9); |
1730 | 1718 | } |
1731 | 1719 | { |
1732 | 1720 | struct string _10; memset(&_10, 0, sizeof(struct string)); |
1733 | 1721 | init$fromliteral(&_10, "ment", 4); |
1734 | - push(0 /* _9 */, &_strs, &_10, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 307); | |
1722 | + push(0 /* _9 */, &_strs, &_10, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 302); | |
1735 | 1723 | string$dest(&_10); |
1736 | 1724 | } |
1737 | 1725 | { |
1738 | 1726 | struct string _11; memset(&_11, 0, sizeof(struct string)); |
1739 | 1727 | init$fromliteral(&_11, "!!!", 3); |
1740 | - push(0 /* _10 */, &_strs, &_11, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 308); | |
1728 | + push(0 /* _10 */, &_strs, &_11, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 303); | |
1741 | 1729 | string$dest(&_11); |
1742 | 1730 | } |
1743 | 1731 | { |
@@ -1763,7 +1751,7 @@ | ||
1763 | 1751 | string$dest(&_17); |
1764 | 1752 | string$dest(&_16); |
1765 | 1753 | } |
1766 | - push(0 /* _13 */, &*_14, &_15, sizeof(struct typeid$), (void (*)(void *))typeid$$dest, (void (*)(void *, const void *))typeid$$copy, 314); | |
1754 | + push(0 /* _13 */, &*_14, &_15, sizeof(struct typeid$), (void (*)(void *))typeid$$dest, (void (*)(void *, const void *))typeid$$copy, 309); | |
1767 | 1755 | typeid$$dest(&_15); |
1768 | 1756 | } |
1769 | 1757 | { |
@@ -1778,7 +1766,7 @@ | ||
1778 | 1766 | string$dest(&_18); |
1779 | 1767 | string$dest(&_17); |
1780 | 1768 | } |
1781 | - push(0 /* _14 */, &*_15, &_16, sizeof(struct typeid$), (void (*)(void *))typeid$$dest, (void (*)(void *, const void *))typeid$$copy, 315); | |
1769 | + push(0 /* _14 */, &*_15, &_16, sizeof(struct typeid$), (void (*)(void *))typeid$$dest, (void (*)(void *, const void *))typeid$$copy, 310); | |
1782 | 1770 | typeid$$dest(&_16); |
1783 | 1771 | } |
1784 | 1772 | { |
@@ -1793,7 +1781,7 @@ | ||
1793 | 1781 | string$dest(&_19); |
1794 | 1782 | string$dest(&_18); |
1795 | 1783 | } |
1796 | - push(0 /* _15 */, &*_16, &_17, sizeof(struct typeid$), (void (*)(void *))typeid$$dest, (void (*)(void *, const void *))typeid$$copy, 316); | |
1784 | + push(0 /* _15 */, &*_16, &_17, sizeof(struct typeid$), (void (*)(void *))typeid$$dest, (void (*)(void *, const void *))typeid$$copy, 311); | |
1797 | 1785 | typeid$$dest(&_17); |
1798 | 1786 | } |
1799 | 1787 | { |
@@ -1808,7 +1796,7 @@ | ||
1808 | 1796 | string$dest(&_20); |
1809 | 1797 | string$dest(&_19); |
1810 | 1798 | } |
1811 | - push(0 /* _16 */, &*_17, &_18, sizeof(struct typeid$), (void (*)(void *))typeid$$dest, (void (*)(void *, const void *))typeid$$copy, 317); | |
1799 | + push(0 /* _16 */, &*_17, &_18, sizeof(struct typeid$), (void (*)(void *))typeid$$dest, (void (*)(void *, const void *))typeid$$copy, 312); | |
1812 | 1800 | typeid$$dest(&_18); |
1813 | 1801 | } |
1814 | 1802 | ////let typeid$ ti = typeid$("", ""); |
@@ -1827,7 +1815,7 @@ | ||
1827 | 1815 | } |
1828 | 1816 | { |
1829 | 1817 | struct stack/*typeid$*/ *_17 = &(_s).tis; |
1830 | - pop$(&_ti0, &*_17, sizeof(struct typeid$), (void (*)(void *))typeid$$dest, (void (*)(void *, const void *))typeid$$copy, 321); | |
1818 | + pop$(&_ti0, &*_17, sizeof(struct typeid$), (void (*)(void *))typeid$$dest, (void (*)(void *, const void *))typeid$$copy, 316); | |
1831 | 1819 | } |
1832 | 1820 | { |
1833 | 1821 | struct string *_18 = &(_ti0).type; |
@@ -1862,7 +1850,7 @@ | ||
1862 | 1850 | } |
1863 | 1851 | { |
1864 | 1852 | struct stack/*typeid$*/ *_21 = &(_s).tis; |
1865 | - pop$(&_ti1, &*_21, sizeof(struct typeid$), (void (*)(void *))typeid$$dest, (void (*)(void *, const void *))typeid$$copy, 324); | |
1853 | + pop$(&_ti1, &*_21, sizeof(struct typeid$), (void (*)(void *))typeid$$dest, (void (*)(void *, const void *))typeid$$copy, 319); | |
1866 | 1854 | } |
1867 | 1855 | { |
1868 | 1856 | struct string *_22 = &(_ti1).type; |
@@ -1899,7 +1887,7 @@ | ||
1899 | 1887 | } |
1900 | 1888 | { |
1901 | 1889 | struct stack/*typeid$*/ *_25 = &(_s).tis; |
1902 | - pop$(&_ti2, &*_25, sizeof(struct typeid$), (void (*)(void *))typeid$$dest, (void (*)(void *, const void *))typeid$$copy, 328); | |
1890 | + pop$(&_ti2, &*_25, sizeof(struct typeid$), (void (*)(void *))typeid$$dest, (void (*)(void *, const void *))typeid$$copy, 323); | |
1903 | 1891 | } |
1904 | 1892 | { |
1905 | 1893 | struct string *_26 = &(_ti2).type; |
@@ -1934,7 +1922,7 @@ | ||
1934 | 1922 | } |
1935 | 1923 | { |
1936 | 1924 | struct stack/*typeid$*/ *_29 = &(_s).tis; |
1937 | - pop$(&_ti3, &*_29, sizeof(struct typeid$), (void (*)(void *))typeid$$dest, (void (*)(void *, const void *))typeid$$copy, 331); | |
1925 | + pop$(&_ti3, &*_29, sizeof(struct typeid$), (void (*)(void *))typeid$$dest, (void (*)(void *, const void *))typeid$$copy, 326); | |
1938 | 1926 | } |
1939 | 1927 | { |
1940 | 1928 | struct string *_30 = &(_ti3).type; |
@@ -3032,13 +3020,10 @@ | ||
3032 | 3020 | { |
3033 | 3021 | struct stack/*string2$*/ _1; memset(&_1, 0, sizeof(struct stack/*string2$*/)); |
3034 | 3022 | { |
3035 | - pop_opt(&_1, &*data, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 402); | |
3023 | + pop_opt(&_1, &*data, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 397); | |
3036 | 3024 | } |
3037 | 3025 | if(!(_1).size) |
3038 | 3026 | { |
3039 | - { | |
3040 | - dummy$(0 /* _2 */); | |
3041 | - } | |
3042 | 3027 | } |
3043 | 3028 | else |
3044 | 3029 | { |
@@ -3154,13 +3139,10 @@ | ||
3154 | 3139 | { |
3155 | 3140 | struct stack/*tree2$*/ _1; memset(&_1, 0, sizeof(struct stack/*tree2$*/)); |
3156 | 3141 | { |
3157 | - pop_opt(&_1, &*data, sizeof(struct tree2$), (void (*)(void *))tree2$$dest, (void (*)(void *, const void *))tree2$$copy, 426); | |
3142 | + pop_opt(&_1, &*data, sizeof(struct tree2$), (void (*)(void *))tree2$$dest, (void (*)(void *, const void *))tree2$$copy, 421); | |
3158 | 3143 | } |
3159 | 3144 | if(!(_1).size) |
3160 | 3145 | { |
3161 | - { | |
3162 | - dummy$(0 /* _2 */); | |
3163 | - } | |
3164 | 3146 | } |
3165 | 3147 | else |
3166 | 3148 | { |
@@ -3225,41 +3207,24 @@ | ||
3225 | 3207 | } |
3226 | 3208 | } |
3227 | 3209 | |
3228 | -void fill$(void *_0, struct stack/*u64*/ *s, const uint64_t *n) | |
3210 | +void fill(void *_0, struct stack/*u64*/ *s, const uint64_t *n) | |
3229 | 3211 | { |
3230 | 3212 | { |
3231 | - bool _2; | |
3213 | + if(*n > 0) | |
3232 | 3214 | { |
3233 | - uint64_t _3; memset(&_3, 0, sizeof(uint64_t)); | |
3234 | - _3 = 0; | |
3235 | - _2 = *n > _3; | |
3236 | - _IGNORE_(_3); | |
3237 | - } | |
3238 | - if(_2) | |
3239 | - { | |
3215 | + const uint64_t _n = *n - 1; | |
3240 | 3216 | { |
3241 | - uint64_t _4; memset(&_4, 0, sizeof(uint64_t)); | |
3242 | 3217 | { |
3243 | - uint64_t _5; memset(&_5, 0, sizeof(uint64_t)); | |
3244 | - _5 = 1; | |
3245 | - _4 = *n - _5; | |
3246 | - _IGNORE_(_5); | |
3218 | + push(0 /* _1 */, &*s, &_n, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 438); | |
3247 | 3219 | } |
3248 | - push(0 /* _3 */, &*s, &_4, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 442); | |
3249 | - _IGNORE_(_4); | |
3250 | - } | |
3251 | - { | |
3252 | - uint64_t _5; memset(&_5, 0, sizeof(uint64_t)); | |
3253 | 3220 | { |
3254 | - uint64_t _6; memset(&_6, 0, sizeof(uint64_t)); | |
3255 | - _6 = 1; | |
3256 | - _5 = *n - _6; | |
3257 | - _IGNORE_(_6); | |
3221 | + fill(0 /* _2 */, &*s, &_n); | |
3258 | 3222 | } |
3259 | - fill$(0 /* _4 */, &*s, &_5); | |
3260 | - _IGNORE_(_5); | |
3261 | 3223 | } |
3262 | 3224 | } |
3225 | + else | |
3226 | + { | |
3227 | + } | |
3263 | 3228 | } |
3264 | 3229 | } |
3265 | 3230 |
@@ -3268,13 +3233,10 @@ | ||
3268 | 3233 | { |
3269 | 3234 | struct stack/*u64*/ _1; memset(&_1, 0, sizeof(struct stack/*u64*/)); |
3270 | 3235 | { |
3271 | - pop_opt(&_1, &*s, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 449); | |
3236 | + pop_opt(&_1, &*s, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 448); | |
3272 | 3237 | } |
3273 | 3238 | if(!(_1).size) |
3274 | 3239 | { |
3275 | - { | |
3276 | - dummy$(0 /* _2 */); | |
3277 | - } | |
3278 | 3240 | } |
3279 | 3241 | else |
3280 | 3242 | { |
@@ -3293,7 +3255,7 @@ | ||
3293 | 3255 | { |
3294 | 3256 | uint64_t _2; memset(&_2, 0, sizeof(uint64_t)); |
3295 | 3257 | _2 = 257; |
3296 | - fill$(0 /* _1 */, &_s, &_2); | |
3258 | + fill(0 /* _1 */, &_s, &_2); | |
3297 | 3259 | _IGNORE_(_2); |
3298 | 3260 | } |
3299 | 3261 | { |
@@ -3310,7 +3272,7 @@ | ||
3310 | 3272 | { |
3311 | 3273 | uint64_t _6; memset(&_6, 0, sizeof(uint64_t)); |
3312 | 3274 | _6 = 12345; |
3313 | - push(0 /* _5 */, &_s, &_6, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 461); | |
3275 | + push(0 /* _5 */, &_s, &_6, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 460); | |
3314 | 3276 | _IGNORE_(_6); |
3315 | 3277 | } |
3316 | 3278 | { |
@@ -3382,7 +3344,7 @@ | ||
3382 | 3344 | string$dest(&_10); |
3383 | 3345 | string$dest(&_9); |
3384 | 3346 | } |
3385 | - push(0 /* _7 */, &_data, &_8, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 482); | |
3347 | + push(0 /* _7 */, &_data, &_8, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 481); | |
3386 | 3348 | string2$$dest(&_8); |
3387 | 3349 | } |
3388 | 3350 | { |
@@ -3396,7 +3358,7 @@ | ||
3396 | 3358 | string$dest(&_11); |
3397 | 3359 | string$dest(&_10); |
3398 | 3360 | } |
3399 | - push(0 /* _8 */, &_data, &_9, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 483); | |
3361 | + push(0 /* _8 */, &_data, &_9, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 482); | |
3400 | 3362 | string2$$dest(&_9); |
3401 | 3363 | } |
3402 | 3364 | { |
@@ -3410,7 +3372,7 @@ | ||
3410 | 3372 | string$dest(&_12); |
3411 | 3373 | string$dest(&_11); |
3412 | 3374 | } |
3413 | - push(0 /* _9 */, &_data, &_10, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 484); | |
3375 | + push(0 /* _9 */, &_data, &_10, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 483); | |
3414 | 3376 | string2$$dest(&_10); |
3415 | 3377 | } |
3416 | 3378 | { |
@@ -3424,7 +3386,7 @@ | ||
3424 | 3386 | string$dest(&_13); |
3425 | 3387 | string$dest(&_12); |
3426 | 3388 | } |
3427 | - push(0 /* _10 */, &_data, &_11, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 485); | |
3389 | + push(0 /* _10 */, &_data, &_11, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 484); | |
3428 | 3390 | string2$$dest(&_11); |
3429 | 3391 | } |
3430 | 3392 | { |
@@ -3438,7 +3400,7 @@ | ||
3438 | 3400 | string$dest(&_14); |
3439 | 3401 | string$dest(&_13); |
3440 | 3402 | } |
3441 | - push(0 /* _11 */, &_data, &_12, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 486); | |
3403 | + push(0 /* _11 */, &_data, &_12, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 485); | |
3442 | 3404 | string2$$dest(&_12); |
3443 | 3405 | } |
3444 | 3406 | { |
@@ -3452,7 +3414,7 @@ | ||
3452 | 3414 | string$dest(&_15); |
3453 | 3415 | string$dest(&_14); |
3454 | 3416 | } |
3455 | - push(0 /* _12 */, &_data, &_13, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 487); | |
3417 | + push(0 /* _12 */, &_data, &_13, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 486); | |
3456 | 3418 | string2$$dest(&_13); |
3457 | 3419 | } |
3458 | 3420 | { |
@@ -3466,7 +3428,7 @@ | ||
3466 | 3428 | string$dest(&_16); |
3467 | 3429 | string$dest(&_15); |
3468 | 3430 | } |
3469 | - push(0 /* _13 */, &_data, &_14, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 488); | |
3431 | + push(0 /* _13 */, &_data, &_14, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 487); | |
3470 | 3432 | string2$$dest(&_14); |
3471 | 3433 | } |
3472 | 3434 | { |
@@ -3480,7 +3442,7 @@ | ||
3480 | 3442 | string$dest(&_17); |
3481 | 3443 | string$dest(&_16); |
3482 | 3444 | } |
3483 | - push(0 /* _14 */, &_data, &_15, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 489); | |
3445 | + push(0 /* _14 */, &_data, &_15, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 488); | |
3484 | 3446 | string2$$dest(&_15); |
3485 | 3447 | } |
3486 | 3448 | { |
@@ -3494,7 +3456,7 @@ | ||
3494 | 3456 | string$dest(&_18); |
3495 | 3457 | string$dest(&_17); |
3496 | 3458 | } |
3497 | - push(0 /* _15 */, &_data, &_16, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 490); | |
3459 | + push(0 /* _15 */, &_data, &_16, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 489); | |
3498 | 3460 | string2$$dest(&_16); |
3499 | 3461 | } |
3500 | 3462 | { |
@@ -3508,7 +3470,7 @@ | ||
3508 | 3470 | string$dest(&_19); |
3509 | 3471 | string$dest(&_18); |
3510 | 3472 | } |
3511 | - push(0 /* _16 */, &_data, &_17, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 491); | |
3473 | + push(0 /* _16 */, &_data, &_17, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 490); | |
3512 | 3474 | string2$$dest(&_17); |
3513 | 3475 | } |
3514 | 3476 | { |
@@ -3523,7 +3485,7 @@ | ||
3523 | 3485 | for(uint64_t _19 = 0; _19 < _18.ptr; ++_19) |
3524 | 3486 | { |
3525 | 3487 | struct string2$ _e; memset(&_e, 0, sizeof(struct string2$)); |
3526 | - at_get$(&_e, &_18, &_19, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 495); | |
3488 | + at_get$(&_e, &_18, &_19, sizeof(struct string2$), (void (*)(void *))string2$$dest, (void (*)(void *, const void *))string2$$copy, 494); | |
3527 | 3489 | { |
3528 | 3490 | const struct StreamOut *_21 = &(*streams).out; |
3529 | 3491 | Print$string2$(0 /* _20 */, &*_21, &_e); |
@@ -3651,7 +3613,7 @@ | ||
3651 | 3613 | tree$$dest(&_11); |
3652 | 3614 | tree$$dest(&_10); |
3653 | 3615 | } |
3654 | - push(0 /* _8 */, &_data, &_9, sizeof(struct tree2$), (void (*)(void *))tree2$$dest, (void (*)(void *, const void *))tree2$$copy, 507); | |
3616 | + push(0 /* _8 */, &_data, &_9, sizeof(struct tree2$), (void (*)(void *))tree2$$dest, (void (*)(void *, const void *))tree2$$copy, 506); | |
3655 | 3617 | tree2$$dest(&_9); |
3656 | 3618 | } |
3657 | 3619 | { |
@@ -3753,7 +3715,7 @@ | ||
3753 | 3715 | tree$$dest(&_12); |
3754 | 3716 | tree$$dest(&_11); |
3755 | 3717 | } |
3756 | - push(0 /* _9 */, &_data, &_10, sizeof(struct tree2$), (void (*)(void *))tree2$$dest, (void (*)(void *, const void *))tree2$$copy, 508); | |
3718 | + push(0 /* _9 */, &_data, &_10, sizeof(struct tree2$), (void (*)(void *))tree2$$dest, (void (*)(void *, const void *))tree2$$copy, 507); | |
3757 | 3719 | tree2$$dest(&_10); |
3758 | 3720 | } |
3759 | 3721 | { |
@@ -3855,7 +3817,7 @@ | ||
3855 | 3817 | tree$$dest(&_13); |
3856 | 3818 | tree$$dest(&_12); |
3857 | 3819 | } |
3858 | - push(0 /* _10 */, &_data, &_11, sizeof(struct tree2$), (void (*)(void *))tree2$$dest, (void (*)(void *, const void *))tree2$$copy, 509); | |
3820 | + push(0 /* _10 */, &_data, &_11, sizeof(struct tree2$), (void (*)(void *))tree2$$dest, (void (*)(void *, const void *))tree2$$copy, 508); | |
3859 | 3821 | tree2$$dest(&_11); |
3860 | 3822 | } |
3861 | 3823 | { |
@@ -3905,7 +3867,7 @@ | ||
3905 | 3867 | tree$$dest(&_14); |
3906 | 3868 | tree$$dest(&_13); |
3907 | 3869 | } |
3908 | - push(0 /* _11 */, &_data, &_12, sizeof(struct tree2$), (void (*)(void *))tree2$$dest, (void (*)(void *, const void *))tree2$$copy, 510); | |
3870 | + push(0 /* _11 */, &_data, &_12, sizeof(struct tree2$), (void (*)(void *))tree2$$dest, (void (*)(void *, const void *))tree2$$copy, 509); | |
3909 | 3871 | tree2$$dest(&_12); |
3910 | 3872 | } |
3911 | 3873 | { |
@@ -3942,7 +3904,7 @@ | ||
3942 | 3904 | tree$$dest(&_15); |
3943 | 3905 | tree$$dest(&_14); |
3944 | 3906 | } |
3945 | - push(0 /* _12 */, &_data, &_13, sizeof(struct tree2$), (void (*)(void *))tree2$$dest, (void (*)(void *, const void *))tree2$$copy, 511); | |
3907 | + push(0 /* _12 */, &_data, &_13, sizeof(struct tree2$), (void (*)(void *))tree2$$dest, (void (*)(void *, const void *))tree2$$copy, 510); | |
3946 | 3908 | tree2$$dest(&_13); |
3947 | 3909 | } |
3948 | 3910 | { |
@@ -3979,7 +3941,7 @@ | ||
3979 | 3941 | tree$$dest(&_16); |
3980 | 3942 | tree$$dest(&_15); |
3981 | 3943 | } |
3982 | - push(0 /* _13 */, &_data, &_14, sizeof(struct tree2$), (void (*)(void *))tree2$$dest, (void (*)(void *, const void *))tree2$$copy, 512); | |
3944 | + push(0 /* _13 */, &_data, &_14, sizeof(struct tree2$), (void (*)(void *))tree2$$dest, (void (*)(void *, const void *))tree2$$copy, 511); | |
3983 | 3945 | tree2$$dest(&_14); |
3984 | 3946 | } |
3985 | 3947 | { |
@@ -4003,7 +3965,7 @@ | ||
4003 | 3965 | tree$$dest(&_17); |
4004 | 3966 | tree$$dest(&_16); |
4005 | 3967 | } |
4006 | - push(0 /* _14 */, &_data, &_15, sizeof(struct tree2$), (void (*)(void *))tree2$$dest, (void (*)(void *, const void *))tree2$$copy, 513); | |
3968 | + push(0 /* _14 */, &_data, &_15, sizeof(struct tree2$), (void (*)(void *))tree2$$dest, (void (*)(void *, const void *))tree2$$copy, 512); | |
4007 | 3969 | tree2$$dest(&_15); |
4008 | 3970 | } |
4009 | 3971 | { |
@@ -4015,19 +3977,19 @@ | ||
4015 | 3977 | { |
4016 | 3978 | struct string _9; memset(&_9, 0, sizeof(struct string)); |
4017 | 3979 | init$fromliteral(&_9, "123", 3); |
4018 | - push(0 /* _8 */, &_words, &_9, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 519); | |
3980 | + push(0 /* _8 */, &_words, &_9, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 518); | |
4019 | 3981 | string$dest(&_9); |
4020 | 3982 | } |
4021 | 3983 | { |
4022 | 3984 | struct string _10; memset(&_10, 0, sizeof(struct string)); |
4023 | 3985 | init$fromliteral(&_10, "456", 3); |
4024 | - push(0 /* _9 */, &_words, &_10, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 519); | |
3986 | + push(0 /* _9 */, &_words, &_10, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 518); | |
4025 | 3987 | string$dest(&_10); |
4026 | 3988 | } |
4027 | 3989 | { |
4028 | 3990 | struct string _11; memset(&_11, 0, sizeof(struct string)); |
4029 | 3991 | init$fromliteral(&_11, "789", 3); |
4030 | - push(0 /* _10 */, &_words, &_11, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 519); | |
3992 | + push(0 /* _10 */, &_words, &_11, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 518); | |
4031 | 3993 | string$dest(&_11); |
4032 | 3994 | } |
4033 | 3995 | { |
@@ -4308,7 +4270,7 @@ | ||
4308 | 4270 | for(uint64_t _37 = 0; _37 < _36.ptr; ++_37) |
4309 | 4271 | { |
4310 | 4272 | uint8_t _e; memset(&_e, 0, sizeof(uint8_t)); |
4311 | - at_get$(&_e, &_36, &_37, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 562); | |
4273 | + at_get$(&_e, &_36, &_37, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 561); | |
4312 | 4274 | { |
4313 | 4275 | const struct StreamOut *_39 = &(*streams).out; |
4314 | 4276 | Put(0 /* _38 */, &*_39, &_e); |
@@ -4351,7 +4313,7 @@ | ||
4351 | 4313 | init$fromliteral(&_31, "Hello ", 6); |
4352 | 4314 | struct string _32; memset(&_32, 0, sizeof(struct string)); |
4353 | 4315 | init$fromliteral(&_32, "World\n", 6); |
4354 | - strcat$(&_30, &_31, &_32, 572); | |
4316 | + strcat$(&_30, &_31, &_32, 571); | |
4355 | 4317 | string$dest(&_32); |
4356 | 4318 | string$dest(&_31); |
4357 | 4319 | } |
@@ -4537,7 +4499,7 @@ | ||
4537 | 4499 | { |
4538 | 4500 | struct string _43; memset(&_43, 0, sizeof(struct string)); |
4539 | 4501 | init$fromliteral(&_43, "SOLID", 5); |
4540 | - solid(&_other, &_43, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 598); | |
4502 | + solid(&_other, &_43, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 597); | |
4541 | 4503 | string$dest(&_43); |
4542 | 4504 | } |
4543 | 4505 | { |
@@ -4584,18 +4546,18 @@ | ||
4584 | 4546 | init$fromliteral(&_str, "test...", 7); |
4585 | 4547 | struct stack/*string*/ _stk; memset(&_stk, 0, sizeof(struct stack/*string*/)); |
4586 | 4548 | { |
4587 | - push(0 /* _47 */, &_stk, &_str, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 607); | |
4549 | + push(0 /* _47 */, &_stk, &_str, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 606); | |
4588 | 4550 | } |
4589 | 4551 | { |
4590 | - push(0 /* _48 */, &_stk, &_str, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 608); | |
4552 | + push(0 /* _48 */, &_stk, &_str, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 607); | |
4591 | 4553 | } |
4592 | 4554 | { |
4593 | 4555 | struct stack/*string*/ _49; memset(&_49, 0, sizeof(struct stack/*string*/)); |
4594 | - pop_opt(&_49, &_stk, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 609); | |
4556 | + pop_opt(&_49, &_stk, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 608); | |
4595 | 4557 | free$(&_49, sizeof(struct string), (void (*)(void *))string$dest); |
4596 | 4558 | } |
4597 | 4559 | { |
4598 | - stack(&_stk, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 610); | |
4560 | + stack(&_stk, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 609); | |
4599 | 4561 | } |
4600 | 4562 | { |
4601 | 4563 | struct stack/*u8*/ _49; memset(&_49, 0, sizeof(struct stack/*u8*/)); |
@@ -1400,36 +1400,27 @@ | ||
1400 | 1400 | } |
1401 | 1401 | |
1402 | 1402 | // emit ws according to indent-level |
1403 | -void Indent$(void *_0, const struct StreamOut *out, const uint64_t *level) | |
1403 | +void Indent(void *_0, const struct StreamOut *out, const uint64_t *level) | |
1404 | 1404 | { |
1405 | 1405 | { |
1406 | - bool _2; | |
1406 | + if(*level > 0) | |
1407 | 1407 | { |
1408 | - uint64_t _3; memset(&_3, 0, sizeof(uint64_t)); | |
1409 | - _3 = 0; | |
1410 | - _2 = *level > _3; | |
1411 | - _IGNORE_(_3); | |
1412 | - } | |
1413 | - if(_2) | |
1414 | - { | |
1408 | + const uint64_t _level = *level - 1; | |
1415 | 1409 | { |
1416 | - struct string _4; memset(&_4, 0, sizeof(struct string)); | |
1417 | - init$fromliteral(&_4, " ", 4); | |
1418 | - PutStr(0 /* _3 */, &*out, &_4); | |
1419 | - string$dest(&_4); | |
1420 | - } | |
1421 | - { | |
1422 | - uint64_t _5; memset(&_5, 0, sizeof(uint64_t)); | |
1423 | 1410 | { |
1424 | - uint64_t _6; memset(&_6, 0, sizeof(uint64_t)); | |
1425 | - _6 = 1; | |
1426 | - _5 = *level - _6; | |
1427 | - _IGNORE_(_6); | |
1411 | + struct string _2; memset(&_2, 0, sizeof(struct string)); | |
1412 | + init$fromliteral(&_2, " ", 4); | |
1413 | + PutStr(0 /* _1 */, &*out, &_2); | |
1414 | + string$dest(&_2); | |
1428 | 1415 | } |
1429 | - Indent$(0 /* _4 */, &*out, &_5); | |
1430 | - _IGNORE_(_5); | |
1416 | + { | |
1417 | + Indent(0 /* _2 */, &*out, &_level); | |
1418 | + } | |
1431 | 1419 | } |
1432 | 1420 | } |
1421 | + else | |
1422 | + { | |
1423 | + } | |
1433 | 1424 | } |
1434 | 1425 | } |
1435 | 1426 |
@@ -1610,7 +1601,7 @@ | ||
1610 | 1601 | { |
1611 | 1602 | { |
1612 | 1603 | const struct StreamOut *_7 = &(*streams).out; |
1613 | - Indent$(0 /* _6 */, &*_7, &*level); | |
1604 | + Indent(0 /* _6 */, &*_7, &*level); | |
1614 | 1605 | } |
1615 | 1606 | { |
1616 | 1607 | const struct StreamOut *_8 = &(*streams).out; |
@@ -1634,7 +1625,7 @@ | ||
1634 | 1625 | { |
1635 | 1626 | { |
1636 | 1627 | const struct StreamOut *_9 = &(*streams).out; |
1637 | - Indent$(0 /* _8 */, &*_9, &*level); | |
1628 | + Indent(0 /* _8 */, &*_9, &*level); | |
1638 | 1629 | } |
1639 | 1630 | { |
1640 | 1631 | const struct StreamOut *_10 = &(*streams).out; |
@@ -1756,7 +1747,7 @@ | ||
1756 | 1747 | uint8_t _1; memset(&_1, 0, sizeof(uint8_t)); |
1757 | 1748 | { |
1758 | 1749 | const struct stack/*u8*/ *_2 = &(*id).data; |
1759 | - top_get$(&_1, &*_2, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 261); | |
1750 | + top_get$(&_1, &*_2, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 265); | |
1760 | 1751 | } |
1761 | 1752 | isup(&*_0, &_1); |
1762 | 1753 | _IGNORE_(_1); |
@@ -1784,7 +1775,7 @@ | ||
1784 | 1775 | { |
1785 | 1776 | { |
1786 | 1777 | const struct stack/*u8*/ *_2 = &(*s).data; |
1787 | - top_get$(&*_0, &*_2, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 266); | |
1778 | + top_get$(&*_0, &*_2, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 270); | |
1788 | 1779 | } |
1789 | 1780 | } |
1790 | 1781 | else |
@@ -1802,7 +1793,7 @@ | ||
1802 | 1793 | { |
1803 | 1794 | uint8_t _1; memset(&_1, 0, sizeof(uint8_t)); |
1804 | 1795 | struct stack/*u8*/ *_2 = &(_t).data; |
1805 | - pop$(&_1, &*_2, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 272); | |
1796 | + pop$(&_1, &*_2, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 276); | |
1806 | 1797 | _IGNORE_(_1); |
1807 | 1798 | } |
1808 | 1799 | string$copy(&*_0, &_t); |
@@ -1836,7 +1827,7 @@ | ||
1836 | 1827 | const struct stack/*u8*/ *_4 = &(*id).data; |
1837 | 1828 | uint64_t _5; memset(&_5, 0, sizeof(uint64_t)); |
1838 | 1829 | _5 = 0; |
1839 | - at_get$(&_3, &*_4, &_5, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 279); | |
1830 | + at_get$(&_3, &*_4, &_5, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 283); | |
1840 | 1831 | _IGNORE_(_5); |
1841 | 1832 | } |
1842 | 1833 | *_0 = _2 == _3; |
@@ -1958,7 +1949,7 @@ | ||
1958 | 1949 | string$copy(&_new, &(*id)); |
1959 | 1950 | { |
1960 | 1951 | struct stack/*u8*/ *_2 = &(_new).data; |
1961 | - push(0 /* _1 */, &*_2, &*cur, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 309); | |
1952 | + push(0 /* _1 */, &*_2, &*cur, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 313); | |
1962 | 1953 | } |
1963 | 1954 | string$copy(&*_0, &_new); |
1964 | 1955 | string$dest(&_new); |
@@ -2025,7 +2016,7 @@ | ||
2025 | 2016 | } |
2026 | 2017 | { |
2027 | 2018 | struct stack/*u8*/ *_3 = &(_id).data; |
2028 | - push(0 /* _2 */, &*_3, &_ch, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 324); | |
2019 | + push(0 /* _2 */, &*_3, &_ch, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 328); | |
2029 | 2020 | } |
2030 | 2021 | string$copy(&*_0, &_id); |
2031 | 2022 | string$dest(&_id); |
@@ -2089,7 +2080,7 @@ | ||
2089 | 2080 | } |
2090 | 2081 | { |
2091 | 2082 | struct stack/*u8*/ *_3 = &(_id).data; |
2092 | - push(0 /* _2 */, &*_3, &_ch, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 348); | |
2083 | + push(0 /* _2 */, &*_3, &_ch, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 352); | |
2093 | 2084 | } |
2094 | 2085 | string$copy(&*_0, &_id); |
2095 | 2086 | string$dest(&_id); |
@@ -2131,7 +2122,7 @@ | ||
2131 | 2122 | if(_1) |
2132 | 2123 | { |
2133 | 2124 | { |
2134 | - empty(&*_0, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 363); | |
2125 | + empty(&*_0, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 367); | |
2135 | 2126 | } |
2136 | 2127 | } |
2137 | 2128 | else |
@@ -2141,7 +2132,7 @@ | ||
2141 | 2132 | { |
2142 | 2133 | ParseId$(&_2, &*streams, &*txtpos, &*level); |
2143 | 2134 | } |
2144 | - solid(&*_0, &_2, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 365); | |
2135 | + solid(&*_0, &_2, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 369); | |
2145 | 2136 | string$dest(&_2); |
2146 | 2137 | } |
2147 | 2138 | } |
@@ -2193,7 +2184,7 @@ | ||
2193 | 2184 | } |
2194 | 2185 | { |
2195 | 2186 | struct stack/*u8*/ *_4 = &(_new).data; |
2196 | - push(0 /* _3 */, &*_4, &_digit, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 379); | |
2187 | + push(0 /* _3 */, &*_4, &_digit, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 383); | |
2197 | 2188 | } |
2198 | 2189 | { |
2199 | 2190 | GenId$(&_new, &_nr, &_new); |
@@ -5028,7 +5019,7 @@ | ||
5028 | 5019 | if(!(_1).size) |
5029 | 5020 | { |
5030 | 5021 | { |
5031 | - empty(&*_0, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 841); | |
5022 | + empty(&*_0, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 845); | |
5032 | 5023 | } |
5033 | 5024 | } |
5034 | 5025 | else |
@@ -5037,7 +5028,7 @@ | ||
5037 | 5028 | { |
5038 | 5029 | struct structdef _cur; memset(&_cur, 0, sizeof(struct structdef)); |
5039 | 5030 | { |
5040 | - at_get$(&_cur, &*structs, &*idx1, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 844); | |
5031 | + at_get$(&_cur, &*structs, &*idx1, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 848); | |
5041 | 5032 | } |
5042 | 5033 | struct stack/*u64*/ _2; memset(&_2, 0, sizeof(struct stack/*u64*/)); |
5043 | 5034 | bool _3; |
@@ -5048,7 +5039,7 @@ | ||
5048 | 5039 | if(_3) |
5049 | 5040 | { |
5050 | 5041 | { |
5051 | - solid(&_2, &*idx1, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 847); | |
5042 | + solid(&_2, &*idx1, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 851); | |
5052 | 5043 | } |
5053 | 5044 | } |
5054 | 5045 | else |
@@ -5077,7 +5068,7 @@ | ||
5077 | 5068 | if(!(_1).size) |
5078 | 5069 | { |
5079 | 5070 | { |
5080 | - empty(&*_0, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 854); | |
5071 | + empty(&*_0, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 858); | |
5081 | 5072 | } |
5082 | 5073 | } |
5083 | 5074 | else |
@@ -5086,7 +5077,7 @@ | ||
5086 | 5077 | { |
5087 | 5078 | struct typepureid _cur; memset(&_cur, 0, sizeof(struct typepureid)); |
5088 | 5079 | { |
5089 | - at_get$(&_cur, &*elems, &*idx1, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 857); | |
5080 | + at_get$(&_cur, &*elems, &*idx1, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 861); | |
5090 | 5081 | } |
5091 | 5082 | struct stack/*u64*/ _2; memset(&_2, 0, sizeof(struct stack/*u64*/)); |
5092 | 5083 | bool _3; |
@@ -5097,7 +5088,7 @@ | ||
5097 | 5088 | if(_3) |
5098 | 5089 | { |
5099 | 5090 | { |
5100 | - solid(&_2, &*idx1, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 860); | |
5091 | + solid(&_2, &*idx1, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 864); | |
5101 | 5092 | } |
5102 | 5093 | } |
5103 | 5094 | else |
@@ -6565,7 +6556,7 @@ | ||
6565 | 6556 | { |
6566 | 6557 | struct structdef _sd; memset(&_sd, 0, sizeof(struct structdef)); |
6567 | 6558 | { |
6568 | - at_get$(&_sd, &*structs, &*sidx, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 1241); | |
6559 | + at_get$(&_sd, &*structs, &*sidx, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 1245); | |
6569 | 6560 | } |
6570 | 6561 | bool _5; |
6571 | 6562 | { |
@@ -6658,7 +6649,7 @@ | ||
6658 | 6649 | { |
6659 | 6650 | struct structdef _sd; memset(&_sd, 0, sizeof(struct structdef)); |
6660 | 6651 | { |
6661 | - at_get$(&_sd, &*structs, &*sidx, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 1262); | |
6652 | + at_get$(&_sd, &*structs, &*sidx, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 1266); | |
6662 | 6653 | } |
6663 | 6654 | bool _5; |
6664 | 6655 | { |
@@ -6903,12 +6894,12 @@ | ||
6903 | 6894 | { |
6904 | 6895 | struct structdef _current; memset(&_current, 0, sizeof(struct structdef)); |
6905 | 6896 | { |
6906 | - at_get$(&_current, &*structs, &*sidx, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 1316); | |
6897 | + at_get$(&_current, &*structs, &*sidx, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 1320); | |
6907 | 6898 | } |
6908 | 6899 | bool *_9 = &(_current).used; |
6909 | 6900 | *_9 = 1; |
6910 | 6901 | { |
6911 | - at_set$(0 /* _10 */, &*structs, &*sidx, &_current, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 1318); | |
6902 | + at_set$(0 /* _10 */, &*structs, &*sidx, &_current, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 1322); | |
6912 | 6903 | } |
6913 | 6904 | // store used marker |
6914 | 6905 | structdef$dest(&_current); |
@@ -7009,7 +7000,7 @@ | ||
7009 | 7000 | { |
7010 | 7001 | ParseArgTypePure$(&_4, &*streams, &*txtpos, &*level, &*structs); |
7011 | 7002 | } |
7012 | - solid(&_2, &_4, sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy, 1347); | |
7003 | + solid(&_2, &_4, sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy, 1351); | |
7013 | 7004 | type_pure$dest(&_4); |
7014 | 7005 | } |
7015 | 7006 | } |
@@ -7016,7 +7007,7 @@ | ||
7016 | 7007 | else |
7017 | 7008 | { |
7018 | 7009 | { |
7019 | - empty(&_2, sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy, 1349); | |
7010 | + empty(&_2, sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy, 1353); | |
7020 | 7011 | } |
7021 | 7012 | } |
7022 | 7013 | clone$(&*_0, &_2, sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy); |
@@ -7348,13 +7339,13 @@ | ||
7348 | 7339 | { |
7349 | 7340 | uint64_t _5; memset(&_5, 0, sizeof(uint64_t)); |
7350 | 7341 | _5 = 1; |
7351 | - Indent$(0 /* _4 */, &*err, &_5); | |
7342 | + Indent(0 /* _4 */, &*err, &_5); | |
7352 | 7343 | _IGNORE_(_5); |
7353 | 7344 | } |
7354 | 7345 | { |
7355 | 7346 | struct typepureid _6; memset(&_6, 0, sizeof(struct typepureid)); |
7356 | 7347 | { |
7357 | - at_get$(&_6, &*elems, &*idx1, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 1427); | |
7348 | + at_get$(&_6, &*elems, &*idx1, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 1431); | |
7358 | 7349 | } |
7359 | 7350 | EPrTPI(0 /* _5 */, &*err, &_6); |
7360 | 7351 | typepureid$dest(&_6); |
@@ -7886,7 +7877,7 @@ | ||
7886 | 7877 | { |
7887 | 7878 | struct typeid _ti; memset(&_ti, 0, sizeof(struct typeid)); |
7888 | 7879 | { |
7889 | - at_get$(&_ti, &*tis, &*idx, sizeof(struct typeid), (void (*)(void *))typeid$dest, (void (*)(void *, const void *))typeid$copy, 1588); | |
7880 | + at_get$(&_ti, &*tis, &*idx, sizeof(struct typeid), (void (*)(void *))typeid$dest, (void (*)(void *, const void *))typeid$copy, 1592); | |
7890 | 7881 | } |
7891 | 7882 | { |
7892 | 7883 | struct qtype _4; memset(&_4, 0, sizeof(struct qtype)); |
@@ -7894,7 +7885,7 @@ | ||
7894 | 7885 | const struct type *_5 = &(_ti).type; |
7895 | 7886 | constqt(&_4, &*_5); |
7896 | 7887 | } |
7897 | - push(0 /* _3 */, &*qts, &_4, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 1589); | |
7888 | + push(0 /* _3 */, &*qts, &_4, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 1593); | |
7898 | 7889 | qtype$dest(&_4); |
7899 | 7890 | } |
7900 | 7891 | { |
@@ -8453,7 +8444,7 @@ | ||
8453 | 8444 | if(!(_1).size) |
8454 | 8445 | { |
8455 | 8446 | { |
8456 | - empty(&*_0, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 1779); | |
8447 | + empty(&*_0, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 1783); | |
8457 | 8448 | } |
8458 | 8449 | } |
8459 | 8450 | else |
@@ -8462,7 +8453,7 @@ | ||
8462 | 8453 | { |
8463 | 8454 | struct var _found; memset(&_found, 0, sizeof(struct var)); |
8464 | 8455 | { |
8465 | - at_get$(&_found, &*scope, &*sp1, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 1782); | |
8456 | + at_get$(&_found, &*scope, &*sp1, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 1786); | |
8466 | 8457 | } |
8467 | 8458 | struct stack/*u64*/ _2; memset(&_2, 0, sizeof(struct stack/*u64*/)); |
8468 | 8459 | bool _3; |
@@ -8491,7 +8482,7 @@ | ||
8491 | 8482 | { |
8492 | 8483 | struct stack/*u64*/ _4; memset(&_4, 0, sizeof(struct stack/*u64*/)); |
8493 | 8484 | { |
8494 | - solid(&_4, &*sp1, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 1790); | |
8485 | + solid(&_4, &*sp1, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 1794); | |
8495 | 8486 | } |
8496 | 8487 | clone$(&_2, &_4, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/); |
8497 | 8488 | free$(&_4, sizeof(uint64_t), 0/*DEST*/); |
@@ -8505,43 +8496,56 @@ | ||
8505 | 8496 | free$(&_1, sizeof(uint64_t), 0/*DEST*/); |
8506 | 8497 | } |
8507 | 8498 | |
8508 | -// search position of identifier in parameters - return 0 if not found | |
8509 | -void FindPr$(struct stack/*u64*/ *_0, const struct linecol *txtpos, const struct stack/*var*/ *scope, const struct string *id) | |
8499 | +void FindPar$(struct stack/*u64*/ *_0, const struct linecol *txtpos, const struct stack/*var*/ *scope, const struct string *id) | |
8510 | 8500 | { |
8501 | + { | |
8502 | + uint64_t _1; memset(&_1, 0, sizeof(uint64_t)); | |
8503 | + { | |
8504 | + size(&_1, &*scope); | |
8505 | + } | |
8506 | + struct string _2; memset(&_2, 0, sizeof(struct string)); | |
8507 | + { | |
8508 | + uint8_t _3; memset(&_3, 0, sizeof(uint8_t)); | |
8509 | + _3 = 42; | |
8510 | + preapp(&_2, &*id, &_3); | |
8511 | + _IGNORE_(_3); | |
8512 | + } | |
8513 | + findid$(&*_0, &*scope, &_1, &_2); | |
8514 | + string$dest(&_2); | |
8515 | + _IGNORE_(_1); | |
8516 | + } | |
8517 | +} | |
8518 | + | |
8519 | +void FindVar$(struct stack/*u64*/ *_0, const struct linecol *txtpos, const struct stack/*var*/ *scope, const struct string *id) | |
8520 | +{ | |
8521 | + { | |
8522 | + uint64_t _1; memset(&_1, 0, sizeof(uint64_t)); | |
8523 | + { | |
8524 | + size(&_1, &*scope); | |
8525 | + } | |
8526 | + struct string _2; memset(&_2, 0, sizeof(struct string)); | |
8527 | + { | |
8528 | + uint8_t _3; memset(&_3, 0, sizeof(uint8_t)); | |
8529 | + _3 = 95; | |
8530 | + preapp(&_2, &*id, &_3); | |
8531 | + _IGNORE_(_3); | |
8532 | + } | |
8533 | + findid$(&*_0, &*scope, &_1, &_2); | |
8534 | + string$dest(&_2); | |
8535 | + _IGNORE_(_1); | |
8536 | + } | |
8537 | +} | |
8538 | + | |
8539 | +void FindParOrVar$(struct stack/*u64*/ *_0, const struct linecol *txtpos, const struct stack/*var*/ *scope, const struct string *id) | |
8540 | +{ | |
8511 | 8541 | struct stack/*u64*/ _1; memset(&_1, 0, sizeof(struct stack/*u64*/)); |
8512 | 8542 | { |
8513 | - uint64_t _2; memset(&_2, 0, sizeof(uint64_t)); | |
8514 | - { | |
8515 | - size(&_2, &*scope); | |
8516 | - } | |
8517 | - struct string _3; memset(&_3, 0, sizeof(struct string)); | |
8518 | - { | |
8519 | - uint8_t _4; memset(&_4, 0, sizeof(uint8_t)); | |
8520 | - _4 = 95; | |
8521 | - preapp(&_3, &*id, &_4); | |
8522 | - _IGNORE_(_4); | |
8523 | - } | |
8524 | - findid$(&_1, &*scope, &_2, &_3); | |
8525 | - string$dest(&_3); | |
8526 | - _IGNORE_(_2); | |
8543 | + FindVar$(&_1, &*txtpos, &*scope, &*id); | |
8527 | 8544 | } |
8528 | 8545 | if(!(_1).size) |
8529 | 8546 | { |
8530 | 8547 | { |
8531 | - uint64_t _2; memset(&_2, 0, sizeof(uint64_t)); | |
8532 | - { | |
8533 | - size(&_2, &*scope); | |
8534 | - } | |
8535 | - struct string _3; memset(&_3, 0, sizeof(struct string)); | |
8536 | - { | |
8537 | - uint8_t _4; memset(&_4, 0, sizeof(uint8_t)); | |
8538 | - _4 = 42; | |
8539 | - preapp(&_3, &*id, &_4); | |
8540 | - _IGNORE_(_4); | |
8541 | - } | |
8542 | - findid$(&*_0, &*scope, &_2, &_3); | |
8543 | - string$dest(&_3); | |
8544 | - _IGNORE_(_2); | |
8548 | + FindPar$(&*_0, &*txtpos, &*scope, &*id); | |
8545 | 8549 | } |
8546 | 8550 | } |
8547 | 8551 | else |
@@ -8548,7 +8552,7 @@ | ||
8548 | 8552 | { |
8549 | 8553 | const uint64_t *pos = (_1).data; |
8550 | 8554 | { |
8551 | - solid(&*_0, &*pos, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 1798); | |
8555 | + solid(&*_0, &*pos, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 1807); | |
8552 | 8556 | } |
8553 | 8557 | } |
8554 | 8558 | free$(&_1, sizeof(uint64_t), 0/*DEST*/); |
@@ -8574,7 +8578,7 @@ | ||
8574 | 8578 | _5 = *sp - _6; |
8575 | 8579 | _IGNORE_(_6); |
8576 | 8580 | } |
8577 | - at_get$(&_4, &*scope, &_5, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 1805); | |
8581 | + at_get$(&_4, &*scope, &_5, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 1814); | |
8578 | 8582 | _IGNORE_(_5); |
8579 | 8583 | } |
8580 | 8584 | AssertUse$(0 /* _3 */, &*err, &*txtpos, &_4); |
@@ -8616,7 +8620,7 @@ | ||
8616 | 8620 | { |
8617 | 8621 | struct stack/*var*/ _1; memset(&_1, 0, sizeof(struct stack/*var*/)); |
8618 | 8622 | { |
8619 | - pop_opt_base$(&_1, &*scope, &*base, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 1819); | |
8623 | + pop_opt_base$(&_1, &*scope, &*base, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 1828); | |
8620 | 8624 | } |
8621 | 8625 | if(!(_1).size) |
8622 | 8626 | { |
@@ -8830,7 +8834,7 @@ | ||
8830 | 8834 | { |
8831 | 8835 | struct qtype _qt; memset(&_qt, 0, sizeof(struct qtype)); |
8832 | 8836 | { |
8833 | - at_get$(&_qt, &*elems, &*idx1, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 1871); | |
8837 | + at_get$(&_qt, &*elems, &*idx1, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 1880); | |
8834 | 8838 | } |
8835 | 8839 | bool _2; memset(&_2, 0, sizeof(bool)); |
8836 | 8840 | bool _3; |
@@ -8894,7 +8898,7 @@ | ||
8894 | 8898 | if(!(_1).size) |
8895 | 8899 | { |
8896 | 8900 | { |
8897 | - empty(&*_0, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 1885); | |
8901 | + empty(&*_0, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 1894); | |
8898 | 8902 | } |
8899 | 8903 | } |
8900 | 8904 | else |
@@ -8903,7 +8907,7 @@ | ||
8903 | 8907 | { |
8904 | 8908 | struct def _cur; memset(&_cur, 0, sizeof(struct def)); |
8905 | 8909 | { |
8906 | - at_get$(&_cur, &*defs, &*idx1, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 1888); | |
8910 | + at_get$(&_cur, &*defs, &*idx1, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 1897); | |
8907 | 8911 | } |
8908 | 8912 | struct stack/*u64*/ _2; memset(&_2, 0, sizeof(struct stack/*u64*/)); |
8909 | 8913 | bool _3; |
@@ -8914,7 +8918,7 @@ | ||
8914 | 8918 | if(_3) |
8915 | 8919 | { |
8916 | 8920 | { |
8917 | - solid(&_2, &*idx1, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 1891); | |
8921 | + solid(&_2, &*idx1, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 1900); | |
8918 | 8922 | } |
8919 | 8923 | } |
8920 | 8924 | else |
@@ -8970,7 +8974,7 @@ | ||
8970 | 8974 | { |
8971 | 8975 | struct structdef _sd; memset(&_sd, 0, sizeof(struct structdef)); |
8972 | 8976 | { |
8973 | - at_get$(&_sd, &*structs, &*idx1, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 1905); | |
8977 | + at_get$(&_sd, &*structs, &*idx1, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 1914); | |
8974 | 8978 | } |
8975 | 8979 | { |
8976 | 8980 | const struct string *_5 = &(_sd).ti.id; |
@@ -9034,7 +9038,7 @@ | ||
9034 | 9038 | { |
9035 | 9039 | { |
9036 | 9040 | { |
9037 | - push(0 /* _1 */, &*defs, &*def, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 1938); | |
9041 | + push(0 /* _1 */, &*defs, &*def, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 1947); | |
9038 | 9042 | } |
9039 | 9043 | } |
9040 | 9044 | } |
@@ -9043,7 +9047,7 @@ | ||
9043 | 9047 | { |
9044 | 9048 | { |
9045 | 9049 | { |
9046 | - push(0 /* _1 */, &*elems, &*partyp, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 1943); | |
9050 | + push(0 /* _1 */, &*elems, &*partyp, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 1952); | |
9047 | 9051 | } |
9048 | 9052 | } |
9049 | 9053 | } |
@@ -9142,7 +9146,7 @@ | ||
9142 | 9146 | varinit(&_8, &_9); |
9143 | 9147 | qtypepureid$dest(&_9); |
9144 | 9148 | } |
9145 | - push(0 /* _7 */, &*scope, &_8, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 1964); | |
9149 | + push(0 /* _7 */, &*scope, &_8, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 1973); | |
9146 | 9150 | var$dest(&_8); |
9147 | 9151 | } |
9148 | 9152 | qtypepureid$dest(&_parext); |
@@ -9270,7 +9274,7 @@ | ||
9270 | 9274 | { |
9271 | 9275 | struct stack/*string*/ _1; memset(&_1, 0, sizeof(struct stack/*string*/)); |
9272 | 9276 | { |
9273 | - pop_opt(&_1, &*path, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 1997); | |
9277 | + pop_opt(&_1, &*path, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 2006); | |
9274 | 9278 | } |
9275 | 9279 | if(!(_1).size) |
9276 | 9280 | { |
@@ -9812,7 +9816,7 @@ | ||
9812 | 9816 | if(_2) |
9813 | 9817 | { |
9814 | 9818 | { |
9815 | - Indent$(0 /* _3 */, &*out, &*level); | |
9819 | + Indent(0 /* _3 */, &*out, &*level); | |
9816 | 9820 | } |
9817 | 9821 | { |
9818 | 9822 | struct string _5; memset(&_5, 0, sizeof(struct string)); |
@@ -9823,7 +9827,7 @@ | ||
9823 | 9827 | } |
9824 | 9828 | // Initialize value with zero-bytes so dynamic memory can safely be copied into it. |
9825 | 9829 | { |
9826 | - Indent$(0 /* _3 */, &*out, &*level); | |
9830 | + Indent(0 /* _3 */, &*out, &*level); | |
9827 | 9831 | } |
9828 | 9832 | { |
9829 | 9833 | const struct type_pure *_5 = &(*store).qt.type; |
@@ -10025,7 +10029,7 @@ | ||
10025 | 10029 | } |
10026 | 10030 | struct structdef _sd; memset(&_sd, 0, sizeof(struct structdef)); |
10027 | 10031 | { |
10028 | - at_get$(&_sd, &*structs, &*sidx, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 2238); | |
10032 | + at_get$(&_sd, &*structs, &*sidx, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 2247); | |
10029 | 10033 | } |
10030 | 10034 | struct flavour _3; memset(&_3, 0, sizeof(struct flavour)); |
10031 | 10035 | flavour$copy(&_3, &(_sd).type); |
@@ -10143,12 +10147,12 @@ | ||
10143 | 10147 | const uint64_t *elidx = (_7).data; |
10144 | 10148 | { |
10145 | 10149 | { |
10146 | - push(0 /* _8 */, &*path, &_id, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 2267); | |
10150 | + push(0 /* _8 */, &*path, &_id, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 2276); | |
10147 | 10151 | } |
10148 | 10152 | struct typepureid _cur; memset(&_cur, 0, sizeof(struct typepureid)); |
10149 | 10153 | { |
10150 | 10154 | const struct stack/*typepureid*/ *_9 = &(_sd).elems; |
10151 | - at_get$(&_cur, &*_9, &*elidx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 2268); | |
10155 | + at_get$(&_cur, &*_9, &*elidx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 2277); | |
10152 | 10156 | } |
10153 | 10157 | struct type_pure _9; memset(&_9, 0, sizeof(struct type_pure)); |
10154 | 10158 | { |
@@ -10208,7 +10212,7 @@ | ||
10208 | 10212 | { |
10209 | 10213 | struct stack/*var*/ _1; memset(&_1, 0, sizeof(struct stack/*var*/)); |
10210 | 10214 | { |
10211 | - pop_opt_base$(&_1, &*scope, &*base, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2310); | |
10215 | + pop_opt_base$(&_1, &*scope, &*base, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2319); | |
10212 | 10216 | } |
10213 | 10217 | if(!(_1).size) |
10214 | 10218 | { |
@@ -10265,7 +10269,7 @@ | ||
10265 | 10269 | } |
10266 | 10270 | { |
10267 | 10271 | const struct StreamOut *_6 = &(*streams).out; |
10268 | - Indent$(0 /* _5 */, &*_6, &*level); | |
10272 | + Indent(0 /* _5 */, &*_6, &*level); | |
10269 | 10273 | } |
10270 | 10274 | { |
10271 | 10275 | SkipComment$(0 /* _6 */, &*streams, &*txtpos, &*level); |
@@ -10320,15 +10324,60 @@ | ||
10320 | 10324 | } |
10321 | 10325 | } |
10322 | 10326 | |
10327 | +//string orig; | |
10328 | +struct ReducedId | |
10329 | +{ | |
10330 | + uint64_t par_idx; | |
10331 | + struct string reduced; | |
10332 | +}; | |
10333 | + | |
10334 | +void ReducedId$copy(struct ReducedId *copy, struct ReducedId const *orig) | |
10335 | +{ | |
10336 | + copy->par_idx = orig->par_idx; | |
10337 | + string$copy(©->reduced, &orig->reduced); | |
10338 | +} | |
10339 | + | |
10340 | +void ReducedId$dest(struct ReducedId *_0) | |
10341 | +{ | |
10342 | + _IGNORE_(_0->par_idx); | |
10343 | + string$dest(&_0->reduced); | |
10344 | +} | |
10345 | + | |
10346 | +void ReducedId(struct ReducedId *_0, const uint64_t *par_idx, const struct string *reduced) | |
10347 | +{ | |
10348 | + _0->par_idx = *par_idx; | |
10349 | + string$copy(&_0->reduced, &*reduced); | |
10350 | +} | |
10351 | + | |
10352 | +void Print$ReducedId(void *_0, const struct StreamOut *out, const struct ReducedId *s) | |
10353 | +{ | |
10354 | + fprintf(out->f, "ReducedId("); | |
10355 | + Print$u64(0, out, &s->par_idx); | |
10356 | + fprintf(out->f, ", "); | |
10357 | + Print$string(0, out, &s->reduced); | |
10358 | + fprintf(out->f, ")"); | |
10359 | +} | |
10360 | + | |
10361 | +void cmp$ReducedId(struct cmp *res, const struct ReducedId *x, const struct ReducedId *y) | |
10362 | +{ | |
10363 | + cmp$u64(res, &x->par_idx, &y->par_idx); | |
10364 | + if(res->type != 1) | |
10365 | + return; | |
10366 | + cmp$string(res, &x->reduced, &y->reduced); | |
10367 | + if(res->type != 1) | |
10368 | + return; | |
10369 | +} | |
10370 | + | |
10371 | +//data verification = verified | unverified; | |
10323 | 10372 | // forward-decl |
10324 | -void ParseExpr$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const struct string *id, const bool *partial, const bool *action, const struct string *self); | |
10373 | +void ParseExpr$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const struct string *id, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified); | |
10325 | 10374 | // forward-decl |
10326 | -void ParseBlock$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, const uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const bool *partial, const bool *action, const struct string *self); | |
10375 | +void ParseBlock$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, const uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified); | |
10327 | 10376 | // forward-decl |
10328 | -void ParseBlockRaw$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, const uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const bool *partial, const bool *action, const struct string *self); | |
10377 | +void ParseBlockRaw$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, const uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified); | |
10329 | 10378 | // forward-decl |
10330 | -void ParseArg$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct qtypepureid *store, const struct qtypepureid *par, const bool *partial, const bool *action, const struct string *self, const uint64_t *parnr, const struct def *def, uint64_t *paridx, const uint64_t *base, const struct string *callee, const struct stack/*type_pure*/ *st, const struct type_pure *retype); | |
10331 | -void ParseCC$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct def *def, const uint64_t *paridx, const struct qtypepureid *store, const uint64_t *base, const struct string *callee, const struct stack/*type_pure*/ *st_, const struct type_pure *retype) | |
10379 | +void ParseArg$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct qtypepureid *store, const struct qtypepureid *par, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified, const uint64_t *parnr, const struct def *def, uint64_t *paridx, const uint64_t *base, const struct string *callee, const struct stack/*type_pure*/ *st, const struct type_pure *retype); | |
10380 | +void ParseCC$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct def *def, const uint64_t *paridx, const struct qtypepureid *store, const bool *partial, const bool *action, const struct string *self, const struct stack/*ReducedId*/ *reduced_ids, const bool *verified, const uint64_t *base, const struct string *callee, const struct stack/*type_pure*/ *st_, const struct type_pure *retype) | |
10332 | 10381 | { |
10333 | 10382 | { |
10334 | 10383 | bool _2; |
@@ -10361,284 +10410,330 @@ | ||
10361 | 10410 | } |
10362 | 10411 | bool _4; |
10363 | 10412 | { |
10364 | - isop1(&_4, &*callee); | |
10413 | + bool _5; memset(&_5, 0, sizeof(bool)); | |
10414 | + { | |
10415 | + bool _6; memset(&_6, 0, sizeof(bool)); | |
10416 | + { | |
10417 | + not(&_6, &*partial); | |
10418 | + } | |
10419 | + bool _7; memset(&_7, 0, sizeof(bool)); | |
10420 | + { | |
10421 | + strequ(&_7, &*callee, &*self); | |
10422 | + } | |
10423 | + and(&_5, &_6, &_7); | |
10424 | + _IGNORE_(_7); | |
10425 | + _IGNORE_(_6); | |
10426 | + } | |
10427 | + bool _6; memset(&_6, 0, sizeof(bool)); | |
10428 | + { | |
10429 | + not(&_6, &*verified); | |
10430 | + } | |
10431 | + and(&_4, &_5, &_6); | |
10432 | + _IGNORE_(_6); | |
10433 | + _IGNORE_(_5); | |
10365 | 10434 | } |
10366 | 10435 | if(_4) |
10367 | 10436 | { |
10368 | - struct stack/*type_pure*/ _5; memset(&_5, 0, sizeof(struct stack/*type_pure*/)); | |
10369 | - clone$(&_5, &(*st_), sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy); | |
10370 | - if(!(_5).size) | |
10371 | 10437 | { |
10438 | + const struct StreamOut *_6 = &(*streams).err; | |
10439 | + struct string _7; memset(&_7, 0, sizeof(struct string)); | |
10440 | + init$fromliteral(&_7, "total function ", 15); | |
10441 | + PutStr(0 /* _5 */, &*_6, &_7); | |
10442 | + string$dest(&_7); | |
10443 | + } | |
10444 | + { | |
10445 | + const struct StreamOut *_7 = &(*streams).err; | |
10446 | + PutStr(0 /* _6 */, &*_7, &*callee); | |
10447 | + } | |
10448 | + { | |
10449 | + const struct StreamOut *_8 = &(*streams).err; | |
10450 | + struct string _9; memset(&_9, 0, sizeof(struct string)); | |
10451 | + init$fromliteral(&_9, " calls itself recursivly (hint: reduce parameter or declare partial), ", 70); | |
10452 | + PutStr(0 /* _7 */, &*_8, &_9); | |
10453 | + string$dest(&_9); | |
10454 | + } | |
10455 | + { | |
10456 | + const struct StreamOut *_9 = &(*streams).err; | |
10457 | + struct string _10; memset(&_10, 0, sizeof(struct string)); | |
10458 | + init$fromliteral(&_10, "reduced parameters: ", 20); | |
10459 | + PutStr(0 /* _8 */, &*_9, &_10); | |
10460 | + string$dest(&_10); | |
10461 | + } | |
10462 | + { | |
10463 | + const struct StreamOut *_10 = &(*streams).err; | |
10464 | + Print$stack(0 /* _9 */, &*_10, &*reduced_ids, sizeof(struct ReducedId), (void (*)(void *, const struct StreamOut *, const void *))Print$ReducedId); | |
10465 | + } | |
10466 | + { | |
10467 | + const struct StreamOut *_11 = &(*streams).err; | |
10468 | + Fail$(0 /* _10 */, &*_11, &*txtpos); | |
10469 | + } | |
10470 | + } | |
10471 | + bool _6; | |
10472 | + { | |
10473 | + isop1(&_6, &*callee); | |
10474 | + } | |
10475 | + if(_6) | |
10476 | + { | |
10477 | + struct stack/*type_pure*/ _7; memset(&_7, 0, sizeof(struct stack/*type_pure*/)); | |
10478 | + clone$(&_7, &(*st_), sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy); | |
10479 | + if(!(_7).size) | |
10480 | + { | |
10372 | 10481 | { |
10373 | 10482 | { |
10374 | - const struct StreamOut *_8 = &(*streams).err; | |
10375 | - struct string _9; memset(&_9, 0, sizeof(struct string)); | |
10376 | - init$fromliteral(&_9, "missing subtype for ", 20); | |
10377 | - PutStr(0 /* _7 */, &*_8, &_9); | |
10378 | - string$dest(&_9); | |
10483 | + const struct StreamOut *_10 = &(*streams).err; | |
10484 | + struct string _11; memset(&_11, 0, sizeof(struct string)); | |
10485 | + init$fromliteral(&_11, "missing subtype for ", 20); | |
10486 | + PutStr(0 /* _9 */, &*_10, &_11); | |
10487 | + string$dest(&_11); | |
10379 | 10488 | } |
10380 | 10489 | { |
10381 | - const struct StreamOut *_9 = &(*streams).err; | |
10382 | - PutStr(0 /* _8 */, &*_9, &*callee); | |
10490 | + const struct StreamOut *_11 = &(*streams).err; | |
10491 | + PutStr(0 /* _10 */, &*_11, &*callee); | |
10383 | 10492 | } |
10384 | 10493 | { |
10385 | - const struct StreamOut *_10 = &(*streams).err; | |
10386 | - Fail$(0 /* _9 */, &*_10, &*txtpos); | |
10494 | + const struct StreamOut *_12 = &(*streams).err; | |
10495 | + Fail$(0 /* _11 */, &*_12, &*txtpos); | |
10387 | 10496 | } |
10388 | 10497 | } |
10389 | 10498 | } |
10390 | 10499 | else |
10391 | 10500 | { |
10392 | - const struct type_pure *subtype = (_5).data; | |
10501 | + const struct type_pure *subtype = (_7).data; | |
10393 | 10502 | { |
10394 | - bool _9; | |
10503 | + bool _11; | |
10395 | 10504 | { |
10396 | - uint64_t _10; memset(&_10, 0, sizeof(uint64_t)); | |
10505 | + uint64_t _12; memset(&_12, 0, sizeof(uint64_t)); | |
10397 | 10506 | { |
10398 | - size(&_10, &*scope); | |
10507 | + size(&_12, &*scope); | |
10399 | 10508 | } |
10400 | - uint64_t _11; memset(&_11, 0, sizeof(uint64_t)); | |
10509 | + uint64_t _13; memset(&_13, 0, sizeof(uint64_t)); | |
10401 | 10510 | { |
10402 | - uint64_t _12; memset(&_12, 0, sizeof(uint64_t)); | |
10403 | - _12 = 1; | |
10404 | - _11 = *base + _12; | |
10405 | - _IGNORE_(_12); | |
10511 | + uint64_t _14; memset(&_14, 0, sizeof(uint64_t)); | |
10512 | + _14 = 1; | |
10513 | + _13 = *base + _14; | |
10514 | + _IGNORE_(_14); | |
10406 | 10515 | } |
10407 | - _9 = _10 != _11; | |
10408 | - _IGNORE_(_11); | |
10409 | - _IGNORE_(_10); | |
10516 | + _11 = _12 != _13; | |
10517 | + _IGNORE_(_13); | |
10518 | + _IGNORE_(_12); | |
10410 | 10519 | } |
10411 | - if(_9) | |
10520 | + if(_11) | |
10412 | 10521 | { |
10413 | 10522 | { |
10414 | - const struct StreamOut *_11 = &(*streams).err; | |
10415 | - PutStr(0 /* _10 */, &*_11, &*callee); | |
10523 | + const struct StreamOut *_13 = &(*streams).err; | |
10524 | + PutStr(0 /* _12 */, &*_13, &*callee); | |
10416 | 10525 | } |
10417 | 10526 | { |
10418 | - const struct StreamOut *_12 = &(*streams).err; | |
10419 | - struct string _13; memset(&_13, 0, sizeof(struct string)); | |
10420 | - init$fromliteral(&_13, " needs one argument but got ", 28); | |
10421 | - PutStr(0 /* _11 */, &*_12, &_13); | |
10422 | - string$dest(&_13); | |
10527 | + const struct StreamOut *_14 = &(*streams).err; | |
10528 | + struct string _15; memset(&_15, 0, sizeof(struct string)); | |
10529 | + init$fromliteral(&_15, " needs one argument but got ", 28); | |
10530 | + PutStr(0 /* _13 */, &*_14, &_15); | |
10531 | + string$dest(&_15); | |
10423 | 10532 | } |
10424 | 10533 | { |
10425 | - const struct StreamOut *_13 = &(*streams).err; | |
10426 | - uint64_t _14; memset(&_14, 0, sizeof(uint64_t)); | |
10534 | + const struct StreamOut *_15 = &(*streams).err; | |
10535 | + uint64_t _16; memset(&_16, 0, sizeof(uint64_t)); | |
10427 | 10536 | { |
10428 | - uint64_t _15; memset(&_15, 0, sizeof(uint64_t)); | |
10537 | + uint64_t _17; memset(&_17, 0, sizeof(uint64_t)); | |
10429 | 10538 | { |
10430 | - size(&_15, &*scope); | |
10539 | + size(&_17, &*scope); | |
10431 | 10540 | } |
10432 | - _14 = _15 - *base; | |
10433 | - _IGNORE_(_15); | |
10541 | + _16 = _17 - *base; | |
10542 | + _IGNORE_(_17); | |
10434 | 10543 | } |
10435 | - Print$u64(0 /* _12 */, &*_13, &_14); | |
10436 | - _IGNORE_(_14); | |
10544 | + Print$u64(0 /* _14 */, &*_15, &_16); | |
10545 | + _IGNORE_(_16); | |
10437 | 10546 | } |
10438 | 10547 | { |
10439 | - const struct StreamOut *_14 = &(*streams).err; | |
10440 | - Fail$(0 /* _13 */, &*_14, &*txtpos); | |
10548 | + const struct StreamOut *_16 = &(*streams).err; | |
10549 | + Fail$(0 /* _15 */, &*_16, &*txtpos); | |
10441 | 10550 | } |
10442 | 10551 | } |
10443 | 10552 | struct var _arg0; memset(&_arg0, 0, sizeof(struct var)); |
10444 | 10553 | { |
10445 | - at_get$(&_arg0, &*scope, &*base, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2372); | |
10554 | + at_get$(&_arg0, &*scope, &*base, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2400); | |
10446 | 10555 | } |
10447 | - bool *_10 = &(_arg0).used; | |
10448 | - *_10 = 1; | |
10556 | + bool *_12 = &(_arg0).used; | |
10557 | + *_12 = 1; | |
10449 | 10558 | // mark argument used |
10450 | 10559 | { |
10451 | - at_set$(0 /* _11 */, &*scope, &*base, &_arg0, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2374); | |
10560 | + at_set$(0 /* _13 */, &*scope, &*base, &_arg0, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2402); | |
10452 | 10561 | } |
10453 | 10562 | // store changed arg |
10454 | - bool _13; | |
10563 | + bool _15; | |
10455 | 10564 | { |
10456 | - ispureprim(&_13, &*subtype); | |
10565 | + ispureprim(&_15, &*subtype); | |
10457 | 10566 | } |
10458 | - if(_13) | |
10567 | + if(_15) | |
10459 | 10568 | { |
10460 | 10569 | { |
10461 | - const struct StreamOut *_15 = &(*streams).out; | |
10462 | - Indent$(0 /* _14 */, &*_15, &*level); | |
10463 | - } | |
10464 | - { | |
10465 | - const struct StreamOut *_16 = &(*streams).out; | |
10466 | - const struct string *_17 = &(*store).id; | |
10467 | - PutStr(0 /* _15 */, &*_16, &*_17); | |
10468 | - } | |
10469 | - { | |
10470 | 10570 | const struct StreamOut *_17 = &(*streams).out; |
10471 | - struct string _18; memset(&_18, 0, sizeof(struct string)); | |
10472 | - init$fromliteral(&_18, " = ", 3); | |
10473 | - PutStr(0 /* _16 */, &*_17, &_18); | |
10474 | - string$dest(&_18); | |
10571 | + Indent(0 /* _16 */, &*_17, &*level); | |
10475 | 10572 | } |
10476 | 10573 | { |
10477 | 10574 | const struct StreamOut *_18 = &(*streams).out; |
10478 | - struct string _19; memset(&_19, 0, sizeof(struct string)); | |
10479 | - { | |
10480 | - to_op1(&_19, &*callee); | |
10481 | - } | |
10482 | - PutStr(0 /* _17 */, &*_18, &_19); | |
10483 | - string$dest(&_19); | |
10575 | + const struct string *_19 = &(*store).id; | |
10576 | + PutStr(0 /* _17 */, &*_18, &*_19); | |
10484 | 10577 | } |
10485 | 10578 | { |
10486 | 10579 | const struct StreamOut *_19 = &(*streams).out; |
10487 | 10580 | struct string _20; memset(&_20, 0, sizeof(struct string)); |
10488 | - init$fromliteral(&_20, " ", 1); | |
10581 | + init$fromliteral(&_20, " = ", 3); | |
10489 | 10582 | PutStr(0 /* _18 */, &*_19, &_20); |
10490 | 10583 | string$dest(&_20); |
10491 | 10584 | } |
10492 | 10585 | { |
10493 | 10586 | const struct StreamOut *_20 = &(*streams).out; |
10494 | - struct string *_21 = &(_arg0).qti.id; | |
10495 | - PutStr(0 /* _19 */, &*_20, &*_21); | |
10587 | + struct string _21; memset(&_21, 0, sizeof(struct string)); | |
10588 | + { | |
10589 | + to_op1(&_21, &*callee); | |
10590 | + } | |
10591 | + PutStr(0 /* _19 */, &*_20, &_21); | |
10592 | + string$dest(&_21); | |
10496 | 10593 | } |
10497 | 10594 | { |
10498 | 10595 | const struct StreamOut *_21 = &(*streams).out; |
10499 | 10596 | struct string _22; memset(&_22, 0, sizeof(struct string)); |
10500 | - init$fromliteral(&_22, ";\n", 2); | |
10597 | + init$fromliteral(&_22, " ", 1); | |
10501 | 10598 | PutStr(0 /* _20 */, &*_21, &_22); |
10502 | 10599 | string$dest(&_22); |
10503 | 10600 | } |
10601 | + { | |
10602 | + const struct StreamOut *_22 = &(*streams).out; | |
10603 | + struct string *_23 = &(_arg0).qti.id; | |
10604 | + PutStr(0 /* _21 */, &*_22, &*_23); | |
10605 | + } | |
10606 | + { | |
10607 | + const struct StreamOut *_23 = &(*streams).out; | |
10608 | + struct string _24; memset(&_24, 0, sizeof(struct string)); | |
10609 | + init$fromliteral(&_24, ";\n", 2); | |
10610 | + PutStr(0 /* _22 */, &*_23, &_24); | |
10611 | + string$dest(&_24); | |
10612 | + } | |
10504 | 10613 | } |
10505 | 10614 | else |
10506 | 10615 | { |
10507 | 10616 | { |
10508 | - const struct StreamOut *_15 = &(*streams).err; | |
10509 | - PutStr(0 /* _14 */, &*_15, &*callee); | |
10617 | + const struct StreamOut *_17 = &(*streams).err; | |
10618 | + PutStr(0 /* _16 */, &*_17, &*callee); | |
10510 | 10619 | } |
10511 | 10620 | { |
10512 | - const struct StreamOut *_16 = &(*streams).err; | |
10513 | - struct string _17; memset(&_17, 0, sizeof(struct string)); | |
10514 | - init$fromliteral(&_17, " only implemented for primitive types", 37); | |
10515 | - PutStr(0 /* _15 */, &*_16, &_17); | |
10516 | - string$dest(&_17); | |
10621 | + const struct StreamOut *_18 = &(*streams).err; | |
10622 | + struct string _19; memset(&_19, 0, sizeof(struct string)); | |
10623 | + init$fromliteral(&_19, " only implemented for primitive types", 37); | |
10624 | + PutStr(0 /* _17 */, &*_18, &_19); | |
10625 | + string$dest(&_19); | |
10517 | 10626 | } |
10518 | 10627 | { |
10519 | - const struct StreamOut *_17 = &(*streams).err; | |
10520 | - Fail$(0 /* _16 */, &*_17, &*txtpos); | |
10628 | + const struct StreamOut *_19 = &(*streams).err; | |
10629 | + Fail$(0 /* _18 */, &*_19, &*txtpos); | |
10521 | 10630 | } |
10522 | 10631 | } |
10523 | 10632 | { |
10524 | - ignore$(0 /* _14 */, &*base, &*scope); | |
10633 | + ignore$(0 /* _16 */, &*base, &*scope); | |
10525 | 10634 | } |
10526 | 10635 | // forget args explicitly, since we're not using DoCall/Climb |
10527 | 10636 | var$dest(&_arg0); |
10528 | 10637 | } |
10529 | 10638 | } |
10530 | - free$(&_5, sizeof(struct type_pure), (void (*)(void *))type_pure$dest); | |
10639 | + free$(&_7, sizeof(struct type_pure), (void (*)(void *))type_pure$dest); | |
10531 | 10640 | } |
10532 | 10641 | else |
10533 | 10642 | { |
10534 | - bool _5; | |
10643 | + bool _7; | |
10535 | 10644 | { |
10536 | - isop2(&_5, &*callee); | |
10645 | + isop2(&_7, &*callee); | |
10537 | 10646 | } |
10538 | - if(_5) | |
10647 | + if(_7) | |
10539 | 10648 | { |
10540 | - struct stack/*type_pure*/ _6; memset(&_6, 0, sizeof(struct stack/*type_pure*/)); | |
10541 | - clone$(&_6, &(*st_), sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy); | |
10542 | - if(!(_6).size) | |
10649 | + struct stack/*type_pure*/ _8; memset(&_8, 0, sizeof(struct stack/*type_pure*/)); | |
10650 | + clone$(&_8, &(*st_), sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy); | |
10651 | + if(!(_8).size) | |
10543 | 10652 | { |
10544 | 10653 | { |
10545 | 10654 | { |
10546 | - const struct StreamOut *_9 = &(*streams).err; | |
10547 | - struct string _10; memset(&_10, 0, sizeof(struct string)); | |
10548 | - init$fromliteral(&_10, "missing subtype for ", 20); | |
10549 | - PutStr(0 /* _8 */, &*_9, &_10); | |
10550 | - string$dest(&_10); | |
10655 | + const struct StreamOut *_11 = &(*streams).err; | |
10656 | + struct string _12; memset(&_12, 0, sizeof(struct string)); | |
10657 | + init$fromliteral(&_12, "missing subtype for ", 20); | |
10658 | + PutStr(0 /* _10 */, &*_11, &_12); | |
10659 | + string$dest(&_12); | |
10551 | 10660 | } |
10552 | 10661 | { |
10553 | - const struct StreamOut *_10 = &(*streams).err; | |
10554 | - PutStr(0 /* _9 */, &*_10, &*callee); | |
10662 | + const struct StreamOut *_12 = &(*streams).err; | |
10663 | + PutStr(0 /* _11 */, &*_12, &*callee); | |
10555 | 10664 | } |
10556 | 10665 | { |
10557 | - const struct StreamOut *_11 = &(*streams).err; | |
10558 | - Fail$(0 /* _10 */, &*_11, &*txtpos); | |
10666 | + const struct StreamOut *_13 = &(*streams).err; | |
10667 | + Fail$(0 /* _12 */, &*_13, &*txtpos); | |
10559 | 10668 | } |
10560 | 10669 | } |
10561 | 10670 | } |
10562 | 10671 | else |
10563 | 10672 | { |
10564 | - const struct type_pure *subtype = (_6).data; | |
10673 | + const struct type_pure *subtype = (_8).data; | |
10565 | 10674 | { |
10566 | - bool _10; | |
10675 | + bool _12; | |
10567 | 10676 | { |
10568 | - uint64_t _11; memset(&_11, 0, sizeof(uint64_t)); | |
10677 | + uint64_t _13; memset(&_13, 0, sizeof(uint64_t)); | |
10569 | 10678 | { |
10570 | - size(&_11, &*scope); | |
10679 | + size(&_13, &*scope); | |
10571 | 10680 | } |
10572 | - uint64_t _12; memset(&_12, 0, sizeof(uint64_t)); | |
10681 | + uint64_t _14; memset(&_14, 0, sizeof(uint64_t)); | |
10573 | 10682 | { |
10574 | - uint64_t _13; memset(&_13, 0, sizeof(uint64_t)); | |
10575 | - _13 = 2; | |
10576 | - _12 = *base + _13; | |
10577 | - _IGNORE_(_13); | |
10683 | + uint64_t _15; memset(&_15, 0, sizeof(uint64_t)); | |
10684 | + _15 = 2; | |
10685 | + _14 = *base + _15; | |
10686 | + _IGNORE_(_15); | |
10578 | 10687 | } |
10579 | - _10 = _11 != _12; | |
10580 | - _IGNORE_(_12); | |
10581 | - _IGNORE_(_11); | |
10688 | + _12 = _13 != _14; | |
10689 | + _IGNORE_(_14); | |
10690 | + _IGNORE_(_13); | |
10582 | 10691 | } |
10583 | - if(_10) | |
10692 | + if(_12) | |
10584 | 10693 | { |
10585 | 10694 | { |
10586 | - const struct StreamOut *_12 = &(*streams).err; | |
10587 | - PutStr(0 /* _11 */, &*_12, &*callee); | |
10695 | + const struct StreamOut *_14 = &(*streams).err; | |
10696 | + PutStr(0 /* _13 */, &*_14, &*callee); | |
10588 | 10697 | } |
10589 | 10698 | { |
10590 | - const struct StreamOut *_13 = &(*streams).err; | |
10591 | - struct string _14; memset(&_14, 0, sizeof(struct string)); | |
10592 | - init$fromliteral(&_14, " needs two arguments but got ", 29); | |
10593 | - PutStr(0 /* _12 */, &*_13, &_14); | |
10594 | - string$dest(&_14); | |
10699 | + const struct StreamOut *_15 = &(*streams).err; | |
10700 | + struct string _16; memset(&_16, 0, sizeof(struct string)); | |
10701 | + init$fromliteral(&_16, " needs two arguments but got ", 29); | |
10702 | + PutStr(0 /* _14 */, &*_15, &_16); | |
10703 | + string$dest(&_16); | |
10595 | 10704 | } |
10596 | 10705 | { |
10597 | - const struct StreamOut *_14 = &(*streams).err; | |
10598 | - uint64_t _15; memset(&_15, 0, sizeof(uint64_t)); | |
10706 | + const struct StreamOut *_16 = &(*streams).err; | |
10707 | + uint64_t _17; memset(&_17, 0, sizeof(uint64_t)); | |
10599 | 10708 | { |
10600 | - uint64_t _16; memset(&_16, 0, sizeof(uint64_t)); | |
10709 | + uint64_t _18; memset(&_18, 0, sizeof(uint64_t)); | |
10601 | 10710 | { |
10602 | - size(&_16, &*scope); | |
10711 | + size(&_18, &*scope); | |
10603 | 10712 | } |
10604 | - _15 = _16 - *base; | |
10605 | - _IGNORE_(_16); | |
10713 | + _17 = _18 - *base; | |
10714 | + _IGNORE_(_18); | |
10606 | 10715 | } |
10607 | - Print$u64(0 /* _13 */, &*_14, &_15); | |
10608 | - _IGNORE_(_15); | |
10716 | + Print$u64(0 /* _15 */, &*_16, &_17); | |
10717 | + _IGNORE_(_17); | |
10609 | 10718 | } |
10610 | 10719 | { |
10611 | - const struct StreamOut *_15 = &(*streams).err; | |
10612 | - Fail$(0 /* _14 */, &*_15, &*txtpos); | |
10720 | + const struct StreamOut *_17 = &(*streams).err; | |
10721 | + Fail$(0 /* _16 */, &*_17, &*txtpos); | |
10613 | 10722 | } |
10614 | 10723 | } |
10615 | 10724 | struct var _arg0; memset(&_arg0, 0, sizeof(struct var)); |
10616 | 10725 | { |
10617 | - at_get$(&_arg0, &*scope, &*base, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2409); | |
10726 | + at_get$(&_arg0, &*scope, &*base, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2437); | |
10618 | 10727 | } |
10619 | - bool *_11 = &(_arg0).used; | |
10620 | - *_11 = 1; | |
10728 | + bool *_13 = &(_arg0).used; | |
10729 | + *_13 = 1; | |
10621 | 10730 | // mark argument used |
10622 | 10731 | { |
10623 | - at_set$(0 /* _12 */, &*scope, &*base, &_arg0, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2411); | |
10732 | + at_set$(0 /* _14 */, &*scope, &*base, &_arg0, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2439); | |
10624 | 10733 | } |
10625 | 10734 | // store changed arg |
10626 | 10735 | struct var _arg1; memset(&_arg1, 0, sizeof(struct var)); |
10627 | 10736 | { |
10628 | - uint64_t _13; memset(&_13, 0, sizeof(uint64_t)); | |
10629 | - { | |
10630 | - uint64_t _14; memset(&_14, 0, sizeof(uint64_t)); | |
10631 | - _14 = 1; | |
10632 | - _13 = *base + _14; | |
10633 | - _IGNORE_(_14); | |
10634 | - } | |
10635 | - at_get$(&_arg1, &*scope, &_13, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2412); | |
10636 | - _IGNORE_(_13); | |
10637 | - } | |
10638 | - bool *_13 = &(_arg1).used; | |
10639 | - *_13 = 1; | |
10640 | - // mark argument used | |
10641 | - { | |
10642 | 10737 | uint64_t _15; memset(&_15, 0, sizeof(uint64_t)); |
10643 | 10738 | { |
10644 | 10739 | uint64_t _16; memset(&_16, 0, sizeof(uint64_t)); |
@@ -10646,52 +10741,50 @@ | ||
10646 | 10741 | _15 = *base + _16; |
10647 | 10742 | _IGNORE_(_16); |
10648 | 10743 | } |
10649 | - at_set$(0 /* _14 */, &*scope, &_15, &_arg1, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2414); | |
10744 | + at_get$(&_arg1, &*scope, &_15, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2440); | |
10650 | 10745 | _IGNORE_(_15); |
10651 | 10746 | } |
10747 | + bool *_15 = &(_arg1).used; | |
10748 | + *_15 = 1; | |
10749 | + // mark argument used | |
10750 | + { | |
10751 | + uint64_t _17; memset(&_17, 0, sizeof(uint64_t)); | |
10752 | + { | |
10753 | + uint64_t _18; memset(&_18, 0, sizeof(uint64_t)); | |
10754 | + _18 = 1; | |
10755 | + _17 = *base + _18; | |
10756 | + _IGNORE_(_18); | |
10757 | + } | |
10758 | + at_set$(0 /* _16 */, &*scope, &_17, &_arg1, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2442); | |
10759 | + _IGNORE_(_17); | |
10760 | + } | |
10652 | 10761 | // store changed arg |
10653 | - bool _16; | |
10762 | + bool _18; | |
10654 | 10763 | { |
10655 | - ispureprim(&_16, &*subtype); | |
10764 | + ispureprim(&_18, &*subtype); | |
10656 | 10765 | } |
10657 | - if(_16) | |
10766 | + if(_18) | |
10658 | 10767 | { |
10659 | 10768 | { |
10660 | - const struct StreamOut *_18 = &(*streams).out; | |
10661 | - Indent$(0 /* _17 */, &*_18, &*level); | |
10662 | - } | |
10663 | - { | |
10664 | - const struct StreamOut *_19 = &(*streams).out; | |
10665 | - const struct string *_20 = &(*store).id; | |
10666 | - PutStr(0 /* _18 */, &*_19, &*_20); | |
10667 | - } | |
10668 | - { | |
10669 | 10769 | const struct StreamOut *_20 = &(*streams).out; |
10670 | - struct string _21; memset(&_21, 0, sizeof(struct string)); | |
10671 | - init$fromliteral(&_21, " = ", 3); | |
10672 | - PutStr(0 /* _19 */, &*_20, &_21); | |
10673 | - string$dest(&_21); | |
10770 | + Indent(0 /* _19 */, &*_20, &*level); | |
10674 | 10771 | } |
10675 | 10772 | { |
10676 | 10773 | const struct StreamOut *_21 = &(*streams).out; |
10677 | - struct string *_22 = &(_arg0).qti.id; | |
10774 | + const struct string *_22 = &(*store).id; | |
10678 | 10775 | PutStr(0 /* _20 */, &*_21, &*_22); |
10679 | 10776 | } |
10680 | 10777 | { |
10681 | 10778 | const struct StreamOut *_22 = &(*streams).out; |
10682 | 10779 | struct string _23; memset(&_23, 0, sizeof(struct string)); |
10683 | - init$fromliteral(&_23, " ", 1); | |
10780 | + init$fromliteral(&_23, " = ", 3); | |
10684 | 10781 | PutStr(0 /* _21 */, &*_22, &_23); |
10685 | 10782 | string$dest(&_23); |
10686 | 10783 | } |
10687 | 10784 | { |
10688 | 10785 | const struct StreamOut *_23 = &(*streams).out; |
10689 | - struct string _24; memset(&_24, 0, sizeof(struct string)); | |
10690 | - { | |
10691 | - to_op2(&_24, &*callee); | |
10692 | - } | |
10693 | - PutStr(0 /* _22 */, &*_23, &_24); | |
10694 | - string$dest(&_24); | |
10786 | + struct string *_24 = &(_arg0).qti.id; | |
10787 | + PutStr(0 /* _22 */, &*_23, &*_24); | |
10695 | 10788 | } |
10696 | 10789 | { |
10697 | 10790 | const struct StreamOut *_24 = &(*streams).out; |
@@ -10702,37 +10795,53 @@ | ||
10702 | 10795 | } |
10703 | 10796 | { |
10704 | 10797 | const struct StreamOut *_25 = &(*streams).out; |
10705 | - struct string *_26 = &(_arg1).qti.id; | |
10706 | - PutStr(0 /* _24 */, &*_25, &*_26); | |
10798 | + struct string _26; memset(&_26, 0, sizeof(struct string)); | |
10799 | + { | |
10800 | + to_op2(&_26, &*callee); | |
10801 | + } | |
10802 | + PutStr(0 /* _24 */, &*_25, &_26); | |
10803 | + string$dest(&_26); | |
10707 | 10804 | } |
10708 | 10805 | { |
10709 | 10806 | const struct StreamOut *_26 = &(*streams).out; |
10710 | 10807 | struct string _27; memset(&_27, 0, sizeof(struct string)); |
10711 | - init$fromliteral(&_27, ";\n", 2); | |
10808 | + init$fromliteral(&_27, " ", 1); | |
10712 | 10809 | PutStr(0 /* _25 */, &*_26, &_27); |
10713 | 10810 | string$dest(&_27); |
10714 | 10811 | } |
10812 | + { | |
10813 | + const struct StreamOut *_27 = &(*streams).out; | |
10814 | + struct string *_28 = &(_arg1).qti.id; | |
10815 | + PutStr(0 /* _26 */, &*_27, &*_28); | |
10816 | + } | |
10817 | + { | |
10818 | + const struct StreamOut *_28 = &(*streams).out; | |
10819 | + struct string _29; memset(&_29, 0, sizeof(struct string)); | |
10820 | + init$fromliteral(&_29, ";\n", 2); | |
10821 | + PutStr(0 /* _27 */, &*_28, &_29); | |
10822 | + string$dest(&_29); | |
10823 | + } | |
10715 | 10824 | } |
10716 | 10825 | else |
10717 | 10826 | { |
10718 | 10827 | { |
10719 | - const struct StreamOut *_18 = &(*streams).err; | |
10720 | - PutStr(0 /* _17 */, &*_18, &*callee); | |
10828 | + const struct StreamOut *_20 = &(*streams).err; | |
10829 | + PutStr(0 /* _19 */, &*_20, &*callee); | |
10721 | 10830 | } |
10722 | 10831 | { |
10723 | - const struct StreamOut *_19 = &(*streams).err; | |
10724 | - struct string _20; memset(&_20, 0, sizeof(struct string)); | |
10725 | - init$fromliteral(&_20, " only implemented for primitive types", 37); | |
10726 | - PutStr(0 /* _18 */, &*_19, &_20); | |
10727 | - string$dest(&_20); | |
10832 | + const struct StreamOut *_21 = &(*streams).err; | |
10833 | + struct string _22; memset(&_22, 0, sizeof(struct string)); | |
10834 | + init$fromliteral(&_22, " only implemented for primitive types", 37); | |
10835 | + PutStr(0 /* _20 */, &*_21, &_22); | |
10836 | + string$dest(&_22); | |
10728 | 10837 | } |
10729 | 10838 | { |
10730 | - const struct StreamOut *_20 = &(*streams).err; | |
10731 | - Fail$(0 /* _19 */, &*_20, &*txtpos); | |
10839 | + const struct StreamOut *_22 = &(*streams).err; | |
10840 | + Fail$(0 /* _21 */, &*_22, &*txtpos); | |
10732 | 10841 | } |
10733 | 10842 | } |
10734 | 10843 | { |
10735 | - ignore$(0 /* _17 */, &*base, &*scope); | |
10844 | + ignore$(0 /* _19 */, &*base, &*scope); | |
10736 | 10845 | } |
10737 | 10846 | // forget args explicitly, since we're not using DoCall/Climb |
10738 | 10847 | var$dest(&_arg1); |
@@ -10739,35 +10848,35 @@ | ||
10739 | 10848 | var$dest(&_arg0); |
10740 | 10849 | } |
10741 | 10850 | } |
10742 | - free$(&_6, sizeof(struct type_pure), (void (*)(void *))type_pure$dest); | |
10851 | + free$(&_8, sizeof(struct type_pure), (void (*)(void *))type_pure$dest); | |
10743 | 10852 | } |
10744 | 10853 | else |
10745 | 10854 | { |
10746 | - struct stack/*type_pure*/ _6; memset(&_6, 0, sizeof(struct stack/*type_pure*/)); | |
10747 | - clone$(&_6, &(*st_), sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy); | |
10748 | - if(!(_6).size) | |
10855 | + struct stack/*type_pure*/ _8; memset(&_8, 0, sizeof(struct stack/*type_pure*/)); | |
10856 | + clone$(&_8, &(*st_), sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy); | |
10857 | + if(!(_8).size) | |
10749 | 10858 | { |
10750 | 10859 | { |
10751 | - bool _9; | |
10860 | + bool _11; | |
10752 | 10861 | { |
10753 | - def_contains_var$(&_9, &*def); | |
10862 | + def_contains_var$(&_11, &*def); | |
10754 | 10863 | } |
10755 | - if(_9) | |
10864 | + if(_11) | |
10756 | 10865 | { |
10757 | 10866 | { |
10758 | - const struct StreamOut *_11 = &(*streams).err; | |
10759 | - struct string _12; memset(&_12, 0, sizeof(struct string)); | |
10760 | - init$fromliteral(&_12, "missing type-argument for ", 26); | |
10761 | - PutStr(0 /* _10 */, &*_11, &_12); | |
10762 | - string$dest(&_12); | |
10867 | + const struct StreamOut *_13 = &(*streams).err; | |
10868 | + struct string _14; memset(&_14, 0, sizeof(struct string)); | |
10869 | + init$fromliteral(&_14, "missing type-argument for ", 26); | |
10870 | + PutStr(0 /* _12 */, &*_13, &_14); | |
10871 | + string$dest(&_14); | |
10763 | 10872 | } |
10764 | 10873 | { |
10765 | - const struct StreamOut *_12 = &(*streams).err; | |
10766 | - PutStr(0 /* _11 */, &*_12, &*callee); | |
10874 | + const struct StreamOut *_14 = &(*streams).err; | |
10875 | + PutStr(0 /* _13 */, &*_14, &*callee); | |
10767 | 10876 | } |
10768 | 10877 | { |
10769 | - const struct StreamOut *_13 = &(*streams).err; | |
10770 | - Fail$(0 /* _12 */, &*_13, &*txtpos); | |
10878 | + const struct StreamOut *_15 = &(*streams).err; | |
10879 | + Fail$(0 /* _14 */, &*_15, &*txtpos); | |
10771 | 10880 | } |
10772 | 10881 | } |
10773 | 10882 | } |
@@ -10774,285 +10883,270 @@ | ||
10774 | 10883 | } |
10775 | 10884 | else |
10776 | 10885 | { |
10777 | - const struct type_pure *subtype = (_6).data; | |
10886 | + const struct type_pure *subtype = (_8).data; | |
10778 | 10887 | { |
10779 | - bool _10; | |
10888 | + bool _12; | |
10780 | 10889 | { |
10781 | - bool _11; memset(&_11, 0, sizeof(bool)); | |
10890 | + bool _13; memset(&_13, 0, sizeof(bool)); | |
10782 | 10891 | { |
10783 | - def_contains_var$(&_11, &*def); | |
10892 | + def_contains_var$(&_13, &*def); | |
10784 | 10893 | } |
10785 | - not(&_10, &_11); | |
10786 | - _IGNORE_(_11); | |
10894 | + not(&_12, &_13); | |
10895 | + _IGNORE_(_13); | |
10787 | 10896 | } |
10788 | - if(_10) | |
10897 | + if(_12) | |
10789 | 10898 | { |
10790 | 10899 | { |
10791 | - const struct StreamOut *_12 = &(*streams).err; | |
10792 | - struct string _13; memset(&_13, 0, sizeof(struct string)); | |
10793 | - init$fromliteral(&_13, "superfluous type-argument ", 26); | |
10794 | - PutStr(0 /* _11 */, &*_12, &_13); | |
10795 | - string$dest(&_13); | |
10796 | - } | |
10797 | - { | |
10798 | - const struct StreamOut *_13 = &(*streams).err; | |
10799 | - EPrTypePure(0 /* _12 */, &*_13, &*subtype); | |
10800 | - } | |
10801 | - { | |
10802 | 10900 | const struct StreamOut *_14 = &(*streams).err; |
10803 | 10901 | struct string _15; memset(&_15, 0, sizeof(struct string)); |
10804 | - init$fromliteral(&_15, " for ", 5); | |
10902 | + init$fromliteral(&_15, "superfluous type-argument ", 26); | |
10805 | 10903 | PutStr(0 /* _13 */, &*_14, &_15); |
10806 | 10904 | string$dest(&_15); |
10807 | 10905 | } |
10808 | 10906 | { |
10809 | 10907 | const struct StreamOut *_15 = &(*streams).err; |
10810 | - PutStr(0 /* _14 */, &*_15, &*callee); | |
10908 | + EPrTypePure(0 /* _14 */, &*_15, &*subtype); | |
10811 | 10909 | } |
10812 | 10910 | { |
10813 | 10911 | const struct StreamOut *_16 = &(*streams).err; |
10814 | - Fail$(0 /* _15 */, &*_16, &*txtpos); | |
10912 | + struct string _17; memset(&_17, 0, sizeof(struct string)); | |
10913 | + init$fromliteral(&_17, " for ", 5); | |
10914 | + PutStr(0 /* _15 */, &*_16, &_17); | |
10915 | + string$dest(&_17); | |
10815 | 10916 | } |
10917 | + { | |
10918 | + const struct StreamOut *_17 = &(*streams).err; | |
10919 | + PutStr(0 /* _16 */, &*_17, &*callee); | |
10920 | + } | |
10921 | + { | |
10922 | + const struct StreamOut *_18 = &(*streams).err; | |
10923 | + Fail$(0 /* _17 */, &*_18, &*txtpos); | |
10924 | + } | |
10816 | 10925 | } |
10817 | 10926 | } |
10818 | 10927 | } |
10819 | - free$(&_6, sizeof(struct type_pure), (void (*)(void *))type_pure$dest); | |
10928 | + free$(&_8, sizeof(struct type_pure), (void (*)(void *))type_pure$dest); | |
10820 | 10929 | // use all results as arguments for function-call |
10821 | 10930 | { |
10822 | - const struct StreamOut *_10 = &(*streams).out; | |
10823 | - Indent$(0 /* _9 */, &*_10, &*level); | |
10931 | + const struct StreamOut *_12 = &(*streams).out; | |
10932 | + Indent(0 /* _11 */, &*_12, &*level); | |
10824 | 10933 | } |
10825 | 10934 | { |
10826 | - const struct StreamOut *_11 = &(*streams).out; | |
10827 | - PutStr(0 /* _10 */, &*_11, &*callee); | |
10935 | + const struct StreamOut *_13 = &(*streams).out; | |
10936 | + PutStr(0 /* _12 */, &*_13, &*callee); | |
10828 | 10937 | } |
10829 | 10938 | { |
10830 | - const struct StreamOut *_12 = &(*streams).out; | |
10831 | - struct string _13; memset(&_13, 0, sizeof(struct string)); | |
10832 | - init$fromliteral(&_13, "(", 1); | |
10833 | - PutStr(0 /* _11 */, &*_12, &_13); | |
10834 | - string$dest(&_13); | |
10939 | + const struct StreamOut *_14 = &(*streams).out; | |
10940 | + struct string _15; memset(&_15, 0, sizeof(struct string)); | |
10941 | + init$fromliteral(&_15, "(", 1); | |
10942 | + PutStr(0 /* _13 */, &*_14, &_15); | |
10943 | + string$dest(&_15); | |
10835 | 10944 | } |
10836 | 10945 | { |
10837 | - const struct StreamOut *_13 = &(*streams).out; | |
10838 | - const struct StreamOut *_14 = &(*streams).err; | |
10839 | - DoCall$(0 /* _12 */, &*_13, &*_14, &*txtpos, &*scope, &*base, &*store); | |
10946 | + const struct StreamOut *_15 = &(*streams).out; | |
10947 | + const struct StreamOut *_16 = &(*streams).err; | |
10948 | + DoCall$(0 /* _14 */, &*_15, &*_16, &*txtpos, &*scope, &*base, &*store); | |
10840 | 10949 | } |
10841 | - bool _14; | |
10950 | + bool _16; | |
10842 | 10951 | { |
10843 | - bool _15; memset(&_15, 0, sizeof(bool)); | |
10952 | + bool _17; memset(&_17, 0, sizeof(bool)); | |
10844 | 10953 | { |
10845 | - bool _16; memset(&_16, 0, sizeof(bool)); | |
10954 | + bool _18; memset(&_18, 0, sizeof(bool)); | |
10846 | 10955 | { |
10847 | - bool _17; memset(&_17, 0, sizeof(bool)); | |
10956 | + bool _19; memset(&_19, 0, sizeof(bool)); | |
10848 | 10957 | { |
10849 | - struct string _18; memset(&_18, 0, sizeof(struct string)); | |
10850 | - init$fromliteral(&_18, "stack", 5); | |
10851 | - strequ(&_17, &_18, &*callee); | |
10852 | - string$dest(&_18); | |
10958 | + struct string _20; memset(&_20, 0, sizeof(struct string)); | |
10959 | + init$fromliteral(&_20, "stack", 5); | |
10960 | + strequ(&_19, &_20, &*callee); | |
10961 | + string$dest(&_20); | |
10853 | 10962 | } |
10854 | - bool _18; memset(&_18, 0, sizeof(bool)); | |
10963 | + bool _20; memset(&_20, 0, sizeof(bool)); | |
10855 | 10964 | { |
10856 | - bool _19; memset(&_19, 0, sizeof(bool)); | |
10965 | + bool _21; memset(&_21, 0, sizeof(bool)); | |
10857 | 10966 | { |
10858 | - struct string _20; memset(&_20, 0, sizeof(struct string)); | |
10859 | - init$fromliteral(&_20, "empty", 5); | |
10860 | - strequ(&_19, &_20, &*callee); | |
10861 | - string$dest(&_20); | |
10967 | + struct string _22; memset(&_22, 0, sizeof(struct string)); | |
10968 | + init$fromliteral(&_22, "empty", 5); | |
10969 | + strequ(&_21, &_22, &*callee); | |
10970 | + string$dest(&_22); | |
10862 | 10971 | } |
10863 | - bool _20; memset(&_20, 0, sizeof(bool)); | |
10972 | + bool _22; memset(&_22, 0, sizeof(bool)); | |
10864 | 10973 | { |
10865 | - struct string _21; memset(&_21, 0, sizeof(struct string)); | |
10866 | - init$fromliteral(&_21, "solid", 5); | |
10867 | - strequ(&_20, &_21, &*callee); | |
10868 | - string$dest(&_21); | |
10974 | + struct string _23; memset(&_23, 0, sizeof(struct string)); | |
10975 | + init$fromliteral(&_23, "solid", 5); | |
10976 | + strequ(&_22, &_23, &*callee); | |
10977 | + string$dest(&_23); | |
10869 | 10978 | } |
10870 | - or(&_18, &_19, &_20); | |
10871 | - _IGNORE_(_20); | |
10872 | - _IGNORE_(_19); | |
10979 | + or(&_20, &_21, &_22); | |
10980 | + _IGNORE_(_22); | |
10981 | + _IGNORE_(_21); | |
10873 | 10982 | } |
10874 | - or(&_16, &_17, &_18); | |
10875 | - _IGNORE_(_18); | |
10876 | - _IGNORE_(_17); | |
10983 | + or(&_18, &_19, &_20); | |
10984 | + _IGNORE_(_20); | |
10985 | + _IGNORE_(_19); | |
10877 | 10986 | } |
10878 | - bool _17; memset(&_17, 0, sizeof(bool)); | |
10987 | + bool _19; memset(&_19, 0, sizeof(bool)); | |
10879 | 10988 | { |
10880 | - bool _18; memset(&_18, 0, sizeof(bool)); | |
10989 | + bool _20; memset(&_20, 0, sizeof(bool)); | |
10881 | 10990 | { |
10882 | - bool _19; memset(&_19, 0, sizeof(bool)); | |
10991 | + bool _21; memset(&_21, 0, sizeof(bool)); | |
10883 | 10992 | { |
10884 | - struct string _20; memset(&_20, 0, sizeof(struct string)); | |
10885 | - init$fromliteral(&_20, "pop$", 4); | |
10886 | - strequ(&_19, &_20, &*callee); | |
10887 | - string$dest(&_20); | |
10993 | + struct string _22; memset(&_22, 0, sizeof(struct string)); | |
10994 | + init$fromliteral(&_22, "pop$", 4); | |
10995 | + strequ(&_21, &_22, &*callee); | |
10996 | + string$dest(&_22); | |
10888 | 10997 | } |
10889 | - bool _20; memset(&_20, 0, sizeof(bool)); | |
10998 | + bool _22; memset(&_22, 0, sizeof(bool)); | |
10890 | 10999 | { |
10891 | - struct string _21; memset(&_21, 0, sizeof(struct string)); | |
10892 | - init$fromliteral(&_21, "pop_opt", 7); | |
10893 | - strequ(&_20, &_21, &*callee); | |
10894 | - string$dest(&_21); | |
11000 | + struct string _23; memset(&_23, 0, sizeof(struct string)); | |
11001 | + init$fromliteral(&_23, "pop_opt", 7); | |
11002 | + strequ(&_22, &_23, &*callee); | |
11003 | + string$dest(&_23); | |
10895 | 11004 | } |
10896 | - or(&_18, &_19, &_20); | |
10897 | - _IGNORE_(_20); | |
10898 | - _IGNORE_(_19); | |
11005 | + or(&_20, &_21, &_22); | |
11006 | + _IGNORE_(_22); | |
11007 | + _IGNORE_(_21); | |
10899 | 11008 | } |
10900 | - bool _19; memset(&_19, 0, sizeof(bool)); | |
11009 | + bool _21; memset(&_21, 0, sizeof(bool)); | |
10901 | 11010 | { |
10902 | - bool _20; memset(&_20, 0, sizeof(bool)); | |
11011 | + bool _22; memset(&_22, 0, sizeof(bool)); | |
10903 | 11012 | { |
10904 | - struct string _21; memset(&_21, 0, sizeof(struct string)); | |
10905 | - init$fromliteral(&_21, "pop_opt_base$", 13); | |
10906 | - strequ(&_20, &_21, &*callee); | |
10907 | - string$dest(&_21); | |
11013 | + struct string _23; memset(&_23, 0, sizeof(struct string)); | |
11014 | + init$fromliteral(&_23, "pop_opt_base$", 13); | |
11015 | + strequ(&_22, &_23, &*callee); | |
11016 | + string$dest(&_23); | |
10908 | 11017 | } |
10909 | - bool _21; memset(&_21, 0, sizeof(bool)); | |
11018 | + bool _23; memset(&_23, 0, sizeof(bool)); | |
10910 | 11019 | { |
10911 | - struct string _22; memset(&_22, 0, sizeof(struct string)); | |
10912 | - init$fromliteral(&_22, "push", 4); | |
10913 | - strequ(&_21, &_22, &*callee); | |
10914 | - string$dest(&_22); | |
11020 | + struct string _24; memset(&_24, 0, sizeof(struct string)); | |
11021 | + init$fromliteral(&_24, "push", 4); | |
11022 | + strequ(&_23, &_24, &*callee); | |
11023 | + string$dest(&_24); | |
10915 | 11024 | } |
10916 | - or(&_19, &_20, &_21); | |
10917 | - _IGNORE_(_21); | |
10918 | - _IGNORE_(_20); | |
11025 | + or(&_21, &_22, &_23); | |
11026 | + _IGNORE_(_23); | |
11027 | + _IGNORE_(_22); | |
10919 | 11028 | } |
10920 | - or(&_17, &_18, &_19); | |
10921 | - _IGNORE_(_19); | |
10922 | - _IGNORE_(_18); | |
11029 | + or(&_19, &_20, &_21); | |
11030 | + _IGNORE_(_21); | |
11031 | + _IGNORE_(_20); | |
10923 | 11032 | } |
10924 | - or(&_15, &_16, &_17); | |
10925 | - _IGNORE_(_17); | |
10926 | - _IGNORE_(_16); | |
11033 | + or(&_17, &_18, &_19); | |
11034 | + _IGNORE_(_19); | |
11035 | + _IGNORE_(_18); | |
10927 | 11036 | } |
10928 | - bool _16; memset(&_16, 0, sizeof(bool)); | |
11037 | + bool _18; memset(&_18, 0, sizeof(bool)); | |
10929 | 11038 | { |
10930 | - bool _17; memset(&_17, 0, sizeof(bool)); | |
11039 | + bool _19; memset(&_19, 0, sizeof(bool)); | |
10931 | 11040 | { |
10932 | - bool _18; memset(&_18, 0, sizeof(bool)); | |
11041 | + bool _20; memset(&_20, 0, sizeof(bool)); | |
10933 | 11042 | { |
10934 | - struct string _19; memset(&_19, 0, sizeof(struct string)); | |
10935 | - init$fromliteral(&_19, "at_get$", 7); | |
10936 | - strequ(&_18, &_19, &*callee); | |
10937 | - string$dest(&_19); | |
11043 | + struct string _21; memset(&_21, 0, sizeof(struct string)); | |
11044 | + init$fromliteral(&_21, "at_get$", 7); | |
11045 | + strequ(&_20, &_21, &*callee); | |
11046 | + string$dest(&_21); | |
10938 | 11047 | } |
10939 | - bool _19; memset(&_19, 0, sizeof(bool)); | |
11048 | + bool _21; memset(&_21, 0, sizeof(bool)); | |
10940 | 11049 | { |
10941 | - struct string _20; memset(&_20, 0, sizeof(struct string)); | |
10942 | - init$fromliteral(&_20, "at_set$", 7); | |
10943 | - strequ(&_19, &_20, &*callee); | |
10944 | - string$dest(&_20); | |
11050 | + struct string _22; memset(&_22, 0, sizeof(struct string)); | |
11051 | + init$fromliteral(&_22, "at_set$", 7); | |
11052 | + strequ(&_21, &_22, &*callee); | |
11053 | + string$dest(&_22); | |
10945 | 11054 | } |
10946 | - or(&_17, &_18, &_19); | |
10947 | - _IGNORE_(_19); | |
10948 | - _IGNORE_(_18); | |
11055 | + or(&_19, &_20, &_21); | |
11056 | + _IGNORE_(_21); | |
11057 | + _IGNORE_(_20); | |
10949 | 11058 | } |
10950 | - bool _18; memset(&_18, 0, sizeof(bool)); | |
11059 | + bool _20; memset(&_20, 0, sizeof(bool)); | |
10951 | 11060 | { |
10952 | - bool _19; memset(&_19, 0, sizeof(bool)); | |
11061 | + bool _21; memset(&_21, 0, sizeof(bool)); | |
10953 | 11062 | { |
10954 | - struct string _20; memset(&_20, 0, sizeof(struct string)); | |
10955 | - init$fromliteral(&_20, "top_get$", 8); | |
10956 | - strequ(&_19, &_20, &*callee); | |
10957 | - string$dest(&_20); | |
11063 | + struct string _22; memset(&_22, 0, sizeof(struct string)); | |
11064 | + init$fromliteral(&_22, "top_get$", 8); | |
11065 | + strequ(&_21, &_22, &*callee); | |
11066 | + string$dest(&_22); | |
10958 | 11067 | } |
10959 | - bool _20; memset(&_20, 0, sizeof(bool)); | |
11068 | + bool _22; memset(&_22, 0, sizeof(bool)); | |
10960 | 11069 | { |
10961 | - struct string _21; memset(&_21, 0, sizeof(struct string)); | |
10962 | - init$fromliteral(&_21, "top_set$", 8); | |
10963 | - strequ(&_20, &_21, &*callee); | |
10964 | - string$dest(&_21); | |
11070 | + struct string _23; memset(&_23, 0, sizeof(struct string)); | |
11071 | + init$fromliteral(&_23, "top_set$", 8); | |
11072 | + strequ(&_22, &_23, &*callee); | |
11073 | + string$dest(&_23); | |
10965 | 11074 | } |
10966 | - or(&_18, &_19, &_20); | |
10967 | - _IGNORE_(_20); | |
10968 | - _IGNORE_(_19); | |
11075 | + or(&_20, &_21, &_22); | |
11076 | + _IGNORE_(_22); | |
11077 | + _IGNORE_(_21); | |
10969 | 11078 | } |
10970 | - or(&_16, &_17, &_18); | |
10971 | - _IGNORE_(_18); | |
10972 | - _IGNORE_(_17); | |
11079 | + or(&_18, &_19, &_20); | |
11080 | + _IGNORE_(_20); | |
11081 | + _IGNORE_(_19); | |
10973 | 11082 | } |
10974 | - or(&_14, &_15, &_16); | |
10975 | - _IGNORE_(_16); | |
10976 | - _IGNORE_(_15); | |
11083 | + or(&_16, &_17, &_18); | |
11084 | + _IGNORE_(_18); | |
11085 | + _IGNORE_(_17); | |
10977 | 11086 | } |
10978 | - if(_14) | |
11087 | + if(_16) | |
10979 | 11088 | { |
10980 | - struct stack/*type_pure*/ _15; memset(&_15, 0, sizeof(struct stack/*type_pure*/)); | |
10981 | - clone$(&_15, &(*st_), sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy); | |
10982 | - if(!(_15).size) | |
11089 | + struct stack/*type_pure*/ _17; memset(&_17, 0, sizeof(struct stack/*type_pure*/)); | |
11090 | + clone$(&_17, &(*st_), sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy); | |
11091 | + if(!(_17).size) | |
10983 | 11092 | { |
10984 | 11093 | { |
10985 | 11094 | { |
10986 | - const struct StreamOut *_18 = &(*streams).err; | |
10987 | - struct string _19; memset(&_19, 0, sizeof(struct string)); | |
10988 | - init$fromliteral(&_19, "missing subtype for ", 20); | |
10989 | - PutStr(0 /* _17 */, &*_18, &_19); | |
10990 | - string$dest(&_19); | |
11095 | + const struct StreamOut *_20 = &(*streams).err; | |
11096 | + struct string _21; memset(&_21, 0, sizeof(struct string)); | |
11097 | + init$fromliteral(&_21, "missing subtype for ", 20); | |
11098 | + PutStr(0 /* _19 */, &*_20, &_21); | |
11099 | + string$dest(&_21); | |
10991 | 11100 | } |
10992 | 11101 | { |
10993 | - const struct StreamOut *_19 = &(*streams).err; | |
10994 | - PutStr(0 /* _18 */, &*_19, &*callee); | |
11102 | + const struct StreamOut *_21 = &(*streams).err; | |
11103 | + PutStr(0 /* _20 */, &*_21, &*callee); | |
10995 | 11104 | } |
10996 | 11105 | { |
10997 | - const struct StreamOut *_20 = &(*streams).err; | |
10998 | - Fail$(0 /* _19 */, &*_20, &*txtpos); | |
11106 | + const struct StreamOut *_22 = &(*streams).err; | |
11107 | + Fail$(0 /* _21 */, &*_22, &*txtpos); | |
10999 | 11108 | } |
11000 | 11109 | } |
11001 | 11110 | } |
11002 | 11111 | else |
11003 | 11112 | { |
11004 | - const struct type_pure *subtype = (_15).data; | |
11113 | + const struct type_pure *subtype = (_17).data; | |
11005 | 11114 | // NOTE: SPECIAL TREATMENT FOR stack-BUILT-INS SUPPLYING SUBTYPE |
11006 | 11115 | { |
11007 | 11116 | { |
11008 | - const struct StreamOut *_19 = &(*streams).out; | |
11009 | - struct string _20; memset(&_20, 0, sizeof(struct string)); | |
11010 | - init$fromliteral(&_20, ", ", 2); | |
11011 | - PutStr(0 /* _18 */, &*_19, &_20); | |
11012 | - string$dest(&_20); | |
11117 | + const struct StreamOut *_21 = &(*streams).out; | |
11118 | + struct string _22; memset(&_22, 0, sizeof(struct string)); | |
11119 | + init$fromliteral(&_22, ", ", 2); | |
11120 | + PutStr(0 /* _20 */, &*_21, &_22); | |
11121 | + string$dest(&_22); | |
11013 | 11122 | } |
11014 | 11123 | { |
11015 | - const struct StreamOut *_20 = &(*streams).out; | |
11016 | - struct stack/*structdef*/ *_21 = &(*state).structs; | |
11017 | - SizeOfPure$(0 /* _19 */, &*_20, &*_21, &*subtype); | |
11124 | + const struct StreamOut *_22 = &(*streams).out; | |
11125 | + struct stack/*structdef*/ *_23 = &(*state).structs; | |
11126 | + SizeOfPure$(0 /* _21 */, &*_22, &*_23, &*subtype); | |
11018 | 11127 | } |
11019 | - bool _21; | |
11128 | + bool _23; | |
11020 | 11129 | { |
11021 | - ispurestruct(&_21, &*subtype); | |
11130 | + ispurestruct(&_23, &*subtype); | |
11022 | 11131 | } |
11023 | - if(_21) | |
11132 | + if(_23) | |
11024 | 11133 | // NOTE: emitting superfluous (but harmless) destructor/copy for non-dynamic structs - |
11025 | 11134 | // could suppress but might want to keep for future more complex destructors, |
11026 | 11135 | // e.g. automatically closing files etc. |
11027 | 11136 | { |
11028 | 11137 | { |
11029 | - const struct StreamOut *_23 = &(*streams).out; | |
11030 | - struct string _24; memset(&_24, 0, sizeof(struct string)); | |
11031 | - init$fromliteral(&_24, ", (void (*)(void *))", 20); | |
11032 | - PutStr(0 /* _22 */, &*_23, &_24); | |
11033 | - string$dest(&_24); | |
11034 | - } | |
11035 | - { | |
11036 | - const struct StreamOut *_24 = &(*streams).out; | |
11037 | - struct string _25; memset(&_25, 0, sizeof(struct string)); | |
11038 | - { | |
11039 | - getpurename(&_25, &*subtype); | |
11040 | - } | |
11041 | - PutStr(0 /* _23 */, &*_24, &_25); | |
11042 | - string$dest(&_25); | |
11043 | - } | |
11044 | - { | |
11045 | 11138 | const struct StreamOut *_25 = &(*streams).out; |
11046 | 11139 | struct string _26; memset(&_26, 0, sizeof(struct string)); |
11047 | - init$fromliteral(&_26, "$dest", 5); | |
11140 | + init$fromliteral(&_26, ", (void (*)(void *))", 20); | |
11048 | 11141 | PutStr(0 /* _24 */, &*_25, &_26); |
11049 | 11142 | string$dest(&_26); |
11050 | 11143 | } |
11051 | - // destructor | |
11052 | 11144 | { |
11053 | 11145 | const struct StreamOut *_26 = &(*streams).out; |
11054 | 11146 | struct string _27; memset(&_27, 0, sizeof(struct string)); |
11055 | - init$fromliteral(&_27, ", (void (*)(void *, const void *))", 34); | |
11147 | + { | |
11148 | + getpurename(&_27, &*subtype); | |
11149 | + } | |
11056 | 11150 | PutStr(0 /* _25 */, &*_26, &_27); |
11057 | 11151 | string$dest(&_27); |
11058 | 11152 | } |
@@ -11059,324 +11153,339 @@ | ||
11059 | 11153 | { |
11060 | 11154 | const struct StreamOut *_27 = &(*streams).out; |
11061 | 11155 | struct string _28; memset(&_28, 0, sizeof(struct string)); |
11062 | - { | |
11063 | - getpurename(&_28, &*subtype); | |
11064 | - } | |
11156 | + init$fromliteral(&_28, "$dest", 5); | |
11065 | 11157 | PutStr(0 /* _26 */, &*_27, &_28); |
11066 | 11158 | string$dest(&_28); |
11067 | 11159 | } |
11160 | + // destructor | |
11068 | 11161 | { |
11069 | 11162 | const struct StreamOut *_28 = &(*streams).out; |
11070 | 11163 | struct string _29; memset(&_29, 0, sizeof(struct string)); |
11071 | - init$fromliteral(&_29, "$copy", 5); | |
11164 | + init$fromliteral(&_29, ", (void (*)(void *, const void *))", 34); | |
11072 | 11165 | PutStr(0 /* _27 */, &*_28, &_29); |
11073 | 11166 | string$dest(&_29); |
11074 | 11167 | } |
11168 | + { | |
11169 | + const struct StreamOut *_29 = &(*streams).out; | |
11170 | + struct string _30; memset(&_30, 0, sizeof(struct string)); | |
11171 | + { | |
11172 | + getpurename(&_30, &*subtype); | |
11173 | + } | |
11174 | + PutStr(0 /* _28 */, &*_29, &_30); | |
11175 | + string$dest(&_30); | |
11176 | + } | |
11177 | + { | |
11178 | + const struct StreamOut *_30 = &(*streams).out; | |
11179 | + struct string _31; memset(&_31, 0, sizeof(struct string)); | |
11180 | + init$fromliteral(&_31, "$copy", 5); | |
11181 | + PutStr(0 /* _29 */, &*_30, &_31); | |
11182 | + string$dest(&_31); | |
11183 | + } | |
11075 | 11184 | // copy |
11076 | 11185 | } |
11077 | 11186 | else |
11078 | 11187 | { |
11079 | 11188 | { |
11080 | - const struct StreamOut *_23 = &(*streams).out; | |
11081 | - struct string _24; memset(&_24, 0, sizeof(struct string)); | |
11082 | - init$fromliteral(&_24, ", 0/*DEST*/, 0/*COPY*/", 22); | |
11083 | - PutStr(0 /* _22 */, &*_23, &_24); | |
11084 | - string$dest(&_24); | |
11189 | + const struct StreamOut *_25 = &(*streams).out; | |
11190 | + struct string _26; memset(&_26, 0, sizeof(struct string)); | |
11191 | + init$fromliteral(&_26, ", 0/*DEST*/, 0/*COPY*/", 22); | |
11192 | + PutStr(0 /* _24 */, &*_25, &_26); | |
11193 | + string$dest(&_26); | |
11085 | 11194 | } |
11086 | 11195 | } |
11087 | 11196 | { |
11088 | - const struct StreamOut *_23 = &(*streams).out; | |
11089 | - struct string _24; memset(&_24, 0, sizeof(struct string)); | |
11090 | - init$fromliteral(&_24, ", ", 2); | |
11091 | - PutStr(0 /* _22 */, &*_23, &_24); | |
11092 | - string$dest(&_24); | |
11197 | + const struct StreamOut *_25 = &(*streams).out; | |
11198 | + struct string _26; memset(&_26, 0, sizeof(struct string)); | |
11199 | + init$fromliteral(&_26, ", ", 2); | |
11200 | + PutStr(0 /* _24 */, &*_25, &_26); | |
11201 | + string$dest(&_26); | |
11093 | 11202 | } |
11094 | 11203 | { |
11095 | - const struct StreamOut *_24 = &(*streams).out; | |
11096 | - uint64_t *_25 = &(*txtpos).line; | |
11097 | - Print$u64(0 /* _23 */, &*_24, &*_25); | |
11204 | + const struct StreamOut *_26 = &(*streams).out; | |
11205 | + uint64_t *_27 = &(*txtpos).line; | |
11206 | + Print$u64(0 /* _25 */, &*_26, &*_27); | |
11098 | 11207 | } |
11099 | 11208 | } |
11100 | 11209 | } |
11101 | - free$(&_15, sizeof(struct type_pure), (void (*)(void *))type_pure$dest); | |
11210 | + free$(&_17, sizeof(struct type_pure), (void (*)(void *))type_pure$dest); | |
11102 | 11211 | } |
11103 | 11212 | else |
11104 | 11213 | { |
11105 | - bool _16; | |
11214 | + bool _18; | |
11106 | 11215 | { |
11107 | - bool _17; memset(&_17, 0, sizeof(bool)); | |
11216 | + bool _19; memset(&_19, 0, sizeof(bool)); | |
11108 | 11217 | { |
11109 | - struct string _18; memset(&_18, 0, sizeof(struct string)); | |
11110 | - init$fromliteral(&_18, "swap", 4); | |
11111 | - strequ(&_17, &_18, &*callee); | |
11112 | - string$dest(&_18); | |
11218 | + struct string _20; memset(&_20, 0, sizeof(struct string)); | |
11219 | + init$fromliteral(&_20, "swap", 4); | |
11220 | + strequ(&_19, &_20, &*callee); | |
11221 | + string$dest(&_20); | |
11113 | 11222 | } |
11114 | - bool _18; memset(&_18, 0, sizeof(bool)); | |
11223 | + bool _20; memset(&_20, 0, sizeof(bool)); | |
11115 | 11224 | { |
11116 | - struct string _19; memset(&_19, 0, sizeof(struct string)); | |
11117 | - init$fromliteral(&_19, "reverse", 7); | |
11118 | - strequ(&_18, &_19, &*callee); | |
11119 | - string$dest(&_19); | |
11225 | + struct string _21; memset(&_21, 0, sizeof(struct string)); | |
11226 | + init$fromliteral(&_21, "reverse", 7); | |
11227 | + strequ(&_20, &_21, &*callee); | |
11228 | + string$dest(&_21); | |
11120 | 11229 | } |
11121 | - or(&_16, &_17, &_18); | |
11122 | - _IGNORE_(_18); | |
11123 | - _IGNORE_(_17); | |
11230 | + or(&_18, &_19, &_20); | |
11231 | + _IGNORE_(_20); | |
11232 | + _IGNORE_(_19); | |
11124 | 11233 | } |
11125 | - if(_16) | |
11234 | + if(_18) | |
11126 | 11235 | { |
11127 | - struct stack/*type_pure*/ _17; memset(&_17, 0, sizeof(struct stack/*type_pure*/)); | |
11128 | - clone$(&_17, &(*st_), sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy); | |
11129 | - if(!(_17).size) | |
11236 | + struct stack/*type_pure*/ _19; memset(&_19, 0, sizeof(struct stack/*type_pure*/)); | |
11237 | + clone$(&_19, &(*st_), sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy); | |
11238 | + if(!(_19).size) | |
11130 | 11239 | { |
11131 | 11240 | { |
11132 | 11241 | { |
11133 | - const struct StreamOut *_20 = &(*streams).err; | |
11134 | - struct string _21; memset(&_21, 0, sizeof(struct string)); | |
11135 | - init$fromliteral(&_21, "missing subtype for ", 20); | |
11136 | - PutStr(0 /* _19 */, &*_20, &_21); | |
11137 | - string$dest(&_21); | |
11242 | + const struct StreamOut *_22 = &(*streams).err; | |
11243 | + struct string _23; memset(&_23, 0, sizeof(struct string)); | |
11244 | + init$fromliteral(&_23, "missing subtype for ", 20); | |
11245 | + PutStr(0 /* _21 */, &*_22, &_23); | |
11246 | + string$dest(&_23); | |
11138 | 11247 | } |
11139 | 11248 | { |
11140 | - const struct StreamOut *_21 = &(*streams).err; | |
11141 | - PutStr(0 /* _20 */, &*_21, &*callee); | |
11249 | + const struct StreamOut *_23 = &(*streams).err; | |
11250 | + PutStr(0 /* _22 */, &*_23, &*callee); | |
11142 | 11251 | } |
11143 | 11252 | { |
11144 | - const struct StreamOut *_22 = &(*streams).err; | |
11145 | - Fail$(0 /* _21 */, &*_22, &*txtpos); | |
11253 | + const struct StreamOut *_24 = &(*streams).err; | |
11254 | + Fail$(0 /* _23 */, &*_24, &*txtpos); | |
11146 | 11255 | } |
11147 | 11256 | } |
11148 | 11257 | } |
11149 | 11258 | else |
11150 | 11259 | { |
11151 | - const struct type_pure *subtype = (_17).data; | |
11260 | + const struct type_pure *subtype = (_19).data; | |
11152 | 11261 | // NOTE: SPECIAL TREATMENT FOR BUILT-INS SUPPLYING SIZE |
11153 | 11262 | { |
11154 | 11263 | { |
11155 | - const struct StreamOut *_21 = &(*streams).out; | |
11156 | - struct string _22; memset(&_22, 0, sizeof(struct string)); | |
11157 | - init$fromliteral(&_22, ", ", 2); | |
11158 | - PutStr(0 /* _20 */, &*_21, &_22); | |
11159 | - string$dest(&_22); | |
11264 | + const struct StreamOut *_23 = &(*streams).out; | |
11265 | + struct string _24; memset(&_24, 0, sizeof(struct string)); | |
11266 | + init$fromliteral(&_24, ", ", 2); | |
11267 | + PutStr(0 /* _22 */, &*_23, &_24); | |
11268 | + string$dest(&_24); | |
11160 | 11269 | } |
11161 | 11270 | { |
11162 | - const struct StreamOut *_22 = &(*streams).out; | |
11163 | - struct stack/*structdef*/ *_23 = &(*state).structs; | |
11164 | - SizeOfPure$(0 /* _21 */, &*_22, &*_23, &*subtype); | |
11271 | + const struct StreamOut *_24 = &(*streams).out; | |
11272 | + struct stack/*structdef*/ *_25 = &(*state).structs; | |
11273 | + SizeOfPure$(0 /* _23 */, &*_24, &*_25, &*subtype); | |
11165 | 11274 | } |
11166 | 11275 | } |
11167 | 11276 | } |
11168 | - free$(&_17, sizeof(struct type_pure), (void (*)(void *))type_pure$dest); | |
11277 | + free$(&_19, sizeof(struct type_pure), (void (*)(void *))type_pure$dest); | |
11169 | 11278 | } |
11170 | 11279 | uint64_t _n; memset(&_n, 0, sizeof(uint64_t)); |
11171 | 11280 | { |
11172 | - const struct stack/*u8*/ *_17 = &(*callee).data; | |
11173 | - size(&_n, &*_17); | |
11281 | + const struct stack/*u8*/ *_19 = &(*callee).data; | |
11282 | + size(&_n, &*_19); | |
11174 | 11283 | } |
11175 | - bool _18; | |
11284 | + bool _20; | |
11176 | 11285 | { |
11177 | - uint64_t _19; memset(&_19, 0, sizeof(uint64_t)); | |
11178 | - _19 = 3; | |
11179 | - _18 = _n >= _19; | |
11180 | - _IGNORE_(_19); | |
11286 | + uint64_t _21; memset(&_21, 0, sizeof(uint64_t)); | |
11287 | + _21 = 3; | |
11288 | + _20 = _n >= _21; | |
11289 | + _IGNORE_(_21); | |
11181 | 11290 | } |
11182 | - if(_18) | |
11291 | + if(_20) | |
11183 | 11292 | { |
11184 | - bool _20; | |
11293 | + bool _22; | |
11185 | 11294 | { |
11186 | - uint64_t _21; memset(&_21, 0, sizeof(uint64_t)); | |
11187 | - _21 = 6; | |
11188 | - _20 = _n >= _21; | |
11189 | - _IGNORE_(_21); | |
11295 | + uint64_t _23; memset(&_23, 0, sizeof(uint64_t)); | |
11296 | + _23 = 6; | |
11297 | + _22 = _n >= _23; | |
11298 | + _IGNORE_(_23); | |
11190 | 11299 | } |
11191 | - if(_20) | |
11300 | + if(_22) | |
11192 | 11301 | { |
11193 | - bool _22; | |
11302 | + bool _24; | |
11194 | 11303 | { |
11195 | - bool _23; memset(&_23, 0, sizeof(bool)); | |
11304 | + bool _25; memset(&_25, 0, sizeof(bool)); | |
11196 | 11305 | { |
11197 | - bool _24; memset(&_24, 0, sizeof(bool)); | |
11306 | + bool _26; memset(&_26, 0, sizeof(bool)); | |
11198 | 11307 | { |
11199 | - bool _25; memset(&_25, 0, sizeof(bool)); | |
11308 | + bool _27; memset(&_27, 0, sizeof(bool)); | |
11200 | 11309 | { |
11201 | - uint8_t _26; memset(&_26, 0, sizeof(uint8_t)); | |
11202 | - _26 = 80; | |
11203 | - uint8_t _27; memset(&_27, 0, sizeof(uint8_t)); | |
11310 | + uint8_t _28; memset(&_28, 0, sizeof(uint8_t)); | |
11311 | + _28 = 80; | |
11312 | + uint8_t _29; memset(&_29, 0, sizeof(uint8_t)); | |
11204 | 11313 | { |
11205 | - const struct stack/*u8*/ *_28 = &(*callee).data; | |
11206 | - uint64_t _29; memset(&_29, 0, sizeof(uint64_t)); | |
11314 | + const struct stack/*u8*/ *_30 = &(*callee).data; | |
11315 | + uint64_t _31; memset(&_31, 0, sizeof(uint64_t)); | |
11207 | 11316 | { |
11208 | - uint64_t _30; memset(&_30, 0, sizeof(uint64_t)); | |
11209 | - _30 = 1; | |
11210 | - _29 = _n - _30; | |
11211 | - _IGNORE_(_30); | |
11317 | + uint64_t _32; memset(&_32, 0, sizeof(uint64_t)); | |
11318 | + _32 = 1; | |
11319 | + _31 = _n - _32; | |
11320 | + _IGNORE_(_32); | |
11212 | 11321 | } |
11213 | - at_get$(&_27, &*_28, &_29, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 2560); | |
11214 | - _IGNORE_(_29); | |
11322 | + at_get$(&_29, &*_30, &_31, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 2588); | |
11323 | + _IGNORE_(_31); | |
11215 | 11324 | } |
11216 | - _25 = _26 == _27; | |
11217 | - _IGNORE_(_27); | |
11218 | - _IGNORE_(_26); | |
11325 | + _27 = _28 == _29; | |
11326 | + _IGNORE_(_29); | |
11327 | + _IGNORE_(_28); | |
11219 | 11328 | } |
11220 | - bool _26; memset(&_26, 0, sizeof(bool)); | |
11329 | + bool _28; memset(&_28, 0, sizeof(bool)); | |
11221 | 11330 | { |
11222 | - uint8_t _27; memset(&_27, 0, sizeof(uint8_t)); | |
11223 | - _27 = 114; | |
11224 | - uint8_t _28; memset(&_28, 0, sizeof(uint8_t)); | |
11331 | + uint8_t _29; memset(&_29, 0, sizeof(uint8_t)); | |
11332 | + _29 = 114; | |
11333 | + uint8_t _30; memset(&_30, 0, sizeof(uint8_t)); | |
11225 | 11334 | { |
11226 | - const struct stack/*u8*/ *_29 = &(*callee).data; | |
11227 | - uint64_t _30; memset(&_30, 0, sizeof(uint64_t)); | |
11335 | + const struct stack/*u8*/ *_31 = &(*callee).data; | |
11336 | + uint64_t _32; memset(&_32, 0, sizeof(uint64_t)); | |
11228 | 11337 | { |
11229 | - uint64_t _31; memset(&_31, 0, sizeof(uint64_t)); | |
11230 | - _31 = 2; | |
11231 | - _30 = _n - _31; | |
11232 | - _IGNORE_(_31); | |
11338 | + uint64_t _33; memset(&_33, 0, sizeof(uint64_t)); | |
11339 | + _33 = 2; | |
11340 | + _32 = _n - _33; | |
11341 | + _IGNORE_(_33); | |
11233 | 11342 | } |
11234 | - at_get$(&_28, &*_29, &_30, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 2561); | |
11235 | - _IGNORE_(_30); | |
11343 | + at_get$(&_30, &*_31, &_32, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 2589); | |
11344 | + _IGNORE_(_32); | |
11236 | 11345 | } |
11237 | - _26 = _27 == _28; | |
11238 | - _IGNORE_(_28); | |
11239 | - _IGNORE_(_27); | |
11346 | + _28 = _29 == _30; | |
11347 | + _IGNORE_(_30); | |
11348 | + _IGNORE_(_29); | |
11240 | 11349 | } |
11241 | - and(&_24, &_25, &_26); | |
11242 | - _IGNORE_(_26); | |
11243 | - _IGNORE_(_25); | |
11350 | + and(&_26, &_27, &_28); | |
11351 | + _IGNORE_(_28); | |
11352 | + _IGNORE_(_27); | |
11244 | 11353 | } |
11245 | - bool _25; memset(&_25, 0, sizeof(bool)); | |
11354 | + bool _27; memset(&_27, 0, sizeof(bool)); | |
11246 | 11355 | { |
11247 | - bool _26; memset(&_26, 0, sizeof(bool)); | |
11356 | + bool _28; memset(&_28, 0, sizeof(bool)); | |
11248 | 11357 | { |
11249 | - uint8_t _27; memset(&_27, 0, sizeof(uint8_t)); | |
11250 | - _27 = 105; | |
11251 | - uint8_t _28; memset(&_28, 0, sizeof(uint8_t)); | |
11358 | + uint8_t _29; memset(&_29, 0, sizeof(uint8_t)); | |
11359 | + _29 = 105; | |
11360 | + uint8_t _30; memset(&_30, 0, sizeof(uint8_t)); | |
11252 | 11361 | { |
11253 | - const struct stack/*u8*/ *_29 = &(*callee).data; | |
11254 | - uint64_t _30; memset(&_30, 0, sizeof(uint64_t)); | |
11362 | + const struct stack/*u8*/ *_31 = &(*callee).data; | |
11363 | + uint64_t _32; memset(&_32, 0, sizeof(uint64_t)); | |
11255 | 11364 | { |
11256 | - uint64_t _31; memset(&_31, 0, sizeof(uint64_t)); | |
11257 | - _31 = 3; | |
11258 | - _30 = _n - _31; | |
11259 | - _IGNORE_(_31); | |
11365 | + uint64_t _33; memset(&_33, 0, sizeof(uint64_t)); | |
11366 | + _33 = 3; | |
11367 | + _32 = _n - _33; | |
11368 | + _IGNORE_(_33); | |
11260 | 11369 | } |
11261 | - at_get$(&_28, &*_29, &_30, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 2565); | |
11262 | - _IGNORE_(_30); | |
11370 | + at_get$(&_30, &*_31, &_32, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 2593); | |
11371 | + _IGNORE_(_32); | |
11263 | 11372 | } |
11264 | - _26 = _27 == _28; | |
11265 | - _IGNORE_(_28); | |
11266 | - _IGNORE_(_27); | |
11373 | + _28 = _29 == _30; | |
11374 | + _IGNORE_(_30); | |
11375 | + _IGNORE_(_29); | |
11267 | 11376 | } |
11268 | - bool _27; memset(&_27, 0, sizeof(bool)); | |
11377 | + bool _29; memset(&_29, 0, sizeof(bool)); | |
11269 | 11378 | { |
11270 | - uint8_t _28; memset(&_28, 0, sizeof(uint8_t)); | |
11271 | - _28 = 110; | |
11272 | - uint8_t _29; memset(&_29, 0, sizeof(uint8_t)); | |
11379 | + uint8_t _30; memset(&_30, 0, sizeof(uint8_t)); | |
11380 | + _30 = 110; | |
11381 | + uint8_t _31; memset(&_31, 0, sizeof(uint8_t)); | |
11273 | 11382 | { |
11274 | - const struct stack/*u8*/ *_30 = &(*callee).data; | |
11275 | - uint64_t _31; memset(&_31, 0, sizeof(uint64_t)); | |
11383 | + const struct stack/*u8*/ *_32 = &(*callee).data; | |
11384 | + uint64_t _33; memset(&_33, 0, sizeof(uint64_t)); | |
11276 | 11385 | { |
11277 | - uint64_t _32; memset(&_32, 0, sizeof(uint64_t)); | |
11278 | - _32 = 4; | |
11279 | - _31 = _n - _32; | |
11280 | - _IGNORE_(_32); | |
11386 | + uint64_t _34; memset(&_34, 0, sizeof(uint64_t)); | |
11387 | + _34 = 4; | |
11388 | + _33 = _n - _34; | |
11389 | + _IGNORE_(_34); | |
11281 | 11390 | } |
11282 | - at_get$(&_29, &*_30, &_31, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 2566); | |
11283 | - _IGNORE_(_31); | |
11391 | + at_get$(&_31, &*_32, &_33, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 2594); | |
11392 | + _IGNORE_(_33); | |
11284 | 11393 | } |
11285 | - _27 = _28 == _29; | |
11286 | - _IGNORE_(_29); | |
11287 | - _IGNORE_(_28); | |
11394 | + _29 = _30 == _31; | |
11395 | + _IGNORE_(_31); | |
11396 | + _IGNORE_(_30); | |
11288 | 11397 | } |
11289 | - and(&_25, &_26, &_27); | |
11290 | - _IGNORE_(_27); | |
11291 | - _IGNORE_(_26); | |
11398 | + and(&_27, &_28, &_29); | |
11399 | + _IGNORE_(_29); | |
11400 | + _IGNORE_(_28); | |
11292 | 11401 | } |
11293 | - and(&_23, &_24, &_25); | |
11294 | - _IGNORE_(_25); | |
11295 | - _IGNORE_(_24); | |
11402 | + and(&_25, &_26, &_27); | |
11403 | + _IGNORE_(_27); | |
11404 | + _IGNORE_(_26); | |
11296 | 11405 | } |
11297 | - bool _24; memset(&_24, 0, sizeof(bool)); | |
11406 | + bool _26; memset(&_26, 0, sizeof(bool)); | |
11298 | 11407 | { |
11299 | - bool _25; memset(&_25, 0, sizeof(bool)); | |
11408 | + bool _27; memset(&_27, 0, sizeof(bool)); | |
11300 | 11409 | { |
11301 | - uint8_t _26; memset(&_26, 0, sizeof(uint8_t)); | |
11302 | - _26 = 116; | |
11303 | - uint8_t _27; memset(&_27, 0, sizeof(uint8_t)); | |
11410 | + uint8_t _28; memset(&_28, 0, sizeof(uint8_t)); | |
11411 | + _28 = 116; | |
11412 | + uint8_t _29; memset(&_29, 0, sizeof(uint8_t)); | |
11304 | 11413 | { |
11305 | - const struct stack/*u8*/ *_28 = &(*callee).data; | |
11306 | - uint64_t _29; memset(&_29, 0, sizeof(uint64_t)); | |
11414 | + const struct stack/*u8*/ *_30 = &(*callee).data; | |
11415 | + uint64_t _31; memset(&_31, 0, sizeof(uint64_t)); | |
11307 | 11416 | { |
11308 | - uint64_t _30; memset(&_30, 0, sizeof(uint64_t)); | |
11309 | - _30 = 5; | |
11310 | - _29 = _n - _30; | |
11311 | - _IGNORE_(_30); | |
11417 | + uint64_t _32; memset(&_32, 0, sizeof(uint64_t)); | |
11418 | + _32 = 5; | |
11419 | + _31 = _n - _32; | |
11420 | + _IGNORE_(_32); | |
11312 | 11421 | } |
11313 | - at_get$(&_27, &*_28, &_29, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 2571); | |
11314 | - _IGNORE_(_29); | |
11422 | + at_get$(&_29, &*_30, &_31, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 2599); | |
11423 | + _IGNORE_(_31); | |
11315 | 11424 | } |
11316 | - _25 = _26 == _27; | |
11317 | - _IGNORE_(_27); | |
11318 | - _IGNORE_(_26); | |
11425 | + _27 = _28 == _29; | |
11426 | + _IGNORE_(_29); | |
11427 | + _IGNORE_(_28); | |
11319 | 11428 | } |
11320 | - bool _26; memset(&_26, 0, sizeof(bool)); | |
11429 | + bool _28; memset(&_28, 0, sizeof(bool)); | |
11321 | 11430 | { |
11322 | - uint8_t _27; memset(&_27, 0, sizeof(uint8_t)); | |
11323 | - _27 = 36; | |
11324 | - uint8_t _28; memset(&_28, 0, sizeof(uint8_t)); | |
11431 | + uint8_t _29; memset(&_29, 0, sizeof(uint8_t)); | |
11432 | + _29 = 36; | |
11433 | + uint8_t _30; memset(&_30, 0, sizeof(uint8_t)); | |
11325 | 11434 | { |
11326 | - const struct stack/*u8*/ *_29 = &(*callee).data; | |
11327 | - uint64_t _30; memset(&_30, 0, sizeof(uint64_t)); | |
11435 | + const struct stack/*u8*/ *_31 = &(*callee).data; | |
11436 | + uint64_t _32; memset(&_32, 0, sizeof(uint64_t)); | |
11328 | 11437 | { |
11329 | - uint64_t _31; memset(&_31, 0, sizeof(uint64_t)); | |
11330 | - _31 = 6; | |
11331 | - _30 = _n - _31; | |
11332 | - _IGNORE_(_31); | |
11438 | + uint64_t _33; memset(&_33, 0, sizeof(uint64_t)); | |
11439 | + _33 = 6; | |
11440 | + _32 = _n - _33; | |
11441 | + _IGNORE_(_33); | |
11333 | 11442 | } |
11334 | - at_get$(&_28, &*_29, &_30, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 2572); | |
11335 | - _IGNORE_(_30); | |
11443 | + at_get$(&_30, &*_31, &_32, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 2600); | |
11444 | + _IGNORE_(_32); | |
11336 | 11445 | } |
11337 | - _26 = _27 == _28; | |
11338 | - _IGNORE_(_28); | |
11339 | - _IGNORE_(_27); | |
11446 | + _28 = _29 == _30; | |
11447 | + _IGNORE_(_30); | |
11448 | + _IGNORE_(_29); | |
11340 | 11449 | } |
11341 | - and(&_24, &_25, &_26); | |
11342 | - _IGNORE_(_26); | |
11343 | - _IGNORE_(_25); | |
11450 | + and(&_26, &_27, &_28); | |
11451 | + _IGNORE_(_28); | |
11452 | + _IGNORE_(_27); | |
11344 | 11453 | } |
11345 | - and(&_22, &_23, &_24); | |
11346 | - _IGNORE_(_24); | |
11347 | - _IGNORE_(_23); | |
11454 | + and(&_24, &_25, &_26); | |
11455 | + _IGNORE_(_26); | |
11456 | + _IGNORE_(_25); | |
11348 | 11457 | } |
11349 | - if(_22) | |
11458 | + if(_24) | |
11350 | 11459 | { |
11351 | - struct stack/*type_pure*/ _23; memset(&_23, 0, sizeof(struct stack/*type_pure*/)); | |
11352 | - clone$(&_23, &(*st_), sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy); | |
11353 | - if(!(_23).size) | |
11460 | + struct stack/*type_pure*/ _25; memset(&_25, 0, sizeof(struct stack/*type_pure*/)); | |
11461 | + clone$(&_25, &(*st_), sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy); | |
11462 | + if(!(_25).size) | |
11354 | 11463 | { |
11355 | 11464 | { |
11356 | 11465 | { |
11357 | - const struct StreamOut *_26 = &(*streams).err; | |
11358 | - struct string _27; memset(&_27, 0, sizeof(struct string)); | |
11359 | - init$fromliteral(&_27, "missing subtype for ", 20); | |
11360 | - PutStr(0 /* _25 */, &*_26, &_27); | |
11361 | - string$dest(&_27); | |
11466 | + const struct StreamOut *_28 = &(*streams).err; | |
11467 | + struct string _29; memset(&_29, 0, sizeof(struct string)); | |
11468 | + init$fromliteral(&_29, "missing subtype for ", 20); | |
11469 | + PutStr(0 /* _27 */, &*_28, &_29); | |
11470 | + string$dest(&_29); | |
11362 | 11471 | } |
11363 | 11472 | { |
11364 | - const struct StreamOut *_27 = &(*streams).err; | |
11365 | - PutStr(0 /* _26 */, &*_27, &*callee); | |
11473 | + const struct StreamOut *_29 = &(*streams).err; | |
11474 | + PutStr(0 /* _28 */, &*_29, &*callee); | |
11366 | 11475 | } |
11367 | 11476 | { |
11368 | - const struct StreamOut *_28 = &(*streams).err; | |
11369 | - Fail$(0 /* _27 */, &*_28, &*txtpos); | |
11477 | + const struct StreamOut *_30 = &(*streams).err; | |
11478 | + Fail$(0 /* _29 */, &*_30, &*txtpos); | |
11370 | 11479 | } |
11371 | 11480 | } |
11372 | 11481 | } |
11373 | 11482 | else |
11374 | 11483 | { |
11375 | - const struct type_pure *subtype = (_23).data; | |
11484 | + const struct type_pure *subtype = (_25).data; | |
11376 | 11485 | { |
11377 | - struct type_pure _26; memset(&_26, 0, sizeof(struct type_pure)); | |
11378 | - type_pure$copy(&_26, &(*subtype)); | |
11379 | - switch((_26).type) | |
11486 | + struct type_pure _28; memset(&_28, 0, sizeof(struct type_pure)); | |
11487 | + type_pure$copy(&_28, &(*subtype)); | |
11488 | + switch((_28).type) | |
11380 | 11489 | { |
11381 | 11490 | case 0: // struct stack/*type_pure_normal*/ type_pure_normal: |
11382 | 11491 | { |
@@ -11384,33 +11493,33 @@ | ||
11384 | 11493 | } |
11385 | 11494 | case 1: // struct stack/*type_pure_wrapped*/ type_pure_wrapped: |
11386 | 11495 | { |
11387 | - const struct type_pure_wrapped *tw = ((_26).type_pure_wrapped).data; | |
11496 | + const struct type_pure_wrapped *tw = ((_28).type_pure_wrapped).data; | |
11388 | 11497 | { |
11389 | 11498 | { |
11390 | - const struct StreamOut *_30 = &(*streams).out; | |
11391 | - struct string _31; memset(&_31, 0, sizeof(struct string)); | |
11392 | - init$fromliteral(&_31, ", ", 2); | |
11393 | - PutStr(0 /* _29 */, &*_30, &_31); | |
11394 | - string$dest(&_31); | |
11395 | - } | |
11396 | - { | |
11397 | - const struct StreamOut *_31 = &(*streams).out; | |
11398 | - struct stack/*structdef*/ *_32 = &(*state).structs; | |
11399 | - const struct type_pure_prim *_33 = &(*tw).subtype; | |
11400 | - SizeOfPurePrim$(0 /* _30 */, &*_31, &*_32, &*_33); | |
11401 | - } | |
11402 | - { | |
11403 | 11499 | const struct StreamOut *_32 = &(*streams).out; |
11404 | 11500 | struct string _33; memset(&_33, 0, sizeof(struct string)); |
11405 | - init$fromliteral(&_33, ", (void (*)(void *, const struct StreamOut *, const void *))Print$", 66); | |
11501 | + init$fromliteral(&_33, ", ", 2); | |
11406 | 11502 | PutStr(0 /* _31 */, &*_32, &_33); |
11407 | 11503 | string$dest(&_33); |
11408 | 11504 | } |
11409 | 11505 | { |
11410 | 11506 | const struct StreamOut *_33 = &(*streams).out; |
11411 | - const struct string *_34 = &(*tw).subtype.name; | |
11412 | - PutStr(0 /* _32 */, &*_33, &*_34); | |
11507 | + struct stack/*structdef*/ *_34 = &(*state).structs; | |
11508 | + const struct type_pure_prim *_35 = &(*tw).subtype; | |
11509 | + SizeOfPurePrim$(0 /* _32 */, &*_33, &*_34, &*_35); | |
11413 | 11510 | } |
11511 | + { | |
11512 | + const struct StreamOut *_34 = &(*streams).out; | |
11513 | + struct string _35; memset(&_35, 0, sizeof(struct string)); | |
11514 | + init$fromliteral(&_35, ", (void (*)(void *, const struct StreamOut *, const void *))Print$", 66); | |
11515 | + PutStr(0 /* _33 */, &*_34, &_35); | |
11516 | + string$dest(&_35); | |
11517 | + } | |
11518 | + { | |
11519 | + const struct StreamOut *_35 = &(*streams).out; | |
11520 | + const struct string *_36 = &(*tw).subtype.name; | |
11521 | + PutStr(0 /* _34 */, &*_35, &*_36); | |
11522 | + } | |
11414 | 11523 | } |
11415 | 11524 | break; |
11416 | 11525 | } |
@@ -11420,118 +11529,118 @@ | ||
11420 | 11529 | break; |
11421 | 11530 | } |
11422 | 11531 | } |
11423 | - type_pure$dest(&_26); | |
11532 | + type_pure$dest(&_28); | |
11424 | 11533 | } |
11425 | 11534 | } |
11426 | - free$(&_23, sizeof(struct type_pure), (void (*)(void *))type_pure$dest); | |
11535 | + free$(&_25, sizeof(struct type_pure), (void (*)(void *))type_pure$dest); | |
11427 | 11536 | } |
11428 | 11537 | } |
11429 | - bool _22; | |
11538 | + bool _24; | |
11430 | 11539 | { |
11431 | - bool _23; memset(&_23, 0, sizeof(bool)); | |
11540 | + bool _25; memset(&_25, 0, sizeof(bool)); | |
11432 | 11541 | { |
11433 | - bool _24; memset(&_24, 0, sizeof(bool)); | |
11542 | + bool _26; memset(&_26, 0, sizeof(bool)); | |
11434 | 11543 | { |
11435 | - uint8_t _25; memset(&_25, 0, sizeof(uint8_t)); | |
11436 | - _25 = 99; | |
11437 | - uint8_t _26; memset(&_26, 0, sizeof(uint8_t)); | |
11544 | + uint8_t _27; memset(&_27, 0, sizeof(uint8_t)); | |
11545 | + _27 = 99; | |
11546 | + uint8_t _28; memset(&_28, 0, sizeof(uint8_t)); | |
11438 | 11547 | { |
11439 | - const struct stack/*u8*/ *_27 = &(*callee).data; | |
11440 | - uint64_t _28; memset(&_28, 0, sizeof(uint64_t)); | |
11548 | + const struct stack/*u8*/ *_29 = &(*callee).data; | |
11549 | + uint64_t _30; memset(&_30, 0, sizeof(uint64_t)); | |
11441 | 11550 | { |
11442 | - uint64_t _29; memset(&_29, 0, sizeof(uint64_t)); | |
11443 | - _29 = 1; | |
11444 | - _28 = _n - _29; | |
11445 | - _IGNORE_(_29); | |
11551 | + uint64_t _31; memset(&_31, 0, sizeof(uint64_t)); | |
11552 | + _31 = 1; | |
11553 | + _30 = _n - _31; | |
11554 | + _IGNORE_(_31); | |
11446 | 11555 | } |
11447 | - at_get$(&_26, &*_27, &_28, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 2605); | |
11448 | - _IGNORE_(_28); | |
11556 | + at_get$(&_28, &*_29, &_30, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 2633); | |
11557 | + _IGNORE_(_30); | |
11449 | 11558 | } |
11450 | - _24 = _25 == _26; | |
11451 | - _IGNORE_(_26); | |
11452 | - _IGNORE_(_25); | |
11559 | + _26 = _27 == _28; | |
11560 | + _IGNORE_(_28); | |
11561 | + _IGNORE_(_27); | |
11453 | 11562 | } |
11454 | - bool _25; memset(&_25, 0, sizeof(bool)); | |
11563 | + bool _27; memset(&_27, 0, sizeof(bool)); | |
11455 | 11564 | { |
11456 | - uint8_t _26; memset(&_26, 0, sizeof(uint8_t)); | |
11457 | - _26 = 109; | |
11458 | - uint8_t _27; memset(&_27, 0, sizeof(uint8_t)); | |
11565 | + uint8_t _28; memset(&_28, 0, sizeof(uint8_t)); | |
11566 | + _28 = 109; | |
11567 | + uint8_t _29; memset(&_29, 0, sizeof(uint8_t)); | |
11459 | 11568 | { |
11460 | - const struct stack/*u8*/ *_28 = &(*callee).data; | |
11461 | - uint64_t _29; memset(&_29, 0, sizeof(uint64_t)); | |
11569 | + const struct stack/*u8*/ *_30 = &(*callee).data; | |
11570 | + uint64_t _31; memset(&_31, 0, sizeof(uint64_t)); | |
11462 | 11571 | { |
11463 | - uint64_t _30; memset(&_30, 0, sizeof(uint64_t)); | |
11464 | - _30 = 2; | |
11465 | - _29 = _n - _30; | |
11466 | - _IGNORE_(_30); | |
11572 | + uint64_t _32; memset(&_32, 0, sizeof(uint64_t)); | |
11573 | + _32 = 2; | |
11574 | + _31 = _n - _32; | |
11575 | + _IGNORE_(_32); | |
11467 | 11576 | } |
11468 | - at_get$(&_27, &*_28, &_29, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 2606); | |
11469 | - _IGNORE_(_29); | |
11577 | + at_get$(&_29, &*_30, &_31, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 2634); | |
11578 | + _IGNORE_(_31); | |
11470 | 11579 | } |
11471 | - _25 = _26 == _27; | |
11472 | - _IGNORE_(_27); | |
11473 | - _IGNORE_(_26); | |
11580 | + _27 = _28 == _29; | |
11581 | + _IGNORE_(_29); | |
11582 | + _IGNORE_(_28); | |
11474 | 11583 | } |
11475 | - and(&_23, &_24, &_25); | |
11476 | - _IGNORE_(_25); | |
11477 | - _IGNORE_(_24); | |
11584 | + and(&_25, &_26, &_27); | |
11585 | + _IGNORE_(_27); | |
11586 | + _IGNORE_(_26); | |
11478 | 11587 | } |
11479 | - bool _24; memset(&_24, 0, sizeof(bool)); | |
11588 | + bool _26; memset(&_26, 0, sizeof(bool)); | |
11480 | 11589 | { |
11481 | - uint8_t _25; memset(&_25, 0, sizeof(uint8_t)); | |
11482 | - _25 = 112; | |
11483 | - uint8_t _26; memset(&_26, 0, sizeof(uint8_t)); | |
11590 | + uint8_t _27; memset(&_27, 0, sizeof(uint8_t)); | |
11591 | + _27 = 112; | |
11592 | + uint8_t _28; memset(&_28, 0, sizeof(uint8_t)); | |
11484 | 11593 | { |
11485 | - const struct stack/*u8*/ *_27 = &(*callee).data; | |
11486 | - uint64_t _28; memset(&_28, 0, sizeof(uint64_t)); | |
11594 | + const struct stack/*u8*/ *_29 = &(*callee).data; | |
11595 | + uint64_t _30; memset(&_30, 0, sizeof(uint64_t)); | |
11487 | 11596 | { |
11488 | - uint64_t _29; memset(&_29, 0, sizeof(uint64_t)); | |
11489 | - _29 = 3; | |
11490 | - _28 = _n - _29; | |
11491 | - _IGNORE_(_29); | |
11597 | + uint64_t _31; memset(&_31, 0, sizeof(uint64_t)); | |
11598 | + _31 = 3; | |
11599 | + _30 = _n - _31; | |
11600 | + _IGNORE_(_31); | |
11492 | 11601 | } |
11493 | - at_get$(&_26, &*_27, &_28, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 2608); | |
11494 | - _IGNORE_(_28); | |
11602 | + at_get$(&_28, &*_29, &_30, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 2636); | |
11603 | + _IGNORE_(_30); | |
11495 | 11604 | } |
11496 | - _24 = _25 == _26; | |
11497 | - _IGNORE_(_26); | |
11498 | - _IGNORE_(_25); | |
11605 | + _26 = _27 == _28; | |
11606 | + _IGNORE_(_28); | |
11607 | + _IGNORE_(_27); | |
11499 | 11608 | } |
11500 | - and(&_22, &_23, &_24); | |
11501 | - _IGNORE_(_24); | |
11502 | - _IGNORE_(_23); | |
11609 | + and(&_24, &_25, &_26); | |
11610 | + _IGNORE_(_26); | |
11611 | + _IGNORE_(_25); | |
11503 | 11612 | } |
11504 | - if(_22) | |
11613 | + if(_24) | |
11505 | 11614 | { |
11506 | - struct stack/*type_pure*/ _23; memset(&_23, 0, sizeof(struct stack/*type_pure*/)); | |
11507 | - clone$(&_23, &(*st_), sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy); | |
11508 | - if(!(_23).size) | |
11615 | + struct stack/*type_pure*/ _25; memset(&_25, 0, sizeof(struct stack/*type_pure*/)); | |
11616 | + clone$(&_25, &(*st_), sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy); | |
11617 | + if(!(_25).size) | |
11509 | 11618 | { |
11510 | 11619 | { |
11511 | 11620 | { |
11512 | - const struct StreamOut *_26 = &(*streams).err; | |
11513 | - struct string _27; memset(&_27, 0, sizeof(struct string)); | |
11514 | - init$fromliteral(&_27, "missing subtype for ", 20); | |
11515 | - PutStr(0 /* _25 */, &*_26, &_27); | |
11516 | - string$dest(&_27); | |
11621 | + const struct StreamOut *_28 = &(*streams).err; | |
11622 | + struct string _29; memset(&_29, 0, sizeof(struct string)); | |
11623 | + init$fromliteral(&_29, "missing subtype for ", 20); | |
11624 | + PutStr(0 /* _27 */, &*_28, &_29); | |
11625 | + string$dest(&_29); | |
11517 | 11626 | } |
11518 | 11627 | { |
11519 | - const struct StreamOut *_27 = &(*streams).err; | |
11520 | - PutStr(0 /* _26 */, &*_27, &*callee); | |
11628 | + const struct StreamOut *_29 = &(*streams).err; | |
11629 | + PutStr(0 /* _28 */, &*_29, &*callee); | |
11521 | 11630 | } |
11522 | 11631 | { |
11523 | - const struct StreamOut *_28 = &(*streams).err; | |
11524 | - Fail$(0 /* _27 */, &*_28, &*txtpos); | |
11632 | + const struct StreamOut *_30 = &(*streams).err; | |
11633 | + Fail$(0 /* _29 */, &*_30, &*txtpos); | |
11525 | 11634 | } |
11526 | 11635 | } |
11527 | 11636 | } |
11528 | 11637 | else |
11529 | 11638 | { |
11530 | - const struct type_pure *subtype = (_23).data; | |
11639 | + const struct type_pure *subtype = (_25).data; | |
11531 | 11640 | { |
11532 | - struct type_pure _26; memset(&_26, 0, sizeof(struct type_pure)); | |
11533 | - type_pure$copy(&_26, &(*subtype)); | |
11534 | - switch((_26).type) | |
11641 | + struct type_pure _28; memset(&_28, 0, sizeof(struct type_pure)); | |
11642 | + type_pure$copy(&_28, &(*subtype)); | |
11643 | + switch((_28).type) | |
11535 | 11644 | { |
11536 | 11645 | case 0: // struct stack/*type_pure_normal*/ type_pure_normal: |
11537 | 11646 | { |
@@ -11539,33 +11648,33 @@ | ||
11539 | 11648 | } |
11540 | 11649 | case 1: // struct stack/*type_pure_wrapped*/ type_pure_wrapped: |
11541 | 11650 | { |
11542 | - const struct type_pure_wrapped *tw = ((_26).type_pure_wrapped).data; | |
11651 | + const struct type_pure_wrapped *tw = ((_28).type_pure_wrapped).data; | |
11543 | 11652 | { |
11544 | 11653 | { |
11545 | - const struct StreamOut *_30 = &(*streams).out; | |
11546 | - struct string _31; memset(&_31, 0, sizeof(struct string)); | |
11547 | - init$fromliteral(&_31, ", ", 2); | |
11548 | - PutStr(0 /* _29 */, &*_30, &_31); | |
11549 | - string$dest(&_31); | |
11550 | - } | |
11551 | - { | |
11552 | - const struct StreamOut *_31 = &(*streams).out; | |
11553 | - struct stack/*structdef*/ *_32 = &(*state).structs; | |
11554 | - const struct type_pure_prim *_33 = &(*tw).subtype; | |
11555 | - SizeOfPurePrim$(0 /* _30 */, &*_31, &*_32, &*_33); | |
11556 | - } | |
11557 | - { | |
11558 | 11654 | const struct StreamOut *_32 = &(*streams).out; |
11559 | 11655 | struct string _33; memset(&_33, 0, sizeof(struct string)); |
11560 | - init$fromliteral(&_33, ", (void *)cmp$", 14); | |
11656 | + init$fromliteral(&_33, ", ", 2); | |
11561 | 11657 | PutStr(0 /* _31 */, &*_32, &_33); |
11562 | 11658 | string$dest(&_33); |
11563 | 11659 | } |
11564 | 11660 | { |
11565 | 11661 | const struct StreamOut *_33 = &(*streams).out; |
11566 | - const struct string *_34 = &(*tw).subtype.name; | |
11567 | - PutStr(0 /* _32 */, &*_33, &*_34); | |
11662 | + struct stack/*structdef*/ *_34 = &(*state).structs; | |
11663 | + const struct type_pure_prim *_35 = &(*tw).subtype; | |
11664 | + SizeOfPurePrim$(0 /* _32 */, &*_33, &*_34, &*_35); | |
11568 | 11665 | } |
11666 | + { | |
11667 | + const struct StreamOut *_34 = &(*streams).out; | |
11668 | + struct string _35; memset(&_35, 0, sizeof(struct string)); | |
11669 | + init$fromliteral(&_35, ", (void *)cmp$", 14); | |
11670 | + PutStr(0 /* _33 */, &*_34, &_35); | |
11671 | + string$dest(&_35); | |
11672 | + } | |
11673 | + { | |
11674 | + const struct StreamOut *_35 = &(*streams).out; | |
11675 | + const struct string *_36 = &(*tw).subtype.name; | |
11676 | + PutStr(0 /* _34 */, &*_35, &*_36); | |
11677 | + } | |
11569 | 11678 | } |
11570 | 11679 | break; |
11571 | 11680 | } |
@@ -11575,56 +11684,56 @@ | ||
11575 | 11684 | break; |
11576 | 11685 | } |
11577 | 11686 | } |
11578 | - type_pure$dest(&_26); | |
11687 | + type_pure$dest(&_28); | |
11579 | 11688 | } |
11580 | 11689 | } |
11581 | - free$(&_23, sizeof(struct type_pure), (void (*)(void *))type_pure$dest); | |
11690 | + free$(&_25, sizeof(struct type_pure), (void (*)(void *))type_pure$dest); | |
11582 | 11691 | } |
11583 | 11692 | } |
11584 | - bool _20; | |
11693 | + bool _22; | |
11585 | 11694 | { |
11586 | - struct string _21; memset(&_21, 0, sizeof(struct string)); | |
11587 | - init$fromliteral(&_21, "strcat$", 7); | |
11588 | - strequ(&_20, &_21, &*callee); | |
11589 | - string$dest(&_21); | |
11695 | + struct string _23; memset(&_23, 0, sizeof(struct string)); | |
11696 | + init$fromliteral(&_23, "strcat$", 7); | |
11697 | + strequ(&_22, &_23, &*callee); | |
11698 | + string$dest(&_23); | |
11590 | 11699 | } |
11591 | - if(_20) | |
11700 | + if(_22) | |
11592 | 11701 | { |
11593 | 11702 | { |
11594 | - const struct StreamOut *_22 = &(*streams).out; | |
11595 | - struct string _23; memset(&_23, 0, sizeof(struct string)); | |
11596 | - init$fromliteral(&_23, ", ", 2); | |
11597 | - PutStr(0 /* _21 */, &*_22, &_23); | |
11598 | - string$dest(&_23); | |
11703 | + const struct StreamOut *_24 = &(*streams).out; | |
11704 | + struct string _25; memset(&_25, 0, sizeof(struct string)); | |
11705 | + init$fromliteral(&_25, ", ", 2); | |
11706 | + PutStr(0 /* _23 */, &*_24, &_25); | |
11707 | + string$dest(&_25); | |
11599 | 11708 | } |
11600 | 11709 | { |
11601 | - const struct StreamOut *_23 = &(*streams).out; | |
11602 | - uint64_t *_24 = &(*txtpos).line; | |
11603 | - Print$u64(0 /* _22 */, &*_23, &*_24); | |
11710 | + const struct StreamOut *_25 = &(*streams).out; | |
11711 | + uint64_t *_26 = &(*txtpos).line; | |
11712 | + Print$u64(0 /* _24 */, &*_25, &*_26); | |
11604 | 11713 | } |
11605 | 11714 | } |
11606 | 11715 | _IGNORE_(_n); |
11607 | 11716 | } |
11608 | 11717 | { |
11609 | - const struct StreamOut *_16 = &(*streams).out; | |
11610 | - struct string _17; memset(&_17, 0, sizeof(struct string)); | |
11611 | - init$fromliteral(&_17, ");\n", 3); | |
11612 | - PutStr(0 /* _15 */, &*_16, &_17); | |
11613 | - string$dest(&_17); | |
11718 | + const struct StreamOut *_18 = &(*streams).out; | |
11719 | + struct string _19; memset(&_19, 0, sizeof(struct string)); | |
11720 | + init$fromliteral(&_19, ");\n", 3); | |
11721 | + PutStr(0 /* _17 */, &*_18, &_19); | |
11722 | + string$dest(&_19); | |
11614 | 11723 | } |
11615 | 11724 | } |
11616 | 11725 | } |
11617 | 11726 | { |
11618 | - uint8_t _7; memset(&_7, 0, sizeof(uint8_t)); | |
11619 | - _7 = 41; | |
11620 | - AssertGet$(0 /* _6 */, &*streams, &*txtpos, &*level, &_7); | |
11621 | - _IGNORE_(_7); | |
11727 | + uint8_t _9; memset(&_9, 0, sizeof(uint8_t)); | |
11728 | + _9 = 41; | |
11729 | + AssertGet$(0 /* _8 */, &*streams, &*txtpos, &*level, &_9); | |
11730 | + _IGNORE_(_9); | |
11622 | 11731 | } |
11623 | 11732 | // TODO: place result into variable of function-result-type instead of store & use same in following lines |
11624 | 11733 | { |
11625 | - const struct StreamOut *_8 = &(*streams).err; | |
11626 | - const struct type_pure *_9 = &(*store).qt.type; | |
11627 | - AssertResultTypePure$(0 /* _7 */, &*_8, &*txtpos, &*callee, &*_9, &*retype); | |
11734 | + const struct StreamOut *_10 = &(*streams).err; | |
11735 | + const struct type_pure *_11 = &(*store).qt.type; | |
11736 | + AssertResultTypePure$(0 /* _9 */, &*_10, &*txtpos, &*callee, &*_11, &*retype); | |
11628 | 11737 | } |
11629 | 11738 | //let mut var test = varinit(store); |
11630 | 11739 | //ParsePath$(txtpos, level, structs, tmpnr, test); |
@@ -11631,7 +11740,7 @@ | ||
11631 | 11740 | } |
11632 | 11741 | } |
11633 | 11742 | |
11634 | -void ParseLs$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct qtypepureid *store, const bool *partial, const bool *action, const struct string *self, const uint64_t *parnr, const struct def *def, const uint64_t *paridx, const uint64_t *base, const struct string *callee, const struct stack/*type_pure*/ *st_, const struct type_pure *retype) | |
11743 | +void ParseLs$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct qtypepureid *store, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified, const uint64_t *parnr, const struct def *def, const uint64_t *paridx, const uint64_t *base, const struct string *callee, const struct stack/*type_pure*/ *st_, const struct type_pure *retype) | |
11635 | 11744 | { |
11636 | 11745 | { |
11637 | 11746 | bool _2; |
@@ -11688,7 +11797,7 @@ | ||
11688 | 11797 | struct qtype _7; memset(&_7, 0, sizeof(struct qtype)); |
11689 | 11798 | { |
11690 | 11799 | const struct stack/*qtype*/ *_8 = &(*def).elems; |
11691 | - at_get$(&_7, &*_8, &*paridx, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 2667); | |
11800 | + at_get$(&_7, &*_8, &*paridx, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 2695); | |
11692 | 11801 | } |
11693 | 11802 | PurifySubQType$(&_partyp, &*_6, &*txtpos, &_7); |
11694 | 11803 | qtype$dest(&_7); |
@@ -11702,7 +11811,7 @@ | ||
11702 | 11811 | struct qtype _7; memset(&_7, 0, sizeof(struct qtype)); |
11703 | 11812 | { |
11704 | 11813 | const struct stack/*qtype*/ *_8 = &(*def).elems; |
11705 | - at_get$(&_7, &*_8, &*paridx, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 2668); | |
11814 | + at_get$(&_7, &*_8, &*paridx, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 2696); | |
11706 | 11815 | } |
11707 | 11816 | ApplySubQTypePure$(&_partyp, &*_6, &*txtpos, &_7, &*solid); |
11708 | 11817 | qtype$dest(&_7); |
@@ -11729,7 +11838,7 @@ | ||
11729 | 11838 | _8 = *paridx + _9; |
11730 | 11839 | _IGNORE_(_9); |
11731 | 11840 | } |
11732 | - ParseArg$(0 /* _6 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &_7, &*partial, &*action, &*self, &*parnr, &*def, &_8, &*base, &*callee, &*st_, &*retype); | |
11841 | + ParseArg$(0 /* _6 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &_7, &*partial, &*action, &*self, &*reduced_ids, &*verified, &*parnr, &*def, &_8, &*base, &*callee, &*st_, &*retype); | |
11733 | 11842 | _IGNORE_(_8); |
11734 | 11843 | qtypepureid$dest(&_7); |
11735 | 11844 | } |
@@ -11738,13 +11847,13 @@ | ||
11738 | 11847 | else |
11739 | 11848 | { |
11740 | 11849 | { |
11741 | - ParseCC$(0 /* _3 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*def, &*paridx, &*store, &*base, &*callee, &*st_, &*retype); | |
11850 | + ParseCC$(0 /* _3 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*def, &*paridx, &*store, &*partial, &*action, &*self, &*reduced_ids, &*verified, &*base, &*callee, &*st_, &*retype); | |
11742 | 11851 | } |
11743 | 11852 | } |
11744 | 11853 | } |
11745 | 11854 | } |
11746 | 11855 | |
11747 | -void ParseLS$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct def *def, const uint64_t *paridx, const bool *partial, const bool *action, const struct string *self, const struct qtypepureid *store, const uint64_t *base, const struct string *callee, const struct stack/*type_pure*/ *st_, const struct type_pure *retype) | |
11856 | +void ParseLS$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct def *def, const uint64_t *paridx, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified, const struct qtypepureid *store, const uint64_t *base, const struct string *callee, const struct stack/*type_pure*/ *st_, const struct type_pure *retype) | |
11748 | 11857 | { |
11749 | 11858 | { |
11750 | 11859 | uint64_t _parnr; memset(&_parnr, 0, sizeof(uint64_t)); |
@@ -11810,7 +11919,7 @@ | ||
11810 | 11919 | struct qtype _8; memset(&_8, 0, sizeof(struct qtype)); |
11811 | 11920 | { |
11812 | 11921 | const struct stack/*qtype*/ *_9 = &(*def).elems; |
11813 | - at_get$(&_8, &*_9, &*paridx, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 2693); | |
11922 | + at_get$(&_8, &*_9, &*paridx, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 2721); | |
11814 | 11923 | } |
11815 | 11924 | PurifySubQType$(&_partyp, &*_7, &*txtpos, &_8); |
11816 | 11925 | qtype$dest(&_8); |
@@ -11824,7 +11933,7 @@ | ||
11824 | 11933 | struct qtype _8; memset(&_8, 0, sizeof(struct qtype)); |
11825 | 11934 | { |
11826 | 11935 | const struct stack/*qtype*/ *_9 = &(*def).elems; |
11827 | - at_get$(&_8, &*_9, &*paridx, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 2694); | |
11936 | + at_get$(&_8, &*_9, &*paridx, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 2722); | |
11828 | 11937 | } |
11829 | 11938 | ApplySubQTypePure$(&_partyp, &*_7, &*txtpos, &_8, &*solid); |
11830 | 11939 | qtype$dest(&_8); |
@@ -11851,7 +11960,7 @@ | ||
11851 | 11960 | _9 = *paridx + _10; |
11852 | 11961 | _IGNORE_(_10); |
11853 | 11962 | } |
11854 | - ParseArg$(0 /* _7 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &_8, &*partial, &*action, &*self, &_parnr, &*def, &_9, &*base, &*callee, &*st_, &*retype); | |
11963 | + ParseArg$(0 /* _7 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &_8, &*partial, &*action, &*self, &*reduced_ids, &*verified, &_parnr, &*def, &_9, &*base, &*callee, &*st_, &*retype); | |
11855 | 11964 | _IGNORE_(_9); |
11856 | 11965 | qtypepureid$dest(&_8); |
11857 | 11966 | } |
@@ -11860,7 +11969,7 @@ | ||
11860 | 11969 | else |
11861 | 11970 | { |
11862 | 11971 | { |
11863 | - ParseCC$(0 /* _4 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*def, &*paridx, &*store, &*base, &*callee, &*st_, &*retype); | |
11972 | + ParseCC$(0 /* _4 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*def, &*paridx, &*store, &*partial, &*action, &*self, &*reduced_ids, &*verified, &*base, &*callee, &*st_, &*retype); | |
11864 | 11973 | } |
11865 | 11974 | } |
11866 | 11975 | _IGNORE_(_parnr); |
@@ -11867,147 +11976,260 @@ | ||
11867 | 11976 | } |
11868 | 11977 | } |
11869 | 11978 | |
11870 | -// Parse something that can be either returned or assigned to, e.g. x.a.b.c = y | |
11871 | -void ParseArg$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct qtypepureid *store, const struct qtypepureid *par, const bool *partial, const bool *action, const struct string *self, const uint64_t *parnr, const struct def *def, uint64_t *paridx, const uint64_t *base, const struct string *callee, const struct stack/*type_pure*/ *st_, const struct type_pure *retype) | |
11979 | +void verify_reduced$(bool *_0, const struct stack/*ReducedId*/ *reduced_ids, const uint64_t *idx, const struct ReducedId *ri) | |
11872 | 11980 | { |
11981 | + bool _1; | |
11873 | 11982 | { |
11874 | - struct string _id; memset(&_id, 0, sizeof(struct string)); | |
11983 | + uint64_t _2; memset(&_2, 0, sizeof(uint64_t)); | |
11875 | 11984 | { |
11876 | - ParseId$(&_id, &*streams, &*txtpos, &*level); | |
11985 | + size(&_2, &*reduced_ids); | |
11877 | 11986 | } |
11878 | - // let is only allowed in a statement | |
11987 | + _1 = *idx < _2; | |
11988 | + _IGNORE_(_2); | |
11989 | + } | |
11990 | + if(_1) | |
11991 | + { | |
11879 | 11992 | bool _2; |
11880 | 11993 | { |
11881 | - struct string _3; memset(&_3, 0, sizeof(struct string)); | |
11882 | - init$fromliteral(&_3, "let", 3); | |
11883 | - strequ(&_2, &_id, &_3); | |
11884 | - string$dest(&_3); | |
11994 | + struct cmp _3; memset(&_3, 0, sizeof(struct cmp)); | |
11995 | + { | |
11996 | + struct ReducedId _4; memset(&_4, 0, sizeof(struct ReducedId)); | |
11997 | + { | |
11998 | + at_get$(&_4, &*reduced_ids, &*idx, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest, (void (*)(void *, const void *))ReducedId$copy, 2734); | |
11999 | + } | |
12000 | + cmp$ReducedId(&_3, &_4, &*ri); | |
12001 | + ReducedId$dest(&_4); | |
12002 | + } | |
12003 | + is_equ(&_2, &_3); | |
12004 | + cmp$dest(&_3); | |
11885 | 12005 | } |
11886 | 12006 | if(_2) |
11887 | 12007 | { |
12008 | + *_0 = 1; | |
12009 | + } | |
12010 | + else | |
12011 | + { | |
11888 | 12012 | { |
11889 | - const struct StreamOut *_4 = &(*streams).err; | |
11890 | - struct string _5; memset(&_5, 0, sizeof(struct string)); | |
11891 | - init$fromliteral(&_5, "let is not allowed in expression", 32); | |
11892 | - PutStr(0 /* _3 */, &*_4, &_5); | |
11893 | - string$dest(&_5); | |
12013 | + uint64_t _3; memset(&_3, 0, sizeof(uint64_t)); | |
12014 | + { | |
12015 | + uint64_t _4; memset(&_4, 0, sizeof(uint64_t)); | |
12016 | + _4 = 1; | |
12017 | + _3 = _4 + *idx; | |
12018 | + _IGNORE_(_4); | |
12019 | + } | |
12020 | + verify_reduced$(&*_0, &*reduced_ids, &_3, &*ri); | |
12021 | + _IGNORE_(_3); | |
11894 | 12022 | } |
12023 | + } | |
12024 | + } | |
12025 | + else | |
12026 | + { | |
12027 | + *_0 = 0; | |
12028 | + } | |
12029 | +} | |
12030 | + | |
12031 | +// Parse something that can be either returned or assigned to, e.g. x.a.b.c = y | |
12032 | +void ParseArg$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct qtypepureid *store, const struct qtypepureid *par, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified_, const uint64_t *parnr, const struct def *def, uint64_t *paridx, const uint64_t *base, const struct string *callee, const struct stack/*type_pure*/ *st_, const struct type_pure *retype) | |
12033 | +{ | |
12034 | + { | |
12035 | + struct string _id; memset(&_id, 0, sizeof(struct string)); | |
12036 | + { | |
12037 | + ParseId$(&_id, &*streams, &*txtpos, &*level); | |
12038 | + } | |
12039 | + bool _verified; memset(&_verified, 0, sizeof(bool)); | |
12040 | + bool _1; | |
12041 | + { | |
12042 | + bool _2; memset(&_2, 0, sizeof(bool)); | |
11895 | 12043 | { |
11896 | - const struct StreamOut *_5 = &(*streams).err; | |
11897 | - Fail$(0 /* _4 */, &*_5, &*txtpos); | |
12044 | + not(&_2, &*partial); | |
11898 | 12045 | } |
12046 | + bool _3; memset(&_3, 0, sizeof(bool)); | |
12047 | + { | |
12048 | + strequ(&_3, &*callee, &*self); | |
12049 | + } | |
12050 | + and(&_1, &_2, &_3); | |
12051 | + _IGNORE_(_3); | |
12052 | + _IGNORE_(_2); | |
11899 | 12053 | } |
11900 | - bool _4; | |
12054 | + if(_1) | |
11901 | 12055 | { |
11902 | - const struct type_pure *_5 = &(*par).qt.type; | |
11903 | - ispurevoid(&_4, &*_5); | |
12056 | + { | |
12057 | + struct ReducedId _ri; memset(&_ri, 0, sizeof(struct ReducedId)); | |
12058 | + { | |
12059 | + uint64_t _2; memset(&_2, 0, sizeof(uint64_t)); | |
12060 | + { | |
12061 | + uint64_t _3; memset(&_3, 0, sizeof(uint64_t)); | |
12062 | + _3 = 1; | |
12063 | + _2 = *paridx - _3; | |
12064 | + _IGNORE_(_3); | |
12065 | + } | |
12066 | + ReducedId(&_ri, &_2, &_id); | |
12067 | + _IGNORE_(_2); | |
12068 | + } | |
12069 | + //PutStr(streams.err, "TEST "); | |
12070 | + //PutStr(streams.err, "param "); | |
12071 | + //Print<ReducedId>(streams.err, ri); | |
12072 | + //PutStr(streams.err, " reduced-list "); | |
12073 | + //Print<stack<ReducedId>>(streams.err, reduced_ids); | |
12074 | + //if verify_reduced$(reduced_ids, 0, ri) then | |
12075 | + //{ | |
12076 | + // PutStr(streams.err, " CHECK"); | |
12077 | + //}; | |
12078 | + //PutStrLn(streams.err, ""); | |
12079 | + bool _2; memset(&_2, 0, sizeof(bool)); | |
12080 | + { | |
12081 | + bool _3; memset(&_3, 0, sizeof(bool)); | |
12082 | + { | |
12083 | + uint64_t _4; memset(&_4, 0, sizeof(uint64_t)); | |
12084 | + _4 = 0; | |
12085 | + verify_reduced$(&_3, &*reduced_ids, &_4, &_ri); | |
12086 | + _IGNORE_(_4); | |
12087 | + } | |
12088 | + or(&_2, &*verified_, &_3); | |
12089 | + _IGNORE_(_3); | |
12090 | + } | |
12091 | + _verified = _2; | |
12092 | + _IGNORE_(_2); | |
12093 | + ReducedId$dest(&_ri); | |
12094 | + } | |
11904 | 12095 | } |
11905 | - if(_4) | |
12096 | + else | |
11906 | 12097 | { |
12098 | + _verified = (*verified_); | |
12099 | + } | |
12100 | + // let is only allowed in a statement | |
12101 | + bool _3; | |
12102 | + { | |
12103 | + struct string _4; memset(&_4, 0, sizeof(struct string)); | |
12104 | + init$fromliteral(&_4, "let", 3); | |
12105 | + strequ(&_3, &_id, &_4); | |
12106 | + string$dest(&_4); | |
12107 | + } | |
12108 | + if(_3) | |
12109 | + { | |
11907 | 12110 | { |
12111 | + const struct StreamOut *_5 = &(*streams).err; | |
12112 | + struct string _6; memset(&_6, 0, sizeof(struct string)); | |
12113 | + init$fromliteral(&_6, "let is not allowed in expression", 32); | |
12114 | + PutStr(0 /* _4 */, &*_5, &_6); | |
12115 | + string$dest(&_6); | |
12116 | + } | |
12117 | + { | |
11908 | 12118 | const struct StreamOut *_6 = &(*streams).err; |
11909 | - struct string _7; memset(&_7, 0, sizeof(struct string)); | |
11910 | - init$fromliteral(&_7, "INTERNAL ERROR: void in ParseArg$", 33); | |
11911 | - PutStr(0 /* _5 */, &*_6, &_7); | |
11912 | - string$dest(&_7); | |
12119 | + Fail$(0 /* _5 */, &*_6, &*txtpos); | |
11913 | 12120 | } |
12121 | + } | |
12122 | + bool _5; | |
12123 | + { | |
12124 | + const struct type_pure *_6 = &(*par).qt.type; | |
12125 | + ispurevoid(&_5, &*_6); | |
12126 | + } | |
12127 | + if(_5) | |
12128 | + { | |
11914 | 12129 | { |
11915 | 12130 | const struct StreamOut *_7 = &(*streams).err; |
11916 | - Fail$(0 /* _6 */, &*_7, &*txtpos); | |
12131 | + struct string _8; memset(&_8, 0, sizeof(struct string)); | |
12132 | + init$fromliteral(&_8, "INTERNAL ERROR: void in ParseArg$", 33); | |
12133 | + PutStr(0 /* _6 */, &*_7, &_8); | |
12134 | + string$dest(&_8); | |
11917 | 12135 | } |
12136 | + { | |
12137 | + const struct StreamOut *_8 = &(*streams).err; | |
12138 | + Fail$(0 /* _7 */, &*_8, &*txtpos); | |
12139 | + } | |
11918 | 12140 | } |
11919 | - struct stack/*u64*/ _5; memset(&_5, 0, sizeof(struct stack/*u64*/)); | |
12141 | + struct stack/*u64*/ _6; memset(&_6, 0, sizeof(struct stack/*u64*/)); | |
11920 | 12142 | { |
11921 | - FindPr$(&_5, &*txtpos, &*scope, &_id); | |
12143 | + FindParOrVar$(&_6, &*txtpos, &*scope, &_id); | |
11922 | 12144 | } |
11923 | - if(!(_5).size) | |
12145 | + if(!(_6).size) | |
11924 | 12146 | { |
11925 | 12147 | // anonymous / hidden storage: use temporary name |
11926 | 12148 | { |
11927 | 12149 | struct qtypepureid _provide; memset(&_provide, 0, sizeof(struct qtypepureid)); |
11928 | 12150 | { |
11929 | - const struct qtypepure *_7 = &(*par).qt; | |
11930 | - struct string _8; memset(&_8, 0, sizeof(struct string)); | |
12151 | + const struct qtypepure *_8 = &(*par).qt; | |
12152 | + struct string _9; memset(&_9, 0, sizeof(struct string)); | |
11931 | 12153 | { |
11932 | - GenVar$(&_8, &*tmpnr); | |
12154 | + GenVar$(&_9, &*tmpnr); | |
11933 | 12155 | } |
11934 | - qtypepureid(&_provide, &*_7, &_8); | |
11935 | - string$dest(&_8); | |
12156 | + qtypepureid(&_provide, &*_8, &_9); | |
12157 | + string$dest(&_9); | |
11936 | 12158 | } |
11937 | 12159 | // Make mutable ONCE, for initialization. |
11938 | 12160 | struct qtypepureid _mut_pv; memset(&_mut_pv, 0, sizeof(struct qtypepureid)); |
11939 | 12161 | { |
11940 | - struct qtypepure _7; memset(&_7, 0, sizeof(struct qtypepure)); | |
12162 | + struct qtypepure _8; memset(&_8, 0, sizeof(struct qtypepure)); | |
11941 | 12163 | { |
11942 | - struct type_pure *_8 = &(_provide).qt.type; | |
11943 | - mutqtp(&_7, &*_8); | |
12164 | + struct type_pure *_9 = &(_provide).qt.type; | |
12165 | + mutqtp(&_8, &*_9); | |
11944 | 12166 | } |
11945 | - struct string *_8 = &(_provide).id; | |
11946 | - qtypepureid(&_mut_pv, &_7, &*_8); | |
11947 | - qtypepure$dest(&_7); | |
12167 | + struct string *_9 = &(_provide).id; | |
12168 | + qtypepureid(&_mut_pv, &_8, &*_9); | |
12169 | + qtypepure$dest(&_8); | |
11948 | 12170 | } |
11949 | 12171 | { |
11950 | - const struct StreamOut *_8 = &(*streams).out; | |
11951 | - struct stack/*structdef*/ *_9 = &(*state).structs; | |
11952 | - EmitLet$(0 /* _7 */, &*_8, &*txtpos, &*level, &*_9, &_mut_pv); | |
12172 | + const struct StreamOut *_9 = &(*streams).out; | |
12173 | + struct stack/*structdef*/ *_10 = &(*state).structs; | |
12174 | + EmitLet$(0 /* _8 */, &*_9, &*txtpos, &*level, &*_10, &_mut_pv); | |
11953 | 12175 | } |
11954 | 12176 | // if stack need to free... |
11955 | 12177 | // No type-check necessary since storage is generated having expected type, and intended to be assigned to! |
11956 | 12178 | { |
11957 | - struct stack/*qtypepureid*/ _9; memset(&_9, 0, sizeof(struct stack/*qtypepureid*/)); | |
12179 | + struct stack/*qtypepureid*/ _10; memset(&_10, 0, sizeof(struct stack/*qtypepureid*/)); | |
11958 | 12180 | { |
11959 | - solid(&_9, &_mut_pv, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2734); | |
12181 | + solid(&_10, &_mut_pv, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2792); | |
11960 | 12182 | } |
11961 | - ParseExpr$(0 /* _8 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_9, &_id, &*partial, &*action, &*self); | |
11962 | - free$(&_9, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); | |
12183 | + ParseExpr$(0 /* _9 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_10, &_id, &*partial, &*action, &*self, &*reduced_ids, &_verified); | |
12184 | + free$(&_10, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); | |
11963 | 12185 | } |
11964 | 12186 | { |
11965 | - struct var _10; memset(&_10, 0, sizeof(struct var)); | |
12187 | + struct var _11; memset(&_11, 0, sizeof(struct var)); | |
11966 | 12188 | { |
11967 | - varused(&_10, &_provide); | |
12189 | + varused(&_11, &_provide); | |
11968 | 12190 | } |
11969 | - push(0 /* _9 */, &*scope, &_10, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2736); | |
11970 | - var$dest(&_10); | |
12191 | + push(0 /* _10 */, &*scope, &_11, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2794); | |
12192 | + var$dest(&_11); | |
11971 | 12193 | } |
11972 | 12194 | { |
11973 | - uint64_t _11; memset(&_11, 0, sizeof(uint64_t)); | |
12195 | + uint64_t _12; memset(&_12, 0, sizeof(uint64_t)); | |
11974 | 12196 | { |
11975 | - uint64_t _12; memset(&_12, 0, sizeof(uint64_t)); | |
11976 | - _12 = 1; | |
11977 | - _11 = *parnr + _12; | |
11978 | - _IGNORE_(_12); | |
12197 | + uint64_t _13; memset(&_13, 0, sizeof(uint64_t)); | |
12198 | + _13 = 1; | |
12199 | + _12 = *parnr + _13; | |
12200 | + _IGNORE_(_13); | |
11979 | 12201 | } |
11980 | - ParseLs$(0 /* _10 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self, &_11, &*def, &*paridx, &*base, &*callee, &*st_, &*retype); | |
11981 | - _IGNORE_(_11); | |
12202 | + ParseLs$(0 /* _11 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self, &*reduced_ids, &_verified, &_12, &*def, &*paridx, &*base, &*callee, &*st_, &*retype); | |
12203 | + _IGNORE_(_12); | |
11982 | 12204 | } |
11983 | 12205 | { |
11984 | - const struct StreamOut *_12 = &(*streams).out; | |
11985 | - Indent$(0 /* _11 */, &*_12, &*level); | |
11986 | - } | |
11987 | - { | |
11988 | 12206 | const struct StreamOut *_13 = &(*streams).out; |
11989 | - struct type_pure *_14 = &(_provide).qt.type; | |
11990 | - FreeIn(0 /* _12 */, &*_13, &*_14); | |
12207 | + Indent(0 /* _12 */, &*_13, &*level); | |
11991 | 12208 | } |
11992 | 12209 | { |
11993 | 12210 | const struct StreamOut *_14 = &(*streams).out; |
11994 | - struct string *_15 = &(_provide).id; | |
11995 | - PutStr(0 /* _13 */, &*_14, &*_15); | |
12211 | + struct type_pure *_15 = &(_provide).qt.type; | |
12212 | + FreeIn(0 /* _13 */, &*_14, &*_15); | |
11996 | 12213 | } |
11997 | 12214 | { |
11998 | 12215 | const struct StreamOut *_15 = &(*streams).out; |
11999 | - const struct StreamOut *_16 = &(*streams).err; | |
12000 | - struct stack/*structdef*/ *_17 = &(*state).structs; | |
12001 | - struct type_pure *_18 = &(_provide).qt.type; | |
12002 | - FreeOut$(0 /* _14 */, &*_15, &*_16, &*txtpos, &*_17, &*_18); | |
12216 | + struct string *_16 = &(_provide).id; | |
12217 | + PutStr(0 /* _14 */, &*_15, &*_16); | |
12003 | 12218 | } |
12004 | 12219 | { |
12005 | 12220 | const struct StreamOut *_16 = &(*streams).out; |
12006 | - struct string _17; memset(&_17, 0, sizeof(struct string)); | |
12007 | - init$fromliteral(&_17, "\n", 1); | |
12008 | - PutStr(0 /* _15 */, &*_16, &_17); | |
12009 | - string$dest(&_17); | |
12221 | + const struct StreamOut *_17 = &(*streams).err; | |
12222 | + struct stack/*structdef*/ *_18 = &(*state).structs; | |
12223 | + struct type_pure *_19 = &(_provide).qt.type; | |
12224 | + FreeOut$(0 /* _15 */, &*_16, &*_17, &*txtpos, &*_18, &*_19); | |
12010 | 12225 | } |
12226 | + { | |
12227 | + const struct StreamOut *_17 = &(*streams).out; | |
12228 | + struct string _18; memset(&_18, 0, sizeof(struct string)); | |
12229 | + init$fromliteral(&_18, "\n", 1); | |
12230 | + PutStr(0 /* _16 */, &*_17, &_18); | |
12231 | + string$dest(&_18); | |
12232 | + } | |
12011 | 12233 | qtypepureid$dest(&_mut_pv); |
12012 | 12234 | qtypepureid$dest(&_provide); |
12013 | 12235 | } |
@@ -12014,78 +12236,79 @@ | ||
12014 | 12236 | } |
12015 | 12237 | else |
12016 | 12238 | { |
12017 | - const uint64_t *pos = (_5).data; | |
12239 | + const uint64_t *pos = (_6).data; | |
12018 | 12240 | { |
12019 | 12241 | struct var _provide; memset(&_provide, 0, sizeof(struct var)); |
12020 | 12242 | { |
12021 | - at_get$(&_provide, &*scope, &*pos, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2744); | |
12243 | + at_get$(&_provide, &*scope, &*pos, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2802); | |
12022 | 12244 | } |
12023 | - bool *_8 = &(_provide).used; | |
12024 | - *_8 = 1; | |
12245 | + bool *_9 = &(_provide).used; | |
12246 | + *_9 = 1; | |
12025 | 12247 | // mark argument used |
12026 | 12248 | { |
12027 | - at_set$(0 /* _9 */, &*scope, &*pos, &_provide, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2746); | |
12249 | + at_set$(0 /* _10 */, &*scope, &*pos, &_provide, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2804); | |
12028 | 12250 | } |
12029 | 12251 | // store changed (marked used) |
12030 | 12252 | { |
12031 | - struct stack/*structdef*/ *_11 = &(*state).structs; | |
12032 | - ParsePath$(0 /* _10 */, &*streams, &*txtpos, &*level, &*_11, &*tmpnr, &_provide); | |
12253 | + struct stack/*structdef*/ *_12 = &(*state).structs; | |
12254 | + ParsePath$(0 /* _11 */, &*streams, &*txtpos, &*level, &*_12, &*tmpnr, &_provide); | |
12033 | 12255 | } |
12034 | 12256 | // copy store to top since only last in block is returned |
12035 | 12257 | // e.g. t test(t x, t y) {x = y} |
12036 | 12258 | { |
12037 | - push(0 /* _11 */, &*scope, &_provide, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2752); | |
12259 | + push(0 /* _12 */, &*scope, &_provide, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2810); | |
12038 | 12260 | } |
12039 | 12261 | // assignment to already declared parameter |
12040 | - bool _13; | |
12262 | + bool _14; | |
12041 | 12263 | { |
12042 | - uint8_t _14; memset(&_14, 0, sizeof(uint8_t)); | |
12043 | - _14 = 61; | |
12044 | - MatchOptional$(&_13, &*streams, &*txtpos, &*level, &_14); | |
12045 | - _IGNORE_(_14); | |
12264 | + uint8_t _15; memset(&_15, 0, sizeof(uint8_t)); | |
12265 | + _15 = 61; | |
12266 | + MatchOptional$(&_14, &*streams, &*txtpos, &*level, &_15); | |
12267 | + _IGNORE_(_15); | |
12046 | 12268 | } |
12047 | - if(_13) | |
12269 | + if(_14) | |
12048 | 12270 | { |
12049 | 12271 | { |
12050 | - const struct StreamOut *_15 = &(*streams).err; | |
12051 | - struct string _16; memset(&_16, 0, sizeof(struct string)); | |
12052 | - init$fromliteral(&_16, "assignment not allowed in expression", 36); | |
12053 | - PutStr(0 /* _14 */, &*_15, &_16); | |
12054 | - string$dest(&_16); | |
12055 | - } | |
12056 | - { | |
12057 | 12272 | const struct StreamOut *_16 = &(*streams).err; |
12058 | - struct qtypepureid *_17 = &(_provide).qti; | |
12059 | - EPrQTPI(0 /* _15 */, &*_16, &*_17); | |
12273 | + struct string _17; memset(&_17, 0, sizeof(struct string)); | |
12274 | + init$fromliteral(&_17, "assignment not allowed in expression", 36); | |
12275 | + PutStr(0 /* _15 */, &*_16, &_17); | |
12276 | + string$dest(&_17); | |
12060 | 12277 | } |
12061 | 12278 | { |
12062 | 12279 | const struct StreamOut *_17 = &(*streams).err; |
12063 | - Fail$(0 /* _16 */, &*_17, &*txtpos); | |
12280 | + struct qtypepureid *_18 = &(_provide).qti; | |
12281 | + EPrQTPI(0 /* _16 */, &*_17, &*_18); | |
12064 | 12282 | } |
12283 | + { | |
12284 | + const struct StreamOut *_18 = &(*streams).err; | |
12285 | + Fail$(0 /* _17 */, &*_18, &*txtpos); | |
12286 | + } | |
12065 | 12287 | } |
12066 | 12288 | // ...assert parameter provides the type which function wants |
12067 | 12289 | { |
12068 | - const struct StreamOut *_15 = &(*streams).err; | |
12069 | - const struct qtypepure *_16 = &(*par).qt; | |
12070 | - const struct string *_17 = &(*par).id; | |
12071 | - struct qtypepureid *_18 = &(_provide).qti; | |
12072 | - ChkPar$(0 /* _14 */, &*_15, &*txtpos, &*_16, &*_17, &*_18); | |
12290 | + const struct StreamOut *_16 = &(*streams).err; | |
12291 | + const struct qtypepure *_17 = &(*par).qt; | |
12292 | + const struct string *_18 = &(*par).id; | |
12293 | + struct qtypepureid *_19 = &(_provide).qti; | |
12294 | + ChkPar$(0 /* _15 */, &*_16, &*txtpos, &*_17, &*_18, &*_19); | |
12073 | 12295 | } |
12074 | 12296 | { |
12075 | - uint64_t _16; memset(&_16, 0, sizeof(uint64_t)); | |
12297 | + uint64_t _17; memset(&_17, 0, sizeof(uint64_t)); | |
12076 | 12298 | { |
12077 | - uint64_t _17; memset(&_17, 0, sizeof(uint64_t)); | |
12078 | - _17 = 1; | |
12079 | - _16 = *parnr + _17; | |
12080 | - _IGNORE_(_17); | |
12299 | + uint64_t _18; memset(&_18, 0, sizeof(uint64_t)); | |
12300 | + _18 = 1; | |
12301 | + _17 = *parnr + _18; | |
12302 | + _IGNORE_(_18); | |
12081 | 12303 | } |
12082 | - ParseLs$(0 /* _15 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self, &_16, &*def, &*paridx, &*base, &*callee, &*st_, &*retype); | |
12083 | - _IGNORE_(_16); | |
12304 | + ParseLs$(0 /* _16 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self, &*reduced_ids, &_verified, &_17, &*def, &*paridx, &*base, &*callee, &*st_, &*retype); | |
12305 | + _IGNORE_(_17); | |
12084 | 12306 | } |
12085 | 12307 | var$dest(&_provide); |
12086 | 12308 | } |
12087 | 12309 | } |
12088 | - free$(&_5, sizeof(uint64_t), 0/*DEST*/); | |
12310 | + free$(&_6, sizeof(uint64_t), 0/*DEST*/); | |
12311 | + _IGNORE_(_verified); | |
12089 | 12312 | string$dest(&_id); |
12090 | 12313 | } |
12091 | 12314 | } |
@@ -12120,7 +12343,7 @@ | ||
12120 | 12343 | { |
12121 | 12344 | struct string _7; memset(&_7, 0, sizeof(struct string)); |
12122 | 12345 | init$fromliteral(&_7, "$", 1); |
12123 | - strcat$(&_6, &_7, &*name, 2777); | |
12346 | + strcat$(&_6, &_7, &*name, 2835); | |
12124 | 12347 | string$dest(&_7); |
12125 | 12348 | } |
12126 | 12349 | string$copy(&*_0, &_6); |
@@ -12140,11 +12363,11 @@ | ||
12140 | 12363 | { |
12141 | 12364 | getpurename(&_5, &*st); |
12142 | 12365 | } |
12143 | - strcat$(&_3, &_4, &_5, 2779); | |
12366 | + strcat$(&_3, &_4, &_5, 2837); | |
12144 | 12367 | string$dest(&_5); |
12145 | 12368 | string$dest(&_4); |
12146 | 12369 | } |
12147 | - strcat$(&*_0, &*name, &_3, 2779); | |
12370 | + strcat$(&*_0, &*name, &_3, 2837); | |
12148 | 12371 | string$dest(&_3); |
12149 | 12372 | } |
12150 | 12373 | } |
@@ -12156,7 +12379,7 @@ | ||
12156 | 12379 | } |
12157 | 12380 | } |
12158 | 12381 | |
12159 | -void ParseCall$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, const uint64_t *tmpnr_, const struct stack/*qtypepureid*/ *store, const struct string *callee, const bool *partial, const bool *action, const struct string *self) | |
12382 | +void ParseCall$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, const uint64_t *tmpnr_, const struct stack/*qtypepureid*/ *store, const struct string *callee, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified) | |
12160 | 12383 | { |
12161 | 12384 | { |
12162 | 12385 | uint64_t _base; memset(&_base, 0, sizeof(uint64_t)); |
@@ -12169,15 +12392,26 @@ | ||
12169 | 12392 | // if encapsulation should ever accidentally become broken. |
12170 | 12393 | uint64_t _tmpnr; memset(&_tmpnr, 0, sizeof(uint64_t)); |
12171 | 12394 | _tmpnr = (*tmpnr_); |
12395 | + // NOTE: reporting error deferred after all parameters have been parsed to check for reduced. | |
12396 | + //if and(not(partial), strequ(callee, self)) then | |
12397 | + //{ | |
12398 | + // if equ<u64>(size<ReducedId>(reduced_ids), 0) then | |
12399 | + // { | |
12400 | + // PutStr(streams.err, "total function "); | |
12401 | + // PutStr(streams.err, callee); | |
12402 | + // PutStr(streams.err, " calls itself recursivly (hint: reduce parameter or declare partial)"); | |
12403 | + // Fail$(streams.err, txtpos); | |
12404 | + // }; | |
12405 | + //}; | |
12172 | 12406 | bool _2; |
12173 | 12407 | { |
12174 | 12408 | bool _3; memset(&_3, 0, sizeof(bool)); |
12175 | 12409 | { |
12176 | - not(&_3, &*partial); | |
12410 | + not(&_3, &*action); | |
12177 | 12411 | } |
12178 | 12412 | bool _4; memset(&_4, 0, sizeof(bool)); |
12179 | 12413 | { |
12180 | - strequ(&_4, &*callee, &*self); | |
12414 | + idact$(&_4, &*callee); | |
12181 | 12415 | } |
12182 | 12416 | and(&_2, &_3, &_4); |
12183 | 12417 | _IGNORE_(_4); |
@@ -12188,35 +12422,46 @@ | ||
12188 | 12422 | { |
12189 | 12423 | const struct StreamOut *_4 = &(*streams).err; |
12190 | 12424 | struct string _5; memset(&_5, 0, sizeof(struct string)); |
12191 | - init$fromliteral(&_5, "total function ", 15); | |
12425 | + init$fromliteral(&_5, "in function ", 12); | |
12192 | 12426 | PutStr(0 /* _3 */, &*_4, &_5); |
12193 | 12427 | string$dest(&_5); |
12194 | 12428 | } |
12195 | 12429 | { |
12196 | 12430 | const struct StreamOut *_5 = &(*streams).err; |
12197 | - PutStr(0 /* _4 */, &*_5, &*callee); | |
12431 | + PutStr(0 /* _4 */, &*_5, &*self); | |
12198 | 12432 | } |
12199 | 12433 | { |
12200 | 12434 | const struct StreamOut *_6 = &(*streams).err; |
12201 | 12435 | struct string _7; memset(&_7, 0, sizeof(struct string)); |
12202 | - init$fromliteral(&_7, " calls itself recursivly (hint: declare partial)", 48); | |
12436 | + init$fromliteral(&_7, ": can't call action ", 20); | |
12203 | 12437 | PutStr(0 /* _5 */, &*_6, &_7); |
12204 | 12438 | string$dest(&_7); |
12205 | 12439 | } |
12206 | 12440 | { |
12207 | 12441 | const struct StreamOut *_7 = &(*streams).err; |
12208 | - Fail$(0 /* _6 */, &*_7, &*txtpos); | |
12442 | + PutStr(0 /* _6 */, &*_7, &*callee); | |
12209 | 12443 | } |
12444 | + { | |
12445 | + const struct StreamOut *_8 = &(*streams).err; | |
12446 | + struct string _9; memset(&_9, 0, sizeof(struct string)); | |
12447 | + init$fromliteral(&_9, " from non-action environment", 28); | |
12448 | + PutStr(0 /* _7 */, &*_8, &_9); | |
12449 | + string$dest(&_9); | |
12450 | + } | |
12451 | + { | |
12452 | + const struct StreamOut *_9 = &(*streams).err; | |
12453 | + Fail$(0 /* _8 */, &*_9, &*txtpos); | |
12454 | + } | |
12210 | 12455 | } |
12211 | 12456 | bool _4; |
12212 | 12457 | { |
12213 | 12458 | bool _5; memset(&_5, 0, sizeof(bool)); |
12214 | 12459 | { |
12215 | - not(&_5, &*action); | |
12460 | + not(&_5, &*partial); | |
12216 | 12461 | } |
12217 | 12462 | bool _6; memset(&_6, 0, sizeof(bool)); |
12218 | 12463 | { |
12219 | - idact$(&_6, &*callee); | |
12464 | + idpart$(&_6, &*callee); | |
12220 | 12465 | } |
12221 | 12466 | and(&_4, &_5, &_6); |
12222 | 12467 | _IGNORE_(_6); |
@@ -12238,7 +12483,7 @@ | ||
12238 | 12483 | { |
12239 | 12484 | const struct StreamOut *_8 = &(*streams).err; |
12240 | 12485 | struct string _9; memset(&_9, 0, sizeof(struct string)); |
12241 | - init$fromliteral(&_9, ": can't call action ", 20); | |
12486 | + init$fromliteral(&_9, ": can't call partial ", 21); | |
12242 | 12487 | PutStr(0 /* _7 */, &*_8, &_9); |
12243 | 12488 | string$dest(&_9); |
12244 | 12489 | } |
@@ -12249,7 +12494,7 @@ | ||
12249 | 12494 | { |
12250 | 12495 | const struct StreamOut *_10 = &(*streams).err; |
12251 | 12496 | struct string _11; memset(&_11, 0, sizeof(struct string)); |
12252 | - init$fromliteral(&_11, " from non-action environment", 28); | |
12497 | + init$fromliteral(&_11, " from total environment", 23); | |
12253 | 12498 | PutStr(0 /* _9 */, &*_10, &_11); |
12254 | 12499 | string$dest(&_11); |
12255 | 12500 | } |
@@ -12258,201 +12503,151 @@ | ||
12258 | 12503 | Fail$(0 /* _10 */, &*_11, &*txtpos); |
12259 | 12504 | } |
12260 | 12505 | } |
12261 | - bool _6; | |
12262 | - { | |
12263 | - bool _7; memset(&_7, 0, sizeof(bool)); | |
12264 | - { | |
12265 | - not(&_7, &*partial); | |
12266 | - } | |
12267 | - bool _8; memset(&_8, 0, sizeof(bool)); | |
12268 | - { | |
12269 | - idpart$(&_8, &*callee); | |
12270 | - } | |
12271 | - and(&_6, &_7, &_8); | |
12272 | - _IGNORE_(_8); | |
12273 | - _IGNORE_(_7); | |
12274 | - } | |
12275 | - if(_6) | |
12276 | - { | |
12277 | - { | |
12278 | - const struct StreamOut *_8 = &(*streams).err; | |
12279 | - struct string _9; memset(&_9, 0, sizeof(struct string)); | |
12280 | - init$fromliteral(&_9, "in function ", 12); | |
12281 | - PutStr(0 /* _7 */, &*_8, &_9); | |
12282 | - string$dest(&_9); | |
12283 | - } | |
12284 | - { | |
12285 | - const struct StreamOut *_9 = &(*streams).err; | |
12286 | - PutStr(0 /* _8 */, &*_9, &*self); | |
12287 | - } | |
12288 | - { | |
12289 | - const struct StreamOut *_10 = &(*streams).err; | |
12290 | - struct string _11; memset(&_11, 0, sizeof(struct string)); | |
12291 | - init$fromliteral(&_11, ": can't call partial ", 21); | |
12292 | - PutStr(0 /* _9 */, &*_10, &_11); | |
12293 | - string$dest(&_11); | |
12294 | - } | |
12295 | - { | |
12296 | - const struct StreamOut *_11 = &(*streams).err; | |
12297 | - PutStr(0 /* _10 */, &*_11, &*callee); | |
12298 | - } | |
12299 | - { | |
12300 | - const struct StreamOut *_12 = &(*streams).err; | |
12301 | - struct string _13; memset(&_13, 0, sizeof(struct string)); | |
12302 | - init$fromliteral(&_13, " from total environment", 23); | |
12303 | - PutStr(0 /* _11 */, &*_12, &_13); | |
12304 | - string$dest(&_13); | |
12305 | - } | |
12306 | - { | |
12307 | - const struct StreamOut *_13 = &(*streams).err; | |
12308 | - Fail$(0 /* _12 */, &*_13, &*txtpos); | |
12309 | - } | |
12310 | - } | |
12311 | 12506 | struct stack/*u64*/ _fnidx_; memset(&_fnidx_, 0, sizeof(struct stack/*u64*/)); |
12312 | 12507 | { |
12313 | - struct stack/*def*/ *_7 = &(*state).defs; | |
12314 | - uint64_t _8; memset(&_8, 0, sizeof(uint64_t)); | |
12508 | + struct stack/*def*/ *_5 = &(*state).defs; | |
12509 | + uint64_t _6; memset(&_6, 0, sizeof(uint64_t)); | |
12315 | 12510 | { |
12316 | - struct stack/*def*/ *_9 = &(*state).defs; | |
12317 | - size(&_8, &*_9); | |
12511 | + struct stack/*def*/ *_7 = &(*state).defs; | |
12512 | + size(&_6, &*_7); | |
12318 | 12513 | } |
12319 | - idxdef$(&_fnidx_, &*_7, &_8, &*callee); | |
12320 | - _IGNORE_(_8); | |
12514 | + idxdef$(&_fnidx_, &*_5, &_6, &*callee); | |
12515 | + _IGNORE_(_6); | |
12321 | 12516 | } |
12322 | - struct stack/*u64*/ _7; memset(&_7, 0, sizeof(struct stack/*u64*/)); | |
12323 | - clone$(&_7, &(_fnidx_), sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/); | |
12324 | - if(!(_7).size) | |
12517 | + struct stack/*u64*/ _5; memset(&_5, 0, sizeof(struct stack/*u64*/)); | |
12518 | + clone$(&_5, &(_fnidx_), sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/); | |
12519 | + if(!(_5).size) | |
12325 | 12520 | { |
12326 | 12521 | { |
12327 | 12522 | { |
12328 | - const struct StreamOut *_10 = &(*streams).err; | |
12329 | - struct string _11; memset(&_11, 0, sizeof(struct string)); | |
12330 | - init$fromliteral(&_11, "undeclared function ", 20); | |
12331 | - PutStr(0 /* _9 */, &*_10, &_11); | |
12332 | - string$dest(&_11); | |
12523 | + const struct StreamOut *_8 = &(*streams).err; | |
12524 | + struct string _9; memset(&_9, 0, sizeof(struct string)); | |
12525 | + init$fromliteral(&_9, "undeclared function ", 20); | |
12526 | + PutStr(0 /* _7 */, &*_8, &_9); | |
12527 | + string$dest(&_9); | |
12333 | 12528 | } |
12334 | 12529 | { |
12335 | - const struct StreamOut *_11 = &(*streams).err; | |
12336 | - PutStr(0 /* _10 */, &*_11, &*callee); | |
12530 | + const struct StreamOut *_9 = &(*streams).err; | |
12531 | + PutStr(0 /* _8 */, &*_9, &*callee); | |
12337 | 12532 | } |
12338 | 12533 | { |
12339 | - const struct StreamOut *_12 = &(*streams).err; | |
12340 | - Fail$(0 /* _11 */, &*_12, &*txtpos); | |
12534 | + const struct StreamOut *_10 = &(*streams).err; | |
12535 | + Fail$(0 /* _9 */, &*_10, &*txtpos); | |
12341 | 12536 | } |
12342 | 12537 | } |
12343 | 12538 | } |
12344 | 12539 | else |
12345 | 12540 | { |
12346 | - const uint64_t *fnidx = (_7).data; | |
12541 | + const uint64_t *fnidx = (_5).data; | |
12347 | 12542 | // optional subtype, e.g. for push<...>(...) |
12348 | 12543 | { |
12349 | 12544 | struct stack/*type_pure*/ _st_; memset(&_st_, 0, sizeof(struct stack/*type_pure*/)); |
12350 | 12545 | { |
12351 | - struct stack/*structdef*/ *_10 = &(*state).structs; | |
12352 | - ParseOptArgTypePure$(&_st_, &*streams, &*txtpos, &*level, &*_10); | |
12546 | + struct stack/*structdef*/ *_8 = &(*state).structs; | |
12547 | + ParseOptArgTypePure$(&_st_, &*streams, &*txtpos, &*level, &*_8); | |
12353 | 12548 | } |
12354 | 12549 | struct def _def; memset(&_def, 0, sizeof(struct def)); |
12355 | 12550 | { |
12356 | - struct stack/*def*/ *_10 = &(*state).defs; | |
12357 | - at_get$(&_def, &*_10, &*fnidx, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 2833); | |
12551 | + struct stack/*def*/ *_8 = &(*state).defs; | |
12552 | + at_get$(&_def, &*_8, &*fnidx, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 2895); | |
12358 | 12553 | } |
12359 | - bool *_10 = &(_def).used; | |
12360 | - *_10 = 1; | |
12554 | + bool *_8 = &(_def).used; | |
12555 | + *_8 = 1; | |
12361 | 12556 | { |
12362 | - struct stack/*def*/ *_12 = &(*state).defs; | |
12363 | - at_set$(0 /* _11 */, &*_12, &*fnidx, &_def, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 2835); | |
12557 | + struct stack/*def*/ *_10 = &(*state).defs; | |
12558 | + at_set$(0 /* _9 */, &*_10, &*fnidx, &_def, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 2897); | |
12364 | 12559 | } |
12365 | 12560 | // store used |
12366 | 12561 | struct qtype _re; memset(&_re, 0, sizeof(struct qtype)); |
12367 | 12562 | { |
12368 | - struct type *_12 = &(_def).ti.type; | |
12369 | - mutqt(&_re, &*_12); | |
12563 | + struct type *_10 = &(_def).ti.type; | |
12564 | + mutqt(&_re, &*_10); | |
12370 | 12565 | } |
12371 | 12566 | struct type_pure _retype; memset(&_retype, 0, sizeof(struct type_pure)); |
12372 | - struct stack/*type_pure*/ _12; memset(&_12, 0, sizeof(struct stack/*type_pure*/)); | |
12373 | - clone$(&_12, &(_st_), sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy); | |
12374 | - if(!(_12).size) | |
12567 | + struct stack/*type_pure*/ _10; memset(&_10, 0, sizeof(struct stack/*type_pure*/)); | |
12568 | + clone$(&_10, &(_st_), sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy); | |
12569 | + if(!(_10).size) | |
12375 | 12570 | { |
12376 | 12571 | { |
12377 | - const struct StreamOut *_13 = &(*streams).err; | |
12378 | - const struct type *_14 = &(_re).type; | |
12379 | - PurifySubType$(&_retype, &*_13, &*txtpos, &*_14); | |
12572 | + const struct StreamOut *_11 = &(*streams).err; | |
12573 | + const struct type *_12 = &(_re).type; | |
12574 | + PurifySubType$(&_retype, &*_11, &*txtpos, &*_12); | |
12380 | 12575 | } |
12381 | 12576 | } |
12382 | 12577 | else |
12383 | 12578 | { |
12384 | - const struct type_pure *solid = (_12).data; | |
12579 | + const struct type_pure *solid = (_10).data; | |
12385 | 12580 | { |
12386 | - const struct StreamOut *_13 = &(*streams).err; | |
12387 | - const struct type *_14 = &(_re).type; | |
12388 | - ApplySubTypePure$(&_retype, &*_13, &*txtpos, &*_14, &*solid); | |
12581 | + const struct StreamOut *_11 = &(*streams).err; | |
12582 | + const struct type *_12 = &(_re).type; | |
12583 | + ApplySubTypePure$(&_retype, &*_11, &*txtpos, &*_12, &*solid); | |
12389 | 12584 | } |
12390 | 12585 | } |
12391 | - free$(&_12, sizeof(struct type_pure), (void (*)(void *))type_pure$dest); | |
12586 | + free$(&_10, sizeof(struct type_pure), (void (*)(void *))type_pure$dest); | |
12392 | 12587 | // function-call |
12393 | 12588 | { |
12394 | - SkipComment$(0 /* _13 */, &*streams, &*txtpos, &*level); | |
12589 | + SkipComment$(0 /* _11 */, &*streams, &*txtpos, &*level); | |
12395 | 12590 | } |
12396 | - bool _15; | |
12591 | + bool _13; | |
12397 | 12592 | { |
12398 | - bool _16; memset(&_16, 0, sizeof(bool)); | |
12593 | + bool _14; memset(&_14, 0, sizeof(bool)); | |
12399 | 12594 | { |
12400 | - uint8_t _17; memset(&_17, 0, sizeof(uint8_t)); | |
12401 | - _17 = 40; | |
12402 | - uint8_t _18; memset(&_18, 0, sizeof(uint8_t)); | |
12595 | + uint8_t _15; memset(&_15, 0, sizeof(uint8_t)); | |
12596 | + _15 = 40; | |
12597 | + uint8_t _16; memset(&_16, 0, sizeof(uint8_t)); | |
12403 | 12598 | { |
12404 | - const struct StreamIn *_19 = &(*streams).in; | |
12405 | - Peek(&_18, &*_19); | |
12599 | + const struct StreamIn *_17 = &(*streams).in; | |
12600 | + Peek(&_16, &*_17); | |
12406 | 12601 | } |
12407 | - _16 = _17 == _18; | |
12408 | - _IGNORE_(_18); | |
12409 | - _IGNORE_(_17); | |
12602 | + _14 = _15 == _16; | |
12603 | + _IGNORE_(_16); | |
12604 | + _IGNORE_(_15); | |
12410 | 12605 | } |
12411 | - not(&_15, &_16); | |
12412 | - _IGNORE_(_16); | |
12606 | + not(&_13, &_14); | |
12607 | + _IGNORE_(_14); | |
12413 | 12608 | } |
12414 | - if(_15) | |
12609 | + if(_13) | |
12415 | 12610 | { |
12416 | 12611 | { |
12612 | + const struct StreamOut *_15 = &(*streams).err; | |
12613 | + struct string _16; memset(&_16, 0, sizeof(struct string)); | |
12614 | + init$fromliteral(&_16, "function ", 9); | |
12615 | + PutStr(0 /* _14 */, &*_15, &_16); | |
12616 | + string$dest(&_16); | |
12617 | + } | |
12618 | + { | |
12619 | + const struct StreamOut *_16 = &(*streams).err; | |
12620 | + PutStr(0 /* _15 */, &*_16, &*callee); | |
12621 | + } | |
12622 | + { | |
12417 | 12623 | const struct StreamOut *_17 = &(*streams).err; |
12418 | 12624 | struct string _18; memset(&_18, 0, sizeof(struct string)); |
12419 | - init$fromliteral(&_18, "function ", 9); | |
12625 | + init$fromliteral(&_18, " not called - ", 14); | |
12420 | 12626 | PutStr(0 /* _16 */, &*_17, &_18); |
12421 | 12627 | string$dest(&_18); |
12422 | 12628 | } |
12423 | 12629 | { |
12424 | 12630 | const struct StreamOut *_18 = &(*streams).err; |
12425 | - PutStr(0 /* _17 */, &*_18, &*callee); | |
12426 | - } | |
12427 | - { | |
12428 | - const struct StreamOut *_19 = &(*streams).err; | |
12429 | - struct string _20; memset(&_20, 0, sizeof(struct string)); | |
12430 | - init$fromliteral(&_20, " not called - ", 14); | |
12431 | - PutStr(0 /* _18 */, &*_19, &_20); | |
12432 | - string$dest(&_20); | |
12433 | - } | |
12434 | - { | |
12435 | - const struct StreamOut *_20 = &(*streams).err; | |
12436 | - uint8_t _21; memset(&_21, 0, sizeof(uint8_t)); | |
12631 | + uint8_t _19; memset(&_19, 0, sizeof(uint8_t)); | |
12437 | 12632 | { |
12438 | - const struct StreamIn *_22 = &(*streams).in; | |
12439 | - GetAdvance(&_21, &*_22, &*txtpos); | |
12633 | + const struct StreamIn *_20 = &(*streams).in; | |
12634 | + GetAdvance(&_19, &*_20, &*txtpos); | |
12440 | 12635 | } |
12441 | - uint8_t _22; memset(&_22, 0, sizeof(uint8_t)); | |
12442 | - _22 = 40; | |
12443 | - Assert$(0 /* _19 */, &*_20, &*txtpos, &_21, &_22); | |
12444 | - _IGNORE_(_22); | |
12445 | - _IGNORE_(_21); | |
12636 | + uint8_t _20; memset(&_20, 0, sizeof(uint8_t)); | |
12637 | + _20 = 40; | |
12638 | + Assert$(0 /* _17 */, &*_18, &*txtpos, &_19, &_20); | |
12639 | + _IGNORE_(_20); | |
12640 | + _IGNORE_(_19); | |
12446 | 12641 | } |
12447 | 12642 | } |
12448 | 12643 | { |
12449 | - const struct StreamIn *_17 = &(*streams).in; | |
12450 | - Skip(0 /* _16 */, &*_17, &*txtpos); | |
12644 | + const struct StreamIn *_15 = &(*streams).in; | |
12645 | + Skip(0 /* _14 */, &*_15, &*txtpos); | |
12451 | 12646 | } |
12452 | 12647 | // return-type verified after call, to allow struct-element access after result |
12453 | - struct stack/*qtypepureid*/ _17; memset(&_17, 0, sizeof(struct stack/*qtypepureid*/)); | |
12454 | - clone$(&_17, &(*store), sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy); | |
12455 | - if(!(_17).size) | |
12648 | + struct stack/*qtypepureid*/ _15; memset(&_15, 0, sizeof(struct stack/*qtypepureid*/)); | |
12649 | + clone$(&_15, &(*store), sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy); | |
12650 | + if(!(_15).size) | |
12456 | 12651 | { |
12457 | 12652 | // no type-check necessary since storage is generated having expected type |
12458 | 12653 | // anonymous / hidden storage: use temporary name |
@@ -12459,62 +12654,62 @@ | ||
12459 | 12654 | { |
12460 | 12655 | struct qtypepureid _newstore; memset(&_newstore, 0, sizeof(struct qtypepureid)); |
12461 | 12656 | { |
12462 | - struct qtypepure _19; memset(&_19, 0, sizeof(struct qtypepure)); | |
12657 | + struct qtypepure _17; memset(&_17, 0, sizeof(struct qtypepure)); | |
12463 | 12658 | { |
12464 | - mutqtp(&_19, &_retype); | |
12659 | + mutqtp(&_17, &_retype); | |
12465 | 12660 | } |
12466 | - struct string _20; memset(&_20, 0, sizeof(struct string)); | |
12661 | + struct string _18; memset(&_18, 0, sizeof(struct string)); | |
12467 | 12662 | { |
12468 | - GenVar$(&_20, &_tmpnr); | |
12663 | + GenVar$(&_18, &_tmpnr); | |
12469 | 12664 | } |
12470 | - qtypepureid(&_newstore, &_19, &_20); | |
12471 | - string$dest(&_20); | |
12472 | - qtypepure$dest(&_19); | |
12665 | + qtypepureid(&_newstore, &_17, &_18); | |
12666 | + string$dest(&_18); | |
12667 | + qtypepure$dest(&_17); | |
12473 | 12668 | } |
12474 | 12669 | { |
12475 | - const struct StreamOut *_20 = &(*streams).out; | |
12476 | - struct stack/*structdef*/ *_21 = &(*state).structs; | |
12477 | - EmitLet$(0 /* _19 */, &*_20, &*txtpos, &*level, &*_21, &_newstore); | |
12670 | + const struct StreamOut *_18 = &(*streams).out; | |
12671 | + struct stack/*structdef*/ *_19 = &(*state).structs; | |
12672 | + EmitLet$(0 /* _17 */, &*_18, &*txtpos, &*level, &*_19, &_newstore); | |
12478 | 12673 | } |
12479 | 12674 | { |
12480 | - uint64_t _21; memset(&_21, 0, sizeof(uint64_t)); | |
12481 | - _21 = 0; | |
12482 | - /*paridx*/ struct string _22; memset(&_22, 0, sizeof(struct string)); | |
12675 | + uint64_t _19; memset(&_19, 0, sizeof(uint64_t)); | |
12676 | + _19 = 0; | |
12677 | + /*paridx*/ struct string _20; memset(&_20, 0, sizeof(struct string)); | |
12483 | 12678 | { |
12484 | - bool *_23 = &(_def).specialized; | |
12485 | - SpecializeFunctionPure$(&_22, &*streams, &*txtpos, &*_23, &*callee, &_st_); | |
12679 | + bool *_21 = &(_def).specialized; | |
12680 | + SpecializeFunctionPure$(&_20, &*streams, &*txtpos, &*_21, &*callee, &_st_); | |
12486 | 12681 | } |
12487 | - ParseLS$(0 /* _20 */, &*streams, &*txtpos, &*state, &*level, &*scope, &_tmpnr, &_def, &_21, &*partial, &*action, &*self, &_newstore, &_base, &_22, &_st_, &_retype); | |
12488 | - string$dest(&_22); | |
12489 | - _IGNORE_(_21); | |
12682 | + ParseLS$(0 /* _18 */, &*streams, &*txtpos, &*state, &*level, &*scope, &_tmpnr, &_def, &_19, &*partial, &*action, &*self, &*reduced_ids, &*verified, &_newstore, &_base, &_20, &_st_, &_retype); | |
12683 | + string$dest(&_20); | |
12684 | + _IGNORE_(_19); | |
12490 | 12685 | } |
12491 | 12686 | { |
12492 | - const struct StreamOut *_22 = &(*streams).out; | |
12493 | - Indent$(0 /* _21 */, &*_22, &*level); | |
12687 | + const struct StreamOut *_20 = &(*streams).out; | |
12688 | + Indent(0 /* _19 */, &*_20, &*level); | |
12494 | 12689 | } |
12495 | 12690 | { |
12496 | - const struct StreamOut *_23 = &(*streams).out; | |
12497 | - const struct type_pure *_24 = &(_newstore).qt.type; | |
12498 | - FreeIn(0 /* _22 */, &*_23, &*_24); | |
12691 | + const struct StreamOut *_21 = &(*streams).out; | |
12692 | + const struct type_pure *_22 = &(_newstore).qt.type; | |
12693 | + FreeIn(0 /* _20 */, &*_21, &*_22); | |
12499 | 12694 | } |
12500 | 12695 | { |
12501 | - const struct StreamOut *_24 = &(*streams).out; | |
12502 | - const struct string *_25 = &(_newstore).id; | |
12503 | - PutStr(0 /* _23 */, &*_24, &*_25); | |
12696 | + const struct StreamOut *_22 = &(*streams).out; | |
12697 | + const struct string *_23 = &(_newstore).id; | |
12698 | + PutStr(0 /* _21 */, &*_22, &*_23); | |
12504 | 12699 | } |
12505 | 12700 | { |
12506 | - const struct StreamOut *_25 = &(*streams).out; | |
12507 | - const struct StreamOut *_26 = &(*streams).err; | |
12508 | - struct stack/*structdef*/ *_27 = &(*state).structs; | |
12509 | - const struct type_pure *_28 = &(_newstore).qt.type; | |
12510 | - FreeOut$(0 /* _24 */, &*_25, &*_26, &*txtpos, &*_27, &*_28); | |
12701 | + const struct StreamOut *_23 = &(*streams).out; | |
12702 | + const struct StreamOut *_24 = &(*streams).err; | |
12703 | + struct stack/*structdef*/ *_25 = &(*state).structs; | |
12704 | + const struct type_pure *_26 = &(_newstore).qt.type; | |
12705 | + FreeOut$(0 /* _22 */, &*_23, &*_24, &*txtpos, &*_25, &*_26); | |
12511 | 12706 | } |
12512 | 12707 | { |
12513 | - const struct StreamOut *_26 = &(*streams).out; | |
12514 | - struct string _27; memset(&_27, 0, sizeof(struct string)); | |
12515 | - init$fromliteral(&_27, "\n", 1); | |
12516 | - PutStr(0 /* _25 */, &*_26, &_27); | |
12517 | - string$dest(&_27); | |
12708 | + const struct StreamOut *_24 = &(*streams).out; | |
12709 | + struct string _25; memset(&_25, 0, sizeof(struct string)); | |
12710 | + init$fromliteral(&_25, "\n", 1); | |
12711 | + PutStr(0 /* _23 */, &*_24, &_25); | |
12712 | + string$dest(&_25); | |
12518 | 12713 | } |
12519 | 12714 | qtypepureid$dest(&_newstore); |
12520 | 12715 | } |
@@ -12521,23 +12716,23 @@ | ||
12521 | 12716 | } |
12522 | 12717 | else |
12523 | 12718 | { |
12524 | - const struct qtypepureid *solidstore = (_17).data; | |
12719 | + const struct qtypepureid *solidstore = (_15).data; | |
12525 | 12720 | { |
12526 | 12721 | { |
12527 | - uint64_t _21; memset(&_21, 0, sizeof(uint64_t)); | |
12528 | - _21 = 0; | |
12529 | - /*paridx*/ struct string _22; memset(&_22, 0, sizeof(struct string)); | |
12722 | + uint64_t _19; memset(&_19, 0, sizeof(uint64_t)); | |
12723 | + _19 = 0; | |
12724 | + /*paridx*/ struct string _20; memset(&_20, 0, sizeof(struct string)); | |
12530 | 12725 | { |
12531 | - bool *_23 = &(_def).specialized; | |
12532 | - SpecializeFunctionPure$(&_22, &*streams, &*txtpos, &*_23, &*callee, &_st_); | |
12726 | + bool *_21 = &(_def).specialized; | |
12727 | + SpecializeFunctionPure$(&_20, &*streams, &*txtpos, &*_21, &*callee, &_st_); | |
12533 | 12728 | } |
12534 | - ParseLS$(0 /* _20 */, &*streams, &*txtpos, &*state, &*level, &*scope, &_tmpnr, &_def, &_21, &*partial, &*action, &*self, &*solidstore, &_base, &_22, &_st_, &_retype); | |
12535 | - string$dest(&_22); | |
12536 | - _IGNORE_(_21); | |
12729 | + ParseLS$(0 /* _18 */, &*streams, &*txtpos, &*state, &*level, &*scope, &_tmpnr, &_def, &_19, &*partial, &*action, &*self, &*reduced_ids, &*verified, &*solidstore, &_base, &_20, &_st_, &_retype); | |
12730 | + string$dest(&_20); | |
12731 | + _IGNORE_(_19); | |
12537 | 12732 | } |
12538 | 12733 | } |
12539 | 12734 | } |
12540 | - free$(&_17, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); | |
12735 | + free$(&_15, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); | |
12541 | 12736 | type_pure$dest(&_retype); |
12542 | 12737 | qtype$dest(&_re); |
12543 | 12738 | def$dest(&_def); |
@@ -12544,7 +12739,7 @@ | ||
12544 | 12739 | free$(&_st_, sizeof(struct type_pure), (void (*)(void *))type_pure$dest); |
12545 | 12740 | } |
12546 | 12741 | } |
12547 | - free$(&_7, sizeof(uint64_t), 0/*DEST*/); | |
12742 | + free$(&_5, sizeof(uint64_t), 0/*DEST*/); | |
12548 | 12743 | // forget done call (implicitly by comsuming args in DoCall/Climb) |
12549 | 12744 | //ignore$(base, scope); |
12550 | 12745 | //Dump2$(txtpos, scope); |
@@ -12634,7 +12829,7 @@ | ||
12634 | 12829 | } |
12635 | 12830 | } |
12636 | 12831 | |
12637 | -void ParseIfStatement$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const bool *partial, const bool *action, const struct string *self, const struct qtypepureid *provide) | |
12832 | +void ParseIfStatement$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified, const struct qtypepureid *provide) | |
12638 | 12833 | { |
12639 | 12834 | // anonymous / hidden storage: use temporary name |
12640 | 12835 | { |
@@ -12662,7 +12857,7 @@ | ||
12662 | 12857 | } |
12663 | 12858 | { |
12664 | 12859 | const struct StreamOut *_2 = &(*streams).out; |
12665 | - Indent$(0 /* _1 */, &*_2, &*level); | |
12860 | + Indent(0 /* _1 */, &*_2, &*level); | |
12666 | 12861 | } |
12667 | 12862 | { |
12668 | 12863 | const struct StreamOut *_3 = &(*streams).out; |
@@ -12678,13 +12873,13 @@ | ||
12678 | 12873 | { |
12679 | 12874 | struct stack/*qtypepureid*/ _5; memset(&_5, 0, sizeof(struct stack/*qtypepureid*/)); |
12680 | 12875 | { |
12681 | - solid(&_5, &_pred, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2900); | |
12876 | + solid(&_5, &_pred, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2962); | |
12682 | 12877 | } |
12683 | 12878 | struct string _6; memset(&_6, 0, sizeof(struct string)); |
12684 | 12879 | { |
12685 | 12880 | ParseId$(&_6, &*streams, &*txtpos, &*level); |
12686 | 12881 | } |
12687 | - ParseExpr$(0 /* _4 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_5, &_6, &*partial, &*action, &*self); | |
12882 | + ParseExpr$(0 /* _4 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_5, &_6, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
12688 | 12883 | string$dest(&_6); |
12689 | 12884 | free$(&_5, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); |
12690 | 12885 | } |
@@ -12721,7 +12916,7 @@ | ||
12721 | 12916 | } |
12722 | 12917 | { |
12723 | 12918 | const struct StreamOut *_8 = &(*streams).out; |
12724 | - Indent$(0 /* _7 */, &*_8, &*level); | |
12919 | + Indent(0 /* _7 */, &*_8, &*level); | |
12725 | 12920 | } |
12726 | 12921 | { |
12727 | 12922 | const struct StreamOut *_9 = &(*streams).out; |
@@ -12745,9 +12940,9 @@ | ||
12745 | 12940 | { |
12746 | 12941 | struct stack/*qtypepureid*/ _12; memset(&_12, 0, sizeof(struct stack/*qtypepureid*/)); |
12747 | 12942 | { |
12748 | - solid(&_12, &*provide, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2909); | |
12943 | + solid(&_12, &*provide, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2971); | |
12749 | 12944 | } |
12750 | - ParseBlock$(0 /* _11 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_12, &*partial, &*action, &*self); | |
12945 | + ParseBlock$(0 /* _11 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_12, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
12751 | 12946 | free$(&_12, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); |
12752 | 12947 | } |
12753 | 12948 | struct string _id; memset(&_id, 0, sizeof(struct string)); |
@@ -12765,7 +12960,7 @@ | ||
12765 | 12960 | { |
12766 | 12961 | { |
12767 | 12962 | const struct StreamOut *_15 = &(*streams).out; |
12768 | - Indent$(0 /* _14 */, &*_15, &*level); | |
12963 | + Indent(0 /* _14 */, &*_15, &*level); | |
12769 | 12964 | } |
12770 | 12965 | { |
12771 | 12966 | const struct StreamOut *_16 = &(*streams).out; |
@@ -12786,7 +12981,7 @@ | ||
12786 | 12981 | { |
12787 | 12982 | { |
12788 | 12983 | const struct StreamOut *_19 = &(*streams).out; |
12789 | - Indent$(0 /* _18 */, &*_19, &*level); | |
12984 | + Indent(0 /* _18 */, &*_19, &*level); | |
12790 | 12985 | } |
12791 | 12986 | { |
12792 | 12987 | const struct StreamOut *_20 = &(*streams).out; |
@@ -12805,15 +13000,15 @@ | ||
12805 | 13000 | } |
12806 | 13001 | struct stack/*qtypepureid*/ _22; memset(&_22, 0, sizeof(struct stack/*qtypepureid*/)); |
12807 | 13002 | { |
12808 | - solid(&_22, &*provide, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2921); | |
13003 | + solid(&_22, &*provide, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2983); | |
12809 | 13004 | } |
12810 | - ParseBlockRaw$(0 /* _20 */, &*streams, &*txtpos, &*state, &_21, &*scope, &*tmpnr, &_22, &*partial, &*action, &*self); | |
13005 | + ParseBlockRaw$(0 /* _20 */, &*streams, &*txtpos, &*state, &_21, &*scope, &*tmpnr, &_22, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
12811 | 13006 | free$(&_22, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); |
12812 | 13007 | _IGNORE_(_21); |
12813 | 13008 | } |
12814 | 13009 | { |
12815 | 13010 | const struct StreamOut *_22 = &(*streams).out; |
12816 | - Indent$(0 /* _21 */, &*_22, &*level); | |
13011 | + Indent(0 /* _21 */, &*_22, &*level); | |
12817 | 13012 | } |
12818 | 13013 | { |
12819 | 13014 | const struct StreamOut *_23 = &(*streams).out; |
@@ -12890,7 +13085,7 @@ | ||
12890 | 13085 | } |
12891 | 13086 | { |
12892 | 13087 | const struct StreamOut *_21 = &(*streams).out; |
12893 | - Indent$(0 /* _20 */, &*_21, &*level); | |
13088 | + Indent(0 /* _20 */, &*_21, &*level); | |
12894 | 13089 | } |
12895 | 13090 | { |
12896 | 13091 | const struct StreamOut *_22 = &(*streams).out; |
@@ -12907,12 +13102,12 @@ | ||
12907 | 13102 | _23 = _24 + *level; |
12908 | 13103 | _IGNORE_(_24); |
12909 | 13104 | } |
12910 | - ParseIfStatement$(0 /* _22 */, &*streams, &*txtpos, &*state, &_23, &*scope, &*tmpnr, &*partial, &*action, &*self, &*provide); | |
13105 | + ParseIfStatement$(0 /* _22 */, &*streams, &*txtpos, &*state, &_23, &*scope, &*tmpnr, &*partial, &*action, &*self, &*reduced_ids, &*verified, &*provide); | |
12911 | 13106 | _IGNORE_(_23); |
12912 | 13107 | } |
12913 | 13108 | { |
12914 | 13109 | const struct StreamOut *_24 = &(*streams).out; |
12915 | - Indent$(0 /* _23 */, &*_24, &*level); | |
13110 | + Indent(0 /* _23 */, &*_24, &*level); | |
12916 | 13111 | } |
12917 | 13112 | { |
12918 | 13113 | const struct StreamOut *_25 = &(*streams).out; |
@@ -12929,12 +13124,12 @@ | ||
12929 | 13124 | } |
12930 | 13125 | } |
12931 | 13126 | |
12932 | -void ParseAssign$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const bool *partial, const bool *action, const struct string *self, const struct string *id) | |
13127 | +void ParseAssign$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified, const struct string *id) | |
12933 | 13128 | { |
12934 | 13129 | { |
12935 | 13130 | struct stack/*u64*/ _1; memset(&_1, 0, sizeof(struct stack/*u64*/)); |
12936 | 13131 | { |
12937 | - FindPr$(&_1, &*txtpos, &*scope, &*id); | |
13132 | + FindParOrVar$(&_1, &*txtpos, &*scope, &*id); | |
12938 | 13133 | } |
12939 | 13134 | if(!(_1).size) |
12940 | 13135 | { |
@@ -12992,9 +13187,9 @@ | ||
12992 | 13187 | { |
12993 | 13188 | struct stack/*qtypepureid*/ _9; memset(&_9, 0, sizeof(struct stack/*qtypepureid*/)); |
12994 | 13189 | { |
12995 | - solid(&_9, &_provide, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2963); | |
13190 | + solid(&_9, &_provide, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3025); | |
12996 | 13191 | } |
12997 | - ParseBlock$(0 /* _8 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_9, &*partial, &*action, &*self); | |
13192 | + ParseBlock$(0 /* _8 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_9, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
12998 | 13193 | free$(&_9, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); |
12999 | 13194 | } |
13000 | 13195 | } |
@@ -13035,7 +13230,7 @@ | ||
13035 | 13230 | if(_5) |
13036 | 13231 | { |
13037 | 13232 | { |
13038 | - ParseIfStatement$(0 /* _6 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*partial, &*action, &*self, &_provide); | |
13233 | + ParseIfStatement$(0 /* _6 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*partial, &*action, &*self, &*reduced_ids, &*verified, &_provide); | |
13039 | 13234 | } |
13040 | 13235 | } |
13041 | 13236 | else |
@@ -13043,7 +13238,7 @@ | ||
13043 | 13238 | // function-call |
13044 | 13239 | { |
13045 | 13240 | const struct StreamOut *_7 = &(*streams).out; |
13046 | - Indent$(0 /* _6 */, &*_7, &*level); | |
13241 | + Indent(0 /* _6 */, &*_7, &*level); | |
13047 | 13242 | } |
13048 | 13243 | { |
13049 | 13244 | const struct StreamOut *_8 = &(*streams).out; |
@@ -13062,15 +13257,15 @@ | ||
13062 | 13257 | } |
13063 | 13258 | struct stack/*qtypepureid*/ _10; memset(&_10, 0, sizeof(struct stack/*qtypepureid*/)); |
13064 | 13259 | { |
13065 | - solid(&_10, &_provide, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2980); | |
13260 | + solid(&_10, &_provide, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3042); | |
13066 | 13261 | } |
13067 | - ParseCall$(0 /* _8 */, &*streams, &*txtpos, &*state, &_9, &*scope, &*tmpnr, &_10, &*id, &*partial, &*action, &*self); | |
13262 | + ParseCall$(0 /* _8 */, &*streams, &*txtpos, &*state, &_9, &*scope, &*tmpnr, &_10, &*id, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
13068 | 13263 | free$(&_10, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); |
13069 | 13264 | _IGNORE_(_9); |
13070 | 13265 | } |
13071 | 13266 | { |
13072 | 13267 | const struct StreamOut *_10 = &(*streams).out; |
13073 | - Indent$(0 /* _9 */, &*_10, &*level); | |
13268 | + Indent(0 /* _9 */, &*_10, &*level); | |
13074 | 13269 | } |
13075 | 13270 | { |
13076 | 13271 | const struct StreamOut *_11 = &(*streams).out; |
@@ -13090,13 +13285,13 @@ | ||
13090 | 13285 | { |
13091 | 13286 | struct var _provide; memset(&_provide, 0, sizeof(struct var)); |
13092 | 13287 | { |
13093 | - at_get$(&_provide, &*scope, &*pos, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2986); | |
13288 | + at_get$(&_provide, &*scope, &*pos, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3048); | |
13094 | 13289 | } |
13095 | 13290 | bool *_4 = &(_provide).used; |
13096 | 13291 | *_4 = 1; |
13097 | 13292 | // mark argument used |
13098 | 13293 | { |
13099 | - at_set$(0 /* _5 */, &*scope, &*pos, &_provide, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2988); | |
13294 | + at_set$(0 /* _5 */, &*scope, &*pos, &_provide, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3050); | |
13100 | 13295 | } |
13101 | 13296 | // store changed (marked used) |
13102 | 13297 | { |
@@ -13106,7 +13301,7 @@ | ||
13106 | 13301 | // copy store to top since only last in block is returned |
13107 | 13302 | // e.g. t test(t x, t y) {x = y} |
13108 | 13303 | { |
13109 | - push(0 /* _7 */, &*scope, &_provide, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2994); | |
13304 | + push(0 /* _7 */, &*scope, &_provide, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3056); | |
13110 | 13305 | } |
13111 | 13306 | bool _9; |
13112 | 13307 | { |
@@ -13140,13 +13335,13 @@ | ||
13140 | 13335 | struct stack/*qtypepureid*/ _13; memset(&_13, 0, sizeof(struct stack/*qtypepureid*/)); |
13141 | 13336 | { |
13142 | 13337 | struct qtypepureid *_14 = &(_provide).qti; |
13143 | - solid(&_13, &*_14, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3000); | |
13338 | + solid(&_13, &*_14, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3062); | |
13144 | 13339 | } |
13145 | 13340 | struct string _14; memset(&_14, 0, sizeof(struct string)); |
13146 | 13341 | { |
13147 | 13342 | ParseId$(&_14, &*streams, &*txtpos, &*level); |
13148 | 13343 | } |
13149 | - ParseExpr$(0 /* _12 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_13, &_14, &*partial, &*action, &*self); | |
13344 | + ParseExpr$(0 /* _12 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_13, &_14, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
13150 | 13345 | string$dest(&_14); |
13151 | 13346 | free$(&_13, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); |
13152 | 13347 | } |
@@ -13194,9 +13389,9 @@ | ||
13194 | 13389 | struct stack/*qtypepureid*/ _14; memset(&_14, 0, sizeof(struct stack/*qtypepureid*/)); |
13195 | 13390 | { |
13196 | 13391 | struct qtypepureid *_15 = &(_provide).qti; |
13197 | - solid(&_14, &*_15, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3018); | |
13392 | + solid(&_14, &*_15, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3080); | |
13198 | 13393 | } |
13199 | - ParseExpr$(0 /* _13 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_14, &_id, &*partial, &*action, &*self); | |
13394 | + ParseExpr$(0 /* _13 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_14, &_id, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
13200 | 13395 | free$(&_14, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); |
13201 | 13396 | } |
13202 | 13397 | string$dest(&_id); |
@@ -13208,7 +13403,7 @@ | ||
13208 | 13403 | } |
13209 | 13404 | } |
13210 | 13405 | |
13211 | -void EmitCases$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const bool *partial, const bool *action, const struct string *self, const struct string *par, const bool *mutable, const struct stack/*typepureid*/ *elems, const uint64_t *idx, const bool *typed) | |
13406 | +void EmitCases$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified, const struct string *par, const bool *mutable, const struct stack/*typepureid*/ *elems, const uint64_t *idx, const bool *typed) | |
13212 | 13407 | { |
13213 | 13408 | { |
13214 | 13409 | bool _2; |
@@ -13224,7 +13419,7 @@ | ||
13224 | 13419 | { |
13225 | 13420 | struct typepureid _ti; memset(&_ti, 0, sizeof(struct typepureid)); |
13226 | 13421 | { |
13227 | - at_get$(&_ti, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 3027); | |
13422 | + at_get$(&_ti, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 3089); | |
13228 | 13423 | } |
13229 | 13424 | { |
13230 | 13425 | const struct string *_4 = &(_ti).id; |
@@ -13239,7 +13434,7 @@ | ||
13239 | 13434 | if(_4) |
13240 | 13435 | { |
13241 | 13436 | { |
13242 | - empty(&_id, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 3031); | |
13437 | + empty(&_id, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 3093); | |
13243 | 13438 | } |
13244 | 13439 | } |
13245 | 13440 | else |
@@ -13256,7 +13451,7 @@ | ||
13256 | 13451 | } |
13257 | 13452 | { |
13258 | 13453 | const struct StreamOut *_7 = &(*streams).out; |
13259 | - Indent$(0 /* _6 */, &*_7, &*level); | |
13454 | + Indent(0 /* _6 */, &*_7, &*level); | |
13260 | 13455 | } |
13261 | 13456 | { |
13262 | 13457 | const struct StreamOut *_8 = &(*streams).out; |
@@ -13289,7 +13484,7 @@ | ||
13289 | 13484 | } |
13290 | 13485 | { |
13291 | 13486 | const struct StreamOut *_13 = &(*streams).out; |
13292 | - Indent$(0 /* _12 */, &*_13, &*level); | |
13487 | + Indent(0 /* _12 */, &*_13, &*level); | |
13293 | 13488 | } |
13294 | 13489 | { |
13295 | 13490 | const struct StreamOut *_14 = &(*streams).out; |
@@ -13319,7 +13514,7 @@ | ||
13319 | 13514 | { |
13320 | 13515 | ParseId$(&_20, &*streams, &*txtpos, &*level); |
13321 | 13516 | } |
13322 | - ParseExpr$(0 /* _18 */, &*streams, &*txtpos, &*state, &_19, &*scope, &*tmpnr, &*store, &_20, &*partial, &*action, &*self); | |
13517 | + ParseExpr$(0 /* _18 */, &*streams, &*txtpos, &*state, &_19, &*scope, &*tmpnr, &*store, &_20, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
13323 | 13518 | string$dest(&_20); |
13324 | 13519 | _IGNORE_(_19); |
13325 | 13520 | } |
@@ -13338,7 +13533,7 @@ | ||
13338 | 13533 | { |
13339 | 13534 | ParseId$(&_20, &*streams, &*txtpos, &*level); |
13340 | 13535 | } |
13341 | - ParseAssign$(0 /* _18 */, &*streams, &*txtpos, &*state, &_19, &*scope, &*tmpnr, &*partial, &*action, &*self, &_20); | |
13536 | + ParseAssign$(0 /* _18 */, &*streams, &*txtpos, &*state, &_19, &*scope, &*tmpnr, &*partial, &*action, &*self, &*reduced_ids, &*verified, &_20); | |
13342 | 13537 | string$dest(&_20); |
13343 | 13538 | _IGNORE_(_19); |
13344 | 13539 | } |
@@ -13351,7 +13546,7 @@ | ||
13351 | 13546 | { |
13352 | 13547 | struct stack/*u64*/ _17; memset(&_17, 0, sizeof(struct stack/*u64*/)); |
13353 | 13548 | { |
13354 | - FindPr$(&_17, &*txtpos, &*scope, &*solidid); | |
13549 | + FindParOrVar$(&_17, &*txtpos, &*scope, &*solidid); | |
13355 | 13550 | } |
13356 | 13551 | if(!(_17).size) |
13357 | 13552 | { |
@@ -13435,7 +13630,7 @@ | ||
13435 | 13630 | _24 = *level + _25; |
13436 | 13631 | _IGNORE_(_25); |
13437 | 13632 | } |
13438 | - Indent$(0 /* _22 */, &*_23, &_24); | |
13633 | + Indent(0 /* _22 */, &*_23, &_24); | |
13439 | 13634 | _IGNORE_(_24); |
13440 | 13635 | } |
13441 | 13636 | { |
@@ -13477,7 +13672,7 @@ | ||
13477 | 13672 | { |
13478 | 13673 | varinit(&_30, &_qti); |
13479 | 13674 | } |
13480 | - push(0 /* _29 */, &*scope, &_30, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3073); | |
13675 | + push(0 /* _29 */, &*scope, &_30, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3135); | |
13481 | 13676 | var$dest(&_30); |
13482 | 13677 | } |
13483 | 13678 | // make element accessible in case... |
@@ -13523,7 +13718,7 @@ | ||
13523 | 13718 | _27 = *level + _28; |
13524 | 13719 | _IGNORE_(_28); |
13525 | 13720 | } |
13526 | - Indent$(0 /* _25 */, &*_26, &_27); | |
13721 | + Indent(0 /* _25 */, &*_26, &_27); | |
13527 | 13722 | _IGNORE_(_27); |
13528 | 13723 | } |
13529 | 13724 | { |
@@ -13565,7 +13760,7 @@ | ||
13565 | 13760 | { |
13566 | 13761 | varinit(&_33, &_qti); |
13567 | 13762 | } |
13568 | - push(0 /* _32 */, &*scope, &_33, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3082); | |
13763 | + push(0 /* _32 */, &*scope, &_33, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3144); | |
13569 | 13764 | var$dest(&_33); |
13570 | 13765 | } |
13571 | 13766 | // make element accessible in case... |
@@ -13603,7 +13798,7 @@ | ||
13603 | 13798 | _28 = *level + _29; |
13604 | 13799 | _IGNORE_(_29); |
13605 | 13800 | } |
13606 | - Indent$(0 /* _26 */, &*_27, &_28); | |
13801 | + Indent(0 /* _26 */, &*_27, &_28); | |
13607 | 13802 | _IGNORE_(_28); |
13608 | 13803 | } |
13609 | 13804 | { |
@@ -13645,7 +13840,7 @@ | ||
13645 | 13840 | { |
13646 | 13841 | varinit(&_34, &_qti); |
13647 | 13842 | } |
13648 | - push(0 /* _33 */, &*scope, &_34, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3088); | |
13843 | + push(0 /* _33 */, &*scope, &_34, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3150); | |
13649 | 13844 | var$dest(&_34); |
13650 | 13845 | } |
13651 | 13846 | // make element accessible in case... |
@@ -13688,7 +13883,7 @@ | ||
13688 | 13883 | _29 = *level + _30; |
13689 | 13884 | _IGNORE_(_30); |
13690 | 13885 | } |
13691 | - Indent$(0 /* _27 */, &*_28, &_29); | |
13886 | + Indent(0 /* _27 */, &*_28, &_29); | |
13692 | 13887 | _IGNORE_(_29); |
13693 | 13888 | } |
13694 | 13889 | { |
@@ -13730,7 +13925,7 @@ | ||
13730 | 13925 | { |
13731 | 13926 | varinit(&_35, &_qti); |
13732 | 13927 | } |
13733 | - push(0 /* _34 */, &*scope, &_35, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3094); | |
13928 | + push(0 /* _34 */, &*scope, &_35, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3156); | |
13734 | 13929 | var$dest(&_35); |
13735 | 13930 | } |
13736 | 13931 | // make element accessible in case... |
@@ -13771,7 +13966,7 @@ | ||
13771 | 13966 | { |
13772 | 13967 | ParseId$(&_27, &*streams, &*txtpos, &*level); |
13773 | 13968 | } |
13774 | - ParseExpr$(0 /* _25 */, &*streams, &*txtpos, &*state, &_26, &*scope, &*tmpnr, &*store, &_27, &*partial, &*action, &*self); | |
13969 | + ParseExpr$(0 /* _25 */, &*streams, &*txtpos, &*state, &_26, &*scope, &*tmpnr, &*store, &_27, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
13775 | 13970 | string$dest(&_27); |
13776 | 13971 | _IGNORE_(_26); |
13777 | 13972 | } |
@@ -13790,7 +13985,7 @@ | ||
13790 | 13985 | { |
13791 | 13986 | ParseId$(&_27, &*streams, &*txtpos, &*level); |
13792 | 13987 | } |
13793 | - ParseAssign$(0 /* _25 */, &*streams, &*txtpos, &*state, &_26, &*scope, &*tmpnr, &*partial, &*action, &*self, &_27); | |
13988 | + ParseAssign$(0 /* _25 */, &*streams, &*txtpos, &*state, &_26, &*scope, &*tmpnr, &*partial, &*action, &*self, &*reduced_ids, &*verified, &_27); | |
13794 | 13989 | string$dest(&_27); |
13795 | 13990 | _IGNORE_(_26); |
13796 | 13991 | } |
@@ -13801,7 +13996,7 @@ | ||
13801 | 13996 | } |
13802 | 13997 | { |
13803 | 13998 | struct stack/*var*/ _26; memset(&_26, 0, sizeof(struct stack/*var*/)); |
13804 | - pop_opt(&_26, &*scope, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3108); | |
13999 | + pop_opt(&_26, &*scope, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3170); | |
13805 | 14000 | free$(&_26, sizeof(struct var), (void (*)(void *))var$dest); |
13806 | 14001 | } |
13807 | 14002 | // ...but not outside |
@@ -13818,7 +14013,7 @@ | ||
13818 | 14013 | _19 = *level + _20; |
13819 | 14014 | _IGNORE_(_20); |
13820 | 14015 | } |
13821 | - Indent$(0 /* _17 */, &*_18, &_19); | |
14016 | + Indent(0 /* _17 */, &*_18, &_19); | |
13822 | 14017 | _IGNORE_(_19); |
13823 | 14018 | } |
13824 | 14019 | { |
@@ -13830,7 +14025,7 @@ | ||
13830 | 14025 | } |
13831 | 14026 | { |
13832 | 14027 | const struct StreamOut *_20 = &(*streams).out; |
13833 | - Indent$(0 /* _19 */, &*_20, &*level); | |
14028 | + Indent(0 /* _19 */, &*_20, &*level); | |
13834 | 14029 | } |
13835 | 14030 | { |
13836 | 14031 | const struct StreamOut *_21 = &(*streams).out; |
@@ -13847,7 +14042,7 @@ | ||
13847 | 14042 | _22 = *idx + _23; |
13848 | 14043 | _IGNORE_(_23); |
13849 | 14044 | } |
13850 | - EmitCases$(0 /* _21 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self, &*par, &*mutable, &*elems, &_22, &*typed); | |
14045 | + EmitCases$(0 /* _21 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self, &*reduced_ids, &*verified, &*par, &*mutable, &*elems, &_22, &*typed); | |
13851 | 14046 | _IGNORE_(_22); |
13852 | 14047 | } |
13853 | 14048 | free$(&_id, sizeof(struct string), (void (*)(void *))string$dest); |
@@ -13857,7 +14052,7 @@ | ||
13857 | 14052 | { |
13858 | 14053 | { |
13859 | 14054 | const struct StreamOut *_4 = &(*streams).out; |
13860 | - Indent$(0 /* _3 */, &*_4, &*level); | |
14055 | + Indent(0 /* _3 */, &*_4, &*level); | |
13861 | 14056 | } |
13862 | 14057 | { |
13863 | 14058 | const struct StreamOut *_5 = &(*streams).out; |
@@ -13868,7 +14063,7 @@ | ||
13868 | 14063 | } |
13869 | 14064 | { |
13870 | 14065 | const struct StreamOut *_6 = &(*streams).out; |
13871 | - Indent$(0 /* _5 */, &*_6, &*level); | |
14066 | + Indent(0 /* _5 */, &*_6, &*level); | |
13872 | 14067 | } |
13873 | 14068 | { |
13874 | 14069 | const struct StreamOut *_7 = &(*streams).out; |
@@ -13886,7 +14081,7 @@ | ||
13886 | 14081 | _9 = *level + _10; |
13887 | 14082 | _IGNORE_(_10); |
13888 | 14083 | } |
13889 | - Indent$(0 /* _7 */, &*_8, &_9); | |
14084 | + Indent(0 /* _7 */, &*_8, &_9); | |
13890 | 14085 | _IGNORE_(_9); |
13891 | 14086 | } |
13892 | 14087 | { |
@@ -13905,7 +14100,7 @@ | ||
13905 | 14100 | _11 = *level + _12; |
13906 | 14101 | _IGNORE_(_12); |
13907 | 14102 | } |
13908 | - Indent$(0 /* _9 */, &*_10, &_11); | |
14103 | + Indent(0 /* _9 */, &*_10, &_11); | |
13909 | 14104 | _IGNORE_(_11); |
13910 | 14105 | } |
13911 | 14106 | { |
@@ -13917,7 +14112,7 @@ | ||
13917 | 14112 | } |
13918 | 14113 | { |
13919 | 14114 | const struct StreamOut *_12 = &(*streams).out; |
13920 | - Indent$(0 /* _11 */, &*_12, &*level); | |
14115 | + Indent(0 /* _11 */, &*_12, &*level); | |
13921 | 14116 | } |
13922 | 14117 | { |
13923 | 14118 | const struct StreamOut *_13 = &(*streams).out; |
@@ -13930,7 +14125,7 @@ | ||
13930 | 14125 | } |
13931 | 14126 | } |
13932 | 14127 | |
13933 | -void EmitSwitch$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const struct string *id, const bool *partial, const bool *action, const struct string *self, const bool *typed) | |
14128 | +void EmitSwitch$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const struct string *id, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified, const bool *typed) | |
13934 | 14129 | { |
13935 | 14130 | { |
13936 | 14131 | struct type_pure _subtype; memset(&_subtype, 0, sizeof(struct type_pure)); |
@@ -13973,9 +14168,9 @@ | ||
13973 | 14168 | } |
13974 | 14169 | struct stack/*qtypepureid*/ _4; memset(&_4, 0, sizeof(struct stack/*qtypepureid*/)); |
13975 | 14170 | { |
13976 | - solid(&_4, &_provide, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3134); | |
14171 | + solid(&_4, &_provide, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3196); | |
13977 | 14172 | } |
13978 | - ParseExpr$(0 /* _2 */, &*streams, &*txtpos, &*state, &_3, &*scope, &*tmpnr, &_4, &_id, &*partial, &*action, &*self); | |
14173 | + ParseExpr$(0 /* _2 */, &*streams, &*txtpos, &*state, &_3, &*scope, &*tmpnr, &_4, &_id, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
13979 | 14174 | free$(&_4, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); |
13980 | 14175 | _IGNORE_(_3); |
13981 | 14176 | } |
@@ -14040,7 +14235,7 @@ | ||
14040 | 14235 | struct structdef _ud; memset(&_ud, 0, sizeof(struct structdef)); |
14041 | 14236 | { |
14042 | 14237 | struct stack/*structdef*/ *_8 = &(*state).structs; |
14043 | - at_get$(&_ud, &*_8, &*uidx, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 3150); | |
14238 | + at_get$(&_ud, &*_8, &*uidx, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 3212); | |
14044 | 14239 | } |
14045 | 14240 | struct flavour _8; memset(&_8, 0, sizeof(struct flavour)); |
14046 | 14241 | flavour$copy(&_8, &(_ud).type); |
@@ -14091,7 +14286,7 @@ | ||
14091 | 14286 | flavour$dest(&_8); |
14092 | 14287 | { |
14093 | 14288 | const struct StreamOut *_12 = &(*streams).out; |
14094 | - Indent$(0 /* _11 */, &*_12, &*level); | |
14289 | + Indent(0 /* _11 */, &*_12, &*level); | |
14095 | 14290 | } |
14096 | 14291 | { |
14097 | 14292 | const struct StreamOut *_13 = &(*streams).out; |
@@ -14114,7 +14309,7 @@ | ||
14114 | 14309 | } |
14115 | 14310 | { |
14116 | 14311 | const struct StreamOut *_16 = &(*streams).out; |
14117 | - Indent$(0 /* _15 */, &*_16, &*level); | |
14312 | + Indent(0 /* _15 */, &*_16, &*level); | |
14118 | 14313 | } |
14119 | 14314 | { |
14120 | 14315 | const struct StreamOut *_17 = &(*streams).out; |
@@ -14137,7 +14332,7 @@ | ||
14137 | 14332 | /*mutable*/ const struct stack/*typepureid*/ *_21 = &(_ud).elems; |
14138 | 14333 | uint64_t _22; memset(&_22, 0, sizeof(uint64_t)); |
14139 | 14334 | _22 = 0; |
14140 | - EmitCases$(0 /* _17 */, &*streams, &*txtpos, &*state, &_18, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self, &*_19, &_20, &*_21, &_22, &*typed); | |
14335 | + EmitCases$(0 /* _17 */, &*streams, &*txtpos, &*state, &_18, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self, &*reduced_ids, &*verified, &*_19, &_20, &*_21, &_22, &*typed); | |
14141 | 14336 | _IGNORE_(_22); |
14142 | 14337 | _IGNORE_(_20); |
14143 | 14338 | _IGNORE_(_18); |
@@ -14144,7 +14339,7 @@ | ||
14144 | 14339 | } |
14145 | 14340 | { |
14146 | 14341 | const struct StreamOut *_19 = &(*streams).out; |
14147 | - Indent$(0 /* _18 */, &*_19, &*level); | |
14342 | + Indent(0 /* _18 */, &*_19, &*level); | |
14148 | 14343 | } |
14149 | 14344 | { |
14150 | 14345 | const struct StreamOut *_20 = &(*streams).out; |
@@ -14225,7 +14420,7 @@ | ||
14225 | 14420 | struct structdef _ud; memset(&_ud, 0, sizeof(struct structdef)); |
14226 | 14421 | { |
14227 | 14422 | struct stack/*structdef*/ *_11 = &(*state).structs; |
14228 | - at_get$(&_ud, &*_11, &*uidx, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 3186); | |
14423 | + at_get$(&_ud, &*_11, &*uidx, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 3248); | |
14229 | 14424 | } |
14230 | 14425 | struct flavour _11; memset(&_11, 0, sizeof(struct flavour)); |
14231 | 14426 | flavour$copy(&_11, &(_ud).type); |
@@ -14276,7 +14471,7 @@ | ||
14276 | 14471 | flavour$dest(&_11); |
14277 | 14472 | { |
14278 | 14473 | const struct StreamOut *_15 = &(*streams).out; |
14279 | - Indent$(0 /* _14 */, &*_15, &*level); | |
14474 | + Indent(0 /* _14 */, &*_15, &*level); | |
14280 | 14475 | } |
14281 | 14476 | { |
14282 | 14477 | const struct StreamOut *_16 = &(*streams).out; |
@@ -14299,7 +14494,7 @@ | ||
14299 | 14494 | } |
14300 | 14495 | { |
14301 | 14496 | const struct StreamOut *_19 = &(*streams).out; |
14302 | - Indent$(0 /* _18 */, &*_19, &*level); | |
14497 | + Indent(0 /* _18 */, &*_19, &*level); | |
14303 | 14498 | } |
14304 | 14499 | { |
14305 | 14500 | const struct StreamOut *_20 = &(*streams).out; |
@@ -14322,7 +14517,7 @@ | ||
14322 | 14517 | /*mutable*/ const struct stack/*typepureid*/ *_24 = &(_ud).elems; |
14323 | 14518 | uint64_t _25; memset(&_25, 0, sizeof(uint64_t)); |
14324 | 14519 | _25 = 0; |
14325 | - EmitCases$(0 /* _20 */, &*streams, &*txtpos, &*state, &_21, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self, &*_22, &_23, &*_24, &_25, &*typed); | |
14520 | + EmitCases$(0 /* _20 */, &*streams, &*txtpos, &*state, &_21, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self, &*reduced_ids, &*verified, &*_22, &_23, &*_24, &_25, &*typed); | |
14326 | 14521 | _IGNORE_(_25); |
14327 | 14522 | _IGNORE_(_23); |
14328 | 14523 | _IGNORE_(_21); |
@@ -14329,7 +14524,7 @@ | ||
14329 | 14524 | } |
14330 | 14525 | { |
14331 | 14526 | const struct StreamOut *_22 = &(*streams).out; |
14332 | - Indent$(0 /* _21 */, &*_22, &*level); | |
14527 | + Indent(0 /* _21 */, &*_22, &*level); | |
14333 | 14528 | } |
14334 | 14529 | { |
14335 | 14530 | const struct StreamOut *_23 = &(*streams).out; |
@@ -14350,7 +14545,7 @@ | ||
14350 | 14545 | { |
14351 | 14546 | { |
14352 | 14547 | const struct StreamOut *_10 = &(*streams).out; |
14353 | - Indent$(0 /* _9 */, &*_10, &*level); | |
14548 | + Indent(0 /* _9 */, &*_10, &*level); | |
14354 | 14549 | } |
14355 | 14550 | { |
14356 | 14551 | const struct StreamOut *_11 = &(*streams).out; |
@@ -14373,7 +14568,7 @@ | ||
14373 | 14568 | } |
14374 | 14569 | { |
14375 | 14570 | const struct StreamOut *_14 = &(*streams).out; |
14376 | - Indent$(0 /* _13 */, &*_14, &*level); | |
14571 | + Indent(0 /* _13 */, &*_14, &*level); | |
14377 | 14572 | } |
14378 | 14573 | { |
14379 | 14574 | const struct StreamOut *_15 = &(*streams).out; |
@@ -14410,7 +14605,7 @@ | ||
14410 | 14605 | { |
14411 | 14606 | ParseId$(&_21, &*streams, &*txtpos, &*level); |
14412 | 14607 | } |
14413 | - ParseExpr$(0 /* _19 */, &*streams, &*txtpos, &*state, &_20, &*scope, &*tmpnr, &*store, &_21, &*partial, &*action, &*self); | |
14608 | + ParseExpr$(0 /* _19 */, &*streams, &*txtpos, &*state, &_20, &*scope, &*tmpnr, &*store, &_21, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
14414 | 14609 | string$dest(&_21); |
14415 | 14610 | _IGNORE_(_20); |
14416 | 14611 | } |
@@ -14429,7 +14624,7 @@ | ||
14429 | 14624 | { |
14430 | 14625 | ParseId$(&_21, &*streams, &*txtpos, &*level); |
14431 | 14626 | } |
14432 | - ParseAssign$(0 /* _19 */, &*streams, &*txtpos, &*state, &_20, &*scope, &*tmpnr, &*partial, &*action, &*self, &_21); | |
14627 | + ParseAssign$(0 /* _19 */, &*streams, &*txtpos, &*state, &_20, &*scope, &*tmpnr, &*partial, &*action, &*self, &*reduced_ids, &*verified, &_21); | |
14433 | 14628 | string$dest(&_21); |
14434 | 14629 | _IGNORE_(_20); |
14435 | 14630 | } |
@@ -14436,7 +14631,7 @@ | ||
14436 | 14631 | } |
14437 | 14632 | { |
14438 | 14633 | const struct StreamOut *_20 = &(*streams).out; |
14439 | - Indent$(0 /* _19 */, &*_20, &*level); | |
14634 | + Indent(0 /* _19 */, &*_20, &*level); | |
14440 | 14635 | } |
14441 | 14636 | { |
14442 | 14637 | const struct StreamOut *_21 = &(*streams).out; |
@@ -14447,7 +14642,7 @@ | ||
14447 | 14642 | } |
14448 | 14643 | { |
14449 | 14644 | const struct StreamOut *_22 = &(*streams).out; |
14450 | - Indent$(0 /* _21 */, &*_22, &*level); | |
14645 | + Indent(0 /* _21 */, &*_22, &*level); | |
14451 | 14646 | } |
14452 | 14647 | { |
14453 | 14648 | const struct StreamOut *_23 = &(*streams).out; |
@@ -14458,7 +14653,7 @@ | ||
14458 | 14653 | } |
14459 | 14654 | { |
14460 | 14655 | const struct StreamOut *_24 = &(*streams).out; |
14461 | - Indent$(0 /* _23 */, &*_24, &*level); | |
14656 | + Indent(0 /* _23 */, &*_24, &*level); | |
14462 | 14657 | } |
14463 | 14658 | { |
14464 | 14659 | const struct StreamOut *_25 = &(*streams).out; |
@@ -14504,7 +14699,7 @@ | ||
14504 | 14699 | { |
14505 | 14700 | ParseId$(&_33, &*streams, &*txtpos, &*level); |
14506 | 14701 | } |
14507 | - ParseExpr$(0 /* _31 */, &*streams, &*txtpos, &*state, &_32, &*scope, &*tmpnr, &*store, &_33, &*partial, &*action, &*self); | |
14702 | + ParseExpr$(0 /* _31 */, &*streams, &*txtpos, &*state, &_32, &*scope, &*tmpnr, &*store, &_33, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
14508 | 14703 | string$dest(&_33); |
14509 | 14704 | _IGNORE_(_32); |
14510 | 14705 | } |
@@ -14523,7 +14718,7 @@ | ||
14523 | 14718 | { |
14524 | 14719 | ParseId$(&_33, &*streams, &*txtpos, &*level); |
14525 | 14720 | } |
14526 | - ParseAssign$(0 /* _31 */, &*streams, &*txtpos, &*state, &_32, &*scope, &*tmpnr, &*partial, &*action, &*self, &_33); | |
14721 | + ParseAssign$(0 /* _31 */, &*streams, &*txtpos, &*state, &_32, &*scope, &*tmpnr, &*partial, &*action, &*self, &*reduced_ids, &*verified, &_33); | |
14527 | 14722 | string$dest(&_33); |
14528 | 14723 | _IGNORE_(_32); |
14529 | 14724 | } |
@@ -14536,7 +14731,7 @@ | ||
14536 | 14731 | { |
14537 | 14732 | struct stack/*u64*/ _30; memset(&_30, 0, sizeof(struct stack/*u64*/)); |
14538 | 14733 | { |
14539 | - FindPr$(&_30, &*txtpos, &*scope, &*solidvar); | |
14734 | + FindParOrVar$(&_30, &*txtpos, &*scope, &*solidvar); | |
14540 | 14735 | } |
14541 | 14736 | if(!(_30).size) |
14542 | 14737 | { |
@@ -14601,7 +14796,7 @@ | ||
14601 | 14796 | _35 = *level + _36; |
14602 | 14797 | _IGNORE_(_36); |
14603 | 14798 | } |
14604 | - Indent$(0 /* _33 */, &*_34, &_35); | |
14799 | + Indent(0 /* _33 */, &*_34, &_35); | |
14605 | 14800 | _IGNORE_(_35); |
14606 | 14801 | } |
14607 | 14802 | { |
@@ -14637,7 +14832,7 @@ | ||
14637 | 14832 | { |
14638 | 14833 | varinit(&_39, &_qti); |
14639 | 14834 | } |
14640 | - push(0 /* _38 */, &*scope, &_39, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3261); | |
14835 | + push(0 /* _38 */, &*scope, &_39, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3323); | |
14641 | 14836 | var$dest(&_39); |
14642 | 14837 | } |
14643 | 14838 | // make element accessible in case... |
@@ -14657,7 +14852,7 @@ | ||
14657 | 14852 | { |
14658 | 14853 | ParseId$(&_43, &*streams, &*txtpos, &*level); |
14659 | 14854 | } |
14660 | - ParseExpr$(0 /* _41 */, &*streams, &*txtpos, &*state, &_42, &*scope, &*tmpnr, &*store, &_43, &*partial, &*action, &*self); | |
14855 | + ParseExpr$(0 /* _41 */, &*streams, &*txtpos, &*state, &_42, &*scope, &*tmpnr, &*store, &_43, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
14661 | 14856 | string$dest(&_43); |
14662 | 14857 | _IGNORE_(_42); |
14663 | 14858 | } |
@@ -14676,7 +14871,7 @@ | ||
14676 | 14871 | { |
14677 | 14872 | ParseId$(&_43, &*streams, &*txtpos, &*level); |
14678 | 14873 | } |
14679 | - ParseAssign$(0 /* _41 */, &*streams, &*txtpos, &*state, &_42, &*scope, &*tmpnr, &*partial, &*action, &*self, &_43); | |
14874 | + ParseAssign$(0 /* _41 */, &*streams, &*txtpos, &*state, &_42, &*scope, &*tmpnr, &*partial, &*action, &*self, &*reduced_ids, &*verified, &_43); | |
14680 | 14875 | string$dest(&_43); |
14681 | 14876 | _IGNORE_(_42); |
14682 | 14877 | } |
@@ -14687,7 +14882,7 @@ | ||
14687 | 14882 | } |
14688 | 14883 | { |
14689 | 14884 | struct stack/*var*/ _42; memset(&_42, 0, sizeof(struct stack/*var*/)); |
14690 | - pop_opt(&_42, &*scope, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3271); | |
14885 | + pop_opt(&_42, &*scope, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3333); | |
14691 | 14886 | free$(&_42, sizeof(struct var), (void (*)(void *))var$dest); |
14692 | 14887 | } |
14693 | 14888 | // ...but not outside |
@@ -14698,7 +14893,7 @@ | ||
14698 | 14893 | free$(&_27, sizeof(struct string), (void (*)(void *))string$dest); |
14699 | 14894 | { |
14700 | 14895 | const struct StreamOut *_31 = &(*streams).out; |
14701 | - Indent$(0 /* _30 */, &*_31, &*level); | |
14896 | + Indent(0 /* _30 */, &*_31, &*level); | |
14702 | 14897 | } |
14703 | 14898 | { |
14704 | 14899 | const struct StreamOut *_32 = &(*streams).out; |
@@ -14768,7 +14963,7 @@ | ||
14768 | 14963 | struct structdef _ud; memset(&_ud, 0, sizeof(struct structdef)); |
14769 | 14964 | { |
14770 | 14965 | struct stack/*structdef*/ *_13 = &(*state).structs; |
14771 | - at_get$(&_ud, &*_13, &*uidx, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 3289); | |
14966 | + at_get$(&_ud, &*_13, &*uidx, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 3351); | |
14772 | 14967 | } |
14773 | 14968 | struct flavour _13; memset(&_13, 0, sizeof(struct flavour)); |
14774 | 14969 | flavour$copy(&_13, &(_ud).type); |
@@ -14819,7 +15014,7 @@ | ||
14819 | 15014 | flavour$dest(&_13); |
14820 | 15015 | { |
14821 | 15016 | const struct StreamOut *_17 = &(*streams).out; |
14822 | - Indent$(0 /* _16 */, &*_17, &*level); | |
15017 | + Indent(0 /* _16 */, &*_17, &*level); | |
14823 | 15018 | } |
14824 | 15019 | { |
14825 | 15020 | const struct StreamOut *_18 = &(*streams).out; |
@@ -14842,7 +15037,7 @@ | ||
14842 | 15037 | } |
14843 | 15038 | { |
14844 | 15039 | const struct StreamOut *_21 = &(*streams).out; |
14845 | - Indent$(0 /* _20 */, &*_21, &*level); | |
15040 | + Indent(0 /* _20 */, &*_21, &*level); | |
14846 | 15041 | } |
14847 | 15042 | { |
14848 | 15043 | const struct StreamOut *_22 = &(*streams).out; |
@@ -14865,7 +15060,7 @@ | ||
14865 | 15060 | /*mutable*/ const struct stack/*typepureid*/ *_26 = &(_ud).elems; |
14866 | 15061 | uint64_t _27; memset(&_27, 0, sizeof(uint64_t)); |
14867 | 15062 | _27 = 0; |
14868 | - EmitCases$(0 /* _22 */, &*streams, &*txtpos, &*state, &_23, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self, &*_24, &_25, &*_26, &_27, &*typed); | |
15063 | + EmitCases$(0 /* _22 */, &*streams, &*txtpos, &*state, &_23, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self, &*reduced_ids, &*verified, &*_24, &_25, &*_26, &_27, &*typed); | |
14869 | 15064 | _IGNORE_(_27); |
14870 | 15065 | _IGNORE_(_25); |
14871 | 15066 | _IGNORE_(_23); |
@@ -14872,7 +15067,7 @@ | ||
14872 | 15067 | } |
14873 | 15068 | { |
14874 | 15069 | const struct StreamOut *_24 = &(*streams).out; |
14875 | - Indent$(0 /* _23 */, &*_24, &*level); | |
15070 | + Indent(0 /* _23 */, &*_24, &*level); | |
14876 | 15071 | } |
14877 | 15072 | { |
14878 | 15073 | const struct StreamOut *_25 = &(*streams).out; |
@@ -14907,7 +15102,7 @@ | ||
14907 | 15102 | type_pure$dest(&_3); |
14908 | 15103 | { |
14909 | 15104 | const struct StreamOut *_7 = &(*streams).out; |
14910 | - Indent$(0 /* _6 */, &*_7, &*level); | |
15105 | + Indent(0 /* _6 */, &*_7, &*level); | |
14911 | 15106 | } |
14912 | 15107 | { |
14913 | 15108 | const struct StreamOut *_8 = &(*streams).out; |
@@ -14940,8 +15135,512 @@ | ||
14940 | 15135 | } |
14941 | 15136 | } |
14942 | 15137 | |
15138 | +void EmitReduce$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const struct string *id, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified, const bool *typed) | |
15139 | +{ | |
15140 | + { | |
15141 | + struct string _par; memset(&_par, 0, sizeof(struct string)); | |
15142 | + { | |
15143 | + ParseId$(&_par, &*streams, &*txtpos, &*level); | |
15144 | + } | |
15145 | + // NOTE: only non-mutable parameter can be reduced! | |
15146 | + struct stack/*u64*/ _1; memset(&_1, 0, sizeof(struct stack/*u64*/)); | |
15147 | + { | |
15148 | + FindPar$(&_1, &*txtpos, &*scope, &_par); | |
15149 | + } | |
15150 | + if(!(_1).size) | |
15151 | + { | |
15152 | + { | |
15153 | + { | |
15154 | + const struct StreamOut *_4 = &(*streams).err; | |
15155 | + struct string _5; memset(&_5, 0, sizeof(struct string)); | |
15156 | + init$fromliteral(&_5, "can only reduce non-mutable parameter", 37); | |
15157 | + PutStr(0 /* _3 */, &*_4, &_5); | |
15158 | + string$dest(&_5); | |
15159 | + } | |
15160 | + { | |
15161 | + const struct StreamOut *_5 = &(*streams).err; | |
15162 | + Fail$(0 /* _4 */, &*_5, &*txtpos); | |
15163 | + } | |
15164 | + } | |
15165 | + } | |
15166 | + else | |
15167 | + { | |
15168 | + const uint64_t *pos = (_1).data; | |
15169 | + { | |
15170 | + struct var _current; memset(&_current, 0, sizeof(struct var)); | |
15171 | + { | |
15172 | + at_get$(&_current, &*scope, &*pos, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3389); | |
15173 | + } | |
15174 | + bool _5; | |
15175 | + _5 = (_current).qti.qt.mutable; | |
15176 | + if(_5) | |
15177 | + { | |
15178 | + { | |
15179 | + const struct StreamOut *_7 = &(*streams).err; | |
15180 | + struct string _8; memset(&_8, 0, sizeof(struct string)); | |
15181 | + init$fromliteral(&_8, "cannot reduce mutable parameter", 31); | |
15182 | + PutStr(0 /* _6 */, &*_7, &_8); | |
15183 | + string$dest(&_8); | |
15184 | + } | |
15185 | + { | |
15186 | + const struct StreamOut *_8 = &(*streams).err; | |
15187 | + Fail$(0 /* _7 */, &*_8, &*txtpos); | |
15188 | + } | |
15189 | + } | |
15190 | + bool _7; | |
15191 | + { | |
15192 | + bool _8; memset(&_8, 0, sizeof(bool)); | |
15193 | + { | |
15194 | + struct string _9; memset(&_9, 0, sizeof(struct string)); | |
15195 | + init$fromliteral(&_9, "to", 2); | |
15196 | + struct string _10; memset(&_10, 0, sizeof(struct string)); | |
15197 | + { | |
15198 | + ParseId$(&_10, &*streams, &*txtpos, &*level); | |
15199 | + } | |
15200 | + strequ(&_8, &_9, &_10); | |
15201 | + string$dest(&_10); | |
15202 | + string$dest(&_9); | |
15203 | + } | |
15204 | + not(&_7, &_8); | |
15205 | + _IGNORE_(_8); | |
15206 | + } | |
15207 | + if(_7) | |
15208 | + { | |
15209 | + { | |
15210 | + const struct StreamOut *_9 = &(*streams).err; | |
15211 | + struct string _10; memset(&_10, 0, sizeof(struct string)); | |
15212 | + init$fromliteral(&_10, "missing keyword \"to\"", 20); | |
15213 | + PutStr(0 /* _8 */, &*_9, &_10); | |
15214 | + string$dest(&_10); | |
15215 | + } | |
15216 | + { | |
15217 | + const struct StreamOut *_10 = &(*streams).err; | |
15218 | + Fail$(0 /* _9 */, &*_10, &*txtpos); | |
15219 | + } | |
15220 | + } | |
15221 | + struct string _tmp_reduce; memset(&_tmp_reduce, 0, sizeof(struct string)); | |
15222 | + { | |
15223 | + ParseId$(&_tmp_reduce, &*streams, &*txtpos, &*level); | |
15224 | + } | |
15225 | + struct string _reduced_id; memset(&_reduced_id, 0, sizeof(struct string)); | |
15226 | + bool _8; | |
15227 | + { | |
15228 | + struct string _9; memset(&_9, 0, sizeof(struct string)); | |
15229 | + init$fromliteral(&_9, "", 0); | |
15230 | + strequ(&_8, &_9, &_tmp_reduce); | |
15231 | + string$dest(&_9); | |
15232 | + } | |
15233 | + if(_8) | |
15234 | + { | |
15235 | + string$copy(&_reduced_id, &(_par)); | |
15236 | + } | |
15237 | + else | |
15238 | + { | |
15239 | + string$copy(&_reduced_id, &(_tmp_reduce)); | |
15240 | + } | |
15241 | + { | |
15242 | + uint64_t _base_reduced; memset(&_base_reduced, 0, sizeof(uint64_t)); | |
15243 | + { | |
15244 | + size(&_base_reduced, &*reduced_ids); | |
15245 | + } | |
15246 | + //push<ReducedId>(reduced_ids, ReducedId(par, reduced_id)); | |
15247 | + { | |
15248 | + struct ReducedId _11; memset(&_11, 0, sizeof(struct ReducedId)); | |
15249 | + { | |
15250 | + ReducedId(&_11, &*pos, &_reduced_id); | |
15251 | + } | |
15252 | + push(0 /* _10 */, &*reduced_ids, &_11, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest, (void (*)(void *, const void *))ReducedId$copy, 3409); | |
15253 | + ReducedId$dest(&_11); | |
15254 | + } | |
15255 | + { | |
15256 | + uint8_t _12; memset(&_12, 0, sizeof(uint8_t)); | |
15257 | + _12 = 58; | |
15258 | + AssertGet$(0 /* _11 */, &*streams, &*txtpos, &*level, &_12); | |
15259 | + _IGNORE_(_12); | |
15260 | + } | |
15261 | + struct type_pure _12; memset(&_12, 0, sizeof(struct type_pure)); | |
15262 | + type_pure$copy(&_12, &(_current).qti.qt.type); | |
15263 | + switch((_12).type) | |
15264 | + { | |
15265 | + case 0: // struct stack/*type_pure_normal*/ type_pure_normal: | |
15266 | + { | |
15267 | + { | |
15268 | + bool _15; | |
15269 | + { | |
15270 | + const struct type_pure *_16 = &(_current).qti.qt.type; | |
15271 | + ispureprim(&_15, &*_16); | |
15272 | + } | |
15273 | + if(_15) | |
15274 | + { | |
15275 | + { | |
15276 | + const struct StreamOut *_17 = &(*streams).out; | |
15277 | + Indent(0 /* _16 */, &*_17, &*level); | |
15278 | + } | |
15279 | + { | |
15280 | + const struct StreamOut *_18 = &(*streams).out; | |
15281 | + struct string _19; memset(&_19, 0, sizeof(struct string)); | |
15282 | + init$fromliteral(&_19, "if(", 3); | |
15283 | + PutStr(0 /* _17 */, &*_18, &_19); | |
15284 | + string$dest(&_19); | |
15285 | + } | |
15286 | + { | |
15287 | + const struct StreamOut *_19 = &(*streams).out; | |
15288 | + const struct string *_20 = &(_current).qti.id; | |
15289 | + PutStr(0 /* _18 */, &*_19, &*_20); | |
15290 | + } | |
15291 | + { | |
15292 | + const struct StreamOut *_20 = &(*streams).out; | |
15293 | + struct string _21; memset(&_21, 0, sizeof(struct string)); | |
15294 | + init$fromliteral(&_21, " > 0)\n", 6); | |
15295 | + PutStr(0 /* _19 */, &*_20, &_21); | |
15296 | + string$dest(&_21); | |
15297 | + } | |
15298 | + { | |
15299 | + const struct StreamOut *_21 = &(*streams).out; | |
15300 | + Indent(0 /* _20 */, &*_21, &*level); | |
15301 | + } | |
15302 | + { | |
15303 | + const struct StreamOut *_22 = &(*streams).out; | |
15304 | + struct string _23; memset(&_23, 0, sizeof(struct string)); | |
15305 | + init$fromliteral(&_23, "{\n", 2); | |
15306 | + PutStr(0 /* _21 */, &*_22, &_23); | |
15307 | + string$dest(&_23); | |
15308 | + } | |
15309 | + struct qtypepureid _reduced; memset(&_reduced, 0, sizeof(struct qtypepureid)); | |
15310 | + { | |
15311 | + struct qtypepure _22; memset(&_22, 0, sizeof(struct qtypepure)); | |
15312 | + { | |
15313 | + const struct type_pure *_23 = &(_current).qti.qt.type; | |
15314 | + constqtp(&_22, &*_23); | |
15315 | + } | |
15316 | + struct string _23; memset(&_23, 0, sizeof(struct string)); | |
15317 | + { | |
15318 | + uint8_t _24; memset(&_24, 0, sizeof(uint8_t)); | |
15319 | + _24 = 95; | |
15320 | + preapp(&_23, &_reduced_id, &_24); | |
15321 | + _IGNORE_(_24); | |
15322 | + } | |
15323 | + qtypepureid(&_reduced, &_22, &_23); | |
15324 | + string$dest(&_23); | |
15325 | + qtypepure$dest(&_22); | |
15326 | + } | |
15327 | + //EmitLet$(streams.out, txtpos, add<u64>(1, level), state.structs, reduced); // if dynamic need to free... | |
15328 | + { | |
15329 | + const struct StreamOut *_23 = &(*streams).out; | |
15330 | + uint64_t _24; memset(&_24, 0, sizeof(uint64_t)); | |
15331 | + { | |
15332 | + uint64_t _25; memset(&_25, 0, sizeof(uint64_t)); | |
15333 | + _25 = 1; | |
15334 | + _24 = *level + _25; | |
15335 | + _IGNORE_(_25); | |
15336 | + } | |
15337 | + Indent(0 /* _22 */, &*_23, &_24); | |
15338 | + _IGNORE_(_24); | |
15339 | + } | |
15340 | + { | |
15341 | + const struct StreamOut *_24 = &(*streams).out; | |
15342 | + EmitQTPI(0 /* _23 */, &*_24, &_reduced); | |
15343 | + } | |
15344 | + { | |
15345 | + const struct StreamOut *_25 = &(*streams).out; | |
15346 | + struct string _26; memset(&_26, 0, sizeof(struct string)); | |
15347 | + init$fromliteral(&_26, " = ", 3); | |
15348 | + PutStr(0 /* _24 */, &*_25, &_26); | |
15349 | + string$dest(&_26); | |
15350 | + } | |
15351 | + { | |
15352 | + const struct StreamOut *_26 = &(*streams).out; | |
15353 | + const struct string *_27 = &(_current).qti.id; | |
15354 | + PutStr(0 /* _25 */, &*_26, &*_27); | |
15355 | + } | |
15356 | + { | |
15357 | + const struct StreamOut *_27 = &(*streams).out; | |
15358 | + struct string _28; memset(&_28, 0, sizeof(struct string)); | |
15359 | + init$fromliteral(&_28, " - 1;\n", 6); | |
15360 | + PutStr(0 /* _26 */, &*_27, &_28); | |
15361 | + string$dest(&_28); | |
15362 | + } | |
15363 | + // NOTE: modifing scope instead of copy to remember variable-usage changes. | |
15364 | + uint64_t _base_scope; memset(&_base_scope, 0, sizeof(uint64_t)); | |
15365 | + { | |
15366 | + size(&_base_scope, &*scope); | |
15367 | + } | |
15368 | + { | |
15369 | + struct var _28; memset(&_28, 0, sizeof(struct var)); | |
15370 | + { | |
15371 | + varinit(&_28, &_reduced); | |
15372 | + } | |
15373 | + push(0 /* _27 */, &*scope, &_28, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3429); | |
15374 | + var$dest(&_28); | |
15375 | + } | |
15376 | + // make element accessible in case... | |
15377 | + bool _29; | |
15378 | + _29 = (*typed); | |
15379 | + if(_29) | |
15380 | + { | |
15381 | + { | |
15382 | + uint64_t _31; memset(&_31, 0, sizeof(uint64_t)); | |
15383 | + { | |
15384 | + uint64_t _32; memset(&_32, 0, sizeof(uint64_t)); | |
15385 | + _32 = 1; | |
15386 | + _31 = *level + _32; | |
15387 | + _IGNORE_(_32); | |
15388 | + } | |
15389 | + struct string _32; memset(&_32, 0, sizeof(struct string)); | |
15390 | + { | |
15391 | + ParseId$(&_32, &*streams, &*txtpos, &*level); | |
15392 | + } | |
15393 | + ParseExpr$(0 /* _30 */, &*streams, &*txtpos, &*state, &_31, &*scope, &*tmpnr, &*store, &_32, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
15394 | + string$dest(&_32); | |
15395 | + _IGNORE_(_31); | |
15396 | + } | |
15397 | + } | |
15398 | + else | |
15399 | + { | |
15400 | + { | |
15401 | + uint64_t _31; memset(&_31, 0, sizeof(uint64_t)); | |
15402 | + { | |
15403 | + uint64_t _32; memset(&_32, 0, sizeof(uint64_t)); | |
15404 | + _32 = 1; | |
15405 | + _31 = *level + _32; | |
15406 | + _IGNORE_(_32); | |
15407 | + } | |
15408 | + struct string _32; memset(&_32, 0, sizeof(struct string)); | |
15409 | + { | |
15410 | + ParseId$(&_32, &*streams, &*txtpos, &*level); | |
15411 | + } | |
15412 | + ParseAssign$(0 /* _30 */, &*streams, &*txtpos, &*state, &_31, &*scope, &*tmpnr, &*partial, &*action, &*self, &*reduced_ids, &*verified, &_32); | |
15413 | + string$dest(&_32); | |
15414 | + _IGNORE_(_31); | |
15415 | + } | |
15416 | + } | |
15417 | + { | |
15418 | + const struct StreamOut *_31 = &(*streams).err; | |
15419 | + VerifyUsed$(0 /* _30 */, &*_31, &*txtpos, &*scope, &_base_scope); | |
15420 | + } | |
15421 | + { | |
15422 | + struct var _31; memset(&_31, 0, sizeof(struct var)); | |
15423 | + pop$(&_31, &*scope, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3440); | |
15424 | + var$dest(&_31); | |
15425 | + } | |
15426 | + // ...but not outside | |
15427 | + //Indent(streams.out, add<u64>(1, level)); FreeIn(streams.out, reduced.qt.type); PutStr(streams.out, reduced.id); FreeOut$(streams.out, streams.err, txtpos, state.structs, reduced.qt.type); PutStr(streams.out, "\n"); // ...then dynamic free here | |
15428 | + { | |
15429 | + const struct StreamOut *_32 = &(*streams).out; | |
15430 | + Indent(0 /* _31 */, &*_32, &*level); | |
15431 | + } | |
15432 | + { | |
15433 | + const struct StreamOut *_33 = &(*streams).out; | |
15434 | + struct string _34; memset(&_34, 0, sizeof(struct string)); | |
15435 | + init$fromliteral(&_34, "}\n", 2); | |
15436 | + PutStr(0 /* _32 */, &*_33, &_34); | |
15437 | + string$dest(&_34); | |
15438 | + } | |
15439 | + _IGNORE_(_base_scope); | |
15440 | + qtypepureid$dest(&_reduced); | |
15441 | + } | |
15442 | + else | |
15443 | + { | |
15444 | + { | |
15445 | + const struct StreamOut *_17 = &(*streams).err; | |
15446 | + struct string _18; memset(&_18, 0, sizeof(struct string)); | |
15447 | + init$fromliteral(&_18, "can't reduce ", 13); | |
15448 | + PutStr(0 /* _16 */, &*_17, &_18); | |
15449 | + string$dest(&_18); | |
15450 | + } | |
15451 | + { | |
15452 | + const struct StreamOut *_18 = &(*streams).err; | |
15453 | + PutStr(0 /* _17 */, &*_18, &*id); | |
15454 | + } | |
15455 | + { | |
15456 | + const struct StreamOut *_19 = &(*streams).err; | |
15457 | + struct string _20; memset(&_20, 0, sizeof(struct string)); | |
15458 | + init$fromliteral(&_20, " of type ", 9); | |
15459 | + PutStr(0 /* _18 */, &*_19, &_20); | |
15460 | + string$dest(&_20); | |
15461 | + } | |
15462 | + { | |
15463 | + const struct StreamOut *_20 = &(*streams).err; | |
15464 | + const struct type_pure *_21 = &(_current).qti.qt.type; | |
15465 | + EPrTypePure(0 /* _19 */, &*_20, &*_21); | |
15466 | + } | |
15467 | + { | |
15468 | + const struct StreamOut *_21 = &(*streams).err; | |
15469 | + Fail$(0 /* _20 */, &*_21, &*txtpos); | |
15470 | + } | |
15471 | + } | |
15472 | + } | |
15473 | + break; | |
15474 | + } | |
15475 | + case 1: // struct stack/*type_pure_wrapped*/ type_pure_wrapped: | |
15476 | + { | |
15477 | + { | |
15478 | + { | |
15479 | + const struct StreamOut *_16 = &(*streams).err; | |
15480 | + struct string _17; memset(&_17, 0, sizeof(struct string)); | |
15481 | + init$fromliteral(&_17, "can't reduce ", 13); | |
15482 | + PutStr(0 /* _15 */, &*_16, &_17); | |
15483 | + string$dest(&_17); | |
15484 | + } | |
15485 | + { | |
15486 | + const struct StreamOut *_17 = &(*streams).err; | |
15487 | + PutStr(0 /* _16 */, &*_17, &*id); | |
15488 | + } | |
15489 | + { | |
15490 | + const struct StreamOut *_18 = &(*streams).err; | |
15491 | + struct string _19; memset(&_19, 0, sizeof(struct string)); | |
15492 | + init$fromliteral(&_19, " of type ", 9); | |
15493 | + PutStr(0 /* _17 */, &*_18, &_19); | |
15494 | + string$dest(&_19); | |
15495 | + } | |
15496 | + { | |
15497 | + const struct StreamOut *_19 = &(*streams).err; | |
15498 | + const struct type_pure *_20 = &(_current).qti.qt.type; | |
15499 | + EPrTypePure(0 /* _18 */, &*_19, &*_20); | |
15500 | + } | |
15501 | + { | |
15502 | + const struct StreamOut *_20 = &(*streams).err; | |
15503 | + Fail$(0 /* _19 */, &*_20, &*txtpos); | |
15504 | + } | |
15505 | + } | |
15506 | + break; | |
15507 | + } | |
15508 | + default: | |
15509 | + { | |
15510 | + fprintf(stderr, "INTERNAL ERROR IN SWITCH"); | |
15511 | + break; | |
15512 | + } | |
15513 | + } | |
15514 | + type_pure$dest(&_12); | |
15515 | + { | |
15516 | + struct stack/*ReducedId*/ _15; memset(&_15, 0, sizeof(struct stack/*ReducedId*/)); | |
15517 | + pop_opt_base$(&_15, &*reduced_ids, &_base_reduced, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest, (void (*)(void *, const void *))ReducedId$copy, 3464); | |
15518 | + free$(&_15, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest); | |
15519 | + } | |
15520 | + _IGNORE_(_base_reduced); | |
15521 | + } | |
15522 | + { | |
15523 | + const struct StreamOut *_11 = &(*streams).out; | |
15524 | + Indent(0 /* _10 */, &*_11, &*level); | |
15525 | + } | |
15526 | + { | |
15527 | + const struct StreamOut *_12 = &(*streams).out; | |
15528 | + struct string _13; memset(&_13, 0, sizeof(struct string)); | |
15529 | + init$fromliteral(&_13, "else\n", 5); | |
15530 | + PutStr(0 /* _11 */, &*_12, &_13); | |
15531 | + string$dest(&_13); | |
15532 | + } | |
15533 | + bool _13; | |
15534 | + { | |
15535 | + bool _14; memset(&_14, 0, sizeof(bool)); | |
15536 | + { | |
15537 | + struct string _15; memset(&_15, 0, sizeof(struct string)); | |
15538 | + init$fromliteral(&_15, "term", 4); | |
15539 | + struct string _16; memset(&_16, 0, sizeof(struct string)); | |
15540 | + { | |
15541 | + ParseId$(&_16, &*streams, &*txtpos, &*level); | |
15542 | + } | |
15543 | + strequ(&_14, &_15, &_16); | |
15544 | + string$dest(&_16); | |
15545 | + string$dest(&_15); | |
15546 | + } | |
15547 | + not(&_13, &_14); | |
15548 | + _IGNORE_(_14); | |
15549 | + } | |
15550 | + if(_13) | |
15551 | + { | |
15552 | + { | |
15553 | + const struct StreamOut *_15 = &(*streams).err; | |
15554 | + struct string _16; memset(&_16, 0, sizeof(struct string)); | |
15555 | + init$fromliteral(&_16, "missing keyword \"term\"", 22); | |
15556 | + PutStr(0 /* _14 */, &*_15, &_16); | |
15557 | + string$dest(&_16); | |
15558 | + } | |
15559 | + { | |
15560 | + const struct StreamOut *_16 = &(*streams).err; | |
15561 | + Fail$(0 /* _15 */, &*_16, &*txtpos); | |
15562 | + } | |
15563 | + } | |
15564 | + { | |
15565 | + uint8_t _15; memset(&_15, 0, sizeof(uint8_t)); | |
15566 | + _15 = 58; | |
15567 | + AssertGet$(0 /* _14 */, &*streams, &*txtpos, &*level, &_15); | |
15568 | + _IGNORE_(_15); | |
15569 | + } | |
15570 | + { | |
15571 | + const struct StreamOut *_16 = &(*streams).out; | |
15572 | + Indent(0 /* _15 */, &*_16, &*level); | |
15573 | + } | |
15574 | + { | |
15575 | + const struct StreamOut *_17 = &(*streams).out; | |
15576 | + struct string _18; memset(&_18, 0, sizeof(struct string)); | |
15577 | + init$fromliteral(&_18, "{\n", 2); | |
15578 | + PutStr(0 /* _16 */, &*_17, &_18); | |
15579 | + string$dest(&_18); | |
15580 | + } | |
15581 | + bool _18; | |
15582 | + _18 = (*typed); | |
15583 | + if(_18) | |
15584 | + { | |
15585 | + { | |
15586 | + uint64_t _20; memset(&_20, 0, sizeof(uint64_t)); | |
15587 | + { | |
15588 | + uint64_t _21; memset(&_21, 0, sizeof(uint64_t)); | |
15589 | + _21 = 1; | |
15590 | + _20 = *level + _21; | |
15591 | + _IGNORE_(_21); | |
15592 | + } | |
15593 | + struct string _21; memset(&_21, 0, sizeof(struct string)); | |
15594 | + { | |
15595 | + ParseId$(&_21, &*streams, &*txtpos, &*level); | |
15596 | + } | |
15597 | + ParseExpr$(0 /* _19 */, &*streams, &*txtpos, &*state, &_20, &*scope, &*tmpnr, &*store, &_21, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
15598 | + string$dest(&_21); | |
15599 | + _IGNORE_(_20); | |
15600 | + } | |
15601 | + } | |
15602 | + else | |
15603 | + { | |
15604 | + { | |
15605 | + uint64_t _20; memset(&_20, 0, sizeof(uint64_t)); | |
15606 | + { | |
15607 | + uint64_t _21; memset(&_21, 0, sizeof(uint64_t)); | |
15608 | + _21 = 1; | |
15609 | + _20 = *level + _21; | |
15610 | + _IGNORE_(_21); | |
15611 | + } | |
15612 | + struct string _21; memset(&_21, 0, sizeof(struct string)); | |
15613 | + { | |
15614 | + ParseId$(&_21, &*streams, &*txtpos, &*level); | |
15615 | + } | |
15616 | + ParseAssign$(0 /* _19 */, &*streams, &*txtpos, &*state, &_20, &*scope, &*tmpnr, &*partial, &*action, &*self, &*reduced_ids, &*verified, &_21); | |
15617 | + string$dest(&_21); | |
15618 | + _IGNORE_(_20); | |
15619 | + } | |
15620 | + } | |
15621 | + { | |
15622 | + const struct StreamOut *_20 = &(*streams).out; | |
15623 | + Indent(0 /* _19 */, &*_20, &*level); | |
15624 | + } | |
15625 | + { | |
15626 | + const struct StreamOut *_21 = &(*streams).out; | |
15627 | + struct string _22; memset(&_22, 0, sizeof(struct string)); | |
15628 | + init$fromliteral(&_22, "}\n", 2); | |
15629 | + PutStr(0 /* _20 */, &*_21, &_22); | |
15630 | + string$dest(&_22); | |
15631 | + } | |
15632 | + string$dest(&_reduced_id); | |
15633 | + string$dest(&_tmp_reduce); | |
15634 | + var$dest(&_current); | |
15635 | + } | |
15636 | + } | |
15637 | + free$(&_1, sizeof(uint64_t), 0/*DEST*/); | |
15638 | + string$dest(&_par); | |
15639 | + } | |
15640 | +} | |
15641 | + | |
14943 | 15642 | // parse expression - assumes optional id has already been parsed |
14944 | -void ParseExpr$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const struct string *id, const bool *partial, const bool *action, const struct string *self) | |
15643 | +void ParseExpr$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const struct string *id, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified) | |
14945 | 15644 | { |
14946 | 15645 | { |
14947 | 15646 | bool _2; |
@@ -14992,7 +15691,7 @@ | ||
14992 | 15691 | } |
14993 | 15692 | { |
14994 | 15693 | const struct StreamOut *_6 = &(*streams).out; |
14995 | - Indent$(0 /* _5 */, &*_6, &*level); | |
15694 | + Indent(0 /* _5 */, &*_6, &*level); | |
14996 | 15695 | } |
14997 | 15696 | { |
14998 | 15697 | const struct StreamOut *_7 = &(*streams).out; |
@@ -15012,9 +15711,9 @@ | ||
15012 | 15711 | { |
15013 | 15712 | struct stack/*qtypepureid*/ _9; memset(&_9, 0, sizeof(struct stack/*qtypepureid*/)); |
15014 | 15713 | { |
15015 | - solid(&_9, &_pred, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3326); | |
15714 | + solid(&_9, &_pred, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3504); | |
15016 | 15715 | } |
15017 | - ParseExpr$(0 /* _8 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_9, &_id, &*partial, &*action, &*self); | |
15716 | + ParseExpr$(0 /* _8 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_9, &_id, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
15018 | 15717 | free$(&_9, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); |
15019 | 15718 | } |
15020 | 15719 | bool _10; |
@@ -15050,7 +15749,7 @@ | ||
15050 | 15749 | } |
15051 | 15750 | { |
15052 | 15751 | const struct StreamOut *_12 = &(*streams).out; |
15053 | - Indent$(0 /* _11 */, &*_12, &*level); | |
15752 | + Indent(0 /* _11 */, &*_12, &*level); | |
15054 | 15753 | } |
15055 | 15754 | { |
15056 | 15755 | const struct StreamOut *_13 = &(*streams).out; |
@@ -15073,7 +15772,7 @@ | ||
15073 | 15772 | } |
15074 | 15773 | { |
15075 | 15774 | const struct StreamOut *_16 = &(*streams).out; |
15076 | - Indent$(0 /* _15 */, &*_16, &*level); | |
15775 | + Indent(0 /* _15 */, &*_16, &*level); | |
15077 | 15776 | } |
15078 | 15777 | { |
15079 | 15778 | const struct StreamOut *_17 = &(*streams).out; |
@@ -15093,12 +15792,12 @@ | ||
15093 | 15792 | _18 = *level + _19; |
15094 | 15793 | _IGNORE_(_19); |
15095 | 15794 | } |
15096 | - ParseExpr$(0 /* _17 */, &*streams, &*txtpos, &*state, &_18, &*scope, &*tmpnr, &*store, &_id, &*partial, &*action, &*self); | |
15795 | + ParseExpr$(0 /* _17 */, &*streams, &*txtpos, &*state, &_18, &*scope, &*tmpnr, &*store, &_id, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
15097 | 15796 | _IGNORE_(_18); |
15098 | 15797 | } |
15099 | 15798 | { |
15100 | 15799 | const struct StreamOut *_19 = &(*streams).out; |
15101 | - Indent$(0 /* _18 */, &*_19, &*level); | |
15800 | + Indent(0 /* _18 */, &*_19, &*level); | |
15102 | 15801 | } |
15103 | 15802 | { |
15104 | 15803 | const struct StreamOut *_20 = &(*streams).out; |
@@ -15139,7 +15838,7 @@ | ||
15139 | 15838 | } |
15140 | 15839 | { |
15141 | 15840 | const struct StreamOut *_23 = &(*streams).out; |
15142 | - Indent$(0 /* _22 */, &*_23, &*level); | |
15841 | + Indent(0 /* _22 */, &*_23, &*level); | |
15143 | 15842 | } |
15144 | 15843 | { |
15145 | 15844 | const struct StreamOut *_24 = &(*streams).out; |
@@ -15150,7 +15849,7 @@ | ||
15150 | 15849 | } |
15151 | 15850 | { |
15152 | 15851 | const struct StreamOut *_25 = &(*streams).out; |
15153 | - Indent$(0 /* _24 */, &*_25, &*level); | |
15852 | + Indent(0 /* _24 */, &*_25, &*level); | |
15154 | 15853 | } |
15155 | 15854 | { |
15156 | 15855 | const struct StreamOut *_26 = &(*streams).out; |
@@ -15170,12 +15869,12 @@ | ||
15170 | 15869 | _27 = *level + _28; |
15171 | 15870 | _IGNORE_(_28); |
15172 | 15871 | } |
15173 | - ParseExpr$(0 /* _26 */, &*streams, &*txtpos, &*state, &_27, &*scope, &*tmpnr, &*store, &_id, &*partial, &*action, &*self); | |
15872 | + ParseExpr$(0 /* _26 */, &*streams, &*txtpos, &*state, &_27, &*scope, &*tmpnr, &*store, &_id, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
15174 | 15873 | _IGNORE_(_27); |
15175 | 15874 | } |
15176 | 15875 | { |
15177 | 15876 | const struct StreamOut *_28 = &(*streams).out; |
15178 | - Indent$(0 /* _27 */, &*_28, &*level); | |
15877 | + Indent(0 /* _27 */, &*_28, &*level); | |
15179 | 15878 | } |
15180 | 15879 | { |
15181 | 15880 | const struct StreamOut *_29 = &(*streams).out; |
@@ -15251,13 +15950,13 @@ | ||
15251 | 15950 | // Fail$(streams.err, txtpos); |
15252 | 15951 | // }; |
15253 | 15952 | // |
15254 | -// Indent$(streams.out, level); PutStr(streams.out, "do\n"); | |
15255 | -// Indent$(streams.out, level); PutStr(streams.out, "{\n"); | |
15953 | +// Indent(streams.out, level); PutStr(streams.out, "do\n"); | |
15954 | +// Indent(streams.out, level); PutStr(streams.out, "{\n"); | |
15256 | 15955 | // id = ParseId$(streams, txtpos, level); |
15257 | 15956 | // ParseExpr$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, id, partial, action, self); |
15258 | 15957 | //// //Print("fprintf(stderr, \"%d\\n\", (int)"); PutStr(out, counter.id); PutStr(out, ");\n"); |
15259 | -// Indent$(streams.out, level); PutStr(streams.out, "}\n"); | |
15260 | -// Indent$(streams.out, level); PutStr(streams.out, "while("); PutStr(streams.out, counter.id); PutStr(streams.out, "--);\n"); | |
15958 | +// Indent(streams.out, level); PutStr(streams.out, "}\n"); | |
15959 | +// Indent(streams.out, level); PutStr(streams.out, "while("); PutStr(streams.out, counter.id); PutStr(streams.out, "--);\n"); | |
15261 | 15960 | //} |
15262 | 15961 | //else |
15263 | 15962 | bool _6; |
@@ -15272,209 +15971,228 @@ | ||
15272 | 15971 | { |
15273 | 15972 | bool _8; memset(&_8, 0, sizeof(bool)); |
15274 | 15973 | _8 = 1; |
15275 | - EmitSwitch$(0 /* _7 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*id, &*partial, &*action, &*self, &_8); | |
15974 | + EmitSwitch$(0 /* _7 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*id, &*partial, &*action, &*self, &*reduced_ids, &*verified, &_8); | |
15276 | 15975 | _IGNORE_(_8); |
15277 | 15976 | } |
15278 | 15977 | } |
15279 | 15978 | else |
15280 | 15979 | { |
15281 | - struct stack/*u64*/ _7; memset(&_7, 0, sizeof(struct stack/*u64*/)); | |
15980 | + bool _7; | |
15981 | + { | |
15982 | + struct string _8; memset(&_8, 0, sizeof(struct string)); | |
15983 | + init$fromliteral(&_8, "reduce", 6); | |
15984 | + strequ(&_7, &*id, &_8); | |
15985 | + string$dest(&_8); | |
15986 | + } | |
15987 | + if(_7) | |
15988 | + { | |
15282 | 15989 | { |
15283 | - FindPr$(&_7, &*txtpos, &*scope, &*id); | |
15990 | + bool _9; memset(&_9, 0, sizeof(bool)); | |
15991 | + _9 = 1; | |
15992 | + EmitReduce$(0 /* _8 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*id, &*partial, &*action, &*self, &*reduced_ids, &*verified, &_9); | |
15993 | + _IGNORE_(_9); | |
15284 | 15994 | } |
15285 | - if(!(_7).size) | |
15995 | + } | |
15996 | + else | |
15286 | 15997 | { |
15287 | - // function-call | |
15288 | - { | |
15998 | + struct stack/*u64*/ _8; memset(&_8, 0, sizeof(struct stack/*u64*/)); | |
15289 | 15999 | { |
15290 | - const struct StreamOut *_10 = &(*streams).out; | |
15291 | - Indent$(0 /* _9 */, &*_10, &*level); | |
16000 | + FindParOrVar$(&_8, &*txtpos, &*scope, &*id); | |
15292 | 16001 | } |
16002 | + if(!(_8).size) | |
16003 | + { | |
16004 | + // function-call | |
15293 | 16005 | { |
15294 | - const struct StreamOut *_11 = &(*streams).out; | |
15295 | - struct string _12; memset(&_12, 0, sizeof(struct string)); | |
15296 | - init$fromliteral(&_12, "{\n", 2); | |
15297 | - PutStr(0 /* _10 */, &*_11, &_12); | |
15298 | - string$dest(&_12); | |
15299 | - } | |
15300 | - { | |
15301 | - uint64_t _12; memset(&_12, 0, sizeof(uint64_t)); | |
15302 | 16006 | { |
16007 | + const struct StreamOut *_11 = &(*streams).out; | |
16008 | + Indent(0 /* _10 */, &*_11, &*level); | |
16009 | + } | |
16010 | + { | |
16011 | + const struct StreamOut *_12 = &(*streams).out; | |
16012 | + struct string _13; memset(&_13, 0, sizeof(struct string)); | |
16013 | + init$fromliteral(&_13, "{\n", 2); | |
16014 | + PutStr(0 /* _11 */, &*_12, &_13); | |
16015 | + string$dest(&_13); | |
16016 | + } | |
16017 | + { | |
15303 | 16018 | uint64_t _13; memset(&_13, 0, sizeof(uint64_t)); |
15304 | - _13 = 1; | |
15305 | - _12 = *level + _13; | |
16019 | + { | |
16020 | + uint64_t _14; memset(&_14, 0, sizeof(uint64_t)); | |
16021 | + _14 = 1; | |
16022 | + _13 = *level + _14; | |
16023 | + _IGNORE_(_14); | |
16024 | + } | |
16025 | + ParseCall$(0 /* _12 */, &*streams, &*txtpos, &*state, &_13, &*scope, &*tmpnr, &*store, &*id, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
15306 | 16026 | _IGNORE_(_13); |
15307 | 16027 | } |
15308 | - ParseCall$(0 /* _11 */, &*streams, &*txtpos, &*state, &_12, &*scope, &*tmpnr, &*store, &*id, &*partial, &*action, &*self); | |
15309 | - _IGNORE_(_12); | |
16028 | + { | |
16029 | + const struct StreamOut *_14 = &(*streams).out; | |
16030 | + Indent(0 /* _13 */, &*_14, &*level); | |
16031 | + } | |
16032 | + { | |
16033 | + const struct StreamOut *_15 = &(*streams).out; | |
16034 | + struct string _16; memset(&_16, 0, sizeof(struct string)); | |
16035 | + init$fromliteral(&_16, "}\n", 2); | |
16036 | + PutStr(0 /* _14 */, &*_15, &_16); | |
16037 | + string$dest(&_16); | |
16038 | + } | |
16039 | + // (return-typecheck performed by call) | |
15310 | 16040 | } |
15311 | - { | |
15312 | - const struct StreamOut *_13 = &(*streams).out; | |
15313 | - Indent$(0 /* _12 */, &*_13, &*level); | |
15314 | - } | |
15315 | - { | |
15316 | - const struct StreamOut *_14 = &(*streams).out; | |
15317 | - struct string _15; memset(&_15, 0, sizeof(struct string)); | |
15318 | - init$fromliteral(&_15, "}\n", 2); | |
15319 | - PutStr(0 /* _13 */, &*_14, &_15); | |
15320 | - string$dest(&_15); | |
15321 | - } | |
15322 | - // (return-typecheck performed by call) | |
15323 | 16041 | } |
15324 | - } | |
15325 | - else | |
15326 | - { | |
15327 | - const uint64_t *pos = (_7).data; | |
16042 | + else | |
15328 | 16043 | { |
15329 | - struct stack/*qtypepureid*/ _10; memset(&_10, 0, sizeof(struct stack/*qtypepureid*/)); | |
15330 | - clone$(&_10, &(*store), sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy); | |
15331 | - if(!(_10).size) | |
16044 | + const uint64_t *pos = (_8).data; | |
15332 | 16045 | { |
15333 | - } | |
15334 | - else | |
15335 | - { | |
15336 | - const struct qtypepureid *solidstore = (_10).data; | |
16046 | + struct stack/*qtypepureid*/ _11; memset(&_11, 0, sizeof(struct stack/*qtypepureid*/)); | |
16047 | + clone$(&_11, &(*store), sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy); | |
16048 | + if(!(_11).size) | |
15337 | 16049 | { |
15338 | - struct var _current; memset(&_current, 0, sizeof(struct var)); | |
16050 | + } | |
16051 | + else | |
16052 | + { | |
16053 | + const struct qtypepureid *solidstore = (_11).data; | |
15339 | 16054 | { |
15340 | - at_get$(&_current, &*scope, &*pos, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3450); | |
15341 | - } | |
15342 | - struct qtypepure _typ; memset(&_typ, 0, sizeof(struct qtypepure)); | |
15343 | - qtypepure$copy(&_typ, &(_current).qti.qt); | |
15344 | - struct string _par; memset(&_par, 0, sizeof(struct string)); | |
15345 | - string$copy(&_par, &(_current).qti.id); | |
15346 | - bool *_13 = &(_current).used; | |
15347 | - *_13 = 1; | |
15348 | - // assignment FROM this variable -> mark used | |
15349 | - { | |
15350 | - at_set$(0 /* _14 */, &*scope, &*pos, &_current, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3454); | |
15351 | - } | |
15352 | - // store changed (marked used) | |
15353 | - bool _16; | |
15354 | - { | |
15355 | - struct string _17; memset(&_17, 0, sizeof(struct string)); | |
16055 | + struct var _current; memset(&_current, 0, sizeof(struct var)); | |
15356 | 16056 | { |
15357 | - const struct string *_18 = &(*solidstore).id; | |
15358 | - predel$(&_17, &*_18); | |
16057 | + at_get$(&_current, &*scope, &*pos, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3632); | |
15359 | 16058 | } |
15360 | - strequ(&_16, &_17, &*id); | |
15361 | - string$dest(&_17); | |
15362 | - } | |
15363 | - if(_16) | |
15364 | - { | |
16059 | + struct qtypepure _typ; memset(&_typ, 0, sizeof(struct qtypepure)); | |
16060 | + qtypepure$copy(&_typ, &(_current).qti.qt); | |
16061 | + struct string _par; memset(&_par, 0, sizeof(struct string)); | |
16062 | + string$copy(&_par, &(_current).qti.id); | |
16063 | + bool *_14 = &(_current).used; | |
16064 | + *_14 = 1; | |
16065 | + // assignment FROM this variable -> mark used | |
15365 | 16066 | { |
15366 | - const struct StreamOut *_18 = &(*streams).err; | |
15367 | - struct string _19; memset(&_19, 0, sizeof(struct string)); | |
15368 | - init$fromliteral(&_19, "self-assign ", 12); | |
15369 | - PutStr(0 /* _17 */, &*_18, &_19); | |
15370 | - string$dest(&_19); | |
16067 | + at_set$(0 /* _15 */, &*scope, &*pos, &_current, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3636); | |
15371 | 16068 | } |
16069 | + // store changed (marked used) | |
16070 | + bool _17; | |
15372 | 16071 | { |
15373 | - const struct StreamOut *_19 = &(*streams).err; | |
15374 | - const struct string *_20 = &(*solidstore).id; | |
15375 | - PutStr(0 /* _18 */, &*_19, &*_20); | |
16072 | + struct string _18; memset(&_18, 0, sizeof(struct string)); | |
16073 | + { | |
16074 | + const struct string *_19 = &(*solidstore).id; | |
16075 | + predel$(&_18, &*_19); | |
16076 | + } | |
16077 | + strequ(&_17, &_18, &*id); | |
16078 | + string$dest(&_18); | |
15376 | 16079 | } |
16080 | + if(_17) | |
15377 | 16081 | { |
15378 | - const struct StreamOut *_20 = &(*streams).err; | |
15379 | - struct string _21; memset(&_21, 0, sizeof(struct string)); | |
15380 | - init$fromliteral(&_21, " <- ", 4); | |
15381 | - PutStr(0 /* _19 */, &*_20, &_21); | |
15382 | - string$dest(&_21); | |
16082 | + { | |
16083 | + const struct StreamOut *_19 = &(*streams).err; | |
16084 | + struct string _20; memset(&_20, 0, sizeof(struct string)); | |
16085 | + init$fromliteral(&_20, "self-assign ", 12); | |
16086 | + PutStr(0 /* _18 */, &*_19, &_20); | |
16087 | + string$dest(&_20); | |
16088 | + } | |
16089 | + { | |
16090 | + const struct StreamOut *_20 = &(*streams).err; | |
16091 | + const struct string *_21 = &(*solidstore).id; | |
16092 | + PutStr(0 /* _19 */, &*_20, &*_21); | |
16093 | + } | |
16094 | + { | |
16095 | + const struct StreamOut *_21 = &(*streams).err; | |
16096 | + struct string _22; memset(&_22, 0, sizeof(struct string)); | |
16097 | + init$fromliteral(&_22, " <- ", 4); | |
16098 | + PutStr(0 /* _20 */, &*_21, &_22); | |
16099 | + string$dest(&_22); | |
16100 | + } | |
16101 | + { | |
16102 | + const struct StreamOut *_22 = &(*streams).err; | |
16103 | + PutStr(0 /* _21 */, &*_22, &*id); | |
16104 | + } | |
16105 | + { | |
16106 | + const struct StreamOut *_23 = &(*streams).err; | |
16107 | + Fail$(0 /* _22 */, &*_23, &*txtpos); | |
16108 | + } | |
15383 | 16109 | } |
16110 | + struct stack/*string*/ _path; memset(&_path, 0, sizeof(struct stack/*string*/)); | |
16111 | + struct type_pure *_18 = &(_typ).type; | |
15384 | 16112 | { |
15385 | - const struct StreamOut *_21 = &(*streams).err; | |
15386 | - PutStr(0 /* _20 */, &*_21, &*id); | |
16113 | + struct stack/*structdef*/ *_19 = &(*state).structs; | |
16114 | + struct type_pure *_20 = &(_typ).type; | |
16115 | + ParseStructPath$(&*_18, &*streams, &*txtpos, &*_19, &*level, &*_20, &*id, &_path); | |
15387 | 16116 | } |
15388 | 16117 | { |
16118 | + const struct StreamOut *_20 = &(*streams).out; | |
16119 | + Indent(0 /* _19 */, &*_20, &*level); | |
16120 | + } | |
16121 | + { | |
16122 | + const struct StreamOut *_21 = &(*streams).out; | |
15389 | 16123 | const struct StreamOut *_22 = &(*streams).err; |
15390 | - Fail$(0 /* _21 */, &*_22, &*txtpos); | |
16124 | + const struct type_pure *_23 = &(*solidstore).qt.type; | |
16125 | + const struct string *_24 = &(*solidstore).id; | |
16126 | + CopyIn(0 /* _20 */, &*_21, &*_22, &*_23, &*_24, &*txtpos); | |
15391 | 16127 | } |
15392 | - } | |
15393 | - struct stack/*string*/ _path; memset(&_path, 0, sizeof(struct stack/*string*/)); | |
15394 | - struct type_pure *_17 = &(_typ).type; | |
15395 | - { | |
15396 | - struct stack/*structdef*/ *_18 = &(*state).structs; | |
15397 | - struct type_pure *_19 = &(_typ).type; | |
15398 | - ParseStructPath$(&*_17, &*streams, &*txtpos, &*_18, &*level, &*_19, &*id, &_path); | |
15399 | - } | |
15400 | - { | |
15401 | - const struct StreamOut *_19 = &(*streams).out; | |
15402 | - Indent$(0 /* _18 */, &*_19, &*level); | |
15403 | - } | |
15404 | - { | |
15405 | - const struct StreamOut *_20 = &(*streams).out; | |
15406 | - const struct StreamOut *_21 = &(*streams).err; | |
15407 | - const struct type_pure *_22 = &(*solidstore).qt.type; | |
15408 | - const struct string *_23 = &(*solidstore).id; | |
15409 | - CopyIn(0 /* _19 */, &*_20, &*_21, &*_22, &*_23, &*txtpos); | |
15410 | - } | |
15411 | - { | |
15412 | - const struct StreamOut *_21 = &(*streams).out; | |
15413 | - const struct string *_22 = &(*solidstore).id; | |
15414 | - PutStr(0 /* _20 */, &*_21, &*_22); | |
15415 | - } | |
15416 | - { | |
15417 | - const struct StreamOut *_22 = &(*streams).out; | |
15418 | - const struct type_pure *_23 = &(*solidstore).qt.type; | |
15419 | - CopyMid(0 /* _21 */, &*_22, &*_23); | |
15420 | - } | |
15421 | - { | |
15422 | - const struct StreamOut *_23 = &(*streams).out; | |
15423 | - uint8_t _24; memset(&_24, 0, sizeof(uint8_t)); | |
15424 | - _24 = 40; | |
15425 | - Put(0 /* _22 */, &*_23, &_24); | |
15426 | - _IGNORE_(_24); | |
15427 | - } | |
15428 | - { | |
15429 | - const struct StreamOut *_24 = &(*streams).out; | |
15430 | - PutStr(0 /* _23 */, &*_24, &_par); | |
15431 | - } | |
15432 | - { | |
15433 | - const struct StreamOut *_25 = &(*streams).out; | |
15434 | - uint8_t _26; memset(&_26, 0, sizeof(uint8_t)); | |
15435 | - _26 = 41; | |
15436 | - Put(0 /* _24 */, &*_25, &_26); | |
15437 | - _IGNORE_(_26); | |
15438 | - } | |
15439 | - { | |
15440 | - const struct StreamOut *_26 = &(*streams).out; | |
15441 | - PrintPath$(0 /* _25 */, &*_26, &_path); | |
15442 | - } | |
15443 | - { | |
15444 | - const struct StreamOut *_27 = &(*streams).out; | |
15445 | - const struct StreamOut *_28 = &(*streams).err; | |
15446 | - struct stack/*structdef*/ *_29 = &(*state).structs; | |
15447 | - const struct type_pure *_30 = &(*solidstore).qt.type; | |
15448 | - CopyOut$(0 /* _26 */, &*_27, &*_28, &*txtpos, &*_29, &*_30); | |
15449 | - } | |
15450 | - { | |
15451 | - const struct StreamOut *_28 = &(*streams).out; | |
15452 | - struct string _29; memset(&_29, 0, sizeof(struct string)); | |
15453 | - init$fromliteral(&_29, "\n", 1); | |
15454 | - PutStr(0 /* _27 */, &*_28, &_29); | |
15455 | - string$dest(&_29); | |
15456 | - } | |
15457 | - // type-check | |
15458 | - { | |
15459 | - const struct StreamOut *_29 = &(*streams).err; | |
15460 | - struct typepureid _30; memset(&_30, 0, sizeof(struct typepureid)); | |
15461 | 16128 | { |
15462 | - struct type_pure *_31 = &(_typ).type; | |
15463 | - typepureid(&_30, &*_31, &*id); | |
16129 | + const struct StreamOut *_22 = &(*streams).out; | |
16130 | + const struct string *_23 = &(*solidstore).id; | |
16131 | + PutStr(0 /* _21 */, &*_22, &*_23); | |
15464 | 16132 | } |
15465 | - ChkQTPI$(0 /* _28 */, &*_29, &*txtpos, &*solidstore, &_30); | |
15466 | - typepureid$dest(&_30); | |
16133 | + { | |
16134 | + const struct StreamOut *_23 = &(*streams).out; | |
16135 | + const struct type_pure *_24 = &(*solidstore).qt.type; | |
16136 | + CopyMid(0 /* _22 */, &*_23, &*_24); | |
16137 | + } | |
16138 | + { | |
16139 | + const struct StreamOut *_24 = &(*streams).out; | |
16140 | + uint8_t _25; memset(&_25, 0, sizeof(uint8_t)); | |
16141 | + _25 = 40; | |
16142 | + Put(0 /* _23 */, &*_24, &_25); | |
16143 | + _IGNORE_(_25); | |
16144 | + } | |
16145 | + { | |
16146 | + const struct StreamOut *_25 = &(*streams).out; | |
16147 | + PutStr(0 /* _24 */, &*_25, &_par); | |
16148 | + } | |
16149 | + { | |
16150 | + const struct StreamOut *_26 = &(*streams).out; | |
16151 | + uint8_t _27; memset(&_27, 0, sizeof(uint8_t)); | |
16152 | + _27 = 41; | |
16153 | + Put(0 /* _25 */, &*_26, &_27); | |
16154 | + _IGNORE_(_27); | |
16155 | + } | |
16156 | + { | |
16157 | + const struct StreamOut *_27 = &(*streams).out; | |
16158 | + PrintPath$(0 /* _26 */, &*_27, &_path); | |
16159 | + } | |
16160 | + { | |
16161 | + const struct StreamOut *_28 = &(*streams).out; | |
16162 | + const struct StreamOut *_29 = &(*streams).err; | |
16163 | + struct stack/*structdef*/ *_30 = &(*state).structs; | |
16164 | + const struct type_pure *_31 = &(*solidstore).qt.type; | |
16165 | + CopyOut$(0 /* _27 */, &*_28, &*_29, &*txtpos, &*_30, &*_31); | |
16166 | + } | |
16167 | + { | |
16168 | + const struct StreamOut *_29 = &(*streams).out; | |
16169 | + struct string _30; memset(&_30, 0, sizeof(struct string)); | |
16170 | + init$fromliteral(&_30, "\n", 1); | |
16171 | + PutStr(0 /* _28 */, &*_29, &_30); | |
16172 | + string$dest(&_30); | |
16173 | + } | |
16174 | + // type-check | |
16175 | + { | |
16176 | + const struct StreamOut *_30 = &(*streams).err; | |
16177 | + struct typepureid _31; memset(&_31, 0, sizeof(struct typepureid)); | |
16178 | + { | |
16179 | + struct type_pure *_32 = &(_typ).type; | |
16180 | + typepureid(&_31, &*_32, &*id); | |
16181 | + } | |
16182 | + ChkQTPI$(0 /* _29 */, &*_30, &*txtpos, &*solidstore, &_31); | |
16183 | + typepureid$dest(&_31); | |
16184 | + } | |
16185 | + free$(&_path, sizeof(struct string), (void (*)(void *))string$dest); | |
16186 | + string$dest(&_par); | |
16187 | + qtypepure$dest(&_typ); | |
16188 | + var$dest(&_current); | |
15467 | 16189 | } |
15468 | - free$(&_path, sizeof(struct string), (void (*)(void *))string$dest); | |
15469 | - string$dest(&_par); | |
15470 | - qtypepure$dest(&_typ); | |
15471 | - var$dest(&_current); | |
15472 | 16190 | } |
16191 | + free$(&_11, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); | |
15473 | 16192 | } |
15474 | - free$(&_10, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); | |
15475 | 16193 | } |
16194 | + free$(&_8, sizeof(uint64_t), 0/*DEST*/); | |
15476 | 16195 | } |
15477 | - free$(&_7, sizeof(uint64_t), 0/*DEST*/); | |
15478 | 16196 | } |
15479 | 16197 | } |
15480 | 16198 | } |
@@ -15495,7 +16213,10 @@ | ||
15495 | 16213 | { |
15496 | 16214 | ParseId$(&_5, &*streams, &*txtpos, &*level); |
15497 | 16215 | } |
15498 | - ParseExpr$(0 /* _4 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &_5, &*partial, &*action, &*self); | |
16216 | + bool _6; memset(&_6, 0, sizeof(bool)); | |
16217 | + _6 = 0; | |
16218 | + /*unverified*/ ParseExpr$(0 /* _4 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &_5, &*partial, &*action, &*self, &*reduced_ids, &_6); | |
16219 | + _IGNORE_(_6); | |
15499 | 16220 | string$dest(&_5); |
15500 | 16221 | } |
15501 | 16222 | { |
@@ -15523,7 +16244,10 @@ | ||
15523 | 16244 | if(_4) |
15524 | 16245 | { |
15525 | 16246 | { |
15526 | - ParseBlock$(0 /* _5 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self); | |
16247 | + bool _6; memset(&_6, 0, sizeof(bool)); | |
16248 | + _6 = 0; | |
16249 | + /*unverified*/ ParseBlock$(0 /* _5 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self, &*reduced_ids, &_6); | |
16250 | + _IGNORE_(_6); | |
15527 | 16251 | } |
15528 | 16252 | } |
15529 | 16253 | else |
@@ -15577,7 +16301,7 @@ | ||
15577 | 16301 | { |
15578 | 16302 | { |
15579 | 16303 | const struct StreamOut *_10 = &(*streams).out; |
15580 | - Indent$(0 /* _9 */, &*_10, &*level); | |
16304 | + Indent(0 /* _9 */, &*_10, &*level); | |
15581 | 16305 | } |
15582 | 16306 | { |
15583 | 16307 | const struct StreamOut *_11 = &(*streams).out; |
@@ -15657,7 +16381,7 @@ | ||
15657 | 16381 | { |
15658 | 16382 | { |
15659 | 16383 | const struct StreamOut *_11 = &(*streams).out; |
15660 | - Indent$(0 /* _10 */, &*_11, &*level); | |
16384 | + Indent(0 /* _10 */, &*_11, &*level); | |
15661 | 16385 | } |
15662 | 16386 | { |
15663 | 16387 | const struct StreamOut *_12 = &(*streams).out; |
@@ -15738,7 +16462,7 @@ | ||
15738 | 16462 | { |
15739 | 16463 | { |
15740 | 16464 | const struct StreamOut *_12 = &(*streams).out; |
15741 | - Indent$(0 /* _11 */, &*_12, &*level); | |
16465 | + Indent(0 /* _11 */, &*_12, &*level); | |
15742 | 16466 | } |
15743 | 16467 | { |
15744 | 16468 | const struct StreamOut *_13 = &(*streams).out; |
@@ -15815,7 +16539,7 @@ | ||
15815 | 16539 | } |
15816 | 16540 | |
15817 | 16541 | // parse function-body without side-effects |
15818 | -void ParseExpr2$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, const uint64_t *tmpnr_, const struct qtypepureid *store, const bool *partial, const bool *action, const struct string *self) | |
16542 | +void ParseExpr2$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, const uint64_t *tmpnr_, const struct qtypepureid *store, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified) | |
15819 | 16543 | { |
15820 | 16544 | { |
15821 | 16545 | uint64_t _tmpnr; memset(&_tmpnr, 0, sizeof(uint64_t)); |
@@ -15848,9 +16572,9 @@ | ||
15848 | 16572 | { |
15849 | 16573 | struct stack/*qtypepureid*/ _4; memset(&_4, 0, sizeof(struct stack/*qtypepureid*/)); |
15850 | 16574 | { |
15851 | - solid(&_4, &*store, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3557); | |
16575 | + solid(&_4, &*store, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3739); | |
15852 | 16576 | } |
15853 | - ParseExpr$(0 /* _3 */, &*streams, &*txtpos, &*state, &*level, &*scope, &_tmpnr, &_4, &_id, &*partial, &*action, &*self); | |
16577 | + ParseExpr$(0 /* _3 */, &*streams, &*txtpos, &*state, &*level, &*scope, &_tmpnr, &_4, &_id, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
15854 | 16578 | free$(&_4, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); |
15855 | 16579 | } |
15856 | 16580 | string$dest(&_id); |
@@ -15859,8 +16583,8 @@ | ||
15859 | 16583 | } |
15860 | 16584 | |
15861 | 16585 | // forward-declaration |
15862 | -void ParseLines$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const bool *partial, const bool *action, const struct string *self); | |
15863 | -void ParseNext$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const bool *partial, const bool *action, const struct string *self) | |
16586 | +void ParseLines$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified); | |
16587 | +void ParseNext$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified) | |
15864 | 16588 | { |
15865 | 16589 | { |
15866 | 16590 | { |
@@ -15942,7 +16666,7 @@ | ||
15942 | 16666 | if(_7) |
15943 | 16667 | { |
15944 | 16668 | { |
15945 | - ParseLines$(0 /* _8 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self); | |
16669 | + ParseLines$(0 /* _8 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
15946 | 16670 | } |
15947 | 16671 | } |
15948 | 16672 | else |
@@ -15989,7 +16713,7 @@ | ||
15989 | 16713 | } |
15990 | 16714 | |
15991 | 16715 | // Parse something that can be either returned or assigned to, e.g. x.a.b.c = y |
15992 | -void ParseLet$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const bool *partial, const bool *action, const struct string *self) | |
16716 | +void ParseLet$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified) | |
15993 | 16717 | { |
15994 | 16718 | { |
15995 | 16719 | bool _2; |
@@ -16014,13 +16738,13 @@ | ||
16014 | 16738 | { |
16015 | 16739 | struct stack/*qtypepureid*/ _5; memset(&_5, 0, sizeof(struct stack/*qtypepureid*/)); |
16016 | 16740 | { |
16017 | - empty(&_5, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3607); | |
16741 | + empty(&_5, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3789); | |
16018 | 16742 | } |
16019 | - ParseExpr$(0 /* _4 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_5, &_id, &*partial, &*action, &*self); | |
16743 | + ParseExpr$(0 /* _4 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_5, &_id, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
16020 | 16744 | free$(&_5, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); |
16021 | 16745 | } |
16022 | 16746 | { |
16023 | - ParseNext$(0 /* _5 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self); | |
16747 | + ParseNext$(0 /* _5 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
16024 | 16748 | } |
16025 | 16749 | // continue |
16026 | 16750 | string$dest(&_id); |
@@ -16112,7 +16836,7 @@ | ||
16112 | 16836 | { |
16113 | 16837 | struct var _current; memset(&_current, 0, sizeof(struct var)); |
16114 | 16838 | { |
16115 | - at_get$(&_current, &*scope, &*pos, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3629); | |
16839 | + at_get$(&_current, &*scope, &*pos, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3811); | |
16116 | 16840 | } |
16117 | 16841 | { |
16118 | 16842 | const struct StreamOut *_9 = &(*streams).err; |
@@ -16259,13 +16983,13 @@ | ||
16259 | 16983 | { |
16260 | 16984 | struct stack/*qtypepureid*/ _16; memset(&_16, 0, sizeof(struct stack/*qtypepureid*/)); |
16261 | 16985 | { |
16262 | - solid(&_16, &_mut_st, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3653); | |
16986 | + solid(&_16, &_mut_st, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3835); | |
16263 | 16987 | } |
16264 | 16988 | struct string _17; memset(&_17, 0, sizeof(struct string)); |
16265 | 16989 | { |
16266 | 16990 | ParseId$(&_17, &*streams, &*txtpos, &*level); |
16267 | 16991 | } |
16268 | - ParseExpr$(0 /* _15 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_16, &_17, &*partial, &*action, &*self); | |
16992 | + ParseExpr$(0 /* _15 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_16, &_17, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
16269 | 16993 | string$dest(&_17); |
16270 | 16994 | free$(&_16, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); |
16271 | 16995 | } |
@@ -16277,18 +17001,18 @@ | ||
16277 | 17001 | { |
16278 | 17002 | varinit(&_11, &_new); |
16279 | 17003 | } |
16280 | - push(0 /* _10 */, &*scope, &_11, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3657); | |
17004 | + push(0 /* _10 */, &*scope, &_11, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3839); | |
16281 | 17005 | var$dest(&_11); |
16282 | 17006 | } |
16283 | 17007 | // make variable accessible & mark as NOT used yet |
16284 | 17008 | { |
16285 | - ParseNext$(0 /* _11 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self); | |
17009 | + ParseNext$(0 /* _11 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
16286 | 17010 | } |
16287 | 17011 | // continue |
16288 | 17012 | // ...FREE memory immediately before closing block |
16289 | 17013 | { |
16290 | 17014 | const struct StreamOut *_13 = &(*streams).out; |
16291 | - Indent$(0 /* _12 */, &*_13, &*level); | |
17015 | + Indent(0 /* _12 */, &*_13, &*level); | |
16292 | 17016 | } |
16293 | 17017 | { |
16294 | 17018 | const struct StreamOut *_14 = &(*streams).out; |
@@ -16320,7 +17044,7 @@ | ||
16320 | 17044 | } |
16321 | 17045 | |
16322 | 17046 | // parse result |
16323 | -void ParseRes$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const bool *partial, const bool *action, const struct string *self) | |
17047 | +void ParseRes$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified) | |
16324 | 17048 | { |
16325 | 17049 | // no further statements allowed trailing behind result |
16326 | 17050 | // NOTE: must emit assignment here, before any free, so any dynamic result is copied before pointers become invalid! |
@@ -16384,7 +17108,7 @@ | ||
16384 | 17108 | } |
16385 | 17109 | struct stack/*u64*/ _6; memset(&_6, 0, sizeof(struct stack/*u64*/)); |
16386 | 17110 | { |
16387 | - FindPr$(&_6, &*txtpos, &*scope, &_id); | |
17111 | + FindParOrVar$(&_6, &*txtpos, &*scope, &_id); | |
16388 | 17112 | } |
16389 | 17113 | if(!(_6).size) |
16390 | 17114 | { |
@@ -16398,9 +17122,9 @@ | ||
16398 | 17122 | { |
16399 | 17123 | struct stack/*qtypepureid*/ _11; memset(&_11, 0, sizeof(struct stack/*qtypepureid*/)); |
16400 | 17124 | { |
16401 | - empty(&_11, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3703); | |
17125 | + empty(&_11, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3885); | |
16402 | 17126 | } |
16403 | - ParseExpr$(0 /* _10 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_11, &_id, &*partial, &*action, &*self); | |
17127 | + ParseExpr$(0 /* _10 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_11, &_id, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
16404 | 17128 | free$(&_11, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); |
16405 | 17129 | } |
16406 | 17130 | } |
@@ -16440,9 +17164,9 @@ | ||
16440 | 17164 | { |
16441 | 17165 | struct stack/*qtypepureid*/ _13; memset(&_13, 0, sizeof(struct stack/*qtypepureid*/)); |
16442 | 17166 | { |
16443 | - solid(&_13, &_mut_pv, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3714); | |
17167 | + solid(&_13, &_mut_pv, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3896); | |
16444 | 17168 | } |
16445 | - ParseExpr$(0 /* _12 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_13, &_id, &*partial, &*action, &*self); | |
17169 | + ParseExpr$(0 /* _12 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_13, &_id, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
16446 | 17170 | free$(&_13, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); |
16447 | 17171 | } |
16448 | 17172 | { |
@@ -16453,7 +17177,7 @@ | ||
16453 | 17177 | } |
16454 | 17178 | { |
16455 | 17179 | const struct StreamOut *_15 = &(*streams).out; |
16456 | - Indent$(0 /* _14 */, &*_15, &*level); | |
17180 | + Indent(0 /* _14 */, &*_15, &*level); | |
16457 | 17181 | } |
16458 | 17182 | { |
16459 | 17183 | const struct StreamOut *_16 = &(*streams).out; |
@@ -16493,7 +17217,7 @@ | ||
16493 | 17217 | } |
16494 | 17218 | { |
16495 | 17219 | const struct StreamOut *_22 = &(*streams).out; |
16496 | - Indent$(0 /* _21 */, &*_22, &*level); | |
17220 | + Indent(0 /* _21 */, &*_22, &*level); | |
16497 | 17221 | } |
16498 | 17222 | { |
16499 | 17223 | const struct StreamOut *_23 = &(*streams).out; |
@@ -16532,13 +17256,13 @@ | ||
16532 | 17256 | { |
16533 | 17257 | struct var _provide; memset(&_provide, 0, sizeof(struct var)); |
16534 | 17258 | { |
16535 | - at_get$(&_provide, &*scope, &*pos, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3727); | |
17259 | + at_get$(&_provide, &*scope, &*pos, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3909); | |
16536 | 17260 | } |
16537 | 17261 | bool *_9 = &(_provide).used; |
16538 | 17262 | *_9 = 1; |
16539 | 17263 | // mark argument used |
16540 | 17264 | { |
16541 | - at_set$(0 /* _10 */, &*scope, &*pos, &_provide, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3729); | |
17265 | + at_set$(0 /* _10 */, &*scope, &*pos, &_provide, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3911); | |
16542 | 17266 | } |
16543 | 17267 | // store changed (marked used) |
16544 | 17268 | { |
@@ -16591,7 +17315,7 @@ | ||
16591 | 17315 | } |
16592 | 17316 | { |
16593 | 17317 | const struct StreamOut *_19 = &(*streams).out; |
16594 | - Indent$(0 /* _18 */, &*_19, &*level); | |
17318 | + Indent(0 /* _18 */, &*_19, &*level); | |
16595 | 17319 | } |
16596 | 17320 | { |
16597 | 17321 | const struct StreamOut *_20 = &(*streams).out; |
@@ -16668,7 +17392,7 @@ | ||
16668 | 17392 | } |
16669 | 17393 | } |
16670 | 17394 | |
16671 | -void ParseFor$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const bool *partial, const bool *action, const struct string *self, const struct string *id) | |
17395 | +void ParseFor$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified, const struct string *id) | |
16672 | 17396 | { |
16673 | 17397 | { |
16674 | 17398 | struct type_pure _argtype; memset(&_argtype, 0, sizeof(struct type_pure)); |
@@ -16826,7 +17550,7 @@ | ||
16826 | 17550 | } |
16827 | 17551 | struct stack/*u64*/ _11; memset(&_11, 0, sizeof(struct stack/*u64*/)); |
16828 | 17552 | { |
16829 | - FindPr$(&_11, &*txtpos, &*scope, &_var); | |
17553 | + FindParOrVar$(&_11, &*txtpos, &*scope, &_var); | |
16830 | 17554 | } |
16831 | 17555 | if(!(_11).size) |
16832 | 17556 | { |
@@ -16854,7 +17578,7 @@ | ||
16854 | 17578 | { |
16855 | 17579 | struct var _provide; memset(&_provide, 0, sizeof(struct var)); |
16856 | 17580 | { |
16857 | - at_get$(&_provide, &*scope, &*pos, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3814); | |
17581 | + at_get$(&_provide, &*scope, &*pos, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3996); | |
16858 | 17582 | } |
16859 | 17583 | struct stack/*string*/ _path; memset(&_path, 0, sizeof(struct stack/*string*/)); |
16860 | 17584 | struct type_pure _type; memset(&_type, 0, sizeof(struct type_pure)); |
@@ -16954,7 +17678,7 @@ | ||
16954 | 17678 | varinit(&_19, &_20); |
16955 | 17679 | qtypepureid$dest(&_20); |
16956 | 17680 | } |
16957 | - push(0 /* _18 */, &*scope, &_19, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3829); | |
17681 | + push(0 /* _18 */, &*scope, &_19, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 4011); | |
16958 | 17682 | var$dest(&_19); |
16959 | 17683 | } |
16960 | 17684 | } |
@@ -16970,7 +17694,7 @@ | ||
16970 | 17694 | } |
16971 | 17695 | { |
16972 | 17696 | const struct StreamOut *_20 = &(*streams).out; |
16973 | - Indent$(0 /* _19 */, &*_20, &*level); | |
17697 | + Indent(0 /* _19 */, &*_20, &*level); | |
16974 | 17698 | } |
16975 | 17699 | { |
16976 | 17700 | const struct StreamOut *_21 = &(*streams).out; |
@@ -17058,7 +17782,7 @@ | ||
17058 | 17782 | } |
17059 | 17783 | { |
17060 | 17784 | const struct StreamOut *_36 = &(*streams).out; |
17061 | - Indent$(0 /* _35 */, &*_36, &*level); | |
17785 | + Indent(0 /* _35 */, &*_36, &*level); | |
17062 | 17786 | } |
17063 | 17787 | { |
17064 | 17788 | const struct StreamOut *_37 = &(*streams).out; |
@@ -17076,7 +17800,7 @@ | ||
17076 | 17800 | _39 = _40 + *level; |
17077 | 17801 | _IGNORE_(_40); |
17078 | 17802 | } |
17079 | - Indent$(0 /* _37 */, &*_38, &_39); | |
17803 | + Indent(0 /* _37 */, &*_38, &_39); | |
17080 | 17804 | _IGNORE_(_39); |
17081 | 17805 | } |
17082 | 17806 | { |
@@ -17118,15 +17842,15 @@ | ||
17118 | 17842 | } |
17119 | 17843 | struct stack/*qtypepureid*/ _45; memset(&_45, 0, sizeof(struct stack/*qtypepureid*/)); |
17120 | 17844 | { |
17121 | - empty(&_45, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3852); | |
17845 | + empty(&_45, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4034); | |
17122 | 17846 | } |
17123 | - ParseBlockRaw$(0 /* _43 */, &*streams, &*txtpos, &*state, &_44, &*scope, &*tmpnr, &_45, &*partial, &*action, &*self); | |
17847 | + ParseBlockRaw$(0 /* _43 */, &*streams, &*txtpos, &*state, &_44, &*scope, &*tmpnr, &_45, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
17124 | 17848 | free$(&_45, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); |
17125 | 17849 | _IGNORE_(_44); |
17126 | 17850 | } |
17127 | 17851 | { |
17128 | 17852 | const struct StreamOut *_45 = &(*streams).out; |
17129 | - Indent$(0 /* _44 */, &*_45, &*level); | |
17853 | + Indent(0 /* _44 */, &*_45, &*level); | |
17130 | 17854 | } |
17131 | 17855 | { |
17132 | 17856 | const struct StreamOut *_46 = &(*streams).out; |
@@ -17192,13 +17916,13 @@ | ||
17192 | 17916 | varinit(&_12, &_13); |
17193 | 17917 | qtypepureid$dest(&_13); |
17194 | 17918 | } |
17195 | - push(0 /* _11 */, &*scope, &_12, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3863); | |
17919 | + push(0 /* _11 */, &*scope, &_12, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 4045); | |
17196 | 17920 | var$dest(&_12); |
17197 | 17921 | } |
17198 | 17922 | } |
17199 | 17923 | { |
17200 | 17924 | const struct StreamOut *_12 = &(*streams).out; |
17201 | - Indent$(0 /* _11 */, &*_12, &*level); | |
17925 | + Indent(0 /* _11 */, &*_12, &*level); | |
17202 | 17926 | } |
17203 | 17927 | { |
17204 | 17928 | const struct StreamOut *_13 = &(*streams).out; |
@@ -17214,19 +17938,19 @@ | ||
17214 | 17938 | { |
17215 | 17939 | struct stack/*qtypepureid*/ _15; memset(&_15, 0, sizeof(struct stack/*qtypepureid*/)); |
17216 | 17940 | { |
17217 | - solid(&_15, &_mut_elem, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3866); | |
17941 | + solid(&_15, &_mut_elem, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4048); | |
17218 | 17942 | } |
17219 | 17943 | struct string _16; memset(&_16, 0, sizeof(struct string)); |
17220 | 17944 | { |
17221 | 17945 | ParseId$(&_16, &*streams, &*txtpos, &*level); |
17222 | 17946 | } |
17223 | - ParseExpr$(0 /* _14 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_15, &_16, &*partial, &*action, &*self); | |
17947 | + ParseExpr$(0 /* _14 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_15, &_16, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
17224 | 17948 | string$dest(&_16); |
17225 | 17949 | free$(&_15, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); |
17226 | 17950 | } |
17227 | 17951 | { |
17228 | 17952 | const struct StreamOut *_16 = &(*streams).out; |
17229 | - Indent$(0 /* _15 */, &*_16, &*level); | |
17953 | + Indent(0 /* _15 */, &*_16, &*level); | |
17230 | 17954 | } |
17231 | 17955 | { |
17232 | 17956 | const struct StreamOut *_17 = &(*streams).out; |
@@ -17250,9 +17974,9 @@ | ||
17250 | 17974 | { |
17251 | 17975 | struct stack/*qtypepureid*/ _20; memset(&_20, 0, sizeof(struct stack/*qtypepureid*/)); |
17252 | 17976 | { |
17253 | - empty(&_20, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3868); | |
17977 | + empty(&_20, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4050); | |
17254 | 17978 | } |
17255 | - ParseBlock$(0 /* _19 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_20, &*partial, &*action, &*self); | |
17979 | + ParseBlock$(0 /* _19 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_20, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
17256 | 17980 | free$(&_20, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); |
17257 | 17981 | } |
17258 | 17982 | qtypepureid$dest(&_mut_elem); |
@@ -17286,13 +18010,13 @@ | ||
17286 | 18010 | { |
17287 | 18011 | struct stack/*qtypepureid*/ _10; memset(&_10, 0, sizeof(struct stack/*qtypepureid*/)); |
17288 | 18012 | { |
17289 | - solid(&_10, &_mut_container, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3875); | |
18013 | + solid(&_10, &_mut_container, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4057); | |
17290 | 18014 | } |
17291 | 18015 | struct string _11; memset(&_11, 0, sizeof(struct string)); |
17292 | 18016 | { |
17293 | 18017 | ParseId$(&_11, &*streams, &*txtpos, &*level); |
17294 | 18018 | } |
17295 | - ParseExpr$(0 /* _9 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_10, &_11, &*partial, &*action, &*self); | |
18019 | + ParseExpr$(0 /* _9 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_10, &_11, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
17296 | 18020 | string$dest(&_11); |
17297 | 18021 | free$(&_10, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); |
17298 | 18022 | } |
@@ -17309,7 +18033,7 @@ | ||
17309 | 18033 | } |
17310 | 18034 | { |
17311 | 18035 | const struct StreamOut *_13 = &(*streams).out; |
17312 | - Indent$(0 /* _12 */, &*_13, &*level); | |
18036 | + Indent(0 /* _12 */, &*_13, &*level); | |
17313 | 18037 | } |
17314 | 18038 | { |
17315 | 18039 | const struct StreamOut *_14 = &(*streams).out; |
@@ -17390,7 +18114,7 @@ | ||
17390 | 18114 | } |
17391 | 18115 | { |
17392 | 18116 | const struct StreamOut *_26 = &(*streams).out; |
17393 | - Indent$(0 /* _25 */, &*_26, &*level); | |
18117 | + Indent(0 /* _25 */, &*_26, &*level); | |
17394 | 18118 | } |
17395 | 18119 | { |
17396 | 18120 | const struct StreamOut *_27 = &(*streams).out; |
@@ -17441,7 +18165,7 @@ | ||
17441 | 18165 | varinit(&_31, &_32); |
17442 | 18166 | qtypepureid$dest(&_32); |
17443 | 18167 | } |
17444 | - push(0 /* _30 */, &*scope, &_31, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3891); | |
18168 | + push(0 /* _30 */, &*scope, &_31, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 4073); | |
17445 | 18169 | var$dest(&_31); |
17446 | 18170 | } |
17447 | 18171 | { |
@@ -17453,7 +18177,7 @@ | ||
17453 | 18177 | _33 = _34 + *level; |
17454 | 18178 | _IGNORE_(_34); |
17455 | 18179 | } |
17456 | - Indent$(0 /* _31 */, &*_32, &_33); | |
18180 | + Indent(0 /* _31 */, &*_32, &_33); | |
17457 | 18181 | _IGNORE_(_33); |
17458 | 18182 | } |
17459 | 18183 | { |
@@ -17599,15 +18323,15 @@ | ||
17599 | 18323 | } |
17600 | 18324 | struct stack/*qtypepureid*/ _47; memset(&_47, 0, sizeof(struct stack/*qtypepureid*/)); |
17601 | 18325 | { |
17602 | - empty(&_47, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3912); | |
18326 | + empty(&_47, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4094); | |
17603 | 18327 | } |
17604 | - ParseBlockRaw$(0 /* _45 */, &*streams, &*txtpos, &*state, &_46, &*scope, &*tmpnr, &_47, &*partial, &*action, &*self); | |
18328 | + ParseBlockRaw$(0 /* _45 */, &*streams, &*txtpos, &*state, &_46, &*scope, &*tmpnr, &_47, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
17605 | 18329 | free$(&_47, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); |
17606 | 18330 | _IGNORE_(_46); |
17607 | 18331 | } |
17608 | 18332 | { |
17609 | 18333 | const struct StreamOut *_47 = &(*streams).out; |
17610 | - Indent$(0 /* _46 */, &*_47, &*level); | |
18334 | + Indent(0 /* _46 */, &*_47, &*level); | |
17611 | 18335 | } |
17612 | 18336 | { |
17613 | 18337 | const struct StreamOut *_48 = &(*streams).out; |
@@ -17647,9 +18371,9 @@ | ||
17647 | 18371 | } |
17648 | 18372 | struct stack/*qtypepureid*/ _31; memset(&_31, 0, sizeof(struct stack/*qtypepureid*/)); |
17649 | 18373 | { |
17650 | - empty(&_31, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3918); | |
18374 | + empty(&_31, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4100); | |
17651 | 18375 | } |
17652 | - ParseBlockRaw$(0 /* _29 */, &*streams, &*txtpos, &*state, &_30, &*scope, &*tmpnr, &_31, &*partial, &*action, &*self); | |
18376 | + ParseBlockRaw$(0 /* _29 */, &*streams, &*txtpos, &*state, &_30, &*scope, &*tmpnr, &_31, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
17653 | 18377 | free$(&_31, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); |
17654 | 18378 | _IGNORE_(_30); |
17655 | 18379 | } |
@@ -17662,7 +18386,7 @@ | ||
17662 | 18386 | } |
17663 | 18387 | { |
17664 | 18388 | const struct StreamOut *_31 = &(*streams).out; |
17665 | - Indent$(0 /* _30 */, &*_31, &*level); | |
18389 | + Indent(0 /* _30 */, &*_31, &*level); | |
17666 | 18390 | } |
17667 | 18391 | { |
17668 | 18392 | const struct StreamOut *_32 = &(*streams).out; |
@@ -17726,7 +18450,7 @@ | ||
17726 | 18450 | container_type$dest(&_10); |
17727 | 18451 | { |
17728 | 18452 | const struct StreamOut *_15 = &(*streams).out; |
17729 | - Indent$(0 /* _14 */, &*_15, &*level); | |
18453 | + Indent(0 /* _14 */, &*_15, &*level); | |
17730 | 18454 | } |
17731 | 18455 | { |
17732 | 18456 | const struct StreamOut *_16 = &(*streams).out; |
@@ -17769,7 +18493,7 @@ | ||
17769 | 18493 | } |
17770 | 18494 | } |
17771 | 18495 | |
17772 | -void ParseStatement$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const bool *partial, const bool *action, const struct string *self, const struct string *id) | |
18496 | +void ParseStatement$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified, const struct string *id) | |
17773 | 18497 | { |
17774 | 18498 | { |
17775 | 18499 | bool _2; |
@@ -17782,7 +18506,7 @@ | ||
17782 | 18506 | if(_2) |
17783 | 18507 | { |
17784 | 18508 | { |
17785 | - ParseLet$(0 /* _3 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self); | |
18509 | + ParseLet$(0 /* _3 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
17786 | 18510 | } |
17787 | 18511 | // NOTE: ParseNext$ called from ParseLet$ to take care of matching frees with mallocs. |
17788 | 18512 | } |
@@ -17800,11 +18524,11 @@ | ||
17800 | 18524 | { |
17801 | 18525 | struct stack/*qtypepureid*/ _6; memset(&_6, 0, sizeof(struct stack/*qtypepureid*/)); |
17802 | 18526 | { |
17803 | - empty(&_6, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3952); | |
18527 | + empty(&_6, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4134); | |
17804 | 18528 | } |
17805 | 18529 | bool _7; memset(&_7, 0, sizeof(bool)); |
17806 | 18530 | _7 = 0; |
17807 | - EmitSwitch$(0 /* _5 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_6, &*id, &*partial, &*action, &*self, &_7); | |
18531 | + EmitSwitch$(0 /* _5 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &_6, &*id, &*partial, &*action, &*self, &*reduced_ids, &*verified, &_7); | |
17808 | 18532 | _IGNORE_(_7); |
17809 | 18533 | free$(&_6, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); |
17810 | 18534 | } |
@@ -17814,7 +18538,7 @@ | ||
17814 | 18538 | bool _5; |
17815 | 18539 | { |
17816 | 18540 | struct string _6; memset(&_6, 0, sizeof(struct string)); |
17817 | - init$fromliteral(&_6, "for", 3); | |
18541 | + init$fromliteral(&_6, "reduce", 6); | |
17818 | 18542 | strequ(&_5, &*id, &_6); |
17819 | 18543 | string$dest(&_6); |
17820 | 18544 | } |
@@ -17821,19 +18545,38 @@ | ||
17821 | 18545 | if(_5) |
17822 | 18546 | { |
17823 | 18547 | { |
17824 | - ParseFor$(0 /* _6 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*partial, &*action, &*self, &*id); | |
18548 | + bool _7; memset(&_7, 0, sizeof(bool)); | |
18549 | + _7 = 1; | |
18550 | + EmitReduce$(0 /* _6 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*id, &*partial, &*action, &*self, &*reduced_ids, &*verified, &_7); | |
18551 | + _IGNORE_(_7); | |
17825 | 18552 | } |
17826 | 18553 | } |
17827 | 18554 | else |
17828 | 18555 | { |
18556 | + bool _6; | |
17829 | 18557 | { |
17830 | - ParseAssign$(0 /* _6 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*partial, &*action, &*self, &*id); | |
18558 | + struct string _7; memset(&_7, 0, sizeof(struct string)); | |
18559 | + init$fromliteral(&_7, "for", 3); | |
18560 | + strequ(&_6, &*id, &_7); | |
18561 | + string$dest(&_7); | |
17831 | 18562 | } |
18563 | + if(_6) | |
18564 | + { | |
18565 | + { | |
18566 | + ParseFor$(0 /* _7 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*partial, &*action, &*self, &*reduced_ids, &*verified, &*id); | |
18567 | + } | |
18568 | + } | |
18569 | + else | |
18570 | + { | |
18571 | + { | |
18572 | + ParseAssign$(0 /* _7 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*partial, &*action, &*self, &*reduced_ids, &*verified, &*id); | |
18573 | + } | |
18574 | + } | |
17832 | 18575 | } |
17833 | 18576 | } |
17834 | 18577 | // NOTE: ParseNext$ called NOT from ParseAssign$ since assigned to existing variables must NOT be freed! |
17835 | 18578 | { |
17836 | - ParseNext$(0 /* _6 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self); | |
18579 | + ParseNext$(0 /* _7 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
17837 | 18580 | } |
17838 | 18581 | // continue |
17839 | 18582 | } |
@@ -18286,7 +19029,7 @@ | ||
18286 | 19029 | } |
18287 | 19030 | |
18288 | 19031 | // parse lines (statements or result) |
18289 | -void ParseLines$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const bool *partial, const bool *action, const struct string *self) | |
19032 | +void ParseLines$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, uint64_t *tmpnr, const struct stack/*qtypepureid*/ *store, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified) | |
18290 | 19033 | { |
18291 | 19034 | { |
18292 | 19035 | { |
@@ -18306,13 +19049,13 @@ | ||
18306 | 19049 | if(_3) |
18307 | 19050 | { |
18308 | 19051 | { |
18309 | - ParseRes$(0 /* _4 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self); | |
19052 | + ParseRes$(0 /* _4 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
18310 | 19053 | } |
18311 | 19054 | } |
18312 | 19055 | else |
18313 | 19056 | { |
18314 | 19057 | { |
18315 | - ParseStatement$(0 /* _4 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self, &_id); | |
19058 | + ParseStatement$(0 /* _4 */, &*streams, &*txtpos, &*state, &*level, &*scope, &*tmpnr, &*store, &*partial, &*action, &*self, &*reduced_ids, &*verified, &_id); | |
18316 | 19059 | } |
18317 | 19060 | } |
18318 | 19061 | string$dest(&_id); |
@@ -18320,7 +19063,7 @@ | ||
18320 | 19063 | } |
18321 | 19064 | |
18322 | 19065 | // parse exposed block, i.e. without surrounding { } |
18323 | -void ParseBlockRaw$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level_, struct stack/*var*/ *scope, const uint64_t *tmpnr_, const struct stack/*qtypepureid*/ *store, const bool *partial, const bool *action, const struct string *self) | |
19066 | +void ParseBlockRaw$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level_, struct stack/*var*/ *scope, const uint64_t *tmpnr_, const struct stack/*qtypepureid*/ *store, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified) | |
18324 | 19067 | { |
18325 | 19068 | { |
18326 | 19069 | uint64_t _base; memset(&_base, 0, sizeof(uint64_t)); |
@@ -18336,7 +19079,7 @@ | ||
18336 | 19079 | uint64_t _level; memset(&_level, 0, sizeof(uint64_t)); |
18337 | 19080 | _level = (*level_); |
18338 | 19081 | { |
18339 | - ParseLines$(0 /* _1 */, &*streams, &*txtpos, &*state, &_level, &*scope, &_tmpnr, &*store, &*partial, &*action, &*self); | |
19082 | + ParseLines$(0 /* _1 */, &*streams, &*txtpos, &*state, &_level, &*scope, &_tmpnr, &*store, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
18340 | 19083 | } |
18341 | 19084 | // NOTE: used to emit assignment here, but it needs to happen earlier, before any free, so any dynamic result is copied before pointers become invalid! |
18342 | 19085 | { |
@@ -18353,7 +19096,7 @@ | ||
18353 | 19096 | } |
18354 | 19097 | } |
18355 | 19098 | |
18356 | -void ParseBlock$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, const uint64_t *tmpnr_, const struct stack/*qtypepureid*/ *store, const bool *partial, const bool *action, const struct string *self) | |
19099 | +void ParseBlock$(void *_0, const struct Streams *streams, struct linecol *txtpos, struct state *state, const uint64_t *level, struct stack/*var*/ *scope, const uint64_t *tmpnr_, const struct stack/*qtypepureid*/ *store, const bool *partial, const bool *action, const struct string *self, struct stack/*ReducedId*/ *reduced_ids, const bool *verified) | |
18357 | 19100 | { |
18358 | 19101 | { |
18359 | 19102 | { |
@@ -18387,7 +19130,7 @@ | ||
18387 | 19130 | { |
18388 | 19131 | { |
18389 | 19132 | const struct StreamOut *_6 = &(*streams).out; |
18390 | - Indent$(0 /* _5 */, &*_6, &*level); | |
19133 | + Indent(0 /* _5 */, &*_6, &*level); | |
18391 | 19134 | } |
18392 | 19135 | { |
18393 | 19136 | const struct StreamOut *_7 = &(*streams).out; |
@@ -18404,12 +19147,12 @@ | ||
18404 | 19147 | _8 = *level + _9; |
18405 | 19148 | _IGNORE_(_9); |
18406 | 19149 | } |
18407 | - ParseBlockRaw$(0 /* _7 */, &*streams, &*txtpos, &*state, &_8, &*scope, &*tmpnr_, &*store, &*partial, &*action, &*self); | |
19150 | + ParseBlockRaw$(0 /* _7 */, &*streams, &*txtpos, &*state, &_8, &*scope, &*tmpnr_, &*store, &*partial, &*action, &*self, &*reduced_ids, &*verified); | |
18408 | 19151 | _IGNORE_(_8); |
18409 | 19152 | } |
18410 | 19153 | { |
18411 | 19154 | const struct StreamOut *_9 = &(*streams).out; |
18412 | - Indent$(0 /* _8 */, &*_9, &*level); | |
19155 | + Indent(0 /* _8 */, &*_9, &*level); | |
18413 | 19156 | } |
18414 | 19157 | { |
18415 | 19158 | const struct StreamOut *_10 = &(*streams).out; |
@@ -18494,12 +19237,12 @@ | ||
18494 | 19237 | { |
18495 | 19238 | struct typepureid _cur; memset(&_cur, 0, sizeof(struct typepureid)); |
18496 | 19239 | { |
18497 | - at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4158); | |
19240 | + at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4344); | |
18498 | 19241 | } |
18499 | 19242 | { |
18500 | 19243 | uint64_t _4; memset(&_4, 0, sizeof(uint64_t)); |
18501 | 19244 | _4 = 1; |
18502 | - Indent$(0 /* _3 */, &*out, &_4); | |
19245 | + Indent(0 /* _3 */, &*out, &_4); | |
18503 | 19246 | _IGNORE_(_4); |
18504 | 19247 | } |
18505 | 19248 | { |
@@ -18594,7 +19337,7 @@ | ||
18594 | 19337 | { |
18595 | 19338 | uint64_t _16; memset(&_16, 0, sizeof(uint64_t)); |
18596 | 19339 | _16 = 1; |
18597 | - Indent$(0 /* _15 */, &*out, &_16); | |
19340 | + Indent(0 /* _15 */, &*out, &_16); | |
18598 | 19341 | _IGNORE_(_16); |
18599 | 19342 | } |
18600 | 19343 | { |
@@ -18606,7 +19349,7 @@ | ||
18606 | 19349 | { |
18607 | 19350 | uint64_t _18; memset(&_18, 0, sizeof(uint64_t)); |
18608 | 19351 | _18 = 2; |
18609 | - Indent$(0 /* _17 */, &*out, &_18); | |
19352 | + Indent(0 /* _17 */, &*out, &_18); | |
18610 | 19353 | _IGNORE_(_18); |
18611 | 19354 | } |
18612 | 19355 | { |
@@ -18746,7 +19489,7 @@ | ||
18746 | 19489 | { |
18747 | 19490 | uint64_t _6; memset(&_6, 0, sizeof(uint64_t)); |
18748 | 19491 | _6 = 1; |
18749 | - Indent$(0 /* _5 */, &*out, &_6); | |
19492 | + Indent(0 /* _5 */, &*out, &_6); | |
18750 | 19493 | _IGNORE_(_6); |
18751 | 19494 | } |
18752 | 19495 | { |
@@ -18758,12 +19501,12 @@ | ||
18758 | 19501 | } |
18759 | 19502 | struct typepureid _cur; memset(&_cur, 0, sizeof(struct typepureid)); |
18760 | 19503 | { |
18761 | - at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4209); | |
19504 | + at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4395); | |
18762 | 19505 | } |
18763 | 19506 | { |
18764 | 19507 | uint64_t _6; memset(&_6, 0, sizeof(uint64_t)); |
18765 | 19508 | _6 = 1; |
18766 | - Indent$(0 /* _5 */, &*out, &_6); | |
19509 | + Indent(0 /* _5 */, &*out, &_6); | |
18767 | 19510 | _IGNORE_(_6); |
18768 | 19511 | } |
18769 | 19512 | { |
@@ -18910,7 +19653,7 @@ | ||
18910 | 19653 | { |
18911 | 19654 | uint64_t _10; memset(&_10, 0, sizeof(uint64_t)); |
18912 | 19655 | _10 = 1; |
18913 | - Indent$(0 /* _9 */, &*out, &_10); | |
19656 | + Indent(0 /* _9 */, &*out, &_10); | |
18914 | 19657 | _IGNORE_(_10); |
18915 | 19658 | } |
18916 | 19659 | { |
@@ -18939,7 +19682,7 @@ | ||
18939 | 19682 | { |
18940 | 19683 | uint64_t _15; memset(&_15, 0, sizeof(uint64_t)); |
18941 | 19684 | _15 = 1; |
18942 | - Indent$(0 /* _14 */, &*out, &_15); | |
19685 | + Indent(0 /* _14 */, &*out, &_15); | |
18943 | 19686 | _IGNORE_(_15); |
18944 | 19687 | } |
18945 | 19688 | { |
@@ -18994,7 +19737,7 @@ | ||
18994 | 19737 | _IGNORE_(_4); |
18995 | 19738 | } |
18996 | 19739 | { |
18997 | - push(0 /* _4 */, &*elems, &_ti, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4254); | |
19740 | + push(0 /* _4 */, &*elems, &_ti, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4440); | |
18998 | 19741 | } |
18999 | 19742 | { |
19000 | 19743 | uint64_t _6; memset(&_6, 0, sizeof(uint64_t)); |
@@ -19029,12 +19772,12 @@ | ||
19029 | 19772 | { |
19030 | 19773 | struct typepureid _cur; memset(&_cur, 0, sizeof(struct typepureid)); |
19031 | 19774 | { |
19032 | - at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4266); | |
19775 | + at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4452); | |
19033 | 19776 | } |
19034 | 19777 | { |
19035 | 19778 | uint64_t _4; memset(&_4, 0, sizeof(uint64_t)); |
19036 | 19779 | _4 = 1; |
19037 | - Indent$(0 /* _3 */, &*out, &_4); | |
19780 | + Indent(0 /* _3 */, &*out, &_4); | |
19038 | 19781 | _IGNORE_(_4); |
19039 | 19782 | } |
19040 | 19783 | { |
@@ -19197,12 +19940,12 @@ | ||
19197 | 19940 | { |
19198 | 19941 | struct typepureid _cur; memset(&_cur, 0, sizeof(struct typepureid)); |
19199 | 19942 | { |
19200 | - at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4293); | |
19943 | + at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4479); | |
19201 | 19944 | } |
19202 | 19945 | { |
19203 | 19946 | uint64_t _4; memset(&_4, 0, sizeof(uint64_t)); |
19204 | 19947 | _4 = 1; |
19205 | - Indent$(0 /* _3 */, &*out, &_4); | |
19948 | + Indent(0 /* _3 */, &*out, &_4); | |
19206 | 19949 | _IGNORE_(_4); |
19207 | 19950 | } |
19208 | 19951 | { |
@@ -19345,12 +20088,12 @@ | ||
19345 | 20088 | { |
19346 | 20089 | struct typepureid _cur; memset(&_cur, 0, sizeof(struct typepureid)); |
19347 | 20090 | { |
19348 | - at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4319); | |
20091 | + at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4505); | |
19349 | 20092 | } |
19350 | 20093 | { |
19351 | 20094 | uint64_t _4; memset(&_4, 0, sizeof(uint64_t)); |
19352 | 20095 | _4 = 1; |
19353 | - Indent$(0 /* _3 */, &*out, &_4); | |
20096 | + Indent(0 /* _3 */, &*out, &_4); | |
19354 | 20097 | _IGNORE_(_4); |
19355 | 20098 | } |
19356 | 20099 | struct type_pure _4; memset(&_4, 0, sizeof(struct type_pure)); |
@@ -19525,7 +20268,7 @@ | ||
19525 | 20268 | { |
19526 | 20269 | struct typepureid _cur; memset(&_cur, 0, sizeof(struct typepureid)); |
19527 | 20270 | { |
19528 | - at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4344); | |
20271 | + at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4530); | |
19529 | 20272 | } |
19530 | 20273 | { |
19531 | 20274 | struct qtype _4; memset(&_4, 0, sizeof(struct qtype)); |
@@ -19743,11 +20486,11 @@ | ||
19743 | 20486 | { |
19744 | 20487 | struct constr _c; memset(&_c, 0, sizeof(struct constr)); |
19745 | 20488 | { |
19746 | - at_get$(&_c, &*constrs, &*idx, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 4382); | |
20489 | + at_get$(&_c, &*constrs, &*idx, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 4568); | |
19747 | 20490 | } |
19748 | 20491 | { |
19749 | 20492 | const struct typepureid *_4 = &(_c).ti; |
19750 | - push(0 /* _3 */, &*extracted, &*_4, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4383); | |
20493 | + push(0 /* _3 */, &*extracted, &*_4, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4569); | |
19751 | 20494 | } |
19752 | 20495 | { |
19753 | 20496 | uint64_t _5; memset(&_5, 0, sizeof(uint64_t)); |
@@ -19808,11 +20551,11 @@ | ||
19808 | 20551 | struct typepureid _elem; memset(&_elem, 0, sizeof(struct typepureid)); |
19809 | 20552 | { |
19810 | 20553 | const struct stack/*typepureid*/ *_4 = &(_sd).elems; |
19811 | - at_get$(&_elem, &*_4, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4395); | |
20554 | + at_get$(&_elem, &*_4, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4581); | |
19812 | 20555 | } |
19813 | 20556 | struct constr _constr; memset(&_constr, 0, sizeof(struct constr)); |
19814 | 20557 | { |
19815 | - at_get$(&_constr, &*constrs, &*idx, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 4397); | |
20558 | + at_get$(&_constr, &*constrs, &*idx, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 4583); | |
19816 | 20559 | } |
19817 | 20560 | bool _5; |
19818 | 20561 | { |
@@ -19997,7 +20740,7 @@ | ||
19997 | 20740 | { |
19998 | 20741 | uint64_t _4; memset(&_4, 0, sizeof(uint64_t)); |
19999 | 20742 | _4 = 3; |
20000 | - Indent$(0 /* _3 */, &*out, &_4); | |
20743 | + Indent(0 /* _3 */, &*out, &_4); | |
20001 | 20744 | _IGNORE_(_4); |
20002 | 20745 | } |
20003 | 20746 | { |
@@ -20018,7 +20761,7 @@ | ||
20018 | 20761 | { |
20019 | 20762 | uint64_t _8; memset(&_8, 0, sizeof(uint64_t)); |
20020 | 20763 | _8 = 3; |
20021 | - Indent$(0 /* _7 */, &*out, &_8); | |
20764 | + Indent(0 /* _7 */, &*out, &_8); | |
20022 | 20765 | _IGNORE_(_8); |
20023 | 20766 | } |
20024 | 20767 | { |
@@ -20029,7 +20772,7 @@ | ||
20029 | 20772 | } |
20030 | 20773 | struct typepureid _cur; memset(&_cur, 0, sizeof(struct typepureid)); |
20031 | 20774 | { |
20032 | - at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4423); | |
20775 | + at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4609); | |
20033 | 20776 | } |
20034 | 20777 | bool _10; |
20035 | 20778 | { |
@@ -20054,7 +20797,7 @@ | ||
20054 | 20797 | { |
20055 | 20798 | uint64_t _12; memset(&_12, 0, sizeof(uint64_t)); |
20056 | 20799 | _12 = 4; |
20057 | - Indent$(0 /* _11 */, &*out, &_12); | |
20800 | + Indent(0 /* _11 */, &*out, &_12); | |
20058 | 20801 | _IGNORE_(_12); |
20059 | 20802 | } |
20060 | 20803 | { |
@@ -20152,7 +20895,7 @@ | ||
20152 | 20895 | { |
20153 | 20896 | uint64_t _12; memset(&_12, 0, sizeof(uint64_t)); |
20154 | 20897 | _12 = 4; |
20155 | - Indent$(0 /* _11 */, &*out, &_12); | |
20898 | + Indent(0 /* _11 */, &*out, &_12); | |
20156 | 20899 | _IGNORE_(_12); |
20157 | 20900 | } |
20158 | 20901 | { |
@@ -20165,7 +20908,7 @@ | ||
20165 | 20908 | { |
20166 | 20909 | uint64_t _12; memset(&_12, 0, sizeof(uint64_t)); |
20167 | 20910 | _12 = 4; |
20168 | - Indent$(0 /* _11 */, &*out, &_12); | |
20911 | + Indent(0 /* _11 */, &*out, &_12); | |
20169 | 20912 | _IGNORE_(_12); |
20170 | 20913 | } |
20171 | 20914 | { |
@@ -20177,7 +20920,7 @@ | ||
20177 | 20920 | { |
20178 | 20921 | uint64_t _14; memset(&_14, 0, sizeof(uint64_t)); |
20179 | 20922 | _14 = 3; |
20180 | - Indent$(0 /* _13 */, &*out, &_14); | |
20923 | + Indent(0 /* _13 */, &*out, &_14); | |
20181 | 20924 | _IGNORE_(_14); |
20182 | 20925 | } |
20183 | 20926 | { |
@@ -20293,7 +21036,7 @@ | ||
20293 | 21036 | { |
20294 | 21037 | uint64_t _15; memset(&_15, 0, sizeof(uint64_t)); |
20295 | 21038 | _15 = 1; |
20296 | - Indent$(0 /* _14 */, &*out, &_15); | |
21039 | + Indent(0 /* _14 */, &*out, &_15); | |
20297 | 21040 | _IGNORE_(_15); |
20298 | 21041 | } |
20299 | 21042 | { |
@@ -20305,7 +21048,7 @@ | ||
20305 | 21048 | { |
20306 | 21049 | uint64_t _17; memset(&_17, 0, sizeof(uint64_t)); |
20307 | 21050 | _17 = 1; |
20308 | - Indent$(0 /* _16 */, &*out, &_17); | |
21051 | + Indent(0 /* _16 */, &*out, &_17); | |
20309 | 21052 | _IGNORE_(_17); |
20310 | 21053 | } |
20311 | 21054 | { |
@@ -20317,7 +21060,7 @@ | ||
20317 | 21060 | { |
20318 | 21061 | uint64_t _19; memset(&_19, 0, sizeof(uint64_t)); |
20319 | 21062 | _19 = 2; |
20320 | - Indent$(0 /* _18 */, &*out, &_19); | |
21063 | + Indent(0 /* _18 */, &*out, &_19); | |
20321 | 21064 | _IGNORE_(_19); |
20322 | 21065 | } |
20323 | 21066 | { |
@@ -20329,7 +21072,7 @@ | ||
20329 | 21072 | { |
20330 | 21073 | uint64_t _21; memset(&_21, 0, sizeof(uint64_t)); |
20331 | 21074 | _21 = 1; |
20332 | - Indent$(0 /* _20 */, &*out, &_21); | |
21075 | + Indent(0 /* _20 */, &*out, &_21); | |
20333 | 21076 | _IGNORE_(_21); |
20334 | 21077 | } |
20335 | 21078 | { |
@@ -20341,7 +21084,7 @@ | ||
20341 | 21084 | { |
20342 | 21085 | uint64_t _23; memset(&_23, 0, sizeof(uint64_t)); |
20343 | 21086 | _23 = 1; |
20344 | - Indent$(0 /* _22 */, &*out, &_23); | |
21087 | + Indent(0 /* _22 */, &*out, &_23); | |
20345 | 21088 | _IGNORE_(_23); |
20346 | 21089 | } |
20347 | 21090 | { |
@@ -20353,7 +21096,7 @@ | ||
20353 | 21096 | { |
20354 | 21097 | uint64_t _25; memset(&_25, 0, sizeof(uint64_t)); |
20355 | 21098 | _25 = 1; |
20356 | - Indent$(0 /* _24 */, &*out, &_25); | |
21099 | + Indent(0 /* _24 */, &*out, &_25); | |
20357 | 21100 | _IGNORE_(_25); |
20358 | 21101 | } |
20359 | 21102 | { |
@@ -20365,7 +21108,7 @@ | ||
20365 | 21108 | { |
20366 | 21109 | uint64_t _27; memset(&_27, 0, sizeof(uint64_t)); |
20367 | 21110 | _27 = 2; |
20368 | - Indent$(0 /* _26 */, &*out, &_27); | |
21111 | + Indent(0 /* _26 */, &*out, &_27); | |
20369 | 21112 | _IGNORE_(_27); |
20370 | 21113 | } |
20371 | 21114 | { |
@@ -20377,7 +21120,7 @@ | ||
20377 | 21120 | { |
20378 | 21121 | uint64_t _29; memset(&_29, 0, sizeof(uint64_t)); |
20379 | 21122 | _29 = 1; |
20380 | - Indent$(0 /* _28 */, &*out, &_29); | |
21123 | + Indent(0 /* _28 */, &*out, &_29); | |
20381 | 21124 | _IGNORE_(_29); |
20382 | 21125 | } |
20383 | 21126 | { |
@@ -20389,7 +21132,7 @@ | ||
20389 | 21132 | { |
20390 | 21133 | uint64_t _31; memset(&_31, 0, sizeof(uint64_t)); |
20391 | 21134 | _31 = 1; |
20392 | - Indent$(0 /* _30 */, &*out, &_31); | |
21135 | + Indent(0 /* _30 */, &*out, &_31); | |
20393 | 21136 | _IGNORE_(_31); |
20394 | 21137 | } |
20395 | 21138 | { |
@@ -20401,7 +21144,7 @@ | ||
20401 | 21144 | { |
20402 | 21145 | uint64_t _33; memset(&_33, 0, sizeof(uint64_t)); |
20403 | 21146 | _33 = 1; |
20404 | - Indent$(0 /* _32 */, &*out, &_33); | |
21147 | + Indent(0 /* _32 */, &*out, &_33); | |
20405 | 21148 | _IGNORE_(_33); |
20406 | 21149 | } |
20407 | 21150 | { |
@@ -20413,7 +21156,7 @@ | ||
20413 | 21156 | { |
20414 | 21157 | uint64_t _35; memset(&_35, 0, sizeof(uint64_t)); |
20415 | 21158 | _35 = 2; |
20416 | - Indent$(0 /* _34 */, &*out, &_35); | |
21159 | + Indent(0 /* _34 */, &*out, &_35); | |
20417 | 21160 | _IGNORE_(_35); |
20418 | 21161 | } |
20419 | 21162 | { |
@@ -20425,7 +21168,7 @@ | ||
20425 | 21168 | { |
20426 | 21169 | uint64_t _37; memset(&_37, 0, sizeof(uint64_t)); |
20427 | 21170 | _37 = 2; |
20428 | - Indent$(0 /* _36 */, &*out, &_37); | |
21171 | + Indent(0 /* _36 */, &*out, &_37); | |
20429 | 21172 | _IGNORE_(_37); |
20430 | 21173 | } |
20431 | 21174 | { |
@@ -20446,7 +21189,7 @@ | ||
20446 | 21189 | { |
20447 | 21190 | uint64_t _40; memset(&_40, 0, sizeof(uint64_t)); |
20448 | 21191 | _40 = 3; |
20449 | - Indent$(0 /* _39 */, &*out, &_40); | |
21192 | + Indent(0 /* _39 */, &*out, &_40); | |
20450 | 21193 | _IGNORE_(_40); |
20451 | 21194 | } |
20452 | 21195 | { |
@@ -20458,7 +21201,7 @@ | ||
20458 | 21201 | { |
20459 | 21202 | uint64_t _42; memset(&_42, 0, sizeof(uint64_t)); |
20460 | 21203 | _42 = 2; |
20461 | - Indent$(0 /* _41 */, &*out, &_42); | |
21204 | + Indent(0 /* _41 */, &*out, &_42); | |
20462 | 21205 | _IGNORE_(_42); |
20463 | 21206 | } |
20464 | 21207 | { |
@@ -20470,7 +21213,7 @@ | ||
20470 | 21213 | { |
20471 | 21214 | uint64_t _44; memset(&_44, 0, sizeof(uint64_t)); |
20472 | 21215 | _44 = 1; |
20473 | - Indent$(0 /* _43 */, &*out, &_44); | |
21216 | + Indent(0 /* _43 */, &*out, &_44); | |
20474 | 21217 | _IGNORE_(_44); |
20475 | 21218 | } |
20476 | 21219 | { |
@@ -20532,11 +21275,11 @@ | ||
20532 | 21275 | struct typepureid _elem; memset(&_elem, 0, sizeof(struct typepureid)); |
20533 | 21276 | { |
20534 | 21277 | const struct stack/*typepureid*/ *_4 = &(_sd).elems; |
20535 | - at_get$(&_elem, &*_4, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4498); | |
21278 | + at_get$(&_elem, &*_4, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4684); | |
20536 | 21279 | } |
20537 | 21280 | struct constr _constr; memset(&_constr, 0, sizeof(struct constr)); |
20538 | 21281 | { |
20539 | - at_get$(&_constr, &*constrs, &*idx, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 4500); | |
21282 | + at_get$(&_constr, &*constrs, &*idx, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 4686); | |
20540 | 21283 | } |
20541 | 21284 | bool _5; |
20542 | 21285 | { |
@@ -20622,7 +21365,7 @@ | ||
20622 | 21365 | { |
20623 | 21366 | uint64_t _14; memset(&_14, 0, sizeof(uint64_t)); |
20624 | 21367 | _14 = 1; |
20625 | - Indent$(0 /* _13 */, &*out, &_14); | |
21368 | + Indent(0 /* _13 */, &*out, &_14); | |
20626 | 21369 | _IGNORE_(_14); |
20627 | 21370 | } |
20628 | 21371 | { |
@@ -20652,7 +21395,7 @@ | ||
20652 | 21395 | { |
20653 | 21396 | uint64_t _19; memset(&_19, 0, sizeof(uint64_t)); |
20654 | 21397 | _19 = 1; |
20655 | - Indent$(0 /* _18 */, &*out, &_19); | |
21398 | + Indent(0 /* _18 */, &*out, &_19); | |
20656 | 21399 | _IGNORE_(_19); |
20657 | 21400 | } |
20658 | 21401 | { |
@@ -20710,7 +21453,7 @@ | ||
20710 | 21453 | { |
20711 | 21454 | uint64_t _4; memset(&_4, 0, sizeof(uint64_t)); |
20712 | 21455 | _4 = 2; |
20713 | - Indent$(0 /* _3 */, &*out, &_4); | |
21456 | + Indent(0 /* _3 */, &*out, &_4); | |
20714 | 21457 | _IGNORE_(_4); |
20715 | 21458 | } |
20716 | 21459 | { |
@@ -20731,7 +21474,7 @@ | ||
20731 | 21474 | { |
20732 | 21475 | uint64_t _8; memset(&_8, 0, sizeof(uint64_t)); |
20733 | 21476 | _8 = 2; |
20734 | - Indent$(0 /* _7 */, &*out, &_8); | |
21477 | + Indent(0 /* _7 */, &*out, &_8); | |
20735 | 21478 | _IGNORE_(_8); |
20736 | 21479 | } |
20737 | 21480 | { |
@@ -20742,7 +21485,7 @@ | ||
20742 | 21485 | } |
20743 | 21486 | struct typepureid _cur; memset(&_cur, 0, sizeof(struct typepureid)); |
20744 | 21487 | { |
20745 | - at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4526); | |
21488 | + at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4712); | |
20746 | 21489 | } |
20747 | 21490 | bool _10; |
20748 | 21491 | { |
@@ -20767,13 +21510,13 @@ | ||
20767 | 21510 | { |
20768 | 21511 | uint64_t _12; memset(&_12, 0, sizeof(uint64_t)); |
20769 | 21512 | _12 = 3; |
20770 | - Indent$(0 /* _11 */, &*out, &_12); | |
21513 | + Indent(0 /* _11 */, &*out, &_12); | |
20771 | 21514 | _IGNORE_(_12); |
20772 | 21515 | } |
20773 | 21516 | { |
20774 | 21517 | uint64_t _13; memset(&_13, 0, sizeof(uint64_t)); |
20775 | 21518 | _13 = 1; |
20776 | - Indent$(0 /* _12 */, &*out, &_13); | |
21519 | + Indent(0 /* _12 */, &*out, &_13); | |
20777 | 21520 | _IGNORE_(_13); |
20778 | 21521 | } |
20779 | 21522 | { |
@@ -20794,7 +21537,7 @@ | ||
20794 | 21537 | { |
20795 | 21538 | uint64_t _17; memset(&_17, 0, sizeof(uint64_t)); |
20796 | 21539 | _17 = 3; |
20797 | - Indent$(0 /* _16 */, &*out, &_17); | |
21540 | + Indent(0 /* _16 */, &*out, &_17); | |
20798 | 21541 | _IGNORE_(_17); |
20799 | 21542 | } |
20800 | 21543 | { |
@@ -20882,13 +21625,13 @@ | ||
20882 | 21625 | { |
20883 | 21626 | uint64_t _12; memset(&_12, 0, sizeof(uint64_t)); |
20884 | 21627 | _12 = 3; |
20885 | - Indent$(0 /* _11 */, &*out, &_12); | |
21628 | + Indent(0 /* _11 */, &*out, &_12); | |
20886 | 21629 | _IGNORE_(_12); |
20887 | 21630 | } |
20888 | 21631 | { |
20889 | 21632 | uint64_t _13; memset(&_13, 0, sizeof(uint64_t)); |
20890 | 21633 | _13 = 1; |
20891 | - Indent$(0 /* _12 */, &*out, &_13); | |
21634 | + Indent(0 /* _12 */, &*out, &_13); | |
20892 | 21635 | _IGNORE_(_13); |
20893 | 21636 | } |
20894 | 21637 | { |
@@ -20911,7 +21654,7 @@ | ||
20911 | 21654 | { |
20912 | 21655 | uint64_t _12; memset(&_12, 0, sizeof(uint64_t)); |
20913 | 21656 | _12 = 3; |
20914 | - Indent$(0 /* _11 */, &*out, &_12); | |
21657 | + Indent(0 /* _11 */, &*out, &_12); | |
20915 | 21658 | _IGNORE_(_12); |
20916 | 21659 | } |
20917 | 21660 | { |
@@ -20923,7 +21666,7 @@ | ||
20923 | 21666 | { |
20924 | 21667 | uint64_t _14; memset(&_14, 0, sizeof(uint64_t)); |
20925 | 21668 | _14 = 2; |
20926 | - Indent$(0 /* _13 */, &*out, &_14); | |
21669 | + Indent(0 /* _13 */, &*out, &_14); | |
20927 | 21670 | _IGNORE_(_14); |
20928 | 21671 | } |
20929 | 21672 | { |
@@ -21018,7 +21761,7 @@ | ||
21018 | 21761 | { |
21019 | 21762 | uint64_t _12; memset(&_12, 0, sizeof(uint64_t)); |
21020 | 21763 | _12 = 1; |
21021 | - Indent$(0 /* _11 */, &*out, &_12); | |
21764 | + Indent(0 /* _11 */, &*out, &_12); | |
21022 | 21765 | _IGNORE_(_12); |
21023 | 21766 | } |
21024 | 21767 | { |
@@ -21030,7 +21773,7 @@ | ||
21030 | 21773 | { |
21031 | 21774 | uint64_t _14; memset(&_14, 0, sizeof(uint64_t)); |
21032 | 21775 | _14 = 1; |
21033 | - Indent$(0 /* _13 */, &*out, &_14); | |
21776 | + Indent(0 /* _13 */, &*out, &_14); | |
21034 | 21777 | _IGNORE_(_14); |
21035 | 21778 | } |
21036 | 21779 | { |
@@ -21051,7 +21794,7 @@ | ||
21051 | 21794 | { |
21052 | 21795 | uint64_t _17; memset(&_17, 0, sizeof(uint64_t)); |
21053 | 21796 | _17 = 2; |
21054 | - Indent$(0 /* _16 */, &*out, &_17); | |
21797 | + Indent(0 /* _16 */, &*out, &_17); | |
21055 | 21798 | _IGNORE_(_17); |
21056 | 21799 | } |
21057 | 21800 | { |
@@ -21063,7 +21806,7 @@ | ||
21063 | 21806 | { |
21064 | 21807 | uint64_t _19; memset(&_19, 0, sizeof(uint64_t)); |
21065 | 21808 | _19 = 1; |
21066 | - Indent$(0 /* _18 */, &*out, &_19); | |
21809 | + Indent(0 /* _18 */, &*out, &_19); | |
21067 | 21810 | _IGNORE_(_19); |
21068 | 21811 | } |
21069 | 21812 | { |
@@ -21098,12 +21841,12 @@ | ||
21098 | 21841 | { |
21099 | 21842 | struct typepureid _cur; memset(&_cur, 0, sizeof(struct typepureid)); |
21100 | 21843 | { |
21101 | - at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4587); | |
21844 | + at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4773); | |
21102 | 21845 | } |
21103 | 21846 | { |
21104 | 21847 | uint64_t _4; memset(&_4, 0, sizeof(uint64_t)); |
21105 | 21848 | _4 = 2; |
21106 | - Indent$(0 /* _3 */, &*out, &_4); | |
21849 | + Indent(0 /* _3 */, &*out, &_4); | |
21107 | 21850 | _IGNORE_(_4); |
21108 | 21851 | } |
21109 | 21852 | { |
@@ -21252,7 +21995,7 @@ | ||
21252 | 21995 | { |
21253 | 21996 | uint64_t _13; memset(&_13, 0, sizeof(uint64_t)); |
21254 | 21997 | _13 = 1; |
21255 | - Indent$(0 /* _12 */, &*out, &_13); | |
21998 | + Indent(0 /* _12 */, &*out, &_13); | |
21256 | 21999 | _IGNORE_(_13); |
21257 | 22000 | } |
21258 | 22001 | { |
@@ -21275,7 +22018,7 @@ | ||
21275 | 22018 | { |
21276 | 22019 | uint64_t _17; memset(&_17, 0, sizeof(uint64_t)); |
21277 | 22020 | _17 = 1; |
21278 | - Indent$(0 /* _16 */, &*out, &_17); | |
22021 | + Indent(0 /* _16 */, &*out, &_17); | |
21279 | 22022 | _IGNORE_(_17); |
21280 | 22023 | } |
21281 | 22024 | { |
@@ -21287,7 +22030,7 @@ | ||
21287 | 22030 | { |
21288 | 22031 | uint64_t _19; memset(&_19, 0, sizeof(uint64_t)); |
21289 | 22032 | _19 = 1; |
21290 | - Indent$(0 /* _18 */, &*out, &_19); | |
22033 | + Indent(0 /* _18 */, &*out, &_19); | |
21291 | 22034 | _IGNORE_(_19); |
21292 | 22035 | } |
21293 | 22036 | { |
@@ -21299,7 +22042,7 @@ | ||
21299 | 22042 | { |
21300 | 22043 | uint64_t _21; memset(&_21, 0, sizeof(uint64_t)); |
21301 | 22044 | _21 = 2; |
21302 | - Indent$(0 /* _20 */, &*out, &_21); | |
22045 | + Indent(0 /* _20 */, &*out, &_21); | |
21303 | 22046 | _IGNORE_(_21); |
21304 | 22047 | } |
21305 | 22048 | { |
@@ -21325,7 +22068,7 @@ | ||
21325 | 22068 | { |
21326 | 22069 | uint64_t _26; memset(&_26, 0, sizeof(uint64_t)); |
21327 | 22070 | _26 = 2; |
21328 | - Indent$(0 /* _25 */, &*out, &_26); | |
22071 | + Indent(0 /* _25 */, &*out, &_26); | |
21329 | 22072 | _IGNORE_(_26); |
21330 | 22073 | } |
21331 | 22074 | { |
@@ -21347,7 +22090,7 @@ | ||
21347 | 22090 | { |
21348 | 22091 | uint64_t _30; memset(&_30, 0, sizeof(uint64_t)); |
21349 | 22092 | _30 = 1; |
21350 | - Indent$(0 /* _29 */, &*out, &_30); | |
22093 | + Indent(0 /* _29 */, &*out, &_30); | |
21351 | 22094 | _IGNORE_(_30); |
21352 | 22095 | } |
21353 | 22096 | { |
@@ -21359,7 +22102,7 @@ | ||
21359 | 22102 | { |
21360 | 22103 | uint64_t _32; memset(&_32, 0, sizeof(uint64_t)); |
21361 | 22104 | _32 = 1; |
21362 | - Indent$(0 /* _31 */, &*out, &_32); | |
22105 | + Indent(0 /* _31 */, &*out, &_32); | |
21363 | 22106 | _IGNORE_(_32); |
21364 | 22107 | } |
21365 | 22108 | { |
@@ -21371,7 +22114,7 @@ | ||
21371 | 22114 | { |
21372 | 22115 | uint64_t _34; memset(&_34, 0, sizeof(uint64_t)); |
21373 | 22116 | _34 = 1; |
21374 | - Indent$(0 /* _33 */, &*out, &_34); | |
22117 | + Indent(0 /* _33 */, &*out, &_34); | |
21375 | 22118 | _IGNORE_(_34); |
21376 | 22119 | } |
21377 | 22120 | { |
@@ -21383,7 +22126,7 @@ | ||
21383 | 22126 | { |
21384 | 22127 | uint64_t _36; memset(&_36, 0, sizeof(uint64_t)); |
21385 | 22128 | _36 = 1; |
21386 | - Indent$(0 /* _35 */, &*out, &_36); | |
22129 | + Indent(0 /* _35 */, &*out, &_36); | |
21387 | 22130 | _IGNORE_(_36); |
21388 | 22131 | } |
21389 | 22132 | { |
@@ -21402,7 +22145,7 @@ | ||
21402 | 22145 | { |
21403 | 22146 | uint64_t _39; memset(&_39, 0, sizeof(uint64_t)); |
21404 | 22147 | _39 = 2; |
21405 | - Indent$(0 /* _38 */, &*out, &_39); | |
22148 | + Indent(0 /* _38 */, &*out, &_39); | |
21406 | 22149 | _IGNORE_(_39); |
21407 | 22150 | } |
21408 | 22151 | { |
@@ -21414,7 +22157,7 @@ | ||
21414 | 22157 | { |
21415 | 22158 | uint64_t _41; memset(&_41, 0, sizeof(uint64_t)); |
21416 | 22159 | _41 = 1; |
21417 | - Indent$(0 /* _40 */, &*out, &_41); | |
22160 | + Indent(0 /* _40 */, &*out, &_41); | |
21418 | 22161 | _IGNORE_(_41); |
21419 | 22162 | } |
21420 | 22163 | { |
@@ -21426,7 +22169,7 @@ | ||
21426 | 22169 | { |
21427 | 22170 | uint64_t _43; memset(&_43, 0, sizeof(uint64_t)); |
21428 | 22171 | _43 = 1; |
21429 | - Indent$(0 /* _42 */, &*out, &_43); | |
22172 | + Indent(0 /* _42 */, &*out, &_43); | |
21430 | 22173 | _IGNORE_(_43); |
21431 | 22174 | } |
21432 | 22175 | { |
@@ -21466,12 +22209,12 @@ | ||
21466 | 22209 | { |
21467 | 22210 | struct typepureid _ti; memset(&_ti, 0, sizeof(struct typepureid)); |
21468 | 22211 | { |
21469 | - at_get$(&_ti, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4626); | |
22212 | + at_get$(&_ti, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4812); | |
21470 | 22213 | } |
21471 | 22214 | { |
21472 | 22215 | uint64_t _4; memset(&_4, 0, sizeof(uint64_t)); |
21473 | 22216 | _4 = 2; |
21474 | - Indent$(0 /* _3 */, &*out, &_4); | |
22217 | + Indent(0 /* _3 */, &*out, &_4); | |
21475 | 22218 | _IGNORE_(_4); |
21476 | 22219 | } |
21477 | 22220 | { |
@@ -21630,7 +22373,7 @@ | ||
21630 | 22373 | { |
21631 | 22374 | uint64_t _13; memset(&_13, 0, sizeof(uint64_t)); |
21632 | 22375 | _13 = 1; |
21633 | - Indent$(0 /* _12 */, &*out, &_13); | |
22376 | + Indent(0 /* _12 */, &*out, &_13); | |
21634 | 22377 | _IGNORE_(_13); |
21635 | 22378 | } |
21636 | 22379 | { |
@@ -21656,7 +22399,7 @@ | ||
21656 | 22399 | { |
21657 | 22400 | uint64_t _17; memset(&_17, 0, sizeof(uint64_t)); |
21658 | 22401 | _17 = 1; |
21659 | - Indent$(0 /* _16 */, &*out, &_17); | |
22402 | + Indent(0 /* _16 */, &*out, &_17); | |
21660 | 22403 | _IGNORE_(_17); |
21661 | 22404 | } |
21662 | 22405 | { |
@@ -21675,7 +22418,7 @@ | ||
21675 | 22418 | { |
21676 | 22419 | uint64_t _20; memset(&_20, 0, sizeof(uint64_t)); |
21677 | 22420 | _20 = 2; |
21678 | - Indent$(0 /* _19 */, &*out, &_20); | |
22421 | + Indent(0 /* _19 */, &*out, &_20); | |
21679 | 22422 | _IGNORE_(_20); |
21680 | 22423 | } |
21681 | 22424 | { |
@@ -21687,7 +22430,7 @@ | ||
21687 | 22430 | { |
21688 | 22431 | uint64_t _22; memset(&_22, 0, sizeof(uint64_t)); |
21689 | 22432 | _22 = 1; |
21690 | - Indent$(0 /* _21 */, &*out, &_22); | |
22433 | + Indent(0 /* _21 */, &*out, &_22); | |
21691 | 22434 | _IGNORE_(_22); |
21692 | 22435 | } |
21693 | 22436 | { |
@@ -21731,7 +22474,7 @@ | ||
21731 | 22474 | struct typepureid _elem; memset(&_elem, 0, sizeof(struct typepureid)); |
21732 | 22475 | { |
21733 | 22476 | const struct stack/*typepureid*/ *_3 = &(*sd).elems; |
21734 | - at_get$(&_elem, &*_3, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4662); | |
22477 | + at_get$(&_elem, &*_3, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4848); | |
21735 | 22478 | } |
21736 | 22479 | { |
21737 | 22480 | struct string _4; memset(&_4, 0, sizeof(struct string)); |
@@ -21803,7 +22546,7 @@ | ||
21803 | 22546 | { |
21804 | 22547 | uint64_t _13; memset(&_13, 0, sizeof(uint64_t)); |
21805 | 22548 | _13 = 1; |
21806 | - Indent$(0 /* _12 */, &*out, &_13); | |
22549 | + Indent(0 /* _12 */, &*out, &_13); | |
21807 | 22550 | _IGNORE_(_13); |
21808 | 22551 | } |
21809 | 22552 | { |
@@ -21830,7 +22573,7 @@ | ||
21830 | 22573 | { |
21831 | 22574 | uint64_t _18; memset(&_18, 0, sizeof(uint64_t)); |
21832 | 22575 | _18 = 1; |
21833 | - Indent$(0 /* _17 */, &*out, &_18); | |
22576 | + Indent(0 /* _17 */, &*out, &_18); | |
21834 | 22577 | _IGNORE_(_18); |
21835 | 22578 | } |
21836 | 22579 | { |
@@ -21864,7 +22607,7 @@ | ||
21864 | 22607 | { |
21865 | 22608 | uint64_t _24; memset(&_24, 0, sizeof(uint64_t)); |
21866 | 22609 | _24 = 1; |
21867 | - Indent$(0 /* _23 */, &*out, &_24); | |
22610 | + Indent(0 /* _23 */, &*out, &_24); | |
21868 | 22611 | _IGNORE_(_24); |
21869 | 22612 | } |
21870 | 22613 | { |
@@ -21898,7 +22641,7 @@ | ||
21898 | 22641 | { |
21899 | 22642 | uint64_t _30; memset(&_30, 0, sizeof(uint64_t)); |
21900 | 22643 | _30 = 1; |
21901 | - Indent$(0 /* _29 */, &*out, &_30); | |
22644 | + Indent(0 /* _29 */, &*out, &_30); | |
21902 | 22645 | _IGNORE_(_30); |
21903 | 22646 | } |
21904 | 22647 | { |
@@ -22060,11 +22803,11 @@ | ||
22060 | 22803 | { |
22061 | 22804 | struct qtype _qt0; memset(&_qt0, 0, sizeof(struct qtype)); |
22062 | 22805 | { |
22063 | - at_get$(&_qt0, &*decl, &*idx, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 4703); | |
22806 | + at_get$(&_qt0, &*decl, &*idx, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 4889); | |
22064 | 22807 | } |
22065 | 22808 | struct qtype _qt1; memset(&_qt1, 0, sizeof(struct qtype)); |
22066 | 22809 | { |
22067 | - at_get$(&_qt1, &*def, &*idx, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 4704); | |
22810 | + at_get$(&_qt1, &*def, &*idx, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 4890); | |
22068 | 22811 | } |
22069 | 22812 | bool _4; |
22070 | 22813 | { |
@@ -22192,10 +22935,10 @@ | ||
22192 | 22935 | { |
22193 | 22936 | struct typeid _elem; memset(&_elem, 0, sizeof(struct typeid)); |
22194 | 22937 | { |
22195 | - at_get$(&_elem, &*elems, &*idx, sizeof(struct typeid), (void (*)(void *))typeid$dest, (void (*)(void *, const void *))typeid$copy, 4733); | |
22938 | + at_get$(&_elem, &*elems, &*idx, sizeof(struct typeid), (void (*)(void *))typeid$dest, (void (*)(void *, const void *))typeid$copy, 4919); | |
22196 | 22939 | } |
22197 | 22940 | { |
22198 | - Indent$(0 /* _3 */, &*out, &*level); | |
22941 | + Indent(0 /* _3 */, &*out, &*level); | |
22199 | 22942 | } |
22200 | 22943 | bool _5; |
22201 | 22944 | { |
@@ -22270,10 +23013,10 @@ | ||
22270 | 23013 | { |
22271 | 23014 | struct typepureid _elem; memset(&_elem, 0, sizeof(struct typepureid)); |
22272 | 23015 | { |
22273 | - at_get$(&_elem, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4755); | |
23016 | + at_get$(&_elem, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4941); | |
22274 | 23017 | } |
22275 | 23018 | { |
22276 | - Indent$(0 /* _3 */, &*out, &*level); | |
23019 | + Indent(0 /* _3 */, &*out, &*level); | |
22277 | 23020 | } |
22278 | 23021 | bool _5; |
22279 | 23022 | { |
@@ -22428,7 +23171,7 @@ | ||
22428 | 23171 | } |
22429 | 23172 | { |
22430 | 23173 | struct stack/*structdef*/ *_3 = &(*state).structs; |
22431 | - push(0 /* _2 */, &*_3, &_strdef, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 4792); | |
23174 | + push(0 /* _2 */, &*_3, &_strdef, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 4978); | |
22432 | 23175 | } |
22433 | 23176 | { |
22434 | 23177 | struct stack/*structdef*/ *_4 = &(*state).structs; |
@@ -22771,7 +23514,7 @@ | ||
22771 | 23514 | { |
22772 | 23515 | struct typeid _cur; memset(&_cur, 0, sizeof(struct typeid)); |
22773 | 23516 | { |
22774 | - at_get$(&_cur, &*elems, &*idx, sizeof(struct typeid), (void (*)(void *))typeid$dest, (void (*)(void *, const void *))typeid$copy, 4855); | |
23517 | + at_get$(&_cur, &*elems, &*idx, sizeof(struct typeid), (void (*)(void *))typeid$dest, (void (*)(void *, const void *))typeid$copy, 5041); | |
22775 | 23518 | } |
22776 | 23519 | { |
22777 | 23520 | struct string _4; memset(&_4, 0, sizeof(struct string)); |
@@ -22834,7 +23577,7 @@ | ||
22834 | 23577 | // mark internal structs used |
22835 | 23578 | { |
22836 | 23579 | struct stack/*structdef*/ *_2 = &(*state).structs; |
22837 | - push(0 /* _1 */, &*_2, &_strdef, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 4867); | |
23580 | + push(0 /* _1 */, &*_2, &_strdef, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 5053); | |
22838 | 23581 | } |
22839 | 23582 | { |
22840 | 23583 | struct stack/*structdef*/ *_3 = &(*state).structs; |
@@ -22911,7 +23654,7 @@ | ||
22911 | 23654 | { |
22912 | 23655 | struct typepureid _elem; memset(&_elem, 0, sizeof(struct typepureid)); |
22913 | 23656 | { |
22914 | - at_get$(&_elem, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4879); | |
23657 | + at_get$(&_elem, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 5065); | |
22915 | 23658 | } |
22916 | 23659 | bool _2; memset(&_2, 0, sizeof(bool)); |
22917 | 23660 | bool _3; |
@@ -22954,7 +23697,7 @@ | ||
22954 | 23697 | { |
22955 | 23698 | uint64_t _2; memset(&_2, 0, sizeof(uint64_t)); |
22956 | 23699 | _2 = 0; |
22957 | - Indent$(0 /* _1 */, &*out, &_2); | |
23700 | + Indent(0 /* _1 */, &*out, &_2); | |
22958 | 23701 | _IGNORE_(_2); |
22959 | 23702 | } |
22960 | 23703 | { |
@@ -22975,7 +23718,7 @@ | ||
22975 | 23718 | { |
22976 | 23719 | uint64_t _6; memset(&_6, 0, sizeof(uint64_t)); |
22977 | 23720 | _6 = 0; |
22978 | - Indent$(0 /* _5 */, &*out, &_6); | |
23721 | + Indent(0 /* _5 */, &*out, &_6); | |
22979 | 23722 | _IGNORE_(_6); |
22980 | 23723 | } |
22981 | 23724 | { |
@@ -22987,7 +23730,7 @@ | ||
22987 | 23730 | { |
22988 | 23731 | uint64_t _8; memset(&_8, 0, sizeof(uint64_t)); |
22989 | 23732 | _8 = 1; |
22990 | - Indent$(0 /* _7 */, &*out, &_8); | |
23733 | + Indent(0 /* _7 */, &*out, &_8); | |
22991 | 23734 | _IGNORE_(_8); |
22992 | 23735 | } |
22993 | 23736 | { |
@@ -23024,7 +23767,7 @@ | ||
23024 | 23767 | { |
23025 | 23768 | uint64_t _13; memset(&_13, 0, sizeof(uint64_t)); |
23026 | 23769 | _13 = 1; |
23027 | - Indent$(0 /* _12 */, &*out, &_13); | |
23770 | + Indent(0 /* _12 */, &*out, &_13); | |
23028 | 23771 | _IGNORE_(_13); |
23029 | 23772 | } |
23030 | 23773 | { |
@@ -23036,7 +23779,7 @@ | ||
23036 | 23779 | { |
23037 | 23780 | uint64_t _15; memset(&_15, 0, sizeof(uint64_t)); |
23038 | 23781 | _15 = 1; |
23039 | - Indent$(0 /* _14 */, &*out, &_15); | |
23782 | + Indent(0 /* _14 */, &*out, &_15); | |
23040 | 23783 | _IGNORE_(_15); |
23041 | 23784 | } |
23042 | 23785 | { |
@@ -23057,7 +23800,7 @@ | ||
23057 | 23800 | { |
23058 | 23801 | uint64_t _18; memset(&_18, 0, sizeof(uint64_t)); |
23059 | 23802 | _18 = 1; |
23060 | - Indent$(0 /* _17 */, &*out, &_18); | |
23803 | + Indent(0 /* _17 */, &*out, &_18); | |
23061 | 23804 | _IGNORE_(_18); |
23062 | 23805 | } |
23063 | 23806 | { |
@@ -23070,7 +23813,7 @@ | ||
23070 | 23813 | { |
23071 | 23814 | uint64_t _13; memset(&_13, 0, sizeof(uint64_t)); |
23072 | 23815 | _13 = 0; |
23073 | - Indent$(0 /* _12 */, &*out, &_13); | |
23816 | + Indent(0 /* _12 */, &*out, &_13); | |
23074 | 23817 | _IGNORE_(_13); |
23075 | 23818 | } |
23076 | 23819 | { |
@@ -23082,7 +23825,7 @@ | ||
23082 | 23825 | { |
23083 | 23826 | uint64_t _15; memset(&_15, 0, sizeof(uint64_t)); |
23084 | 23827 | _15 = 0; |
23085 | - Indent$(0 /* _14 */, &*out, &_15); | |
23828 | + Indent(0 /* _14 */, &*out, &_15); | |
23086 | 23829 | _IGNORE_(_15); |
23087 | 23830 | } |
23088 | 23831 | { |
@@ -23121,7 +23864,7 @@ | ||
23121 | 23864 | } |
23122 | 23865 | { |
23123 | 23866 | struct stack/*structdef*/ *_3 = &(*state).structs; |
23124 | - push(0 /* _2 */, &*_3, &_strdef, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 4912); | |
23867 | + push(0 /* _2 */, &*_3, &_strdef, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 5098); | |
23125 | 23868 | } |
23126 | 23869 | { |
23127 | 23870 | struct stack/*structdef*/ *_4 = &(*state).structs; |
@@ -23192,12 +23935,12 @@ | ||
23192 | 23935 | { |
23193 | 23936 | struct typepureid _cur; memset(&_cur, 0, sizeof(struct typepureid)); |
23194 | 23937 | { |
23195 | - at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4926); | |
23938 | + at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 5112); | |
23196 | 23939 | } |
23197 | 23940 | { |
23198 | 23941 | uint64_t _4; memset(&_4, 0, sizeof(uint64_t)); |
23199 | 23942 | _4 = 1; |
23200 | - Indent$(0 /* _3 */, &*out, &_4); | |
23943 | + Indent(0 /* _3 */, &*out, &_4); | |
23201 | 23944 | _IGNORE_(_4); |
23202 | 23945 | } |
23203 | 23946 | struct type_pure _4; memset(&_4, 0, sizeof(struct type_pure)); |
@@ -23372,7 +24115,7 @@ | ||
23372 | 24115 | { |
23373 | 24116 | struct typepureid _cur; memset(&_cur, 0, sizeof(struct typepureid)); |
23374 | 24117 | { |
23375 | - at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4951); | |
24118 | + at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 5137); | |
23376 | 24119 | } |
23377 | 24120 | { |
23378 | 24121 | struct qtype _4; memset(&_4, 0, sizeof(struct qtype)); |
@@ -23440,7 +24183,7 @@ | ||
23440 | 24183 | { |
23441 | 24184 | struct constr _c; memset(&_c, 0, sizeof(struct constr)); |
23442 | 24185 | { |
23443 | - at_get$(&_c, &*constrs, &*idx, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 4965); | |
24186 | + at_get$(&_c, &*constrs, &*idx, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 5151); | |
23444 | 24187 | } |
23445 | 24188 | bool _4; |
23446 | 24189 | { |
@@ -23523,11 +24266,11 @@ | ||
23523 | 24266 | struct typepureid _elem; memset(&_elem, 0, sizeof(struct typepureid)); |
23524 | 24267 | { |
23525 | 24268 | const struct stack/*typepureid*/ *_4 = &(_sd).elems; |
23526 | - at_get$(&_elem, &*_4, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 4982); | |
24269 | + at_get$(&_elem, &*_4, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 5168); | |
23527 | 24270 | } |
23528 | 24271 | struct constr _constr; memset(&_constr, 0, sizeof(struct constr)); |
23529 | 24272 | { |
23530 | - at_get$(&_constr, &*constrs, &*idx, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 4984); | |
24273 | + at_get$(&_constr, &*constrs, &*idx, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 5170); | |
23531 | 24274 | } |
23532 | 24275 | struct stack/*qtype*/ _parts; memset(&_parts, 0, sizeof(struct stack/*qtype*/)); |
23533 | 24276 | { |
@@ -23579,7 +24322,7 @@ | ||
23579 | 24322 | { |
23580 | 24323 | uint64_t _13; memset(&_13, 0, sizeof(uint64_t)); |
23581 | 24324 | _13 = 1; |
23582 | - Indent$(0 /* _12 */, &*out, &_13); | |
24325 | + Indent(0 /* _12 */, &*out, &_13); | |
23583 | 24326 | _IGNORE_(_13); |
23584 | 24327 | } |
23585 | 24328 | { |
@@ -23606,7 +24349,7 @@ | ||
23606 | 24349 | { |
23607 | 24350 | uint64_t _18; memset(&_18, 0, sizeof(uint64_t)); |
23608 | 24351 | _18 = 1; |
23609 | - Indent$(0 /* _17 */, &*out, &_18); | |
24352 | + Indent(0 /* _17 */, &*out, &_18); | |
23610 | 24353 | _IGNORE_(_18); |
23611 | 24354 | } |
23612 | 24355 | { |
@@ -23643,7 +24386,7 @@ | ||
23643 | 24386 | { |
23644 | 24387 | uint64_t _24; memset(&_24, 0, sizeof(uint64_t)); |
23645 | 24388 | _24 = 1; |
23646 | - Indent$(0 /* _23 */, &*out, &_24); | |
24389 | + Indent(0 /* _23 */, &*out, &_24); | |
23647 | 24390 | _IGNORE_(_24); |
23648 | 24391 | } |
23649 | 24392 | { |
@@ -23665,7 +24408,7 @@ | ||
23665 | 24408 | { |
23666 | 24409 | uint64_t _28; memset(&_28, 0, sizeof(uint64_t)); |
23667 | 24410 | _28 = 1; |
23668 | - Indent$(0 /* _27 */, &*out, &_28); | |
24411 | + Indent(0 /* _27 */, &*out, &_28); | |
23669 | 24412 | _IGNORE_(_28); |
23670 | 24413 | } |
23671 | 24414 | { |
@@ -23687,7 +24430,7 @@ | ||
23687 | 24430 | { |
23688 | 24431 | uint64_t _32; memset(&_32, 0, sizeof(uint64_t)); |
23689 | 24432 | _32 = 1; |
23690 | - Indent$(0 /* _31 */, &*out, &_32); | |
24433 | + Indent(0 /* _31 */, &*out, &_32); | |
23691 | 24434 | _IGNORE_(_32); |
23692 | 24435 | } |
23693 | 24436 | { |
@@ -23726,7 +24469,7 @@ | ||
23726 | 24469 | { |
23727 | 24470 | uint64_t _39; memset(&_39, 0, sizeof(uint64_t)); |
23728 | 24471 | _39 = 1; |
23729 | - Indent$(0 /* _38 */, &*out, &_39); | |
24472 | + Indent(0 /* _38 */, &*out, &_39); | |
23730 | 24473 | _IGNORE_(_39); |
23731 | 24474 | } |
23732 | 24475 | { |
@@ -23748,7 +24491,7 @@ | ||
23748 | 24491 | { |
23749 | 24492 | uint64_t _43; memset(&_43, 0, sizeof(uint64_t)); |
23750 | 24493 | _43 = 1; |
23751 | - Indent$(0 /* _42 */, &*out, &_43); | |
24494 | + Indent(0 /* _42 */, &*out, &_43); | |
23752 | 24495 | _IGNORE_(_43); |
23753 | 24496 | } |
23754 | 24497 | { |
@@ -23760,7 +24503,7 @@ | ||
23760 | 24503 | { |
23761 | 24504 | uint64_t _45; memset(&_45, 0, sizeof(uint64_t)); |
23762 | 24505 | _45 = 2; |
23763 | - Indent$(0 /* _44 */, &*out, &_45); | |
24506 | + Indent(0 /* _44 */, &*out, &_45); | |
23764 | 24507 | _IGNORE_(_45); |
23765 | 24508 | } |
23766 | 24509 | { |
@@ -23782,7 +24525,7 @@ | ||
23782 | 24525 | { |
23783 | 24526 | uint64_t _49; memset(&_49, 0, sizeof(uint64_t)); |
23784 | 24527 | _49 = 2; |
23785 | - Indent$(0 /* _48 */, &*out, &_49); | |
24528 | + Indent(0 /* _48 */, &*out, &_49); | |
23786 | 24529 | _IGNORE_(_49); |
23787 | 24530 | } |
23788 | 24531 | { |
@@ -23794,7 +24537,7 @@ | ||
23794 | 24537 | { |
23795 | 24538 | uint64_t _51; memset(&_51, 0, sizeof(uint64_t)); |
23796 | 24539 | _51 = 1; |
23797 | - Indent$(0 /* _50 */, &*out, &_51); | |
24540 | + Indent(0 /* _50 */, &*out, &_51); | |
23798 | 24541 | _IGNORE_(_51); |
23799 | 24542 | } |
23800 | 24543 | { |
@@ -23806,7 +24549,7 @@ | ||
23806 | 24549 | { |
23807 | 24550 | uint64_t _53; memset(&_53, 0, sizeof(uint64_t)); |
23808 | 24551 | _53 = 1; |
23809 | - Indent$(0 /* _52 */, &*out, &_53); | |
24552 | + Indent(0 /* _52 */, &*out, &_53); | |
23810 | 24553 | _IGNORE_(_53); |
23811 | 24554 | } |
23812 | 24555 | { |
@@ -23958,7 +24701,7 @@ | ||
23958 | 24701 | } |
23959 | 24702 | { |
23960 | 24703 | struct stack/*structdef*/ *_5 = &(*state).structs; |
23961 | - push(0 /* _4 */, &*_5, &_strdef, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 5028); | |
24704 | + push(0 /* _4 */, &*_5, &_strdef, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 5214); | |
23962 | 24705 | } |
23963 | 24706 | { |
23964 | 24707 | struct stack/*structdef*/ *_6 = &(*state).structs; |
@@ -24162,7 +24905,7 @@ | ||
24162 | 24905 | _IGNORE_(_4); |
24163 | 24906 | } |
24164 | 24907 | { |
24165 | - push(0 /* _4 */, &*elems, &_ti, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 5071); | |
24908 | + push(0 /* _4 */, &*elems, &_ti, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 5257); | |
24166 | 24909 | } |
24167 | 24910 | { |
24168 | 24911 | uint64_t _6; memset(&_6, 0, sizeof(uint64_t)); |
@@ -24372,7 +25115,7 @@ | ||
24372 | 25115 | } |
24373 | 25116 | } |
24374 | 25117 | { |
24375 | - push(0 /* _9 */, &*constrs, &_c, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 5121); | |
25118 | + push(0 /* _9 */, &*constrs, &_c, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 5307); | |
24376 | 25119 | } |
24377 | 25120 | bool _11; |
24378 | 25121 | { |
@@ -24401,7 +25144,7 @@ | ||
24401 | 25144 | { |
24402 | 25145 | struct stack/*constr*/ _1; memset(&_1, 0, sizeof(struct stack/*constr*/)); |
24403 | 25146 | { |
24404 | - pop_opt(&_1, &*constrs, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 5131); | |
25147 | + pop_opt(&_1, &*constrs, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 5317); | |
24405 | 25148 | } |
24406 | 25149 | if(!(_1).size) |
24407 | 25150 | { |
@@ -25217,7 +25960,7 @@ | ||
25217 | 25960 | struct def _cur; memset(&_cur, 0, sizeof(struct def)); |
25218 | 25961 | { |
25219 | 25962 | struct stack/*def*/ *_19 = &(*state).defs; |
25220 | - at_get$(&_cur, &*_19, &*fnidx, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 5319); | |
25963 | + at_get$(&_cur, &*_19, &*fnidx, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 5505); | |
25221 | 25964 | } |
25222 | 25965 | bool _20; |
25223 | 25966 | { |
@@ -25397,7 +26140,7 @@ | ||
25397 | 26140 | struct def _cur; memset(&_cur, 0, sizeof(struct def)); |
25398 | 26141 | { |
25399 | 26142 | struct stack/*def*/ *_20 = &(*state).defs; |
25400 | - at_get$(&_cur, &*_20, &*fnidx, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 5352); | |
26143 | + at_get$(&_cur, &*_20, &*fnidx, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 5538); | |
25401 | 26144 | } |
25402 | 26145 | { |
25403 | 26146 | const struct StreamOut *_21 = &(*streams).err; |
@@ -25549,7 +26292,7 @@ | ||
25549 | 26292 | { |
25550 | 26293 | { |
25551 | 26294 | const struct StreamOut *_27 = &(*streams).out; |
25552 | - Indent$(0 /* _26 */, &*_27, &_level); | |
26295 | + Indent(0 /* _26 */, &*_27, &_level); | |
25553 | 26296 | } |
25554 | 26297 | { |
25555 | 26298 | const struct StreamOut *_28 = &(*streams).out; |
@@ -25560,7 +26303,7 @@ | ||
25560 | 26303 | } |
25561 | 26304 | { |
25562 | 26305 | const struct StreamOut *_29 = &(*streams).out; |
25563 | - Indent$(0 /* _28 */, &*_29, &_level); | |
26306 | + Indent(0 /* _28 */, &*_29, &_level); | |
25564 | 26307 | } |
25565 | 26308 | { |
25566 | 26309 | const struct StreamOut *_30 = &(*streams).out; |
@@ -25571,7 +26314,7 @@ | ||
25571 | 26314 | } |
25572 | 26315 | { |
25573 | 26316 | const struct StreamOut *_31 = &(*streams).out; |
25574 | - Indent$(0 /* _30 */, &*_31, &_level); | |
26317 | + Indent(0 /* _30 */, &*_31, &_level); | |
25575 | 26318 | } |
25576 | 26319 | { |
25577 | 26320 | const struct StreamOut *_32 = &(*streams).out; |
@@ -25582,7 +26325,7 @@ | ||
25582 | 26325 | } |
25583 | 26326 | { |
25584 | 26327 | const struct StreamOut *_33 = &(*streams).out; |
25585 | - Indent$(0 /* _32 */, &*_33, &_level); | |
26328 | + Indent(0 /* _32 */, &*_33, &_level); | |
25586 | 26329 | } |
25587 | 26330 | { |
25588 | 26331 | const struct StreamOut *_34 = &(*streams).out; |
@@ -25593,7 +26336,7 @@ | ||
25593 | 26336 | } |
25594 | 26337 | { |
25595 | 26338 | const struct StreamOut *_35 = &(*streams).out; |
25596 | - Indent$(0 /* _34 */, &*_35, &_level); | |
26339 | + Indent(0 /* _34 */, &*_35, &_level); | |
25597 | 26340 | } |
25598 | 26341 | { |
25599 | 26342 | const struct StreamOut *_36 = &(*streams).out; |
@@ -25628,12 +26371,12 @@ | ||
25628 | 26371 | varinit(&_37, &_38); |
25629 | 26372 | qtypepureid$dest(&_38); |
25630 | 26373 | } |
25631 | - push(0 /* _36 */, &_scope, &_37, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 5385); | |
26374 | + push(0 /* _36 */, &_scope, &_37, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 5571); | |
25632 | 26375 | var$dest(&_37); |
25633 | 26376 | } |
25634 | 26377 | { |
25635 | 26378 | const struct StreamOut *_38 = &(*streams).out; |
25636 | - Indent$(0 /* _37 */, &*_38, &_level); | |
26379 | + Indent(0 /* _37 */, &*_38, &_level); | |
25637 | 26380 | } |
25638 | 26381 | { |
25639 | 26382 | const struct StreamOut *_39 = &(*streams).out; |
@@ -25693,7 +26436,15 @@ | ||
25693 | 26436 | } |
25694 | 26437 | { |
25695 | 26438 | const struct string *_30 = &(_ti).id; |
25696 | - ParseExpr2$(0 /* _29 */, &*streams, &*txtpos, &*state, &_level, &_scope, &_tmpnr, &_store, &_partial, &_action, &*_30); | |
26439 | + struct stack/*ReducedId*/ _31; memset(&_31, 0, sizeof(struct stack/*ReducedId*/)); | |
26440 | + { | |
26441 | + stack(&_31, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest, (void (*)(void *, const void *))ReducedId$copy, 5580); | |
26442 | + } | |
26443 | + bool _32; memset(&_32, 0, sizeof(bool)); | |
26444 | + _32 = 0; | |
26445 | + /*verified*/ ParseExpr2$(0 /* _29 */, &*streams, &*txtpos, &*state, &_level, &_scope, &_tmpnr, &_store, &_partial, &_action, &*_30, &_31, &_32); | |
26446 | + _IGNORE_(_32); | |
26447 | + free$(&_31, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest); | |
25697 | 26448 | } |
25698 | 26449 | { |
25699 | 26450 | uint8_t _31; memset(&_31, 0, sizeof(uint8_t)); |
@@ -25734,11 +26485,19 @@ | ||
25734 | 26485 | qtypepureid(&_30, &_31, &*_32); |
25735 | 26486 | qtypepure$dest(&_31); |
25736 | 26487 | } |
25737 | - solid(&_29, &_30, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 5400); | |
26488 | + solid(&_29, &_30, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 5586); | |
25738 | 26489 | qtypepureid$dest(&_30); |
25739 | 26490 | } |
25740 | 26491 | const struct string *_30 = &(_ti).id; |
25741 | - ParseBlock$(0 /* _28 */, &*streams, &*txtpos, &*state, &_level, &_scope, &_tmpnr, &_29, &_partial, &_action, &*_30); | |
26492 | + struct stack/*ReducedId*/ _31; memset(&_31, 0, sizeof(struct stack/*ReducedId*/)); | |
26493 | + { | |
26494 | + stack(&_31, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest, (void (*)(void *, const void *))ReducedId$copy, 5586); | |
26495 | + } | |
26496 | + bool _32; memset(&_32, 0, sizeof(bool)); | |
26497 | + _32 = 0; | |
26498 | + /*verified*/ ParseBlock$(0 /* _28 */, &*streams, &*txtpos, &*state, &_level, &_scope, &_tmpnr, &_29, &_partial, &_action, &*_30, &_31, &_32); | |
26499 | + _IGNORE_(_32); | |
26500 | + free$(&_31, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest); | |
25742 | 26501 | free$(&_29, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest); |
25743 | 26502 | } |
25744 | 26503 | var$dest(&_zero); |
@@ -25755,7 +26514,7 @@ | ||
25755 | 26514 | { |
25756 | 26515 | { |
25757 | 26516 | const struct StreamOut *_31 = &(*streams).out; |
25758 | - Indent$(0 /* _30 */, &*_31, &_level); | |
26517 | + Indent(0 /* _30 */, &*_31, &_level); | |
25759 | 26518 | } |
25760 | 26519 | { |
25761 | 26520 | const struct StreamOut *_32 = &(*streams).out; |
@@ -25766,7 +26525,7 @@ | ||
25766 | 26525 | } |
25767 | 26526 | { |
25768 | 26527 | const struct StreamOut *_33 = &(*streams).out; |
25769 | - Indent$(0 /* _32 */, &*_33, &_level); | |
26528 | + Indent(0 /* _32 */, &*_33, &_level); | |
25770 | 26529 | } |
25771 | 26530 | { |
25772 | 26531 | const struct StreamOut *_34 = &(*streams).out; |
@@ -25902,7 +26661,7 @@ | ||
25902 | 26661 | { |
25903 | 26662 | struct stack/*def*/ _1; memset(&_1, 0, sizeof(struct stack/*def*/)); |
25904 | 26663 | { |
25905 | - pop_opt(&_1, &*defs, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 5437); | |
26664 | + pop_opt(&_1, &*defs, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 5623); | |
25906 | 26665 | } |
25907 | 26666 | if(!(_1).size) |
25908 | 26667 | { |
@@ -25949,7 +26708,7 @@ | ||
25949 | 26708 | { |
25950 | 26709 | struct stack/*structdef*/ _1; memset(&_1, 0, sizeof(struct stack/*structdef*/)); |
25951 | 26710 | { |
25952 | - pop_opt(&_1, &*structs, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 5453); | |
26711 | + pop_opt(&_1, &*structs, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 5639); | |
25953 | 26712 | } |
25954 | 26713 | if(!(_1).size) |
25955 | 26714 | { |
@@ -26010,11 +26769,11 @@ | ||
26010 | 26769 | { |
26011 | 26770 | struct stack/*def*/ _1; memset(&_1, 0, sizeof(struct stack/*def*/)); |
26012 | 26771 | { |
26013 | - stack(&_1, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 5475); | |
26772 | + stack(&_1, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 5661); | |
26014 | 26773 | } |
26015 | 26774 | struct stack/*structdef*/ _2; memset(&_2, 0, sizeof(struct stack/*structdef*/)); |
26016 | 26775 | { |
26017 | - stack(&_2, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 5475); | |
26776 | + stack(&_2, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 5661); | |
26018 | 26777 | } |
26019 | 26778 | state(&_state, &_1, &_2); |
26020 | 26779 | free$(&_2, sizeof(struct structdef), (void (*)(void *))structdef$dest); |
@@ -26459,7 +27218,7 @@ | ||
26459 | 27218 | string$dest(&_5); |
26460 | 27219 | type_pure$dest(&_4); |
26461 | 27220 | } |
26462 | - push(0 /* _2 */, &_elems, &_3, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 5890); | |
27221 | + push(0 /* _2 */, &_elems, &_3, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 6076); | |
26463 | 27222 | typepureid$dest(&_3); |
26464 | 27223 | } |
26465 | 27224 | { |
@@ -26499,13 +27258,13 @@ | ||
26499 | 27258 | } |
26500 | 27259 | struct stack/*typepureid*/ _6; memset(&_6, 0, sizeof(struct stack/*typepureid*/)); |
26501 | 27260 | { |
26502 | - stack(&_6, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 5897); | |
27261 | + stack(&_6, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 6083); | |
26503 | 27262 | } |
26504 | 27263 | constr(&_4, &_5, &_6); |
26505 | 27264 | free$(&_6, sizeof(struct typepureid), (void (*)(void *))typepureid$dest); |
26506 | 27265 | typepureid$dest(&_5); |
26507 | 27266 | } |
26508 | - push(0 /* _3 */, &_constrs, &_4, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 5897); | |
27267 | + push(0 /* _3 */, &_constrs, &_4, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 6083); | |
26509 | 27268 | constr$dest(&_4); |
26510 | 27269 | } |
26511 | 27270 | { |
@@ -26528,13 +27287,13 @@ | ||
26528 | 27287 | } |
26529 | 27288 | struct stack/*typepureid*/ _7; memset(&_7, 0, sizeof(struct stack/*typepureid*/)); |
26530 | 27289 | { |
26531 | - stack(&_7, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 5898); | |
27290 | + stack(&_7, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 6084); | |
26532 | 27291 | } |
26533 | 27292 | constr(&_5, &_6, &_7); |
26534 | 27293 | free$(&_7, sizeof(struct typepureid), (void (*)(void *))typepureid$dest); |
26535 | 27294 | typepureid$dest(&_6); |
26536 | 27295 | } |
26537 | - push(0 /* _4 */, &_constrs, &_5, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 5898); | |
27296 | + push(0 /* _4 */, &_constrs, &_5, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 6084); | |
26538 | 27297 | constr$dest(&_5); |
26539 | 27298 | } |
26540 | 27299 | { |
@@ -26557,13 +27316,13 @@ | ||
26557 | 27316 | } |
26558 | 27317 | struct stack/*typepureid*/ _8; memset(&_8, 0, sizeof(struct stack/*typepureid*/)); |
26559 | 27318 | { |
26560 | - stack(&_8, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 5899); | |
27319 | + stack(&_8, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 6085); | |
26561 | 27320 | } |
26562 | 27321 | constr(&_6, &_7, &_8); |
26563 | 27322 | free$(&_8, sizeof(struct typepureid), (void (*)(void *))typepureid$dest); |
26564 | 27323 | typepureid$dest(&_7); |
26565 | 27324 | } |
26566 | - push(0 /* _5 */, &_constrs, &_6, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 5899); | |
27325 | + push(0 /* _5 */, &_constrs, &_6, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 6085); | |
26567 | 27326 | constr$dest(&_6); |
26568 | 27327 | } |
26569 | 27328 | { |
@@ -29858,7 +30617,7 @@ | ||
29858 | 30617 | string$dest(&_53); |
29859 | 30618 | type_pure$dest(&_52); |
29860 | 30619 | } |
29861 | - push(0 /* _50 */, &_elems, &_51, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 6526); | |
30620 | + push(0 /* _50 */, &_elems, &_51, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 6712); | |
29862 | 30621 | typepureid$dest(&_51); |
29863 | 30622 | } |
29864 | 30623 | { |
@@ -29877,7 +30636,7 @@ | ||
29877 | 30636 | string$dest(&_54); |
29878 | 30637 | type_pure$dest(&_53); |
29879 | 30638 | } |
29880 | - push(0 /* _51 */, &_elems, &_52, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 6527); | |
30639 | + push(0 /* _51 */, &_elems, &_52, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 6713); | |
29881 | 30640 | typepureid$dest(&_52); |
29882 | 30641 | } |
29883 | 30642 | { |
@@ -29896,7 +30655,7 @@ | ||
29896 | 30655 | string$dest(&_55); |
29897 | 30656 | type_pure$dest(&_54); |
29898 | 30657 | } |
29899 | - push(0 /* _52 */, &_elems, &_53, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 6528); | |
30658 | + push(0 /* _52 */, &_elems, &_53, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 6714); | |
29900 | 30659 | typepureid$dest(&_53); |
29901 | 30660 | } |
29902 | 30661 | { |
@@ -29926,7 +30685,7 @@ | ||
29926 | 30685 | typepureid$dest(&_57); |
29927 | 30686 | flavour$dest(&_56); |
29928 | 30687 | } |
29929 | - push(0 /* _53 */, &*_54, &_55, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 6529); | |
30688 | + push(0 /* _53 */, &*_54, &_55, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 6715); | |
29930 | 30689 | structdef$dest(&_55); |
29931 | 30690 | } |
29932 | 30691 | free$(&_elems, sizeof(struct typepureid), (void (*)(void *))typepureid$dest); |
@@ -151,12 +151,16 @@ | ||
151 | 151 | } |
152 | 152 | |
153 | 153 | // emit ws according to indent-level |
154 | -void Indent$(StreamOut out, u64 level) | |
154 | +void Indent(StreamOut out, u64 level) | |
155 | 155 | { |
156 | - if gtr<u64>(level, 0) then | |
156 | + reduce level | |
157 | + to: | |
157 | 158 | { |
158 | 159 | PutStr(out, " "); |
159 | - Indent$(out, sub<u64>(level, 1)); | |
160 | + Indent(out, level); | |
161 | + } | |
162 | + term: | |
163 | + { | |
160 | 164 | }; |
161 | 165 | } |
162 | 166 |
@@ -209,7 +213,7 @@ | ||
209 | 213 | c = GetAdvance(streams.in, txtpos); |
210 | 214 | if equ<u8>('/', c) then |
211 | 215 | { |
212 | - Indent$(streams.out, level); | |
216 | + Indent(streams.out, level); | |
213 | 217 | PutStr(streams.out, "//"); |
214 | 218 | Skip2Nl$(streams, txtpos, level); |
215 | 219 | }; |
@@ -216,7 +220,7 @@ | ||
216 | 220 | |
217 | 221 | if equ<u8>('*', c) then |
218 | 222 | { |
219 | - Indent$(streams.out, level); | |
223 | + Indent(streams.out, level); | |
220 | 224 | PutStr(streams.out, "/*"); |
221 | 225 | Skip2Ct$(streams, txtpos, level); |
222 | 226 | }; |
@@ -1425,7 +1429,7 @@ | ||
1425 | 1429 | } |
1426 | 1430 | case solid idx1 : |
1427 | 1431 | { |
1428 | - Indent$(err, 1); EPrTPI(err, at_get$<typepureid>(elems, idx1)); PutStrLn(err, ";"); | |
1432 | + Indent(err, 1); EPrTPI(err, at_get$<typepureid>(elems, idx1)); PutStrLn(err, ";"); | |
1429 | 1433 | EPrintTPIs$(err, elems, idx1); |
1430 | 1434 | }; |
1431 | 1435 | } |
@@ -1792,10 +1796,15 @@ | ||
1792 | 1796 | } |
1793 | 1797 | }; |
1794 | 1798 | |
1795 | -// search position of identifier in parameters - return 0 if not found | |
1796 | -opt<u64> FindPr$(linecol txtpos, stack<var> scope, string id) = | |
1797 | - switch<opt<u64>> findid$(scope, size<var>(scope), preapp(id, '_')) | |
1798 | - case empty: findid$(scope, size<var>(scope), preapp(id, '*')) | |
1799 | +opt<u64> FindPar$(linecol txtpos, stack<var> scope, string id) = | |
1800 | + findid$(scope, size<var>(scope), preapp(id, '*')); | |
1801 | + | |
1802 | +opt<u64> FindVar$(linecol txtpos, stack<var> scope, string id) = | |
1803 | + findid$(scope, size<var>(scope), preapp(id, '_')); | |
1804 | + | |
1805 | +opt<u64> FindParOrVar$(linecol txtpos, stack<var> scope, string id) = | |
1806 | + switch<opt<u64>> FindVar$(txtpos, scope, id) | |
1807 | + case empty: FindPar$(txtpos, scope, id) | |
1799 | 1808 | case solid pos: solid<u64>(pos); |
1800 | 1809 | |
1801 | 1810 | // assert all parameters in current function have been called |
@@ -2184,9 +2193,9 @@ | ||
2184 | 2193 | void EmitLet$(StreamOut out, linecol txtpos, u64 level, mut stack<structdef> structs, qtypepureid store) |
2185 | 2194 | { |
2186 | 2195 | // skip void-declaration but mention in code for debugging |
2187 | - if ispurevoid(store.qt.type) then { Indent$(out, level); PutStr(out, "// "); }; | |
2196 | + if ispurevoid(store.qt.type) then { Indent(out, level); PutStr(out, "// "); }; | |
2188 | 2197 | // Initialize value with zero-bytes so dynamic memory can safely be copied into it. |
2189 | - Indent$(out, level); PrTypePure(out, store.qt.type); PutStr(out, " "); PutStr(out, store.id); PutStr(out, "; memset(&"); PutStr(out, store.id); PutStr(out, ", 0, "); SizeOfPure$(out, structs, store.qt.type); PutStr(out, ");\n"); | |
2198 | + Indent(out, level); PrTypePure(out, store.qt.type); PutStr(out, " "); PutStr(out, store.id); PutStr(out, "; memset(&"); PutStr(out, store.id); PutStr(out, ", 0, "); SizeOfPure$(out, structs, store.qt.type); PutStr(out, ");\n"); | |
2190 | 2199 | } |
2191 | 2200 | |
2192 | 2201 | //void AssertResultType$(StreamOut err, linecol txtpos, string fn, type want, type have) |
@@ -2324,25 +2333,34 @@ | ||
2324 | 2333 | provide.qti.qt.type = ParseStructPath$(streams, txtpos, structs, level, provide.qti.qt.type, provide.qti.id, path); |
2325 | 2334 | // anonymous / hidden storage-REFERENCE: use temporary name |
2326 | 2335 | let mut qtypepureid ref = qtypepureid(provide.qti.qt, GenPar$(tmpnr)); |
2327 | - Indent$(streams.out, level); SkipComment$(streams, txtpos, level); EmitQTPI(streams.out, ref); PutStr(streams.out, " = "); // No ACTUAL copy - just REFERENCE copied! | |
2336 | + Indent(streams.out, level); SkipComment$(streams, txtpos, level); EmitQTPI(streams.out, ref); PutStr(streams.out, " = "); // No ACTUAL copy - just REFERENCE copied! | |
2328 | 2337 | PutStr(streams.out, "&("); PutStr(streams.out, provide.qti.id); PutStr(streams.out, ")"); PrintPath$(streams.out, path); PutStr(streams.out, ";\n"); |
2329 | 2338 | provide.qti.id = ref.id; |
2330 | 2339 | }; |
2331 | 2340 | } |
2332 | 2341 | |
2342 | +struct ReducedId | |
2343 | +{ | |
2344 | + //string orig; | |
2345 | + u64 par_idx; | |
2346 | + string reduced; | |
2347 | +} | |
2348 | + | |
2349 | +//data verification = verified | unverified; | |
2350 | + | |
2333 | 2351 | // forward-decl |
2334 | -void ParseExpr$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, opt<qtypepureid> store, string id, bool partial, bool action, string self); | |
2352 | +void ParseExpr$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, opt<qtypepureid> store, string id, bool partial, bool action, string self, mut stack<ReducedId> reduced_ids, bool verified); | |
2335 | 2353 | |
2336 | 2354 | // forward-decl |
2337 | -void ParseBlock$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, u64 tmpnr, opt<qtypepureid> store, bool partial, bool action, string self); | |
2355 | +void ParseBlock$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, u64 tmpnr, opt<qtypepureid> store, bool partial, bool action, string self, mut stack<ReducedId> reduced_ids, bool verified); | |
2338 | 2356 | |
2339 | 2357 | // forward-decl |
2340 | -void ParseBlockRaw$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, u64 tmpnr, opt<qtypepureid> store, bool partial, bool action, string self); | |
2358 | +void ParseBlockRaw$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, u64 tmpnr, opt<qtypepureid> store, bool partial, bool action, string self, mut stack<ReducedId> reduced_ids, bool verified); | |
2341 | 2359 | |
2342 | 2360 | // forward-decl |
2343 | -void ParseArg$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, qtypepureid store, qtypepureid par, bool partial, bool action, string self, u64 parnr, def def, mut u64 paridx, u64 base, string callee, opt<type_pure> st, type_pure retype); | |
2361 | +void ParseArg$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, qtypepureid store, qtypepureid par, bool partial, bool action, string self, mut stack<ReducedId> reduced_ids, bool verified, u64 parnr, def def, mut u64 paridx, u64 base, string callee, opt<type_pure> st, type_pure retype); | |
2344 | 2362 | |
2345 | -void ParseCC$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, def def, u64 paridx, qtypepureid store, u64 base, string callee, opt<type_pure> st_, type_pure retype) | |
2363 | +void ParseCC$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, def def, u64 paridx, qtypepureid store, bool partial, bool action, string self, stack<ReducedId> reduced_ids, bool verified, u64 base, string callee, opt<type_pure> st_, type_pure retype) | |
2346 | 2364 | { |
2347 | 2365 | if lss<u64>(paridx, size<qtype>(def.elems)) then |
2348 | 2366 | { |
@@ -2351,6 +2369,16 @@ | ||
2351 | 2369 | Fail$(streams.err, txtpos); |
2352 | 2370 | }; |
2353 | 2371 | |
2372 | + if and(and(not(partial), strequ(callee, self)), not(verified)) then | |
2373 | + { | |
2374 | + PutStr(streams.err, "total function "); | |
2375 | + PutStr(streams.err, callee); | |
2376 | + PutStr(streams.err, " calls itself recursivly (hint: reduce parameter or declare partial), "); | |
2377 | + PutStr(streams.err, "reduced parameters: "); | |
2378 | + Print<stack<ReducedId>>(streams.err, reduced_ids); | |
2379 | + Fail$(streams.err, txtpos); | |
2380 | + }; | |
2381 | + | |
2354 | 2382 | if isop1(callee) then |
2355 | 2383 | { |
2356 | 2384 | switch<opt<type_pure>> st_ |
@@ -2376,7 +2404,7 @@ | ||
2376 | 2404 | |
2377 | 2405 | if ispureprim(subtype) then |
2378 | 2406 | { |
2379 | - Indent$(streams.out, level); PutStr(streams.out, store.id); PutStr(streams.out, " = "); PutStr(streams.out, to_op1(callee)); PutStr(streams.out, " "); PutStr(streams.out, arg0.qti.id); PutStr(streams.out, ";\n"); | |
2407 | + Indent(streams.out, level); PutStr(streams.out, store.id); PutStr(streams.out, " = "); PutStr(streams.out, to_op1(callee)); PutStr(streams.out, " "); PutStr(streams.out, arg0.qti.id); PutStr(streams.out, ";\n"); | |
2380 | 2408 | } |
2381 | 2409 | else |
2382 | 2410 | { |
@@ -2416,7 +2444,7 @@ | ||
2416 | 2444 | |
2417 | 2445 | if ispureprim(subtype) then |
2418 | 2446 | { |
2419 | - Indent$(streams.out, level); PutStr(streams.out, store.id); PutStr(streams.out, " = "); PutStr(streams.out, arg0.qti.id); PutStr(streams.out, " "); PutStr(streams.out, to_op2(callee)); PutStr(streams.out, " "); PutStr(streams.out, arg1.qti.id); PutStr(streams.out, ";\n"); | |
2447 | + Indent(streams.out, level); PutStr(streams.out, store.id); PutStr(streams.out, " = "); PutStr(streams.out, arg0.qti.id); PutStr(streams.out, " "); PutStr(streams.out, to_op2(callee)); PutStr(streams.out, " "); PutStr(streams.out, arg1.qti.id); PutStr(streams.out, ";\n"); | |
2420 | 2448 | } |
2421 | 2449 | else |
2422 | 2450 | { |
@@ -2453,7 +2481,7 @@ | ||
2453 | 2481 | }; |
2454 | 2482 | |
2455 | 2483 | // use all results as arguments for function-call |
2456 | - Indent$(streams.out, level); PutStr(streams.out, callee); PutStr(streams.out, "("); DoCall$(streams.out, streams.err, txtpos, scope, base, store); | |
2484 | + Indent(streams.out, level); PutStr(streams.out, callee); PutStr(streams.out, "("); DoCall$(streams.out, streams.err, txtpos, scope, base, store); | |
2457 | 2485 | if |
2458 | 2486 | or |
2459 | 2487 | ( |
@@ -2651,7 +2679,7 @@ | ||
2651 | 2679 | //ParsePath$(txtpos, level, structs, tmpnr, test); |
2652 | 2680 | } |
2653 | 2681 | |
2654 | -void ParseLs$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, qtypepureid store, bool partial, bool action, string self, u64 parnr, def def, u64 paridx, u64 base, string callee, opt<type_pure> st_, type_pure retype) | |
2682 | +void ParseLs$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, qtypepureid store, bool partial, bool action, string self, mut stack<ReducedId> reduced_ids, bool verified, u64 parnr, def def, u64 paridx, u64 base, string callee, opt<type_pure> st_, type_pure retype) | |
2655 | 2683 | { |
2656 | 2684 | if MatchOptional$(streams, txtpos, level, ',') then |
2657 | 2685 | { |
@@ -2668,15 +2696,15 @@ | ||
2668 | 2696 | case empty : PurifySubQType$(streams.err, txtpos,at_get$<qtype>(def.elems, paridx)) |
2669 | 2697 | case solid solid : ApplySubQTypePure$(streams.err, txtpos, at_get$<qtype>(def.elems, paridx), solid); |
2670 | 2698 | |
2671 | - ParseArg$(streams, txtpos, state, level, scope, tmpnr, store, qtypepureid(partyp, GenId$(parnr, "PAR")/*parid*/), partial, action, self, parnr, def, add<u64>(paridx, 1), base, callee, st_, retype); | |
2699 | + ParseArg$(streams, txtpos, state, level, scope, tmpnr, store, qtypepureid(partyp, GenId$(parnr, "PAR")/*parid*/), partial, action, self, reduced_ids, verified, parnr, def, add<u64>(paridx, 1), base, callee, st_, retype); | |
2672 | 2700 | } |
2673 | 2701 | else |
2674 | 2702 | { |
2675 | - ParseCC$(streams, txtpos, state, level, scope, tmpnr, def, paridx, store, base, callee, st_, retype); | |
2703 | + ParseCC$(streams, txtpos, state, level, scope, tmpnr, def, paridx, store, partial, action, self, reduced_ids, verified, base, callee, st_, retype); | |
2676 | 2704 | }; |
2677 | 2705 | } |
2678 | 2706 | |
2679 | -void ParseLS$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, def def, u64 paridx, bool partial, bool action, string self, qtypepureid store, u64 base, string callee, opt<type_pure> st_, type_pure retype) | |
2707 | +void ParseLS$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, def def, u64 paridx, bool partial, bool action, string self, mut stack<ReducedId> reduced_ids, bool verified, qtypepureid store, u64 base, string callee, opt<type_pure> st_, type_pure retype) | |
2680 | 2708 | { |
2681 | 2709 | let u64 parnr = 1; |
2682 | 2710 | SkipComment$(streams, txtpos, level); |
@@ -2694,19 +2722,49 @@ | ||
2694 | 2722 | case empty : PurifySubQType$(streams.err, txtpos,at_get$<qtype>(def.elems, paridx)) |
2695 | 2723 | case solid solid : ApplySubQTypePure$(streams.err, txtpos, at_get$<qtype>(def.elems, paridx), solid); |
2696 | 2724 | |
2697 | - ParseArg$(streams, txtpos, state, level, scope, tmpnr, store, qtypepureid(partyp, GenId$(parnr, "PAR")/*parid*/), partial, action, self, parnr, def, add<u64>(paridx, 1), base, callee, st_, retype); | |
2725 | + ParseArg$(streams, txtpos, state, level, scope, tmpnr, store, qtypepureid(partyp, GenId$(parnr, "PAR")/*parid*/), partial, action, self, reduced_ids, verified, parnr, def, add<u64>(paridx, 1), base, callee, st_, retype); | |
2698 | 2726 | } |
2699 | 2727 | else |
2700 | 2728 | { |
2701 | - ParseCC$(streams, txtpos, state, level, scope, tmpnr, def, paridx, store, base, callee, st_, retype); | |
2729 | + ParseCC$(streams, txtpos, state, level, scope, tmpnr, def, paridx, store, partial, action, self, reduced_ids, verified, base, callee, st_, retype); | |
2702 | 2730 | }; |
2703 | 2731 | } |
2704 | 2732 | |
2733 | +bool verify_reduced$(stack<ReducedId> reduced_ids, u64 idx, ReducedId ri) = | |
2734 | + if lss<u64>(idx, size<ReducedId>(reduced_ids)) then | |
2735 | + if is_equ(cmp<ReducedId>(at_get$<ReducedId>(reduced_ids, idx), ri)) then | |
2736 | + 1 | |
2737 | + else | |
2738 | + verify_reduced$(reduced_ids, add<u64>(1, idx), ri) | |
2739 | + else | |
2740 | + 0; | |
2741 | + | |
2705 | 2742 | // Parse something that can be either returned or assigned to, e.g. x.a.b.c = y |
2706 | -void ParseArg$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, qtypepureid store, qtypepureid par, bool partial, bool action, string self, u64 parnr, def def, mut u64 paridx, u64 base, string callee, opt<type_pure> st_, type_pure retype) | |
2743 | +void ParseArg$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, qtypepureid store, qtypepureid par, bool partial, bool action, string self, mut stack<ReducedId> reduced_ids, bool verified_, u64 parnr, def def, mut u64 paridx, u64 base, string callee, opt<type_pure> st_, type_pure retype) | |
2707 | 2744 | { |
2708 | 2745 | let string id = ParseId$(streams, txtpos, level); |
2709 | 2746 | |
2747 | + let bool verified = | |
2748 | + if and(not(partial), strequ(callee, self)) then | |
2749 | + { | |
2750 | + let ReducedId ri = ReducedId(sub<u64>(paridx, 1), id); | |
2751 | + //PutStr(streams.err, "TEST "); | |
2752 | + //PutStr(streams.err, "param "); | |
2753 | + //Print<ReducedId>(streams.err, ri); | |
2754 | + //PutStr(streams.err, " reduced-list "); | |
2755 | + //Print<stack<ReducedId>>(streams.err, reduced_ids); | |
2756 | + //if verify_reduced$(reduced_ids, 0, ri) then | |
2757 | + //{ | |
2758 | + // PutStr(streams.err, " CHECK"); | |
2759 | + //}; | |
2760 | + //PutStrLn(streams.err, ""); | |
2761 | + result or(verified_, verify_reduced$(reduced_ids, 0, ri)) | |
2762 | + } | |
2763 | + else | |
2764 | + ( | |
2765 | + verified_ | |
2766 | + ); | |
2767 | + | |
2710 | 2768 | // let is only allowed in a statement |
2711 | 2769 | if strequ(id, "let") then |
2712 | 2770 | { |
@@ -2720,7 +2778,7 @@ | ||
2720 | 2778 | Fail$(streams.err, txtpos); |
2721 | 2779 | }; |
2722 | 2780 | |
2723 | - switch<opt<u64>> FindPr$(txtpos, scope, id) | |
2781 | + switch<opt<u64>> FindParOrVar$(txtpos, scope, id) | |
2724 | 2782 | case empty: |
2725 | 2783 | { |
2726 | 2784 | // anonymous / hidden storage: use temporary name |
@@ -2732,13 +2790,13 @@ | ||
2732 | 2790 | |
2733 | 2791 | // No type-check necessary since storage is generated having expected type, and intended to be assigned to! |
2734 | 2792 | |
2735 | - ParseExpr$(streams, txtpos, state, level, scope, tmpnr, solid<qtypepureid>(mut_pv), id, partial, action, self); | |
2793 | + ParseExpr$(streams, txtpos, state, level, scope, tmpnr, solid<qtypepureid>(mut_pv), id, partial, action, self, reduced_ids, verified); | |
2736 | 2794 | |
2737 | 2795 | push<var>(scope, varused(provide)); |
2738 | 2796 | |
2739 | - ParseLs$(streams, txtpos, state, level, scope, tmpnr, store, partial, action, self, add<u64>(parnr, 1), def, paridx, base, callee, st_, retype); | |
2797 | + ParseLs$(streams, txtpos, state, level, scope, tmpnr, store, partial, action, self, reduced_ids, verified, add<u64>(parnr, 1), def, paridx, base, callee, st_, retype); | |
2740 | 2798 | |
2741 | - Indent$(streams.out, level); FreeIn(streams.out, provide.qt.type); PutStr(streams.out, provide.id); FreeOut$(streams.out, streams.err, txtpos, state.structs, provide.qt.type); PutStr(streams.out, "\n"); | |
2799 | + Indent(streams.out, level); FreeIn(streams.out, provide.qt.type); PutStr(streams.out, provide.id); FreeOut$(streams.out, streams.err, txtpos, state.structs, provide.qt.type); PutStr(streams.out, "\n"); | |
2742 | 2800 | } |
2743 | 2801 | case solid pos: |
2744 | 2802 | { |
@@ -2763,7 +2821,7 @@ | ||
2763 | 2821 | // ...assert parameter provides the type which function wants |
2764 | 2822 | ChkPar$(streams.err, txtpos, par.qt, par.id, provide.qti); |
2765 | 2823 | |
2766 | - ParseLs$(streams, txtpos, state, level, scope, tmpnr, store, partial, action, self, add<u64>(parnr, 1), def, paridx, base, callee, st_, retype); | |
2824 | + ParseLs$(streams, txtpos, state, level, scope, tmpnr, store, partial, action, self, reduced_ids, verified, add<u64>(parnr, 1), def, paridx, base, callee, st_, retype); | |
2767 | 2825 | }; |
2768 | 2826 | } |
2769 | 2827 |
@@ -2781,7 +2839,7 @@ | ||
2781 | 2839 | else |
2782 | 2840 | name; |
2783 | 2841 | |
2784 | -void ParseCall$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, u64 tmpnr_, opt<qtypepureid> store, string callee, bool partial, bool action, string self) | |
2842 | +void ParseCall$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, u64 tmpnr_, opt<qtypepureid> store, string callee, bool partial, bool action, string self, mut stack<ReducedId> reduced_ids, bool verified) | |
2785 | 2843 | { |
2786 | 2844 | let u64 base = size<var>(scope); |
2787 | 2845 | // to prove encapsulation: |
@@ -2790,13 +2848,17 @@ | ||
2790 | 2848 | // if encapsulation should ever accidentally become broken. |
2791 | 2849 | let mut u64 tmpnr = tmpnr_; |
2792 | 2850 | |
2793 | - if and(not(partial), strequ(callee, self)) then | |
2794 | - { | |
2795 | - PutStr(streams.err, "total function "); | |
2796 | - PutStr(streams.err, callee); | |
2797 | - PutStr(streams.err, " calls itself recursivly (hint: declare partial)"); | |
2798 | - Fail$(streams.err, txtpos); | |
2799 | - }; | |
2851 | + // NOTE: reporting error deferred after all parameters have been parsed to check for reduced. | |
2852 | + //if and(not(partial), strequ(callee, self)) then | |
2853 | + //{ | |
2854 | + // if equ<u64>(size<ReducedId>(reduced_ids), 0) then | |
2855 | + // { | |
2856 | + // PutStr(streams.err, "total function "); | |
2857 | + // PutStr(streams.err, callee); | |
2858 | + // PutStr(streams.err, " calls itself recursivly (hint: reduce parameter or declare partial)"); | |
2859 | + // Fail$(streams.err, txtpos); | |
2860 | + // }; | |
2861 | + //}; | |
2800 | 2862 | |
2801 | 2863 | if and(not(action), idact$(callee)) then |
2802 | 2864 | { |
@@ -2859,12 +2921,12 @@ | ||
2859 | 2921 | let qtypepureid newstore = qtypepureid(mutqtp(retype), GenVar$(tmpnr)); |
2860 | 2922 | |
2861 | 2923 | EmitLet$(streams.out, txtpos, level, state.structs, newstore); |
2862 | - ParseLS$(streams, txtpos, state, level, scope, tmpnr, def, 0/*paridx*/, partial, action, self, newstore, base, SpecializeFunctionPure$(streams, txtpos, def.specialized, callee, st_), st_, retype); | |
2863 | - Indent$(streams.out, level); FreeIn(streams.out, newstore.qt.type); PutStr(streams.out, newstore.id); FreeOut$(streams.out, streams.err, txtpos, state.structs, newstore.qt.type); PutStr(streams.out, "\n"); | |
2924 | + ParseLS$(streams, txtpos, state, level, scope, tmpnr, def, 0/*paridx*/, partial, action, self, reduced_ids, verified, newstore, base, SpecializeFunctionPure$(streams, txtpos, def.specialized, callee, st_), st_, retype); | |
2925 | + Indent(streams.out, level); FreeIn(streams.out, newstore.qt.type); PutStr(streams.out, newstore.id); FreeOut$(streams.out, streams.err, txtpos, state.structs, newstore.qt.type); PutStr(streams.out, "\n"); | |
2864 | 2926 | } |
2865 | 2927 | case solid solidstore : |
2866 | 2928 | { |
2867 | - ParseLS$(streams, txtpos, state, level, scope, tmpnr, def, 0/*paridx*/, partial, action, self, solidstore, base, SpecializeFunctionPure$(streams, txtpos, def.specialized, callee, st_), st_, retype); | |
2929 | + ParseLS$(streams, txtpos, state, level, scope, tmpnr, def, 0/*paridx*/, partial, action, self, reduced_ids, verified, solidstore, base, SpecializeFunctionPure$(streams, txtpos, def.specialized, callee, st_), st_, retype); | |
2868 | 2930 | }; |
2869 | 2931 | }; |
2870 | 2932 |
@@ -2892,13 +2954,13 @@ | ||
2892 | 2954 | }; |
2893 | 2955 | } |
2894 | 2956 | |
2895 | -void ParseIfStatement$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, bool partial, bool action, string self, qtypepureid provide) | |
2957 | +void ParseIfStatement$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, bool partial, bool action, string self, mut stack<ReducedId> reduced_ids, bool verified, qtypepureid provide) | |
2896 | 2958 | { |
2897 | 2959 | // anonymous / hidden storage: use temporary name |
2898 | 2960 | let mut qtypepureid pred = qtypepureid(mutqtp(type_pure_normal2("bool")), GenVar$(tmpnr)); |
2899 | - Indent$(streams.out, level); EmitQTPI(streams.out, pred); PutStr(streams.out, ";\n"); | |
2961 | + Indent(streams.out, level); EmitQTPI(streams.out, pred); PutStr(streams.out, ";\n"); | |
2900 | 2962 | |
2901 | - ParseExpr$(streams, txtpos, state, level, scope, tmpnr, solid<qtypepureid>(pred), ParseId$(streams, txtpos, level), partial, action, self); | |
2963 | + ParseExpr$(streams, txtpos, state, level, scope, tmpnr, solid<qtypepureid>(pred), ParseId$(streams, txtpos, level), partial, action, self, reduced_ids, verified); | |
2902 | 2964 | |
2903 | 2965 | if not(strequ(ParseId$(streams, txtpos, level), "then")) then |
2904 | 2966 | { |
@@ -2906,21 +2968,21 @@ | ||
2906 | 2968 | Fail$(streams.err, txtpos); |
2907 | 2969 | }; |
2908 | 2970 | |
2909 | - Indent$(streams.out, level); PutStr(streams.out, "if("); PutStr(streams.out, pred.id); PutStr(streams.out, ")\n"); | |
2910 | - ParseBlock$(streams, txtpos, state, level, scope, tmpnr, solid<qtypepureid>(provide), partial, action, self); | |
2971 | + Indent(streams.out, level); PutStr(streams.out, "if("); PutStr(streams.out, pred.id); PutStr(streams.out, ")\n"); | |
2972 | + ParseBlock$(streams, txtpos, state, level, scope, tmpnr, solid<qtypepureid>(provide), partial, action, self, reduced_ids, verified); | |
2911 | 2973 | |
2912 | 2974 | let string id = ParseId$(streams, txtpos, level); |
2913 | 2975 | |
2914 | 2976 | if strequ(id, "else") then |
2915 | 2977 | { |
2916 | - Indent$(streams.out, level); PutStr(streams.out, "else\n"); | |
2978 | + Indent(streams.out, level); PutStr(streams.out, "else\n"); | |
2917 | 2979 | |
2918 | 2980 | if MatchOptional$(streams, txtpos, level, '{') then |
2919 | 2981 | { |
2920 | 2982 | //ParseBlock$(streams, txtpos, state, level, scope, tmpnr, solid<qtypepureid>(provide), partial, action, self); |
2921 | - Indent$(streams.out, level); PutStr(streams.out, "{\n"); | |
2922 | - ParseBlockRaw$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, solid<qtypepureid>(provide), partial, action, self); | |
2923 | - Indent$(streams.out, level); PutStr(streams.out, "}\n"); | |
2983 | + Indent(streams.out, level); PutStr(streams.out, "{\n"); | |
2984 | + ParseBlockRaw$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, solid<qtypepureid>(provide), partial, action, self, reduced_ids, verified); | |
2985 | + Indent(streams.out, level); PutStr(streams.out, "}\n"); | |
2924 | 2986 | AssertGet$(streams, txtpos, level, '}'); |
2925 | 2987 | } |
2926 | 2988 | else |
@@ -2941,16 +3003,16 @@ | ||
2941 | 3003 | Fail$(streams.err, txtpos); |
2942 | 3004 | }; |
2943 | 3005 | |
2944 | - Indent$(streams.out, level); PutStr(streams.out, "{\n"); | |
2945 | - ParseIfStatement$(streams, txtpos, state, add<u64>(1, level), scope, tmpnr, partial, action, self, provide); | |
2946 | - Indent$(streams.out, level); PutStr(streams.out, "}\n"); | |
3006 | + Indent(streams.out, level); PutStr(streams.out, "{\n"); | |
3007 | + ParseIfStatement$(streams, txtpos, state, add<u64>(1, level), scope, tmpnr, partial, action, self, reduced_ids, verified, provide); | |
3008 | + Indent(streams.out, level); PutStr(streams.out, "}\n"); | |
2947 | 3009 | }; |
2948 | 3010 | }; |
2949 | 3011 | } |
2950 | 3012 | |
2951 | -void ParseAssign$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, bool partial, bool action, string self, string id) | |
3013 | +void ParseAssign$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, bool partial, bool action, string self, mut stack<ReducedId> reduced_ids, bool verified, string id) | |
2952 | 3014 | { |
2953 | - switch<opt<u64>> FindPr$(txtpos, scope, id) | |
3015 | + switch<opt<u64>> FindParOrVar$(txtpos, scope, id) | |
2954 | 3016 | case empty: |
2955 | 3017 | { |
2956 | 3018 | // anonymous / hidden storage: use temporary name |
@@ -2961,7 +3023,7 @@ | ||
2961 | 3023 | SkipComment$(streams, txtpos, level); |
2962 | 3024 | if equ<u8>('{', Peek(streams.in)) then |
2963 | 3025 | { |
2964 | - ParseBlock$(streams, txtpos, state, level, scope, tmpnr, solid<qtypepureid>(provide), partial, action, self); | |
3026 | + ParseBlock$(streams, txtpos, state, level, scope, tmpnr, solid<qtypepureid>(provide), partial, action, self, reduced_ids, verified); | |
2965 | 3027 | } |
2966 | 3028 | else |
2967 | 3029 | { |
@@ -2972,14 +3034,14 @@ | ||
2972 | 3034 | } |
2973 | 3035 | else if strequ("if", id) then |
2974 | 3036 | { |
2975 | - ParseIfStatement$(streams, txtpos, state, level, scope, tmpnr, partial, action, self, provide); | |
3037 | + ParseIfStatement$(streams, txtpos, state, level, scope, tmpnr, partial, action, self, reduced_ids, verified, provide); | |
2976 | 3038 | } |
2977 | 3039 | else |
2978 | 3040 | { |
2979 | 3041 | // function-call |
2980 | - Indent$(streams.out, level); PutStr(streams.out, "{\n"); | |
2981 | - ParseCall$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, solid<qtypepureid>(provide), id, partial, action, self); | |
2982 | - Indent$(streams.out, level); PutStr(streams.out, "}\n"); | |
3042 | + Indent(streams.out, level); PutStr(streams.out, "{\n"); | |
3043 | + ParseCall$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, solid<qtypepureid>(provide), id, partial, action, self, reduced_ids, verified); | |
3044 | + Indent(streams.out, level); PutStr(streams.out, "}\n"); | |
2983 | 3045 | }; |
2984 | 3046 | } |
2985 | 3047 | case solid pos: |
@@ -2998,7 +3060,7 @@ | ||
2998 | 3060 | { |
2999 | 3061 | if MatchOptional$(streams, txtpos, level, '=') then // NOTE: if stack is not assigned to create empty stack |
3000 | 3062 | { |
3001 | - ParseExpr$(streams, txtpos, state, level, scope, tmpnr, solid<qtypepureid>(provide.qti), ParseId$(streams, txtpos, level), partial, action, self); | |
3063 | + ParseExpr$(streams, txtpos, state, level, scope, tmpnr, solid<qtypepureid>(provide.qti), ParseId$(streams, txtpos, level), partial, action, self, reduced_ids, verified); | |
3002 | 3064 | }; |
3003 | 3065 | |
3004 | 3066 | // NOTE: don't free anything as variable assigned to will already be freed! |
@@ -3016,12 +3078,12 @@ | ||
3016 | 3078 | }; |
3017 | 3079 | |
3018 | 3080 | let string id = ParseId$(streams, txtpos, level); |
3019 | - ParseExpr$(streams, txtpos, state, level, scope, tmpnr, solid<qtypepureid>(provide.qti), id, partial, action, self); | |
3081 | + ParseExpr$(streams, txtpos, state, level, scope, tmpnr, solid<qtypepureid>(provide.qti), id, partial, action, self, reduced_ids, verified); | |
3020 | 3082 | }; |
3021 | 3083 | }; |
3022 | 3084 | } |
3023 | 3085 | |
3024 | -void EmitCases$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, opt<qtypepureid> store, bool partial, bool action, string self, string par, bool mutable, stack<typepureid> elems, u64 idx, bool typed) | |
3086 | +void EmitCases$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, opt<qtypepureid> store, bool partial, bool action, string self, mut stack<ReducedId> reduced_ids, bool verified, string par, bool mutable, stack<typepureid> elems, u64 idx, bool typed) | |
3025 | 3087 | { |
3026 | 3088 | if lss<u64>(idx, size<typepureid>(elems)) then |
3027 | 3089 | { |
@@ -3033,8 +3095,8 @@ | ||
3033 | 3095 | |
3034 | 3096 | AssertGet$(streams, txtpos, level, ':'); |
3035 | 3097 | |
3036 | - Indent$(streams.out, level); PutStr(streams.out, "case "); Print<u64>(streams.out, idx); PutStr(streams.out, ": // "); EmitTPI(streams.out, ti); PutStr(streams.out, ":\n"); | |
3037 | - Indent$(streams.out, level); PutStr(streams.out, "{\n"); | |
3098 | + Indent(streams.out, level); PutStr(streams.out, "case "); Print<u64>(streams.out, idx); PutStr(streams.out, ": // "); EmitTPI(streams.out, ti); PutStr(streams.out, ":\n"); | |
3099 | + Indent(streams.out, level); PutStr(streams.out, "{\n"); | |
3038 | 3100 | |
3039 | 3101 | switch<opt<string>> id |
3040 | 3102 | case empty : |
@@ -3041,16 +3103,16 @@ | ||
3041 | 3103 | { |
3042 | 3104 | if typed then |
3043 | 3105 | { |
3044 | - ParseExpr$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, ParseId$(streams, txtpos, level), partial, action, self); | |
3106 | + ParseExpr$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, ParseId$(streams, txtpos, level), partial, action, self, reduced_ids, verified); | |
3045 | 3107 | } |
3046 | 3108 | else |
3047 | 3109 | { |
3048 | - ParseAssign$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, partial, action, self, ParseId$(streams, txtpos, level)); | |
3110 | + ParseAssign$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, partial, action, self, reduced_ids, verified, ParseId$(streams, txtpos, level)); | |
3049 | 3111 | }; |
3050 | 3112 | } |
3051 | 3113 | case solid solidid : |
3052 | 3114 | { |
3053 | - switch<opt<u64>> FindPr$(txtpos, scope, solidid) | |
3115 | + switch<opt<u64>> FindParOrVar$(txtpos, scope, solidid) | |
3054 | 3116 | case empty : |
3055 | 3117 | { |
3056 | 3118 | } |
@@ -3070,7 +3132,7 @@ | ||
3070 | 3132 | case type_pure_normal _ : |
3071 | 3133 | { |
3072 | 3134 | let qtypepureid qti = qtypepureid(qtypepure(mutable, ti.type), preapp(solidid, '*')); |
3073 | - Indent$(streams.out, add<u64>(level, 1)); EmitQTPI(streams.out, qti); PutStr(streams.out, " = &(("); PutStr(streams.out, par); PutStr(streams.out, ")."); PutStr(streams.out, ti.id); PutStr(streams.out, ");\n"); | |
3135 | + Indent(streams.out, add<u64>(level, 1)); EmitQTPI(streams.out, qti); PutStr(streams.out, " = &(("); PutStr(streams.out, par); PutStr(streams.out, ")."); PutStr(streams.out, ti.id); PutStr(streams.out, ");\n"); | |
3074 | 3136 | push<var>(scope, varinit(qti)); // make element accessible in case... |
3075 | 3137 | } |
3076 | 3138 | case type_pure_wrapped wrapped : |
@@ -3079,19 +3141,19 @@ | ||
3079 | 3141 | case container_stack : |
3080 | 3142 | { |
3081 | 3143 | let qtypepureid qti = qtypepureid(qtypepure(mutable, ti.type), preapp(solidid, '*')); |
3082 | - Indent$(streams.out, add<u64>(level, 1)); EmitQTPI(streams.out, qti); PutStr(streams.out, " = &(("); PutStr(streams.out, par); PutStr(streams.out, ")."); PutStr(streams.out, ti.id); PutStr(streams.out, ");\n"); | |
3144 | + Indent(streams.out, add<u64>(level, 1)); EmitQTPI(streams.out, qti); PutStr(streams.out, " = &(("); PutStr(streams.out, par); PutStr(streams.out, ")."); PutStr(streams.out, ti.id); PutStr(streams.out, ");\n"); | |
3083 | 3145 | push<var>(scope, varinit(qti)); // make element accessible in case... |
3084 | 3146 | } |
3085 | 3147 | case container_opt : |
3086 | 3148 | { |
3087 | 3149 | let qtypepureid qti = qtypepureid(qtypepure(mutable, ti.type), preapp(solidid, '*')); |
3088 | - Indent$(streams.out, add<u64>(level, 1)); EmitQTPI(streams.out, qti); PutStr(streams.out, " = &(("); PutStr(streams.out, par); PutStr(streams.out, ")."); PutStr(streams.out, ti.id); PutStr(streams.out, ");\n"); | |
3150 | + Indent(streams.out, add<u64>(level, 1)); EmitQTPI(streams.out, qti); PutStr(streams.out, " = &(("); PutStr(streams.out, par); PutStr(streams.out, ")."); PutStr(streams.out, ti.id); PutStr(streams.out, ");\n"); | |
3089 | 3151 | push<var>(scope, varinit(qti)); // make element accessible in case... |
3090 | 3152 | } |
3091 | 3153 | case container_box : |
3092 | 3154 | { |
3093 | 3155 | let qtypepureid qti = qtypepureid(qtypepure(mutable, type_pure_normal(wrapped.subtype)), preapp(solidid, '*')); |
3094 | - Indent$(streams.out, add<u64>(level, 1)); EmitQTPI(streams.out, qti); PutStr(streams.out, " = (("); PutStr(streams.out, par); PutStr(streams.out, ")."); PutStr(streams.out, ti.id); PutStr(streams.out, ").data;\n"); | |
3156 | + Indent(streams.out, add<u64>(level, 1)); EmitQTPI(streams.out, qti); PutStr(streams.out, " = (("); PutStr(streams.out, par); PutStr(streams.out, ")."); PutStr(streams.out, ti.id); PutStr(streams.out, ").data;\n"); | |
3095 | 3157 | push<var>(scope, varinit(qti)); // make element accessible in case... |
3096 | 3158 | }; |
3097 | 3159 | }; |
@@ -3098,11 +3160,11 @@ | ||
3098 | 3160 | |
3099 | 3161 | if typed then |
3100 | 3162 | { |
3101 | - ParseExpr$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, ParseId$(streams, txtpos, level), partial, action, self); | |
3163 | + ParseExpr$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, ParseId$(streams, txtpos, level), partial, action, self, reduced_ids, verified); | |
3102 | 3164 | } |
3103 | 3165 | else |
3104 | 3166 | { |
3105 | - ParseAssign$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, partial, action, self, ParseId$(streams, txtpos, level)); | |
3167 | + ParseAssign$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, partial, action, self, reduced_ids, verified, ParseId$(streams, txtpos, level)); | |
3106 | 3168 | }; |
3107 | 3169 | |
3108 | 3170 | VerifyUsed$(streams.err, txtpos, scope, base); |
@@ -3109,21 +3171,21 @@ | ||
3109 | 3171 | let _ = pop_opt<var>(scope); // ...but not outside |
3110 | 3172 | }; |
3111 | 3173 | |
3112 | - Indent$(streams.out, add<u64>(level, 1)); PutStr(streams.out, "break;\n"); | |
3113 | - Indent$(streams.out, level); PutStr(streams.out, "}\n"); | |
3114 | - EmitCases$(streams, txtpos, state, level, scope, tmpnr, store, partial, action, self, par, mutable, elems, add<u64>(idx, 1), typed); | |
3174 | + Indent(streams.out, add<u64>(level, 1)); PutStr(streams.out, "break;\n"); | |
3175 | + Indent(streams.out, level); PutStr(streams.out, "}\n"); | |
3176 | + EmitCases$(streams, txtpos, state, level, scope, tmpnr, store, partial, action, self, reduced_ids, verified, par, mutable, elems, add<u64>(idx, 1), typed); | |
3115 | 3177 | } |
3116 | 3178 | else |
3117 | 3179 | { |
3118 | - Indent$(streams.out, level); PutStr(streams.out, "default:\n"); | |
3119 | - Indent$(streams.out, level); PutStr(streams.out, "{\n"); | |
3120 | - Indent$(streams.out, add<u64>(level, 1)); PutStr(streams.out, "fprintf(stderr, \"INTERNAL ERROR IN SWITCH\");\n"); | |
3121 | - Indent$(streams.out, add<u64>(level, 1)); PutStr(streams.out, "break;\n"); | |
3122 | - Indent$(streams.out, level); PutStr(streams.out, "}\n"); | |
3180 | + Indent(streams.out, level); PutStr(streams.out, "default:\n"); | |
3181 | + Indent(streams.out, level); PutStr(streams.out, "{\n"); | |
3182 | + Indent(streams.out, add<u64>(level, 1)); PutStr(streams.out, "fprintf(stderr, \"INTERNAL ERROR IN SWITCH\");\n"); | |
3183 | + Indent(streams.out, add<u64>(level, 1)); PutStr(streams.out, "break;\n"); | |
3184 | + Indent(streams.out, level); PutStr(streams.out, "}\n"); | |
3123 | 3185 | }; |
3124 | 3186 | } |
3125 | 3187 | |
3126 | -void EmitSwitch$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, opt<qtypepureid> store, string id, bool partial, bool action, string self, bool typed) | |
3188 | +void EmitSwitch$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, opt<qtypepureid> store, string id, bool partial, bool action, string self, mut stack<ReducedId> reduced_ids, bool verified, bool typed) | |
3127 | 3189 | { |
3128 | 3190 | let type_pure subtype = ParseArgTypePure$(streams, txtpos, level, state.structs); |
3129 | 3191 |
@@ -3132,7 +3194,7 @@ | ||
3132 | 3194 | EmitLet$(streams.out, txtpos, level, state.structs, provide); // if dynamic need to free... |
3133 | 3195 | |
3134 | 3196 | let string id = ParseId$(streams, txtpos, level); |
3135 | - ParseExpr$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, solid<qtypepureid>(provide), id, partial, action, self); | |
3197 | + ParseExpr$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, solid<qtypepureid>(provide), id, partial, action, self, reduced_ids, verified); | |
3136 | 3198 | |
3137 | 3199 | switch<type_pure> subtype |
3138 | 3200 | case type_pure_normal _ : |
@@ -3162,10 +3224,10 @@ | ||
3162 | 3224 | { |
3163 | 3225 | }; |
3164 | 3226 | |
3165 | - Indent$(streams.out, level); PutStr(streams.out, "switch(("); PutStr(streams.out, provide.id); PutStr(streams.out, ").type)\n"); | |
3166 | - Indent$(streams.out, level); PutStr(streams.out, "{\n"); | |
3167 | - EmitCases$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, partial, action, self, provide.id, 0/*mutable*/, ud.elems, 0, typed); | |
3168 | - Indent$(streams.out, level); PutStr(streams.out, "}\n"); | |
3227 | + Indent(streams.out, level); PutStr(streams.out, "switch(("); PutStr(streams.out, provide.id); PutStr(streams.out, ").type)\n"); | |
3228 | + Indent(streams.out, level); PutStr(streams.out, "{\n"); | |
3229 | + EmitCases$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, partial, action, self, reduced_ids, verified, provide.id, 0/*mutable*/, ud.elems, 0, typed); | |
3230 | + Indent(streams.out, level); PutStr(streams.out, "}\n"); | |
3169 | 3231 | }; |
3170 | 3232 | } |
3171 | 3233 | case type_pure_wrapped wrapped : |
@@ -3198,30 +3260,30 @@ | ||
3198 | 3260 | { |
3199 | 3261 | }; |
3200 | 3262 | |
3201 | - Indent$(streams.out, level); PutStr(streams.out, "switch(("); PutStr(streams.out, provide.id); PutStr(streams.out, ").type)\n"); | |
3202 | - Indent$(streams.out, level); PutStr(streams.out, "{\n"); | |
3203 | - EmitCases$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, partial, action, self, provide.id, 0/*mutable*/, ud.elems, 0, typed); | |
3204 | - Indent$(streams.out, level); PutStr(streams.out, "}\n"); | |
3263 | + Indent(streams.out, level); PutStr(streams.out, "switch(("); PutStr(streams.out, provide.id); PutStr(streams.out, ").type)\n"); | |
3264 | + Indent(streams.out, level); PutStr(streams.out, "{\n"); | |
3265 | + EmitCases$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, partial, action, self, reduced_ids, verified, provide.id, 0/*mutable*/, ud.elems, 0, typed); | |
3266 | + Indent(streams.out, level); PutStr(streams.out, "}\n"); | |
3205 | 3267 | }; |
3206 | 3268 | } |
3207 | 3269 | case container_opt : |
3208 | 3270 | { |
3209 | - Indent$(streams.out, level); PutStr(streams.out, "if(!("); PutStr(streams.out, provide.id); PutStr(streams.out, ").size)\n"); | |
3210 | - Indent$(streams.out, level); PutStr(streams.out, "{\n"); | |
3271 | + Indent(streams.out, level); PutStr(streams.out, "if(!("); PutStr(streams.out, provide.id); PutStr(streams.out, ").size)\n"); | |
3272 | + Indent(streams.out, level); PutStr(streams.out, "{\n"); | |
3211 | 3273 | |
3212 | 3274 | MatchCase$(streams, txtpos, level, "empty"); |
3213 | 3275 | AssertGet$(streams, txtpos, level, ':'); |
3214 | 3276 | if typed then |
3215 | 3277 | { |
3216 | - ParseExpr$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, ParseId$(streams, txtpos, level), partial, action, self); | |
3278 | + ParseExpr$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, ParseId$(streams, txtpos, level), partial, action, self, reduced_ids, verified); | |
3217 | 3279 | } |
3218 | 3280 | else |
3219 | 3281 | { |
3220 | - ParseAssign$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, partial, action, self, ParseId$(streams, txtpos, level)); | |
3282 | + ParseAssign$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, partial, action, self, reduced_ids, verified, ParseId$(streams, txtpos, level)); | |
3221 | 3283 | }; |
3222 | - Indent$(streams.out, level); PutStr(streams.out, "}\n"); | |
3223 | - Indent$(streams.out, level); PutStr(streams.out, "else\n"); | |
3224 | - Indent$(streams.out, level); PutStr(streams.out, "{\n"); | |
3284 | + Indent(streams.out, level); PutStr(streams.out, "}\n"); | |
3285 | + Indent(streams.out, level); PutStr(streams.out, "else\n"); | |
3286 | + Indent(streams.out, level); PutStr(streams.out, "{\n"); | |
3225 | 3287 | |
3226 | 3288 | MatchCase$(streams, txtpos, level, "solid"); |
3227 | 3289 | let opt<string> var = ParseIdOrGap$(streams, txtpos, level); |
@@ -3233,16 +3295,16 @@ | ||
3233 | 3295 | { |
3234 | 3296 | if typed then |
3235 | 3297 | { |
3236 | - ParseExpr$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, ParseId$(streams, txtpos, level), partial, action, self); | |
3298 | + ParseExpr$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, ParseId$(streams, txtpos, level), partial, action, self, reduced_ids, verified); | |
3237 | 3299 | } |
3238 | 3300 | else |
3239 | 3301 | { |
3240 | - ParseAssign$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, partial, action, self, ParseId$(streams, txtpos, level)); | |
3302 | + ParseAssign$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, partial, action, self, reduced_ids, verified, ParseId$(streams, txtpos, level)); | |
3241 | 3303 | }; |
3242 | 3304 | } |
3243 | 3305 | case solid solidvar : |
3244 | 3306 | { |
3245 | - switch<opt<u64>> FindPr$(txtpos, scope, solidvar) | |
3307 | + switch<opt<u64>> FindParOrVar$(txtpos, scope, solidvar) | |
3246 | 3308 | case empty : |
3247 | 3309 | { |
3248 | 3310 | } |
@@ -3255,7 +3317,7 @@ | ||
3255 | 3317 | }; |
3256 | 3318 | |
3257 | 3319 | let qtypepureid qti = qtypepureid(constqtp(type_pure_normal(wrapped.subtype)), preapp(solidvar, '*')); |
3258 | - Indent$(streams.out, add<u64>(level, 1)); EmitQTPI(streams.out, qti); PutStr(streams.out, " = ("); PutStr(streams.out, provide.id); PutStr(streams.out, ").data;\n"); | |
3320 | + Indent(streams.out, add<u64>(level, 1)); EmitQTPI(streams.out, qti); PutStr(streams.out, " = ("); PutStr(streams.out, provide.id); PutStr(streams.out, ").data;\n"); | |
3259 | 3321 | |
3260 | 3322 | // NOTE: modifing scope instead of copy to remember variable-usage changes. |
3261 | 3323 | let u64 base = size<var>(scope); |
@@ -3262,17 +3324,17 @@ | ||
3262 | 3324 | push<var>(scope, varinit(qti)); // make element accessible in case... |
3263 | 3325 | if typed then |
3264 | 3326 | { |
3265 | - ParseExpr$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, ParseId$(streams, txtpos, level), partial, action, self); | |
3327 | + ParseExpr$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, ParseId$(streams, txtpos, level), partial, action, self, reduced_ids, verified); | |
3266 | 3328 | } |
3267 | 3329 | else |
3268 | 3330 | { |
3269 | - ParseAssign$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, partial, action, self, ParseId$(streams, txtpos, level)); | |
3331 | + ParseAssign$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, partial, action, self, reduced_ids, verified, ParseId$(streams, txtpos, level)); | |
3270 | 3332 | }; |
3271 | 3333 | VerifyUsed$(streams.err, txtpos, scope, base); |
3272 | 3334 | let _ = pop_opt<var>(scope); // ...but not outside |
3273 | 3335 | }; |
3274 | 3336 | |
3275 | - Indent$(streams.out, level); PutStr(streams.out, "}\n"); | |
3337 | + Indent(streams.out, level); PutStr(streams.out, "}\n"); | |
3276 | 3338 | } |
3277 | 3339 | case container_box : |
3278 | 3340 | { |
@@ -3301,19 +3363,135 @@ | ||
3301 | 3363 | { |
3302 | 3364 | }; |
3303 | 3365 | |
3304 | - Indent$(streams.out, level); PutStr(streams.out, "switch(("); PutStr(streams.out, provide.id); PutStr(streams.out, ").type)\n"); | |
3305 | - Indent$(streams.out, level); PutStr(streams.out, "{\n"); | |
3306 | - EmitCases$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, partial, action, self, provide.id, 0/*mutable*/, ud.elems, 0, typed); | |
3307 | - Indent$(streams.out, level); PutStr(streams.out, "}\n"); | |
3366 | + Indent(streams.out, level); PutStr(streams.out, "switch(("); PutStr(streams.out, provide.id); PutStr(streams.out, ").type)\n"); | |
3367 | + Indent(streams.out, level); PutStr(streams.out, "{\n"); | |
3368 | + EmitCases$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, partial, action, self, reduced_ids, verified, provide.id, 0/*mutable*/, ud.elems, 0, typed); | |
3369 | + Indent(streams.out, level); PutStr(streams.out, "}\n"); | |
3308 | 3370 | }; |
3309 | 3371 | }; |
3310 | 3372 | }; |
3311 | 3373 | |
3312 | - Indent$(streams.out, level); FreeIn(streams.out, provide.qt.type); PutStr(streams.out, provide.id); FreeOut$(streams.out, streams.err, txtpos, state.structs, provide.qt.type); PutStr(streams.out, "\n"); // ...then dynamic free here | |
3374 | + Indent(streams.out, level); FreeIn(streams.out, provide.qt.type); PutStr(streams.out, provide.id); FreeOut$(streams.out, streams.err, txtpos, state.structs, provide.qt.type); PutStr(streams.out, "\n"); // ...then dynamic free here | |
3313 | 3375 | } |
3314 | 3376 | |
3377 | +void EmitReduce$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, opt<qtypepureid> store, string id, bool partial, bool action, string self, mut stack<ReducedId> reduced_ids, bool verified, bool typed) | |
3378 | +{ | |
3379 | + let string par = ParseId$(streams, txtpos, level); | |
3380 | + | |
3381 | + // NOTE: only non-mutable parameter can be reduced! | |
3382 | + switch<opt<u64>> FindPar$(txtpos, scope, par) | |
3383 | + case empty: | |
3384 | + { | |
3385 | + PutStr(streams.err, "can only reduce non-mutable parameter"); | |
3386 | + Fail$(streams.err, txtpos); | |
3387 | + } | |
3388 | + case solid pos: | |
3389 | + { | |
3390 | + let var current = at_get$<var>(scope, pos); | |
3391 | + | |
3392 | + if current.qti.qt.mutable then | |
3393 | + { | |
3394 | + PutStr(streams.err, "cannot reduce mutable parameter"); | |
3395 | + Fail$(streams.err, txtpos); | |
3396 | + }; | |
3397 | + | |
3398 | + if not(strequ("to", ParseId$(streams, txtpos, level))) then | |
3399 | + { | |
3400 | + PutStr(streams.err, "missing keyword \"to\""); | |
3401 | + Fail$(streams.err, txtpos); | |
3402 | + }; | |
3403 | + | |
3404 | + let string tmp_reduce = ParseId$(streams, txtpos, level); | |
3405 | + let string reduced_id = if strequ("", tmp_reduce) then par else tmp_reduce; | |
3406 | + | |
3407 | + { | |
3408 | + let u64 base_reduced = size<ReducedId>(reduced_ids); | |
3409 | + //push<ReducedId>(reduced_ids, ReducedId(par, reduced_id)); | |
3410 | + push<ReducedId>(reduced_ids, ReducedId(pos, reduced_id)); | |
3411 | + | |
3412 | + AssertGet$(streams, txtpos, level, ':'); | |
3413 | + | |
3414 | + switch<type_pure> current.qti.qt.type | |
3415 | + case type_pure_normal _ : | |
3416 | + { | |
3417 | + if ispureprim(current.qti.qt.type) then | |
3418 | + { | |
3419 | + Indent(streams.out, level); PutStr(streams.out, "if("); PutStr(streams.out, current.qti.id); PutStr(streams.out, " > 0)\n"); | |
3420 | + | |
3421 | + Indent(streams.out, level); PutStr(streams.out, "{\n"); | |
3422 | + | |
3423 | + let qtypepureid reduced = qtypepureid(constqtp(current.qti.qt.type), preapp(reduced_id, '_')); | |
3424 | + //EmitLet$(streams.out, txtpos, add<u64>(1, level), state.structs, reduced); // if dynamic need to free... | |
3425 | + | |
3426 | + Indent(streams.out, add<u64>(level, 1)); EmitQTPI(streams.out, reduced); PutStr(streams.out, " = "); PutStr(streams.out, current.qti.id); PutStr(streams.out, " - 1;\n"); | |
3427 | + | |
3428 | + // NOTE: modifing scope instead of copy to remember variable-usage changes. | |
3429 | + let u64 base_scope = size<var>(scope); | |
3430 | + push<var>(scope, varinit(reduced)); // make element accessible in case... | |
3431 | + if typed then | |
3432 | + { | |
3433 | + ParseExpr$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, ParseId$(streams, txtpos, level), partial, action, self, reduced_ids, verified); | |
3434 | + } | |
3435 | + else | |
3436 | + { | |
3437 | + ParseAssign$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, partial, action, self, reduced_ids, verified, ParseId$(streams, txtpos, level)); | |
3438 | + }; | |
3439 | + | |
3440 | + VerifyUsed$(streams.err, txtpos, scope, base_scope); | |
3441 | + let _ = pop$<var>(scope); // ...but not outside | |
3442 | + | |
3443 | + //Indent(streams.out, add<u64>(1, level)); FreeIn(streams.out, reduced.qt.type); PutStr(streams.out, reduced.id); FreeOut$(streams.out, streams.err, txtpos, state.structs, reduced.qt.type); PutStr(streams.out, "\n"); // ...then dynamic free here | |
3444 | + | |
3445 | + Indent(streams.out, level); PutStr(streams.out, "}\n"); | |
3446 | + } | |
3447 | + else | |
3448 | + { | |
3449 | + PutStr(streams.err, "can't reduce "); | |
3450 | + PutStr(streams.err, id); | |
3451 | + PutStr(streams.err, " of type "); | |
3452 | + EPrTypePure(streams.err, current.qti.qt.type); | |
3453 | + Fail$(streams.err, txtpos); | |
3454 | + }; | |
3455 | + } | |
3456 | + case type_pure_wrapped _ : | |
3457 | + { | |
3458 | + PutStr(streams.err, "can't reduce "); | |
3459 | + PutStr(streams.err, id); | |
3460 | + PutStr(streams.err, " of type "); | |
3461 | + EPrTypePure(streams.err, current.qti.qt.type); | |
3462 | + Fail$(streams.err, txtpos); | |
3463 | + }; | |
3464 | + | |
3465 | + let _ = pop_opt_base$<ReducedId>(reduced_ids, base_reduced); | |
3466 | + }; | |
3467 | + | |
3468 | + Indent(streams.out, level); PutStr(streams.out, "else\n"); | |
3469 | + | |
3470 | + if not(strequ("term", ParseId$(streams, txtpos, level))) then | |
3471 | + { | |
3472 | + PutStr(streams.err, "missing keyword \"term\""); | |
3473 | + Fail$(streams.err, txtpos); | |
3474 | + }; | |
3475 | + | |
3476 | + AssertGet$(streams, txtpos, level, ':'); | |
3477 | + | |
3478 | + Indent(streams.out, level); PutStr(streams.out, "{\n"); | |
3479 | + | |
3480 | + if typed then | |
3481 | + { | |
3482 | + ParseExpr$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, ParseId$(streams, txtpos, level), partial, action, self, reduced_ids, verified); | |
3483 | + } | |
3484 | + else | |
3485 | + { | |
3486 | + ParseAssign$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, partial, action, self, reduced_ids, verified, ParseId$(streams, txtpos, level)); | |
3487 | + }; | |
3488 | + | |
3489 | + Indent(streams.out, level); PutStr(streams.out, "}\n"); | |
3490 | + }; | |
3491 | +} | |
3492 | + | |
3315 | 3493 | // parse expression - assumes optional id has already been parsed |
3316 | -void ParseExpr$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, opt<qtypepureid> store, string id, bool partial, bool action, string self) | |
3494 | +void ParseExpr$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, opt<qtypepureid> store, string id, bool partial, bool action, string self, mut stack<ReducedId> reduced_ids, bool verified) | |
3317 | 3495 | { |
3318 | 3496 | if not(strequ(id, "")) then |
3319 | 3497 | { |
@@ -3321,10 +3499,10 @@ | ||
3321 | 3499 | { |
3322 | 3500 | // anonymous / hidden storage: use temporary name |
3323 | 3501 | let mut qtypepureid pred = qtypepureid(mutqtp(type_pure_normal2("bool")), GenVar$(tmpnr)); |
3324 | - Indent$(streams.out, level); EmitQTPI(streams.out, pred); PutStr(streams.out, ";\n"); | |
3502 | + Indent(streams.out, level); EmitQTPI(streams.out, pred); PutStr(streams.out, ";\n"); | |
3325 | 3503 | |
3326 | 3504 | let mut string id = ParseId$(streams, txtpos, level); |
3327 | - ParseExpr$(streams, txtpos, state, level, scope, tmpnr, solid<qtypepureid>(pred), id, partial, action, self); | |
3505 | + ParseExpr$(streams, txtpos, state, level, scope, tmpnr, solid<qtypepureid>(pred), id, partial, action, self, reduced_ids, verified); | |
3328 | 3506 | |
3329 | 3507 | if not(strequ(ParseId$(streams, txtpos, level), "then")) then |
3330 | 3508 | { |
@@ -3331,11 +3509,11 @@ | ||
3331 | 3509 | PutStr(streams.err, "missing then"); Fail$(streams.err, txtpos); |
3332 | 3510 | }; |
3333 | 3511 | |
3334 | - Indent$(streams.out, level); PutStr(streams.out, "if("); PutStr(streams.out, pred.id); PutStr(streams.out, ")\n"); | |
3335 | - Indent$(streams.out, level); PutStr(streams.out, "{\n"); | |
3512 | + Indent(streams.out, level); PutStr(streams.out, "if("); PutStr(streams.out, pred.id); PutStr(streams.out, ")\n"); | |
3513 | + Indent(streams.out, level); PutStr(streams.out, "{\n"); | |
3336 | 3514 | id = ParseId$(streams, txtpos, level); |
3337 | - ParseExpr$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, id, partial, action, self); | |
3338 | - Indent$(streams.out, level); PutStr(streams.out, "}\n"); | |
3515 | + ParseExpr$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, id, partial, action, self, reduced_ids, verified); | |
3516 | + Indent(streams.out, level); PutStr(streams.out, "}\n"); | |
3339 | 3517 | |
3340 | 3518 | id = ParseId$(streams, txtpos, level); |
3341 | 3519 | // NOTE: else is mandatory in expression! |
@@ -3345,11 +3523,11 @@ | ||
3345 | 3523 | Fail$(streams.err, txtpos); |
3346 | 3524 | }; |
3347 | 3525 | |
3348 | - Indent$(streams.out, level); PutStr(streams.out, "else\n"); | |
3349 | - Indent$(streams.out, level); PutStr(streams.out, "{\n"); | |
3526 | + Indent(streams.out, level); PutStr(streams.out, "else\n"); | |
3527 | + Indent(streams.out, level); PutStr(streams.out, "{\n"); | |
3350 | 3528 | id = ParseId$(streams, txtpos, level); |
3351 | - ParseExpr$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, id, partial, action, self); | |
3352 | - Indent$(streams.out, level); PutStr(streams.out, "}\n"); | |
3529 | + ParseExpr$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, id, partial, action, self, reduced_ids, verified); | |
3530 | + Indent(streams.out, level); PutStr(streams.out, "}\n"); | |
3353 | 3531 | } |
3354 | 3532 | else |
3355 | 3533 | { |
@@ -3415,28 +3593,32 @@ | ||
3415 | 3593 | // Fail$(streams.err, txtpos); |
3416 | 3594 | // }; |
3417 | 3595 | // |
3418 | - // Indent$(streams.out, level); PutStr(streams.out, "do\n"); | |
3419 | - // Indent$(streams.out, level); PutStr(streams.out, "{\n"); | |
3596 | + // Indent(streams.out, level); PutStr(streams.out, "do\n"); | |
3597 | + // Indent(streams.out, level); PutStr(streams.out, "{\n"); | |
3420 | 3598 | // id = ParseId$(streams, txtpos, level); |
3421 | 3599 | // ParseExpr$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, id, partial, action, self); |
3422 | 3600 | //// //Print("fprintf(stderr, \"%d\\n\", (int)"); PutStr(out, counter.id); PutStr(out, ");\n"); |
3423 | - // Indent$(streams.out, level); PutStr(streams.out, "}\n"); | |
3424 | - // Indent$(streams.out, level); PutStr(streams.out, "while("); PutStr(streams.out, counter.id); PutStr(streams.out, "--);\n"); | |
3601 | + // Indent(streams.out, level); PutStr(streams.out, "}\n"); | |
3602 | + // Indent(streams.out, level); PutStr(streams.out, "while("); PutStr(streams.out, counter.id); PutStr(streams.out, "--);\n"); | |
3425 | 3603 | //} |
3426 | 3604 | //else |
3427 | 3605 | if strequ(id, "switch") then |
3428 | 3606 | { |
3429 | - EmitSwitch$(streams, txtpos, state, level, scope, tmpnr, store, id, partial, action, self, 1); | |
3607 | + EmitSwitch$(streams, txtpos, state, level, scope, tmpnr, store, id, partial, action, self, reduced_ids, verified, 1); | |
3430 | 3608 | } |
3609 | + else if strequ(id, "reduce") then | |
3610 | + { | |
3611 | + EmitReduce$(streams, txtpos, state, level, scope, tmpnr, store, id, partial, action, self, reduced_ids, verified, 1); | |
3612 | + } | |
3431 | 3613 | else |
3432 | 3614 | { |
3433 | - switch<opt<u64>> FindPr$(txtpos, scope, id) | |
3615 | + switch<opt<u64>> FindParOrVar$(txtpos, scope, id) | |
3434 | 3616 | case empty: |
3435 | 3617 | { |
3436 | 3618 | // function-call |
3437 | - Indent$(streams.out, level); PutStr(streams.out, "{\n"); | |
3438 | - ParseCall$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, id, partial, action, self); | |
3439 | - Indent$(streams.out, level); PutStr(streams.out, "}\n"); | |
3619 | + Indent(streams.out, level); PutStr(streams.out, "{\n"); | |
3620 | + ParseCall$(streams, txtpos, state, add<u64>(level, 1), scope, tmpnr, store, id, partial, action, self, reduced_ids, verified); | |
3621 | + Indent(streams.out, level); PutStr(streams.out, "}\n"); | |
3440 | 3622 | |
3441 | 3623 | // (return-typecheck performed by call) |
3442 | 3624 | } |
@@ -3466,7 +3648,7 @@ | ||
3466 | 3648 | let mut stack<string> path; |
3467 | 3649 | typ.type = ParseStructPath$(streams, txtpos, state.structs, level, typ.type, id, path); |
3468 | 3650 | |
3469 | - Indent$(streams.out, level); | |
3651 | + Indent(streams.out, level); | |
3470 | 3652 | CopyIn(streams.out, streams.err, solidstore.qt.type, solidstore.id, txtpos); PutStr(streams.out, solidstore.id); CopyMid(streams.out, solidstore.qt.type); Put(streams.out, '('); PutStr(streams.out, par); Put(streams.out, ')'); PrintPath$(streams.out, path); CopyOut$(streams.out, streams.err, txtpos, state.structs, solidstore.qt.type); |
3471 | 3653 | PutStr(streams.out, "\n"); |
3472 | 3654 |
@@ -3479,12 +3661,12 @@ | ||
3479 | 3661 | } |
3480 | 3662 | else if MatchOptional$(streams, txtpos, level, '(') then // nested expression |
3481 | 3663 | { |
3482 | - ParseExpr$(streams, txtpos, state, level, scope, tmpnr, store, ParseId$(streams, txtpos, level), partial, action, self); | |
3664 | + ParseExpr$(streams, txtpos, state, level, scope, tmpnr, store, ParseId$(streams, txtpos, level), partial, action, self, reduced_ids, 0/*unverified*/); | |
3483 | 3665 | AssertGet$(streams, txtpos, level, ')'); |
3484 | 3666 | } |
3485 | 3667 | else if equ<u8>('{', Peek(streams.in)) then |
3486 | 3668 | { |
3487 | - ParseBlock$(streams, txtpos, state, level, scope, tmpnr, store, partial, action, self); | |
3669 | + ParseBlock$(streams, txtpos, state, level, scope, tmpnr, store, partial, action, self, reduced_ids, 0/*unverified*/); | |
3488 | 3670 | } |
3489 | 3671 | else if isdigi(Peek(streams.in)) then // number-literal |
3490 | 3672 | { |
@@ -3499,7 +3681,7 @@ | ||
3499 | 3681 | } |
3500 | 3682 | case solid solidstore : |
3501 | 3683 | { |
3502 | - Indent$(streams.out, level); PutStr(streams.out, solidstore.id); PutStr(streams.out, " = "); Print<u64>(streams.out, nr); PutStr(streams.out, ";\n"); | |
3684 | + Indent(streams.out, level); PutStr(streams.out, solidstore.id); PutStr(streams.out, " = "); Print<u64>(streams.out, nr); PutStr(streams.out, ";\n"); | |
3503 | 3685 | |
3504 | 3686 | ChkPrim$(streams.err, txtpos, solidstore); |
3505 | 3687 | }; |
@@ -3517,7 +3699,7 @@ | ||
3517 | 3699 | } |
3518 | 3700 | case solid solidstore : |
3519 | 3701 | { |
3520 | - Indent$(streams.out, level); PutStr(streams.out, solidstore.id); PutStr(streams.out, " = "); Print<u64>(streams.out, c8to64(ch)); PutStr(streams.out, ";\n"); | |
3702 | + Indent(streams.out, level); PutStr(streams.out, solidstore.id); PutStr(streams.out, " = "); Print<u64>(streams.out, c8to64(ch)); PutStr(streams.out, ";\n"); | |
3521 | 3703 | |
3522 | 3704 | ChkPrim$(streams.err, txtpos, solidstore); |
3523 | 3705 | }; |
@@ -3534,7 +3716,7 @@ | ||
3534 | 3716 | case solid solidstore : |
3535 | 3717 | { |
3536 | 3718 | // automatically convert literal to string |
3537 | - Indent$(streams.out, level); PutStr(streams.out, "init$fromliteral(&"); PutStr(streams.out, solidstore.id); PutStr(streams.out, ", "); PutStr(streams.out, "\""); let u64 size = CopyStrLit$(streams.in, streams.out, txtpos); PutStr(streams.out, "\""); PutStr(streams.out, ", "); Print<u64>(streams.out, size); PutStr(streams.out, ");\n"); | |
3719 | + Indent(streams.out, level); PutStr(streams.out, "init$fromliteral(&"); PutStr(streams.out, solidstore.id); PutStr(streams.out, ", "); PutStr(streams.out, "\""); let u64 size = CopyStrLit$(streams.in, streams.out, txtpos); PutStr(streams.out, "\""); PutStr(streams.out, ", "); Print<u64>(streams.out, size); PutStr(streams.out, ");\n"); | |
3538 | 3720 | ChkStr$(streams.err, txtpos, solidstore); |
3539 | 3721 | }; |
3540 | 3722 | }; |
@@ -3541,7 +3723,7 @@ | ||
3541 | 3723 | } |
3542 | 3724 | |
3543 | 3725 | // parse function-body without side-effects |
3544 | -void ParseExpr2$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, u64 tmpnr_, qtypepureid store, bool partial, bool action, string self) | |
3726 | +void ParseExpr2$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, u64 tmpnr_, qtypepureid store, bool partial, bool action, string self, mut stack<ReducedId> reduced_ids, bool verified) | |
3545 | 3727 | { |
3546 | 3728 | let mut u64 tmpnr = tmpnr_; |
3547 | 3729 |
@@ -3555,13 +3737,13 @@ | ||
3555 | 3737 | |
3556 | 3738 | // try to read id (will be empty if something else ahead!) |
3557 | 3739 | let string id = ParseId$(streams, txtpos, level); |
3558 | - ParseExpr$(streams, txtpos, state, level, scope, tmpnr, solid<qtypepureid>(store), id, partial, action, self); | |
3740 | + ParseExpr$(streams, txtpos, state, level, scope, tmpnr, solid<qtypepureid>(store), id, partial, action, self, reduced_ids, verified); | |
3559 | 3741 | } |
3560 | 3742 | |
3561 | 3743 | // forward-declaration |
3562 | -void ParseLines$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, opt<qtypepureid> store, bool partial, bool action, string self); | |
3744 | +void ParseLines$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, opt<qtypepureid> store, bool partial, bool action, string self, mut stack<ReducedId> reduced_ids, bool verified); | |
3563 | 3745 | |
3564 | -void ParseNext$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, opt<qtypepureid> store, bool partial, bool action, string self) | |
3746 | +void ParseNext$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, opt<qtypepureid> store, bool partial, bool action, string self, mut stack<ReducedId> reduced_ids, bool verified) | |
3565 | 3747 | { |
3566 | 3748 | SkipComment$(streams, txtpos, level); |
3567 | 3749 | if not(equ<u8>(';', Peek(streams.in))) then |
@@ -3576,7 +3758,7 @@ | ||
3576 | 3758 | SkipComment$(streams, txtpos, level); |
3577 | 3759 | if not(equ<u8>('}', Peek(streams.in))) then |
3578 | 3760 | { |
3579 | - ParseLines$(streams, txtpos, state, level, scope, tmpnr, store, partial, action, self); | |
3761 | + ParseLines$(streams, txtpos, state, level, scope, tmpnr, store, partial, action, self, reduced_ids, verified); | |
3580 | 3762 | } |
3581 | 3763 | else |
3582 | 3764 | { |
@@ -3597,7 +3779,7 @@ | ||
3597 | 3779 | } |
3598 | 3780 | |
3599 | 3781 | // Parse something that can be either returned or assigned to, e.g. x.a.b.c = y |
3600 | -void ParseLet$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, opt<qtypepureid> store, bool partial, bool action, string self) | |
3782 | +void ParseLet$(Streams streams, mut linecol txtpos, mut state state, u64 level, mut stack<var> scope, mut u64 tmpnr, opt<qtypepureid> store, bool partial, bool action, string self, mut stack<ReducedId> reduced_ids, bool verified) | |
3601 | 3783 | { |
3602 | 3784 | if MatchOptional$(streams, txtpos, level, '_') then |
3603 | 3785 | { |
@@ -3605,8 +3787,8 @@ | ||
3605 | 3787 | |
3606 | 3788 | let string id = ParseId$(streams, txtpos, level); |
3607 | 3789 | |
3608 | - ParseExpr$(streams, txtpos, state, level, scope, tmpnr, empty<qtypepureid>(), id, partial, action, self); | |
3609 | - ParseNext$(streams, txtpos, state, level, scope, tmpnr, store, partial, action, self); // continue | |
3790 | + ParseExpr$(streams, txtpos, state, level, scope, tmpnr, empty<qtypepureid>(), id, partial, action, self, reduced_ids, verified); | |
3791 | + ParseNext$(streams, txtpos, state, level, scope, tmpnr, store, partial, action, self, reduced_ids, verified); // continue | |
3610 | 3792 | } |
3611 | 3793 | else |
3612 | 3794 | { |
@@ -3651,21 +3833,21 @@ | ||
3651 | 3833 | { |
3652 | 3834 | Assert$(streams.err, txtpos, GetAdvance(streams.in, txtpos), '='); |
3653 | 3835 | |
3654 | - ParseExpr$(streams, txtpos, state, level, scope, tmpnr, solid<qtypepureid>(mut_st), ParseId$(streams, txtpos, level), partial, action, self); | |
3836 | + ParseExpr$(streams, txtpos, state, level, scope, tmpnr, solid<qtypepureid>(mut_st), ParseId$(streams, txtpos, level), partial, action, self, reduced_ids, verified); | |
3655 | 3837 | }; |
3656 | 3838 | }; |
Part of diff was cut off due to size limit. Use your local client to view the full diff.