• R/O
  • SSH
  • HTTPS

jpl: Commit


Commit MetaInfo

Revisión401 (tree)
Tiempo2019-01-13 03:43:03
Autorjakobthomsen

Log Message

top-level match union (recursively)

Cambiar Resumen

Diferencia

--- trunk/pragmatic/compiler.compiled.c (revision 400)
+++ trunk/pragmatic/compiler.compiled.c (revision 401)
@@ -6159,6 +6159,46 @@
61596159 return;
61606160 }
61616161
6162+void findTPI(struct stack/*u64*/ *const _0, const struct stack/*typepureid*/ *const elems, const struct string *const id)
6163+{
6164+ if(elems->fill > 0)
6165+ {
6166+ struct stack/*typepureid*/ _rest; memset(&_rest, 0, sizeof(struct stack/*typepureid*/));
6167+ _rest.fill = elems->fill - 1;
6168+ _rest.data = elems->data; // REFERENCE - memory must NOT be de-allocated when leaving scope!!!
6169+ _rest.size = (4 * (elems->fill + 1) > elems->size + 1) ? elems->size : (elems->size + 1) / 2 - 1;
6170+ const struct typepureid *elem = ((const struct typepureid *)(_rest.data)) + _rest.fill; // REFERENCE - memory must NOT be de-allocated when leaving scope!!!
6171+ bool _1;
6172+ {
6173+ const struct string *_2 = &(*elem).id;
6174+ strequ(&_1, &*_2, &*id);
6175+ }
6176+ if(_1)
6177+ {
6178+ {
6179+ uint64_t _2; memset(&_2, 0, sizeof(uint64_t));
6180+ {
6181+ size(&_2, &_rest);
6182+ }
6183+ solid(&*_0, &_2, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 960);
6184+ _IGNORE_(_2);
6185+ }
6186+ }
6187+ else
6188+ {
6189+ {
6190+ findTPI(&*_0, &_rest, &*id);
6191+ }
6192+ }
6193+ }
6194+ else
6195+ {
6196+ {
6197+ empty(&*_0, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 965);
6198+ }
6199+ }
6200+}
6201+
61626202 struct constr
61636203 {
61646204 struct typepureid ti;
@@ -6220,7 +6260,7 @@
62206260 }
62216261 {
62226262 const struct typepureid *_4 = &(*dc).ti;
6223- push(0 /* _3 */, &*tis, &*_4, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 968);
6263+ push(0 /* _3 */, &*tis, &*_4, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 979);
62246264 }
62256265 }
62266266 }
@@ -6237,7 +6277,7 @@
62376277 {
62386278 struct stack/*typepureid*/ _tis; memset(&_tis, 0, sizeof(struct stack/*typepureid*/));
62396279 {
6240- stack(&_tis, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 977);
6280+ stack(&_tis, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 988);
62416281 }
62426282 {
62436283 constrToTIsInternal(0 /* _1 */, &*dcs, &_tis);
@@ -6535,7 +6575,7 @@
65356575 {
65366576 size(&_2, &_rest);
65376577 }
6538- solid(&*_0, &_2, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 993);
6578+ solid(&*_0, &_2, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 1004);
65396579 _IGNORE_(_2);
65406580 }
65416581 }
@@ -6549,7 +6589,7 @@
65496589 else
65506590 {
65516591 {
6552- empty(&*_0, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 997);
6592+ empty(&*_0, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 1008);
65536593 }
65546594 }
65556595 }
@@ -6571,7 +6611,7 @@
65716611 if(_1)
65726612 {
65736613 {
6574- solid(&*_0, &*constr, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 1003);
6614+ solid(&*_0, &*constr, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 1014);
65756615 }
65766616 }
65776617 else
@@ -6584,7 +6624,7 @@
65846624 else
65856625 {
65866626 {
6587- empty(&*_0, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 1007);
6627+ empty(&*_0, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 1018);
65886628 }
65896629 }
65906630 }
@@ -6660,7 +6700,7 @@
66606700 constrwithidx(&_2, &*constr, &_3);
66616701 _IGNORE_(_3);
66626702 }
6663- solid(&*_0, &_2, sizeof(struct constrwithidx), (void (*)(void *))constrwithidx$dest, (void (*)(void *, const void *))constrwithidx$copy, 1019);
6703+ solid(&*_0, &_2, sizeof(struct constrwithidx), (void (*)(void *))constrwithidx$dest, (void (*)(void *, const void *))constrwithidx$copy, 1030);
66646704 constrwithidx$dest(&_2);
66656705 }
66666706 }
@@ -6674,7 +6714,7 @@
66746714 else
66756715 {
66766716 {
6677- empty(&*_0, sizeof(struct constrwithidx), (void (*)(void *))constrwithidx$dest, (void (*)(void *, const void *))constrwithidx$copy, 1023);
6717+ empty(&*_0, sizeof(struct constrwithidx), (void (*)(void *))constrwithidx$dest, (void (*)(void *, const void *))constrwithidx$copy, 1034);
66786718 }
66796719 }
66806720 }
@@ -6786,7 +6826,7 @@
67866826 if(_2)
67876827 {
67886828 {
6789- push(0 /* _3 */, &*structs, &*new, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 1053);
6829+ push(0 /* _3 */, &*structs, &*new, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 1064);
67906830 }
67916831 }
67926832 }
@@ -6836,7 +6876,7 @@
68366876 *_2 = 1;
68376877 struct stack/*structdef*/ _3; memset(&_3, 0, sizeof(struct stack/*structdef*/));
68386878 {
6839- solid(&_3, &*cur, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 1067);
6879+ solid(&_3, &*cur, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 1078);
68406880 }
68416881 clone$(&*_0, &_3, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy);
68426882 free$(&_3, sizeof(struct structdef), (void (*)(void *))structdef$dest);
@@ -6852,7 +6892,7 @@
68526892 else
68536893 {
68546894 {
6855- empty(&*_0, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 1073);
6895+ empty(&*_0, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 1084);
68566896 }
68576897 }
68586898 }
@@ -6914,7 +6954,7 @@
69146954 if(_1)
69156955 {
69166956 {
6917- solid(&*_0, &*cur, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 1096);
6957+ solid(&*_0, &*cur, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 1107);
69186958 }
69196959 }
69206960 else
@@ -6927,7 +6967,7 @@
69276967 else
69286968 {
69296969 {
6930- empty(&*_0, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 1100);
6970+ empty(&*_0, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 1111);
69316971 }
69326972 }
69336973 }
@@ -6953,7 +6993,7 @@
69536993 {
69546994 size(&_2, &_rest);
69556995 }
6956- solid(&*_0, &_2, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 1106);
6996+ solid(&*_0, &_2, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 1117);
69576997 _IGNORE_(_2);
69586998 }
69596999 }
@@ -6967,7 +7007,7 @@
69677007 else
69687008 {
69697009 {
6970- empty(&*_0, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 1110);
7010+ empty(&*_0, sizeof(uint64_t), 0/*DEST*/, 0/*COPY*/, 1121);
69717011 }
69727012 }
69737013 }
@@ -6989,7 +7029,7 @@
69897029 if(_1)
69907030 {
69917031 {
6992- solid(&*_0, &*cur, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 1116);
7032+ solid(&*_0, &*cur, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 1127);
69937033 }
69947034 }
69957035 else
@@ -7002,7 +7042,7 @@
70027042 else
70037043 {
70047044 {
7005- empty(&*_0, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 1120);
7045+ empty(&*_0, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 1131);
70067046 }
70077047 }
70087048 }
@@ -9460,7 +9500,7 @@
94609500 {
94619501 ParseArgTypePure$(&_3, &*streams, &*txtpos, &*level, &*structs);
94629502 }
9463- solid(&_1, &_3, sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy, 1711);
9503+ solid(&_1, &_3, sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy, 1722);
94649504 type_pure$dest(&_3);
94659505 }
94669506 }
@@ -9467,7 +9507,7 @@
94679507 else
94689508 {
94699509 {
9470- empty(&_1, sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy, 1713);
9510+ empty(&_1, sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy, 1724);
94719511 }
94729512 }
94739513 clone$(&*_0, &_1, sizeof(struct type_pure), (void (*)(void *))type_pure$dest, (void (*)(void *, const void *))type_pure$copy);
@@ -11339,7 +11379,7 @@
1133911379 struct stack/*qtypepureid*/ _3; memset(&_3, 0, sizeof(struct stack/*qtypepureid*/));
1134011380 {
1134111381 struct qtypepureid *_4 = &(*found).qti;
11342- solid(&_3, &*_4, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2305);
11382+ solid(&_3, &*_4, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2316);
1134311383 }
1134411384 clone$(&*_0, &_3, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy);
1134511385 free$(&_3, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest);
@@ -11355,7 +11395,7 @@
1135511395 else
1135611396 {
1135711397 {
11358- empty(&*_0, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2310);
11398+ empty(&*_0, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2321);
1135911399 }
1136011400 }
1136111401 }
@@ -11390,7 +11430,7 @@
1139011430 struct stack/*qtypepureid*/ _3; memset(&_3, 0, sizeof(struct stack/*qtypepureid*/));
1139111431 {
1139211432 struct qtypepureid *_4 = &(*found).qti;
11393- solid(&_3, &*_4, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2318);
11433+ solid(&_3, &*_4, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2329);
1139411434 }
1139511435 clone$(&*_0, &_3, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy);
1139611436 free$(&_3, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest);
@@ -11419,7 +11459,7 @@
1141911459 struct stack/*qtypepureid*/ _4; memset(&_4, 0, sizeof(struct stack/*qtypepureid*/));
1142011460 {
1142111461 struct qtypepureid *_5 = &(*found).qti;
11422- solid(&_4, &*_5, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2323);
11462+ solid(&_4, &*_5, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2334);
1142311463 }
1142411464 clone$(&*_0, &_4, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy);
1142511465 free$(&_4, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest);
@@ -11436,7 +11476,7 @@
1143611476 else
1143711477 {
1143811478 {
11439- empty(&*_0, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2328);
11479+ empty(&*_0, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2339);
1144011480 }
1144111481 }
1144211482 }
@@ -11604,7 +11644,7 @@
1160411644 {
1160511645 const struct qtypepureid *v = (*_2).data;
1160611646 {
11607- solid(&_1, &*v, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2376);
11647+ solid(&_1, &*v, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2387);
1160811648 }
1160911649 }
1161011650 clone$(&*_0, &_1, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy);
@@ -11615,7 +11655,7 @@
1161511655 else
1161611656 {
1161711657 {
11618- empty(&*_0, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2378);
11658+ empty(&*_0, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2389);
1161911659 }
1162011660 }
1162111661 }
@@ -11710,13 +11750,13 @@
1171011750 {
1171111751 struct stack/*vscope*/ *_2 = &(*sp).elems;
1171211752 struct vscope *_3 = &(*sp).current;
11713- push(0 /* _1 */, &*_2, &*_3, sizeof(struct vscope), (void (*)(void *))vscope$dest, (void (*)(void *, const void *))vscope$copy, 2399);
11753+ push(0 /* _1 */, &*_2, &*_3, sizeof(struct vscope), (void (*)(void *))vscope$dest, (void (*)(void *, const void *))vscope$copy, 2410);
1171411754 }
1171511755 struct vscope *_2 = &(*sp).current;
1171611756 {
1171711757 struct stack/*var*/ _3; memset(&_3, 0, sizeof(struct stack/*var*/));
1171811758 {
11719- stack(&_3, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2400);
11759+ stack(&_3, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2411);
1172011760 }
1172111761 vscope(&*_2, &_3);
1172211762 free$(&_3, sizeof(struct var), (void (*)(void *))var$dest);
@@ -11730,7 +11770,7 @@
1173011770 struct vscope *_1 = &(*sp).current;
1173111771 {
1173211772 struct stack/*vscope*/ *_2 = &(*sp).elems;
11733- pop$(&*_1, &*_2, sizeof(struct vscope), (void (*)(void *))vscope$dest, (void (*)(void *, const void *))vscope$copy, 2405);
11773+ pop$(&*_1, &*_2, sizeof(struct vscope), (void (*)(void *))vscope$dest, (void (*)(void *, const void *))vscope$copy, 2416);
1173411774 }
1173511775 }
1173611776 }
@@ -11764,7 +11804,7 @@
1176411804 {
1176511805 const struct qtypepureid *found = (*_2).data;
1176611806 {
11767- solid(&_1, &*found, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2417);
11807+ solid(&_1, &*found, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2428);
1176811808 }
1176911809 }
1177011810 clone$(&*_0, &_1, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy);
@@ -11792,7 +11832,7 @@
1179211832 {
1179311833 const struct qtypepureid *found = (*_2).data;
1179411834 {
11795- solid(&_1, &*found, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2427);
11835+ solid(&_1, &*found, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 2438);
1179611836 }
1179711837 }
1179811838 clone$(&*_0, &_1, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy);
@@ -11884,7 +11924,7 @@
1188411924 if(_1)
1188511925 {
1188611926 {
11887- solid(&*_0, &*var, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2463);
11927+ solid(&*_0, &*var, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2474);
1188811928 }
1188911929 }
1189011930 else
@@ -11897,7 +11937,7 @@
1189711937 else
1189811938 {
1189911939 {
11900- empty(&*_0, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2467);
11940+ empty(&*_0, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 2478);
1190111941 }
1190211942 }
1190311943 }
@@ -12570,7 +12610,7 @@
1257012610 *_2 = 1;
1257112611 struct stack/*def*/ _3; memset(&_3, 0, sizeof(struct stack/*def*/));
1257212612 {
12573- solid(&_3, &*cur, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 2576);
12613+ solid(&_3, &*cur, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 2587);
1257412614 }
1257512615 clone$(&*_0, &_3, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy);
1257612616 free$(&_3, sizeof(struct def), (void (*)(void *))def$dest);
@@ -12586,7 +12626,7 @@
1258612626 else
1258712627 {
1258812628 {
12589- empty(&*_0, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 2581);
12629+ empty(&*_0, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 2592);
1259012630 }
1259112631 }
1259212632 }
@@ -12608,7 +12648,7 @@
1260812648 if(_1)
1260912649 {
1261012650 {
12611- solid(&*_0, &*cur, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 2587);
12651+ solid(&*_0, &*cur, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 2598);
1261212652 }
1261312653 }
1261412654 else
@@ -12621,7 +12661,7 @@
1262112661 else
1262212662 {
1262312663 {
12624- empty(&*_0, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 2591);
12664+ empty(&*_0, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 2602);
1262512665 }
1262612666 }
1262712667 }
@@ -12631,7 +12671,7 @@
1263112671 {
1263212672 struct stack/*flavour*/ _1; memset(&_1, 0, sizeof(struct stack/*flavour*/));
1263312673 {
12634- solid(&_1, &*type, sizeof(struct flavour), (void (*)(void *))flavour$dest, (void (*)(void *, const void *))flavour$copy, 2593);
12674+ solid(&_1, &*type, sizeof(struct flavour), (void (*)(void *))flavour$dest, (void (*)(void *, const void *))flavour$copy, 2604);
1263512675 }
1263612676 bool _2; memset(&_2, 0, sizeof(bool));
1263712677 _2 = 0;
@@ -12646,7 +12686,7 @@
1264612686 {
1264712687 struct stack/*flavour*/ _1; memset(&_1, 0, sizeof(struct stack/*flavour*/));
1264812688 {
12649- solid(&_1, &*type, sizeof(struct flavour), (void (*)(void *))flavour$dest, (void (*)(void *, const void *))flavour$copy, 2594);
12689+ solid(&_1, &*type, sizeof(struct flavour), (void (*)(void *))flavour$dest, (void (*)(void *, const void *))flavour$copy, 2605);
1265012690 }
1265112691 bool _2; memset(&_2, 0, sizeof(bool));
1265212692 _2 = 1;
@@ -12704,7 +12744,7 @@
1270412744 {
1270512745 {
1270612746 {
12707- push(0 /* _1 */, &*defs, &*def, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 2613);
12747+ push(0 /* _1 */, &*defs, &*def, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 2624);
1270812748 }
1270912749 }
1271012750 }
@@ -12713,7 +12753,7 @@
1271312753 {
1271412754 {
1271512755 {
12716- push(0 /* _1 */, &*pars, &*par, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 2618);
12756+ push(0 /* _1 */, &*pars, &*par, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 2629);
1271712757 }
1271812758 }
1271912759 }
@@ -12824,7 +12864,7 @@
1282412864 parused(&_11, &_12);
1282512865 qtypepureid$dest(&_12);
1282612866 }
12827- push(0 /* _9 */, &*_10, &_11, sizeof(struct par), (void (*)(void *))par$dest, (void (*)(void *, const void *))par$copy, 2640);
12867+ push(0 /* _9 */, &*_10, &_11, sizeof(struct par), (void (*)(void *))par$dest, (void (*)(void *, const void *))par$copy, 2651);
1282812868 par$dest(&_11);
1282912869 }
1283012870 qtypepureid$dest(&_parext);
@@ -12937,7 +12977,7 @@
1293712977 parinit(&_11, &_12);
1293812978 qtypepureid$dest(&_12);
1293912979 }
12940- push(0 /* _9 */, &*_10, &_11, sizeof(struct par), (void (*)(void *))par$dest, (void (*)(void *, const void *))par$copy, 2662);
12980+ push(0 /* _9 */, &*_10, &_11, sizeof(struct par), (void (*)(void *))par$dest, (void (*)(void *, const void *))par$copy, 2673);
1294112981 par$dest(&_11);
1294212982 }
1294312983 qtypepureid$dest(&_parext);
@@ -13802,7 +13842,7 @@
1380213842 const struct typepureid *cur = (*_9).data;
1380313843 {
1380413844 {
13805- push(0 /* _10 */, &*path, &*id, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 2945);
13845+ push(0 /* _10 */, &*path, &*id, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 2956);
1380613846 }
1380713847 struct type_pure _11; memset(&_11, 0, sizeof(struct type_pure));
1380813848 {
@@ -14282,7 +14322,7 @@
1428214322 {
1428314323 uint64_t _12; memset(&_12, 0, sizeof(uint64_t));
1428414324 _12 = 0;
14285- at_get$(&_arg0, &*argids, &_12, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 3070);
14325+ at_get$(&_arg0, &*argids, &_12, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 3081);
1428614326 _IGNORE_(_12);
1428714327 }
1428814328 bool _13;
@@ -14433,7 +14473,7 @@
1443314473 {
1443414474 uint64_t _13; memset(&_13, 0, sizeof(uint64_t));
1443514475 _13 = 0;
14436- at_get$(&_arg0, &*argids, &_13, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 3103);
14476+ at_get$(&_arg0, &*argids, &_13, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 3114);
1443714477 _IGNORE_(_13);
1443814478 }
1443914479 struct string _arg1; memset(&_arg1, 0, sizeof(struct string));
@@ -14440,7 +14480,7 @@
1444014480 {
1444114481 uint64_t _13; memset(&_13, 0, sizeof(uint64_t));
1444214482 _13 = 1;
14443- at_get$(&_arg1, &*argids, &_13, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 3104);
14483+ at_get$(&_arg1, &*argids, &_13, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 3115);
1444414484 _IGNORE_(_13);
1444514485 }
1444614486 bool _14;
@@ -14982,7 +15022,7 @@
1498215022 _31 = _n - _32;
1498315023 _IGNORE_(_32);
1498415024 }
14985- at_get$(&_29, &*_30, &_31, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 3248);
15025+ at_get$(&_29, &*_30, &_31, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 3259);
1498615026 _IGNORE_(_31);
1498715027 }
1498815028 _27 = _28 == _29;
@@ -15003,7 +15043,7 @@
1500315043 _32 = _n - _33;
1500415044 _IGNORE_(_33);
1500515045 }
15006- at_get$(&_30, &*_31, &_32, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 3249);
15046+ at_get$(&_30, &*_31, &_32, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 3260);
1500715047 _IGNORE_(_32);
1500815048 }
1500915049 _28 = _29 == _30;
@@ -15030,7 +15070,7 @@
1503015070 _32 = _n - _33;
1503115071 _IGNORE_(_33);
1503215072 }
15033- at_get$(&_30, &*_31, &_32, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 3253);
15073+ at_get$(&_30, &*_31, &_32, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 3264);
1503415074 _IGNORE_(_32);
1503515075 }
1503615076 _28 = _29 == _30;
@@ -15051,7 +15091,7 @@
1505115091 _33 = _n - _34;
1505215092 _IGNORE_(_34);
1505315093 }
15054- at_get$(&_31, &*_32, &_33, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 3254);
15094+ at_get$(&_31, &*_32, &_33, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 3265);
1505515095 _IGNORE_(_33);
1505615096 }
1505715097 _29 = _30 == _31;
@@ -15082,7 +15122,7 @@
1508215122 _31 = _n - _32;
1508315123 _IGNORE_(_32);
1508415124 }
15085- at_get$(&_29, &*_30, &_31, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 3259);
15125+ at_get$(&_29, &*_30, &_31, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 3270);
1508615126 _IGNORE_(_31);
1508715127 }
1508815128 _27 = _28 == _29;
@@ -15103,7 +15143,7 @@
1510315143 _32 = _n - _33;
1510415144 _IGNORE_(_33);
1510515145 }
15106- at_get$(&_30, &*_31, &_32, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 3260);
15146+ at_get$(&_30, &*_31, &_32, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 3271);
1510715147 _IGNORE_(_32);
1510815148 }
1510915149 _28 = _29 == _30;
@@ -15216,7 +15256,7 @@
1521615256 _30 = _n - _31;
1521715257 _IGNORE_(_31);
1521815258 }
15219- at_get$(&_28, &*_29, &_30, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 3293);
15259+ at_get$(&_28, &*_29, &_30, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 3304);
1522015260 _IGNORE_(_30);
1522115261 }
1522215262 _26 = _27 == _28;
@@ -15237,7 +15277,7 @@
1523715277 _31 = _n - _32;
1523815278 _IGNORE_(_32);
1523915279 }
15240- at_get$(&_29, &*_30, &_31, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 3294);
15280+ at_get$(&_29, &*_30, &_31, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 3305);
1524115281 _IGNORE_(_31);
1524215282 }
1524315283 _27 = _28 == _29;
@@ -15262,7 +15302,7 @@
1526215302 _30 = _n - _31;
1526315303 _IGNORE_(_31);
1526415304 }
15265- at_get$(&_28, &*_29, &_30, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 3296);
15305+ at_get$(&_28, &*_29, &_30, sizeof(uint8_t), 0/*DEST*/, 0/*COPY*/, 3307);
1526615306 _IGNORE_(_30);
1526715307 }
1526815308 _26 = _27 == _28;
@@ -15460,7 +15500,7 @@
1546015500 {
1546115501 size(&_7, &*argids);
1546215502 }
15463- at_get$(&_par, &*_6, &_7, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 3350);
15503+ at_get$(&_par, &*_6, &_7, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 3361);
1546415504 _IGNORE_(_7);
1546515505 }
1546615506 struct qtypepure _partyp; memset(&_partyp, 0, sizeof(struct qtypepure));
@@ -15562,7 +15602,7 @@
1556215602 {
1556315603 size(&_6, &*argids);
1556415604 }
15565- at_get$(&_par, &*_5, &_6, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 3376);
15605+ at_get$(&_par, &*_5, &_6, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 3387);
1556615606 _IGNORE_(_6);
1556715607 }
1556815608 struct qtypepure _partyp; memset(&_partyp, 0, sizeof(struct qtypepure));
@@ -15716,7 +15756,7 @@
1571615756 if(_1)
1571715757 {
1571815758 {
15719- solid(&*_0, &*current, sizeof(struct idpath), (void (*)(void *))idpath$dest, (void (*)(void *, const void *))idpath$copy, 3412);
15759+ solid(&*_0, &*current, sizeof(struct idpath), (void (*)(void *))idpath$dest, (void (*)(void *, const void *))idpath$copy, 3423);
1572015760 }
1572115761 }
1572215762 else
@@ -15729,7 +15769,7 @@
1572915769 else
1573015770 {
1573115771 {
15732- empty(&*_0, sizeof(struct idpath), (void (*)(void *))idpath$dest, (void (*)(void *, const void *))idpath$copy, 3416);
15772+ empty(&*_0, sizeof(struct idpath), (void (*)(void *))idpath$dest, (void (*)(void *, const void *))idpath$copy, 3427);
1573315773 }
1573415774 }
1573515775 }
@@ -15769,7 +15809,7 @@
1576915809 {
1577015810 size(&_4, &*argids);
1577115811 }
15772- at_get$(&_rel, &*_3, &_4, sizeof(struct par), (void (*)(void *))par$dest, (void (*)(void *, const void *))par$copy, 3429);
15812+ at_get$(&_rel, &*_3, &_4, sizeof(struct par), (void (*)(void *))par$dest, (void (*)(void *, const void *))par$copy, 3440);
1577315813 _IGNORE_(_4);
1577415814 }
1577515815 struct ReducedId _ri; memset(&_ri, 0, sizeof(struct ReducedId));
@@ -15901,13 +15941,13 @@
1590115941 {
1590215942 struct stack/*qtypepureid*/ _11; memset(&_11, 0, sizeof(struct stack/*qtypepureid*/));
1590315943 {
15904- solid(&_11, &_mut_pv, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3468);
15944+ solid(&_11, &_mut_pv, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3479);
1590515945 }
1590615946 ParseExpr$(0 /* _10 */, &*streams, &*txtpos, &*state, &*level, &*sp, &*tmpnr, &_11, &_id, &_totality, &*action, &*self, &*reduced_ids);
1590715947 free$(&_11, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest);
1590815948 }
1590915949 {
15910- push(0 /* _11 */, &*argids, &_provide_id, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 3470);
15950+ push(0 /* _11 */, &*argids, &_provide_id, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 3481);
1591115951 }
1591215952 {
1591315953 uint64_t _13; memset(&_13, 0, sizeof(uint64_t));
@@ -16018,7 +16058,7 @@
1601816058 }
1601916059 }
1602016060 {
16021- push(0 /* _16 */, &*ips, &_ip, sizeof(struct idpath), (void (*)(void *))idpath$dest, (void (*)(void *, const void *))idpath$copy, 3504);
16061+ push(0 /* _16 */, &*ips, &_ip, sizeof(struct idpath), (void (*)(void *))idpath$dest, (void (*)(void *, const void *))idpath$copy, 3515);
1602216062 }
1602316063 free$(&_previous, sizeof(struct idpath), (void (*)(void *))idpath$dest);
1602416064 }
@@ -16032,7 +16072,7 @@
1603216072 }
1603316073 {
1603416074 struct string *_14 = &(_provide).id;
16035- push(0 /* _13 */, &*argids, &*_14, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 3507);
16075+ push(0 /* _13 */, &*argids, &*_14, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 3518);
1603616076 }
1603716077 bool _15;
1603816078 {
@@ -16122,7 +16162,7 @@
1612216162 {
1612316163 struct string _7; memset(&_7, 0, sizeof(struct string));
1612416164 init$fromliteral(&_7, "$", 1);
16125- strcat$(&_6, &_7, &*name, 3535);
16165+ strcat$(&_6, &_7, &*name, 3546);
1612616166 string$dest(&_7);
1612716167 }
1612816168 string$copy(&*_0, &_6);
@@ -16141,11 +16181,11 @@
1614116181 {
1614216182 getpurename(&_5, &*subtype);
1614316183 }
16144- strcat$(&_3, &_4, &_5, 3537);
16184+ strcat$(&_3, &_4, &_5, 3548);
1614516185 string$dest(&_5);
1614616186 string$dest(&_4);
1614716187 }
16148- strcat$(&*_0, &*name, &_3, 3537);
16188+ strcat$(&*_0, &*name, &_3, 3548);
1614916189 string$dest(&_3);
1615016190 }
1615116191 }
@@ -16366,7 +16406,7 @@
1636616406 {
1636716407 struct stack/*string*/ _16; memset(&_16, 0, sizeof(struct stack/*string*/));
1636816408 {
16369- /*argids*/ stack(&_16, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 3635);
16409+ /*argids*/ stack(&_16, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 3646);
1637016410 }
1637116411 struct string _17; memset(&_17, 0, sizeof(struct string));
1637216412 {
@@ -16375,7 +16415,7 @@
1637516415 }
1637616416 struct stack/*idpath*/ _18; memset(&_18, 0, sizeof(struct stack/*idpath*/));
1637716417 {
16378- /*ips*/ stack(&_18, sizeof(struct idpath), (void (*)(void *))idpath$dest, (void (*)(void *, const void *))idpath$copy, 3635);
16418+ /*ips*/ stack(&_18, sizeof(struct idpath), (void (*)(void *))idpath$dest, (void (*)(void *, const void *))idpath$copy, 3646);
1637916419 }
1638016420 ParseArgs$(0 /* _15 */, &*streams, &*txtpos, &*state, &*level, &*sp, &_tmpnr, &*def, &*totality, &*action, &*self, &*reduced_ids, &_newstore, &_16, &_17, &_st_, &_18);
1638116421 free$(&_18, sizeof(struct idpath), (void (*)(void *))idpath$dest);
@@ -16424,7 +16464,7 @@
1642416464 {
1642516465 struct stack/*string*/ _17; memset(&_17, 0, sizeof(struct stack/*string*/));
1642616466 {
16427- /*argids*/ stack(&_17, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 3641);
16467+ /*argids*/ stack(&_17, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 3652);
1642816468 }
1642916469 struct string _18; memset(&_18, 0, sizeof(struct string));
1643016470 {
@@ -16433,7 +16473,7 @@
1643316473 }
1643416474 struct stack/*idpath*/ _19; memset(&_19, 0, sizeof(struct stack/*idpath*/));
1643516475 {
16436- /*ids*/ stack(&_19, sizeof(struct idpath), (void (*)(void *))idpath$dest, (void (*)(void *, const void *))idpath$copy, 3641);
16476+ /*ids*/ stack(&_19, sizeof(struct idpath), (void (*)(void *))idpath$dest, (void (*)(void *, const void *))idpath$copy, 3652);
1643716477 }
1643816478 ParseArgs$(0 /* _16 */, &*streams, &*txtpos, &*state, &*level, &*sp, &_tmpnr, &*def, &*totality, &*action, &*self, &*reduced_ids, &*store, &_17, &_18, &_st_, &_19);
1643916479 free$(&_19, sizeof(struct idpath), (void (*)(void *))idpath$dest);
@@ -16584,7 +16624,7 @@
1658416624 {
1658516625 struct stack/*qtypepureid*/ _5; memset(&_5, 0, sizeof(struct stack/*qtypepureid*/));
1658616626 {
16587- solid(&_5, &_pred, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3673);
16627+ solid(&_5, &_pred, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3684);
1658816628 }
1658916629 struct string _6; memset(&_6, 0, sizeof(struct string));
1659016630 {
@@ -16651,7 +16691,7 @@
1665116691 {
1665216692 struct stack/*qtypepureid*/ _12; memset(&_12, 0, sizeof(struct stack/*qtypepureid*/));
1665316693 {
16654- solid(&_12, &*provide, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3682);
16694+ solid(&_12, &*provide, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3693);
1665516695 }
1665616696 ParseBlock$(0 /* _11 */, &*streams, &*txtpos, &*state, &*level, &*sp, &*tmpnr, &_12, &*totality, &*action, &*self, &*reduced_ids);
1665716697 free$(&_12, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest);
@@ -16710,7 +16750,7 @@
1671016750 }
1671116751 struct stack/*qtypepureid*/ _22; memset(&_22, 0, sizeof(struct stack/*qtypepureid*/));
1671216752 {
16713- solid(&_22, &*provide, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3693);
16753+ solid(&_22, &*provide, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3704);
1671416754 }
1671516755 ParseBlockRaw$(0 /* _20 */, &*streams, &*txtpos, &*state, &_21, &*sp, &*tmpnr, &_22, &*totality, &*action, &*self, &*reduced_ids);
1671616756 free$(&_22, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest);
@@ -16893,7 +16933,7 @@
1689316933 {
1689416934 struct stack/*qtypepureid*/ _8; memset(&_8, 0, sizeof(struct stack/*qtypepureid*/));
1689516935 {
16896- solid(&_8, &_provide, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3735);
16936+ solid(&_8, &_provide, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3746);
1689716937 }
1689816938 ParseBlock$(0 /* _7 */, &*streams, &*txtpos, &*state, &*level, &*sp, &*tmpnr, &_8, &*totality, &*action, &*self, &*reduced_ids);
1689916939 free$(&_8, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest);
@@ -16962,7 +17002,7 @@
1696217002 }
1696317003 struct stack/*qtypepureid*/ _10; memset(&_10, 0, sizeof(struct stack/*qtypepureid*/));
1696417004 {
16965- solid(&_10, &_provide, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3752);
17005+ solid(&_10, &_provide, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3763);
1696617006 }
1696717007 ParseCall$(0 /* _8 */, &*streams, &*txtpos, &*state, &_9, &*sp, &*tmpnr, &_10, &*id, &*totality, &*action, &*self, &*reduced_ids);
1696817008 free$(&_10, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest);
@@ -17026,7 +17066,7 @@
1702617066 {
1702717067 struct stack/*qtypepureid*/ _9; memset(&_9, 0, sizeof(struct stack/*qtypepureid*/));
1702817068 {
17029- solid(&_9, &_provide, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3765);
17069+ solid(&_9, &_provide, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3776);
1703017070 }
1703117071 struct string _10; memset(&_10, 0, sizeof(struct string));
1703217072 {
@@ -17093,7 +17133,7 @@
1709317133 {
1709417134 struct stack/*qtypepureid*/ _12; memset(&_12, 0, sizeof(struct stack/*qtypepureid*/));
1709517135 {
17096- solid(&_12, &_provide, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3788);
17136+ solid(&_12, &_provide, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 3799);
1709717137 }
1709817138 ParseExpr$(0 /* _11 */, &*streams, &*txtpos, &*state, &*level, &*sp, &*tmpnr, &_12, &*id, &*totality, &*action, &*self, &*reduced_ids);
1709917139 free$(&_12, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest);
@@ -17194,7 +17234,7 @@
1719417234 {
1719517235 varinit(&_13, &_qti);
1719617236 }
17197- push(0 /* _11 */, &*_12, &_13, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3804);
17237+ push(0 /* _11 */, &*_12, &_13, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3815);
1719817238 var$dest(&_13);
1719917239 }
1720017240 qtypepureid$dest(&_qti);
@@ -17284,7 +17324,7 @@
1728417324 {
1728517325 varinit(&_16, &_qti);
1728617326 }
17287- push(0 /* _14 */, &*_15, &_16, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3814);
17327+ push(0 /* _14 */, &*_15, &_16, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3825);
1728817328 var$dest(&_16);
1728917329 }
1729017330 qtypepureid$dest(&_qti);
@@ -17364,7 +17404,7 @@
1736417404 {
1736517405 varinit(&_17, &_qti);
1736617406 }
17367- push(0 /* _15 */, &*_16, &_17, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3820);
17407+ push(0 /* _15 */, &*_16, &_17, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3831);
1736817408 var$dest(&_17);
1736917409 }
1737017410 qtypepureid$dest(&_qti);
@@ -17444,7 +17484,7 @@
1744417484 {
1744517485 varinit(&_18, &_qti);
1744617486 }
17447- push(0 /* _16 */, &*_17, &_18, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3826);
17487+ push(0 /* _16 */, &*_17, &_18, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3837);
1744817488 var$dest(&_18);
1744917489 }
1745017490 qtypepureid$dest(&_qti);
@@ -17529,7 +17569,7 @@
1752917569 {
1753017570 varinit(&_19, &_qti);
1753117571 }
17532- push(0 /* _17 */, &*_18, &_19, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3832);
17572+ push(0 /* _17 */, &*_18, &_19, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3843);
1753317573 var$dest(&_19);
1753417574 }
1753517575 qtypepureid$dest(&_qti);
@@ -17662,7 +17702,7 @@
1766217702 {
1766317703 struct typepureid _ti; memset(&_ti, 0, sizeof(struct typepureid));
1766417704 {
17665- at_get$(&_ti, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 3857);
17705+ at_get$(&_ti, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 3868);
1766617706 }
1766717707 {
1766817708 const struct string *_4 = &(_ti).id;
@@ -17677,13 +17717,13 @@
1767717717 if(_4)
1767817718 {
1767917719 {
17680- empty(&_id, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 3863);
17720+ empty(&_id, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 3874);
1768117721 }
1768217722 }
1768317723 else
1768417724 {
1768517725 {
17686- solid(&_id, &*shadow, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 3865);
17726+ solid(&_id, &*shadow, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 3876);
1768717727 }
1768817728 }
1768917729 {
@@ -17924,7 +17964,7 @@
1792417964 {
1792517965 varinit(&_4, &*qti);
1792617966 }
17927- push(0 /* _2 */, &*_3, &_4, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3908);
17967+ push(0 /* _2 */, &*_3, &_4, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 3919);
1792817968 var$dest(&_4);
1792917969 }
1793017970 bool _4;
@@ -18026,7 +18066,7 @@
1802618066 {
1802718067 ReducedId(&_3, &*provide_id, &*id);
1802818068 }
18029- push(0 /* _2 */, &*reduced_ids, &_3, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest, (void (*)(void *, const void *))ReducedId$copy, 3930);
18069+ push(0 /* _2 */, &*reduced_ids, &_3, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest, (void (*)(void *, const void *))ReducedId$copy, 3941);
1803018070 ReducedId$dest(&_3);
1803118071 }
1803218072 struct type_mode _qualifier; memset(&_qualifier, 0, sizeof(struct type_mode));
@@ -18509,7 +18549,7 @@
1850918549 }
1851018550 struct stack/*string*/ _var; memset(&_var, 0, sizeof(struct stack/*string*/));
1851118551 {
18512- solid(&_var, &*id, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 4029);
18552+ solid(&_var, &*id, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 4040);
1851318553 }
1851418554 {
1851518555 uint8_t _28; memset(&_28, 0, sizeof(uint8_t));
@@ -18834,7 +18874,7 @@
1883418874 {
1883518875 varinit(&_6, &*access);
1883618876 }
18837- push(0 /* _4 */, &*_5, &_6, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 4096);
18877+ push(0 /* _4 */, &*_5, &_6, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 4107);
1883818878 var$dest(&_6);
1883918879 }
1884018880 }
@@ -19001,7 +19041,7 @@
1900119041 {
1900219042 varinit(&_16, &_elem);
1900319043 }
19004- push(0 /* _14 */, &*_15, &_16, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 4123);
19044+ push(0 /* _14 */, &*_15, &_16, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 4134);
1900519045 var$dest(&_16);
1900619046 }
1900719047 qtypepureid$dest(&_elem);
@@ -19024,7 +19064,7 @@
1902419064 {
1902519065 varused(&_8, &*stack);
1902619066 }
19027- push(0 /* _6 */, &*_7, &_8, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 4129);
19067+ push(0 /* _6 */, &*_7, &_8, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 4140);
1902819068 var$dest(&_8);
1902919069 }
1903019070 }
@@ -19191,7 +19231,7 @@
1919119231 {
1919219232 varinit(&_16, &_elem);
1919319233 }
19194- push(0 /* _14 */, &*_15, &_16, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 4156);
19234+ push(0 /* _14 */, &*_15, &_16, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 4167);
1919519235 var$dest(&_16);
1919619236 }
1919719237 qtypepureid$dest(&_elem);
@@ -19214,7 +19254,7 @@
1921419254 {
1921519255 varused(&_8, &*stack);
1921619256 }
19217- push(0 /* _6 */, &*_7, &_8, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 4162);
19257+ push(0 /* _6 */, &*_7, &_8, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 4173);
1921819258 var$dest(&_8);
1921919259 }
1922019260 }
@@ -19347,7 +19387,7 @@
1934719387 {
1934819388 ParseId$(&_8, &*streams, &*txtpos, &*level);
1934919389 }
19350- solid(&_opt_elem_id, &_8, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 4204);
19390+ solid(&_opt_elem_id, &_8, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 4215);
1935119391 string$dest(&_8);
1935219392 }
1935319393 }
@@ -19354,7 +19394,7 @@
1935419394 else
1935519395 {
1935619396 {
19357- empty(&_opt_elem_id, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 4206);
19397+ empty(&_opt_elem_id, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 4217);
1935819398 }
1935919399 }
1936019400 {
@@ -19406,7 +19446,7 @@
1940619446 const struct string *_14 = &(*current).id;
1940719447 ReducedId(&_13, &*_14, &_reduced_id);
1940819448 }
19409- push(0 /* _12 */, &_reduced_ids, &_13, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest, (void (*)(void *, const void *))ReducedId$copy, 4216);
19449+ push(0 /* _12 */, &_reduced_ids, &_13, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest, (void (*)(void *, const void *))ReducedId$copy, 4227);
1941019450 ReducedId$dest(&_13);
1941119451 }
1941219452 struct type_pure _tp; memset(&_tp, 0, sizeof(struct type_pure));
@@ -19640,7 +19680,7 @@
1964019680 const struct string *_23 = &(*current).id;
1964119681 ReducedId(&_22, &*_23, &_par);
1964219682 }
19643- push(0 /* _21 */, &_reduced_ids, &_22, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest, (void (*)(void *, const void *))ReducedId$copy, 4258);
19683+ push(0 /* _21 */, &_reduced_ids, &_22, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest, (void (*)(void *, const void *))ReducedId$copy, 4269);
1964419684 ReducedId$dest(&_22);
1964519685 }
1964619686 struct qtypepureid _elem; memset(&_elem, 0, sizeof(struct qtypepureid));
@@ -21044,7 +21084,7 @@
2104421084 {
2104521085 struct stack/*qtypepureid*/ _10; memset(&_10, 0, sizeof(struct stack/*qtypepureid*/));
2104621086 {
21047- solid(&_10, &_pred, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4492);
21087+ solid(&_10, &_pred, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4503);
2104821088 }
2104921089 ParseExpr$(0 /* _9 */, &*streams, &*txtpos, &*state, &*level, &*sp, &*tmpnr, &_10, &*id, &*totality, &*action, &*self, &*reduced_ids);
2105021090 free$(&_10, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest);
@@ -21751,7 +21791,7 @@
2175121791 {
2175221792 struct stack/*qtypepureid*/ _4; memset(&_4, 0, sizeof(struct stack/*qtypepureid*/));
2175321793 {
21754- solid(&_4, &*store, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4642);
21794+ solid(&_4, &*store, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4653);
2175521795 }
2175621796 ParseExpr$(0 /* _3 */, &*streams, &*txtpos, &*state, &*level, &*sp, &_tmpnr, &_4, &_id, &*totality, &*action, &*self, &*reduced_ids);
2175721797 free$(&_4, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest);
@@ -21906,7 +21946,7 @@
2190621946 {
2190721947 struct stack/*qtypepureid*/ _5; memset(&_5, 0, sizeof(struct stack/*qtypepureid*/));
2190821948 {
21909- empty(&_5, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4690);
21949+ empty(&_5, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4701);
2191021950 }
2191121951 ParseExpr$(0 /* _4 */, &*streams, &*txtpos, &*state, &*level, &*sp, &*tmpnr, &_5, &_id, &*totality, &*action, &*self, &*reduced_ids);
2191221952 free$(&_5, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest);
@@ -22067,7 +22107,7 @@
2206722107 {
2206822108 struct stack/*qtypepureid*/ _14; memset(&_14, 0, sizeof(struct stack/*qtypepureid*/));
2206922109 {
22070- solid(&_14, &_mut_st, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4721);
22110+ solid(&_14, &_mut_st, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4732);
2207122111 }
2207222112 struct string _15; memset(&_15, 0, sizeof(struct string));
2207322113 {
@@ -22086,7 +22126,7 @@
2208622126 {
2208722127 varinit(&_11, &_new);
2208822128 }
22089- push(0 /* _9 */, &*_10, &_11, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 4725);
22129+ push(0 /* _9 */, &*_10, &_11, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 4736);
2209022130 var$dest(&_11);
2209122131 }
2209222132 {
@@ -22321,7 +22361,7 @@
2232122361 }
2232222362 struct stack/*qtypepureid*/ _20; memset(&_20, 0, sizeof(struct stack/*qtypepureid*/));
2232322363 {
22324- solid(&_20, &_mut_st, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4767);
22364+ solid(&_20, &_mut_st, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4778);
2232522365 }
2232622366 struct string _21; memset(&_21, 0, sizeof(struct string));
2232722367 {
@@ -22384,7 +22424,7 @@
2238422424 {
2238522425 varinit(&_16, &_ref);
2238622426 }
22387- push(0 /* _14 */, &*_15, &_16, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 4773);
22427+ push(0 /* _14 */, &*_15, &_16, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 4784);
2238822428 var$dest(&_16);
2238922429 }
2239022430 {
@@ -22535,7 +22575,7 @@
2253522575 {
2253622576 struct stack/*qtypepureid*/ _11; memset(&_11, 0, sizeof(struct stack/*qtypepureid*/));
2253722577 {
22538- empty(&_11, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4823);
22578+ empty(&_11, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4834);
2253922579 }
2254022580 ParseExpr$(0 /* _10 */, &*streams, &*txtpos, &*state, &*level, &*sp, &*tmpnr, &_11, &_id, &*totality, &*action, &*self, &*reduced_ids);
2254122581 free$(&_11, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest);
@@ -22575,7 +22615,7 @@
2257522615 {
2257622616 struct stack/*qtypepureid*/ _13; memset(&_13, 0, sizeof(struct stack/*qtypepureid*/));
2257722617 {
22578- solid(&_13, &_mut_pv, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4834);
22618+ solid(&_13, &_mut_pv, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4845);
2257922619 }
2258022620 ParseExpr$(0 /* _12 */, &*streams, &*txtpos, &*state, &*level, &*sp, &*tmpnr, &_13, &_id, &*totality, &*action, &*self, &*reduced_ids);
2258122621 free$(&_13, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest);
@@ -22843,7 +22883,7 @@
2284322883 varinit(&_6, &_7);
2284422884 qtypepureid$dest(&_7);
2284522885 }
22846- push(0 /* _4 */, &*_5, &_6, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 4888);
22886+ push(0 /* _4 */, &*_5, &_6, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 4899);
2284722887 var$dest(&_6);
2284822888 }
2284922889 }
@@ -22987,7 +23027,7 @@
2298723027 }
2298823028 struct stack/*qtypepureid*/ _27; memset(&_27, 0, sizeof(struct stack/*qtypepureid*/));
2298923029 {
22990- empty(&_27, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4907);
23030+ empty(&_27, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4918);
2299123031 }
2299223032 ParseBlockRaw$(0 /* _25 */, &*streams, &*txtpos, &*state, &_26, &*sp, &*tmpnr, &_27, &*totality, &*action, &*self, &*reduced_ids);
2299323033 free$(&_27, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest);
@@ -23119,7 +23159,7 @@
2311923159 varinit(&_11, &_12);
2312023160 qtypepureid$dest(&_12);
2312123161 }
23122- push(0 /* _9 */, &*_10, &_11, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 4924);
23162+ push(0 /* _9 */, &*_10, &_11, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 4935);
2312323163 var$dest(&_11);
2312423164 }
2312523165 {
@@ -23198,7 +23238,7 @@
2319823238 }
2319923239 struct stack/*qtypepureid*/ _21; memset(&_21, 0, sizeof(struct stack/*qtypepureid*/));
2320023240 {
23201- empty(&_21, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4929);
23241+ empty(&_21, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 4940);
2320223242 }
2320323243 ParseBlock$(0 /* _19 */, &*streams, &*txtpos, &*state, &_20, &*sp, &*tmpnr, &_21, &*totality, &*action, &*self, &*reduced_ids);
2320423244 free$(&_21, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest);
@@ -23673,7 +23713,7 @@
2367323713 {
2367423714 varinit(&_42, &_mut_elem);
2367523715 }
23676- push(0 /* _40 */, &*_41, &_42, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 5020);
23716+ push(0 /* _40 */, &*_41, &_42, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 5031);
2367723717 var$dest(&_42);
2367823718 }
2367923719 {
@@ -23686,7 +23726,7 @@
2368623726 }
2368723727 struct stack/*qtypepureid*/ _43; memset(&_43, 0, sizeof(struct stack/*qtypepureid*/));
2368823728 {
23689- empty(&_43, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 5021);
23729+ empty(&_43, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 5032);
2369023730 }
2369123731 ParseBlockRaw$(0 /* _41 */, &*streams, &*txtpos, &*state, &_42, &*sp, &*tmpnr, &_43, &*totality, &*action, &*self, &*reduced_ids);
2369223732 free$(&_43, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest);
@@ -23956,7 +23996,7 @@
2395623996 {
2395723997 varinit(&_43, &_mut_elem);
2395823998 }
23959- push(0 /* _41 */, &*_42, &_43, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 5049);
23999+ push(0 /* _41 */, &*_42, &_43, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 5060);
2396024000 var$dest(&_43);
2396124001 }
2396224002 {
@@ -23969,7 +24009,7 @@
2396924009 }
2397024010 struct stack/*qtypepureid*/ _44; memset(&_44, 0, sizeof(struct stack/*qtypepureid*/));
2397124011 {
23972- empty(&_44, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 5050);
24012+ empty(&_44, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 5061);
2397324013 }
2397424014 ParseBlockRaw$(0 /* _42 */, &*streams, &*txtpos, &*state, &_43, &*sp, &*tmpnr, &_44, &*totality, &*action, &*self, &*reduced_ids);
2397524015 free$(&_44, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest);
@@ -24216,7 +24256,7 @@
2421624256 }
2421724257 struct stack/*qtypepureid*/ _12; memset(&_12, 0, sizeof(struct stack/*qtypepureid*/));
2421824258 {
24219- solid(&_12, &_condition, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 5088);
24259+ solid(&_12, &_condition, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 5099);
2422024260 }
2422124261 struct string _13; memset(&_13, 0, sizeof(struct string));
2422224262 {
@@ -24299,7 +24339,7 @@
2429924339 }
2430024340 struct stack/*qtypepureid*/ _19; memset(&_19, 0, sizeof(struct stack/*qtypepureid*/));
2430124341 {
24302- empty(&_19, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 5095);
24342+ empty(&_19, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 5106);
2430324343 }
2430424344 ParseBlock$(0 /* _17 */, &*streams, &*txtpos, &*state, &_18, &*sp, &*tmpnr, &_19, &*totality, &*action, &*self, &*reduced_ids);
2430524345 free$(&_19, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest);
@@ -24378,7 +24418,7 @@
2437824418 {
2437924419 struct stack/*qtypepureid*/ _6; memset(&_6, 0, sizeof(struct stack/*qtypepureid*/));
2438024420 {
24381- empty(&_6, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 5116);
24421+ empty(&_6, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 5127);
2438224422 }
2438324423 bool _7; memset(&_7, 0, sizeof(bool));
2438424424 _7 = 0;
@@ -25493,7 +25533,7 @@
2549325533 _IGNORE_(_3);
2549425534 }
2549525535 {
25496- push(0 /* _3 */, &*elems, &_ti, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 5419);
25536+ push(0 /* _3 */, &*elems, &_ti, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 5430);
2549725537 }
2549825538 {
2549925539 uint64_t _5; memset(&_5, 0, sizeof(uint64_t));
@@ -26078,7 +26118,7 @@
2607826118 }
2607926119 {
2608026120 const struct typepureid *_4 = &(*c).ti;
26081- push(0 /* _3 */, &*extracted, &*_4, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 5553);
26121+ push(0 /* _3 */, &*extracted, &*_4, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 5564);
2608226122 }
2608326123 }
2608426124 }
@@ -28160,11 +28200,11 @@
2816028200 {
2816128201 struct qtype _decl_; memset(&_decl_, 0, sizeof(struct qtype));
2816228202 {
28163- at_get$(&_decl_, &*decl, &*idx, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 5858);
28203+ at_get$(&_decl_, &*decl, &*idx, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 5869);
2816428204 }
2816528205 struct qtype _def_; memset(&_def_, 0, sizeof(struct qtype));
2816628206 {
28167- at_get$(&_def_, &*def, &*idx, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 5859);
28207+ at_get$(&_def_, &*def, &*idx, sizeof(struct qtype), (void (*)(void *))qtype$dest, (void (*)(void *, const void *))qtype$copy, 5870);
2816828208 }
2816928209 bool _4;
2817028210 {
@@ -28421,7 +28461,7 @@
2842128461 {
2842228462 STRUCT(&_6, &*elems);
2842328463 }
28424- solid(&_5, &_6, sizeof(struct flavour), (void (*)(void *))flavour$dest, (void (*)(void *, const void *))flavour$copy, 5924);
28464+ solid(&_5, &_6, sizeof(struct flavour), (void (*)(void *))flavour$dest, (void (*)(void *, const void *))flavour$copy, 5935);
2842528465 flavour$dest(&_6);
2842628466 }
2842728467 structdef(&_4, &_5, &*id, &*used);
@@ -29016,7 +29056,7 @@
2901629056 {
2901729057 struct typepureid _cur; memset(&_cur, 0, sizeof(struct typepureid));
2901829058 {
29019- at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 6043);
29059+ at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 6054);
2902029060 }
2902129061 {
2902229062 uint64_t _4; memset(&_4, 0, sizeof(uint64_t));
@@ -29102,7 +29142,7 @@
2910229142 {
2910329143 struct typepureid _cur; memset(&_cur, 0, sizeof(struct typepureid));
2910429144 {
29105- at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 6059);
29145+ at_get$(&_cur, &*elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 6070);
2910629146 }
2910729147 {
2910829148 struct qtype _4; memset(&_4, 0, sizeof(struct qtype));
@@ -29170,7 +29210,7 @@
2917029210 {
2917129211 struct constr _c; memset(&_c, 0, sizeof(struct constr));
2917229212 {
29173- at_get$(&_c, &*constrs, &*idx, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 6073);
29213+ at_get$(&_c, &*constrs, &*idx, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 6084);
2917429214 }
2917529215 bool _4;
2917629216 {
@@ -29238,11 +29278,11 @@
2923829278 }
2923929279 struct typepureid _elem; memset(&_elem, 0, sizeof(struct typepureid));
2924029280 {
29241- at_get$(&_elem, &_elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 6090);
29281+ at_get$(&_elem, &_elems, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 6101);
2924229282 }
2924329283 struct constr _constr; memset(&_constr, 0, sizeof(struct constr));
2924429284 {
29245- at_get$(&_constr, &*constrs, &*idx, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 6092);
29285+ at_get$(&_constr, &*constrs, &*idx, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 6103);
2924629286 }
2924729287 struct type_pure _type; memset(&_type, 0, sizeof(struct type_pure));
2924829288 {
@@ -29657,7 +29697,7 @@
2965729697 {
2965829698 DATA(&_8, &*constrs);
2965929699 }
29660- solid(&_7, &_8, sizeof(struct flavour), (void (*)(void *))flavour$dest, (void (*)(void *, const void *))flavour$copy, 6136);
29700+ solid(&_7, &_8, sizeof(struct flavour), (void (*)(void *))flavour$dest, (void (*)(void *, const void *))flavour$copy, 6147);
2966129701 flavour$dest(&_8);
2966229702 }
2966329703 structdef(&_6, &_7, &*id, &*used);
@@ -29840,7 +29880,7 @@
2984029880 _IGNORE_(_3);
2984129881 }
2984229882 {
29843- push(0 /* _3 */, &*elems, &_ti, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 6178);
29883+ push(0 /* _3 */, &*elems, &_ti, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 6189);
2984429884 }
2984529885 {
2984629886 uint64_t _5; memset(&_5, 0, sizeof(uint64_t));
@@ -30055,7 +30095,7 @@
3005530095 }
3005630096 }
3005730097 {
30058- push(0 /* _10 */, &*constrs, &_c, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 6232);
30098+ push(0 /* _10 */, &*constrs, &_c, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 6243);
3005930099 }
3006030100 bool _12;
3006130101 {
@@ -30339,7 +30379,7 @@
3033930379 qtypepureid(&_4, &*content, &_5);
3034030380 string$dest(&_5);
3034130381 }
30342- push(0 /* _3 */, &_qtpis, &_4, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 6333);
30382+ push(0 /* _3 */, &_qtpis, &_4, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 6344);
3034330383 qtypepureid$dest(&_4);
3034430384 }
3034530385 }
@@ -30369,7 +30409,7 @@
3036930409 qtypepureid(&_4, &_5, &*_6);
3037030410 qtypepure$dest(&_5);
3037130411 }
30372- push(0 /* _3 */, &_qtpis, &_4, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 6344);
30412+ push(0 /* _3 */, &_qtpis, &_4, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 6355);
3037330413 qtypepureid$dest(&_4);
3037430414 }
3037530415 }
@@ -30797,7 +30837,7 @@
3079730837 }
3079830838 }
3079930839 {
30800- push(0 /* _7 */, &*usedids, &_parid, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 6409);
30840+ push(0 /* _7 */, &*usedids, &_parid, sizeof(struct string), (void (*)(void *))string$dest, (void (*)(void *, const void *))string$copy, 6420);
3080130841 }
3080230842 struct qtypepureid _qti; memset(&_qti, 0, sizeof(struct qtypepureid));
3080330843 {
@@ -30853,7 +30893,7 @@
3085330893 {
3085430894 varinit(&_15, &_qti);
3085530895 }
30856- push(0 /* _13 */, &*_14, &_15, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 6413);
30896+ push(0 /* _13 */, &*_14, &_15, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 6424);
3085730897 var$dest(&_15);
3085830898 }
3085930899 qtypepureid$dest(&_qti);
@@ -30959,6 +30999,8 @@
3095930999 {
3096031000 const struct structdef *s = (*_9).data;
3096131001 {
31002+ struct string _compoundid; memset(&_compoundid, 0, sizeof(struct string));
31003+ string$copy(&_compoundid, &(*s).id);
3096231004 struct stack/*flavour*/ _f; memset(&_f, 0, sizeof(struct stack/*flavour*/));
3096331005 clone$(&_f, &(*s).type, sizeof(struct flavour), (void (*)(void *))flavour$dest, (void (*)(void *, const void *))flavour$copy);
3096431006 const struct stack/*flavour*/ *_12 = &(_f);
@@ -31005,19 +31047,247 @@
3100531047 {
3100631048 const struct UNION *f = ((*_15).UNION).data;
3100731049 {
31050+ struct string _constrid; memset(&_constrid, 0, sizeof(struct string));
3100831051 {
31009- const struct StreamOut *_19 = &(*streams).err;
31010- struct string _20; memset(&_20, 0, sizeof(struct string));
31011- init$fromliteral(&_20, "matching union not implemented", 30);
31012- PutStr(0 /* _18 */, &*_19, &_20);
31013- string$dest(&_20);
31052+ ParseId$(&_constrid, &*streams, &*txtpos, &*level);
3101431053 }
31054+ struct stack/*u64*/ _idx; memset(&_idx, 0, sizeof(struct stack/*u64*/));
3101531055 {
31016- const struct StreamOut *_20 = &(*streams).err;
31017- Fail$(0 /* _19 */, &*_20, &*txtpos);
31056+ const struct stack/*typepureid*/ *_18 = &(*f).elems;
31057+ findTPI(&_idx, &*_18, &_constrid);
3101831058 }
31059+ const struct stack/*u64*/ *_18 = &(_idx);
31060+ if(!(*_18).size)
31061+ {
31062+ {
31063+ {
31064+ const struct StreamOut *_21 = &(*streams).err;
31065+ PutStr(0 /* _20 */, &*_21, &_constrid);
31066+ }
31067+ {
31068+ const struct StreamOut *_22 = &(*streams).err;
31069+ struct string _23; memset(&_23, 0, sizeof(struct string));
31070+ init$fromliteral(&_23, " is not a constructor of union ", 31);
31071+ PutStr(0 /* _21 */, &*_22, &_23);
31072+ string$dest(&_23);
31073+ }
31074+ {
31075+ const struct StreamOut *_23 = &(*streams).err;
31076+ PutStr(0 /* _22 */, &*_23, &_compoundid);
31077+ }
31078+ {
31079+ const struct StreamOut *_24 = &(*streams).err;
31080+ Fail$(0 /* _23 */, &*_24, &*txtpos);
31081+ }
31082+ }
31083+ }
31084+ else
31085+ {
31086+ const uint64_t *idx = (*_18).data;
31087+ {
31088+ {
31089+ const struct StreamOut *_22 = &(*streams).out;
31090+ uint64_t _23; memset(&_23, 0, sizeof(uint64_t));
31091+ {
31092+ uint64_t _24; memset(&_24, 0, sizeof(uint64_t));
31093+ _24 = 1;
31094+ _23 = _24 + *level;
31095+ _IGNORE_(_24);
31096+ }
31097+ Indent(0 /* _21 */, &*_22, &_23);
31098+ _IGNORE_(_23);
31099+ }
31100+ {
31101+ const struct StreamOut *_23 = &(*streams).out;
31102+ struct string _24; memset(&_24, 0, sizeof(struct string));
31103+ init$fromliteral(&_24, "if((", 4);
31104+ PutStr(0 /* _22 */, &*_23, &_24);
31105+ string$dest(&_24);
31106+ }
31107+ {
31108+ const struct StreamOut *_24 = &(*streams).out;
31109+ const struct string *_25 = &(*par).id;
31110+ PutStr(0 /* _23 */, &*_24, &*_25);
31111+ }
31112+ {
31113+ const struct StreamOut *_25 = &(*streams).out;
31114+ struct string _26; memset(&_26, 0, sizeof(struct string));
31115+ init$fromliteral(&_26, ").type != ", 10);
31116+ PutStr(0 /* _24 */, &*_25, &_26);
31117+ string$dest(&_26);
31118+ }
31119+ {
31120+ const struct StreamOut *_26 = &(*streams).out;
31121+ Print$u64(0 /* _25 */, &*_26, &*idx);
31122+ }
31123+ {
31124+ const struct StreamOut *_27 = &(*streams).out;
31125+ struct string _28; memset(&_28, 0, sizeof(struct string));
31126+ init$fromliteral(&_28, ")", 1);
31127+ PutStrLn(0 /* _26 */, &*_27, &_28);
31128+ string$dest(&_28);
31129+ }
31130+ {
31131+ const struct StreamOut *_28 = &(*streams).out;
31132+ uint64_t _29; memset(&_29, 0, sizeof(uint64_t));
31133+ {
31134+ uint64_t _30; memset(&_30, 0, sizeof(uint64_t));
31135+ _30 = 1;
31136+ _29 = _30 + *level;
31137+ _IGNORE_(_30);
31138+ }
31139+ Indent(0 /* _27 */, &*_28, &_29);
31140+ _IGNORE_(_29);
31141+ }
31142+ {
31143+ const struct StreamOut *_29 = &(*streams).out;
31144+ struct string _30; memset(&_30, 0, sizeof(struct string));
31145+ init$fromliteral(&_30, "{", 1);
31146+ PutStrLn(0 /* _28 */, &*_29, &_30);
31147+ string$dest(&_30);
31148+ }
31149+ {
31150+ const struct StreamOut *_30 = &(*streams).out;
31151+ uint64_t _31; memset(&_31, 0, sizeof(uint64_t));
31152+ {
31153+ uint64_t _32; memset(&_32, 0, sizeof(uint64_t));
31154+ _32 = 2;
31155+ _31 = _32 + *level;
31156+ _IGNORE_(_32);
31157+ }
31158+ Indent(0 /* _29 */, &*_30, &_31);
31159+ _IGNORE_(_31);
31160+ }
31161+ {
31162+ const struct string *_31 = &(*ti).id;
31163+ EmitGenericCallId$(0 /* _30 */, &*streams, &*_31, &_previous_case, &*parids);
31164+ }
31165+ {
31166+ const struct StreamOut *_32 = &(*streams).out;
31167+ uint64_t _33; memset(&_33, 0, sizeof(uint64_t));
31168+ {
31169+ uint64_t _34; memset(&_34, 0, sizeof(uint64_t));
31170+ _34 = 2;
31171+ _33 = _34 + *level;
31172+ _IGNORE_(_34);
31173+ }
31174+ Indent(0 /* _31 */, &*_32, &_33);
31175+ _IGNORE_(_33);
31176+ }
31177+ {
31178+ const struct StreamOut *_33 = &(*streams).out;
31179+ struct string _34; memset(&_34, 0, sizeof(struct string));
31180+ init$fromliteral(&_34, "return;", 7);
31181+ PutStrLn(0 /* _32 */, &*_33, &_34);
31182+ string$dest(&_34);
31183+ }
31184+ {
31185+ const struct StreamOut *_34 = &(*streams).out;
31186+ uint64_t _35; memset(&_35, 0, sizeof(uint64_t));
31187+ {
31188+ uint64_t _36; memset(&_36, 0, sizeof(uint64_t));
31189+ _36 = 1;
31190+ _35 = _36 + *level;
31191+ _IGNORE_(_36);
31192+ }
31193+ Indent(0 /* _33 */, &*_34, &_35);
31194+ _IGNORE_(_35);
31195+ }
31196+ {
31197+ const struct StreamOut *_35 = &(*streams).out;
31198+ struct string _36; memset(&_36, 0, sizeof(struct string));
31199+ init$fromliteral(&_36, "}", 1);
31200+ PutStrLn(0 /* _34 */, &*_35, &_36);
31201+ string$dest(&_36);
31202+ }
31203+ struct typepureid _elem; memset(&_elem, 0, sizeof(struct typepureid));
31204+ {
31205+ const struct stack/*typepureid*/ *_35 = &(*f).elems;
31206+ at_get$(&_elem, &*_35, &*idx, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 6487);
31207+ }
31208+ {
31209+ struct qtypepureid _35; memset(&_35, 0, sizeof(struct qtypepureid));
31210+ {
31211+ struct qtypepure _36; memset(&_36, 0, sizeof(struct qtypepure));
31212+ {
31213+ const struct type_mode *_37 = &(*par).qt.qualifier;
31214+ const struct type_pure *_38 = &(_elem).type;
31215+ qtypepure(&_36, &*_37, &*_38);
31216+ }
31217+ struct string _37; memset(&_37, 0, sizeof(struct string));
31218+ {
31219+ GenPar$(&_37, &*tmpnr);
31220+ }
31221+ qtypepureid(&_35, &_36, &_37);
31222+ string$dest(&_37);
31223+ qtypepure$dest(&_36);
31224+ }
31225+ const struct qtypepureid *elem = &_35;
31226+ {
31227+ const struct StreamOut *_37 = &(*streams).out;
31228+ uint64_t _38; memset(&_38, 0, sizeof(uint64_t));
31229+ {
31230+ uint64_t _39; memset(&_39, 0, sizeof(uint64_t));
31231+ _39 = 1;
31232+ _38 = _39 + *level;
31233+ _IGNORE_(_39);
31234+ }
31235+ Indent(0 /* _36 */, &*_37, &_38);
31236+ _IGNORE_(_38);
31237+ }
31238+ {
31239+ const struct StreamOut *_38 = &(*streams).out;
31240+ EmitQTPI(0 /* _37 */, &*_38, &*elem);
31241+ }
31242+ {
31243+ const struct StreamOut *_39 = &(*streams).out;
31244+ struct string _40; memset(&_40, 0, sizeof(struct string));
31245+ init$fromliteral(&_40, " = &((", 6);
31246+ PutStr(0 /* _38 */, &*_39, &_40);
31247+ string$dest(&_40);
31248+ }
31249+ {
31250+ const struct StreamOut *_40 = &(*streams).out;
31251+ const struct string *_41 = &(*par).id;
31252+ PutStr(0 /* _39 */, &*_40, &*_41);
31253+ }
31254+ {
31255+ const struct StreamOut *_41 = &(*streams).out;
31256+ struct string _42; memset(&_42, 0, sizeof(struct string));
31257+ init$fromliteral(&_42, ").", 2);
31258+ PutStr(0 /* _40 */, &*_41, &_42);
31259+ string$dest(&_42);
31260+ }
31261+ {
31262+ const struct StreamOut *_42 = &(*streams).out;
31263+ PutStr(0 /* _41 */, &*_42, &_constrid);
31264+ }
31265+ {
31266+ const struct StreamOut *_43 = &(*streams).out;
31267+ struct string _44; memset(&_44, 0, sizeof(struct string));
31268+ init$fromliteral(&_44, ");\n", 3);
31269+ PutStr(0 /* _42 */, &*_43, &_44);
31270+ string$dest(&_44);
31271+ }
31272+ {
31273+ struct stack/*qtypepureid*/ _43; memset(&_43, 0, sizeof(struct stack/*qtypepureid*/));
31274+ struct stack/*qtypepureid*/ *parids = &_43;
31275+ {
31276+ push(0 /* _44 */, &*parids, &*elem, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 6492);
31277+ }
31278+ {
31279+ ParseMatch$(0 /* _45 */, &*streams, &*txtpos, &*structs, &*level, &*sp, &*tmpnr, &*elem, &*casenr, &*ti, &*parids, &*usedids);
31280+ }
31281+ free$(&_43, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest);
31282+ }
31283+ qtypepureid$dest(&_35);
31284+ }
31285+ typepureid$dest(&_elem);
31286+ }
31287+ }
31288+ free$(&_idx, sizeof(uint64_t), 0/*DEST*/);
31289+ string$dest(&_constrid);
3101931290 }
31020- __SUPPRESS_WARNING_UNUSED_VARIABLE__(f);
3102131291 break;
3102231292 }
3102331293 case 2: // struct stack/*DATA*/ DATA:
@@ -31048,6 +31318,7 @@
3104831318 }
3104931319 }
3105031320 free$(&_f, sizeof(struct flavour), (void (*)(void *))flavour$dest);
31321+ string$dest(&_compoundid);
3105131322 }
3105231323 }
3105331324 free$(&_s, sizeof(struct structdef), (void (*)(void *))structdef$dest);
@@ -31400,7 +31671,7 @@
3140031671 struct stack/*qtypepureid*/ _35; memset(&_35, 0, sizeof(struct stack/*qtypepureid*/));
3140131672 struct stack/*qtypepureid*/ *parids = &_35;
3140231673 {
31403- push(0 /* _36 */, &*parids, &_elem, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 6504);
31674+ push(0 /* _36 */, &*parids, &_elem, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 6541);
3140431675 }
3140531676 {
3140631677 ParseMatch$(0 /* _37 */, &*streams, &*txtpos, &*structs, &*level, &*sp, &*tmpnr, &_elem, &*casenr, &*ti, &*parids, &*usedids);
@@ -31668,7 +31939,7 @@
3166831939 {
3166931940 struct stack/*par*/ _2; memset(&_2, 0, sizeof(struct stack/*par*/));
3167031941 {
31671- stack(&_2, sizeof(struct par), (void (*)(void *))par$dest, (void (*)(void *, const void *))par$copy, 6555);
31942+ stack(&_2, sizeof(struct par), (void (*)(void *))par$dest, (void (*)(void *, const void *))par$copy, 6592);
3167231943 }
3167331944 pscope(&_1, &_2);
3167431945 free$(&_2, sizeof(struct par), (void (*)(void *))par$dest);
@@ -31675,13 +31946,13 @@
3167531946 }
3167631947 struct stack/*vscope*/ _2; memset(&_2, 0, sizeof(struct stack/*vscope*/));
3167731948 {
31678- stack(&_2, sizeof(struct vscope), (void (*)(void *))vscope$dest, (void (*)(void *, const void *))vscope$copy, 6555);
31949+ stack(&_2, sizeof(struct vscope), (void (*)(void *))vscope$dest, (void (*)(void *, const void *))vscope$copy, 6592);
3167931950 }
3168031951 struct vscope _3; memset(&_3, 0, sizeof(struct vscope));
3168131952 {
3168231953 struct stack/*var*/ _4; memset(&_4, 0, sizeof(struct stack/*var*/));
3168331954 {
31684- stack(&_4, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 6555);
31955+ stack(&_4, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 6592);
3168531956 }
3168631957 vscope(&_3, &_4);
3168731958 free$(&_4, sizeof(struct var), (void (*)(void *))var$dest);
@@ -31798,7 +32069,7 @@
3179832069 {
3179932070 struct stack/*flavour*/ _10; memset(&_10, 0, sizeof(struct stack/*flavour*/));
3180032071 {
31801- /*UNION*/ empty(&_10, sizeof(struct flavour), (void (*)(void *))flavour$dest, (void (*)(void *, const void *))flavour$copy, 6591);
32072+ /*UNION*/ empty(&_10, sizeof(struct flavour), (void (*)(void *))flavour$dest, (void (*)(void *, const void *))flavour$copy, 6628);
3180232073 }
3180332074 bool _11; memset(&_11, 0, sizeof(bool));
3180432075 _11 = 0;
@@ -31808,7 +32079,7 @@
3180832079 }
3180932080 {
3181032081 struct stack/*structdef*/ *_11 = &(*state).structs;
31811- push(0 /* _10 */, &*_11, &_strdecl, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 6592);
32082+ push(0 /* _10 */, &*_11, &_strdecl, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 6629);
3181232083 }
3181332084 {
3181432085 const struct StreamOut *_12 = &(*streams).out;
@@ -31992,7 +32263,7 @@
3199232263 {
3199332264 struct stack/*flavour*/ _11; memset(&_11, 0, sizeof(struct stack/*flavour*/));
3199432265 {
31995- /*STRUCT*/ empty(&_11, sizeof(struct flavour), (void (*)(void *))flavour$dest, (void (*)(void *, const void *))flavour$copy, 6645);
32266+ /*STRUCT*/ empty(&_11, sizeof(struct flavour), (void (*)(void *))flavour$dest, (void (*)(void *, const void *))flavour$copy, 6682);
3199632267 }
3199732268 bool _12; memset(&_12, 0, sizeof(bool));
3199832269 _12 = 0;
@@ -32002,7 +32273,7 @@
3200232273 }
3200332274 {
3200432275 struct stack/*structdef*/ *_12 = &(*state).structs;
32005- push(0 /* _11 */, &*_12, &_strdecl, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 6646);
32276+ push(0 /* _11 */, &*_12, &_strdecl, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 6683);
3200632277 }
3200732278 {
3200832279 const struct StreamOut *_13 = &(*streams).err;
@@ -32181,7 +32452,7 @@
3218132452 {
3218232453 struct stack/*flavour*/ _10; memset(&_10, 0, sizeof(struct stack/*flavour*/));
3218332454 {
32184- /*STRUCT*/ empty(&_10, sizeof(struct flavour), (void (*)(void *))flavour$dest, (void (*)(void *, const void *))flavour$copy, 6699);
32455+ /*STRUCT*/ empty(&_10, sizeof(struct flavour), (void (*)(void *))flavour$dest, (void (*)(void *, const void *))flavour$copy, 6736);
3218532456 }
3218632457 bool _11; memset(&_11, 0, sizeof(bool));
3218732458 _11 = 0;
@@ -32191,7 +32462,7 @@
3219132462 }
3219232463 {
3219332464 struct stack/*structdef*/ *_11 = &(*state).structs;
32194- push(0 /* _10 */, &*_11, &_strdecl, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 6700);
32465+ push(0 /* _10 */, &*_11, &_strdecl, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 6737);
3219532466 }
3219632467 {
3219732468 const struct StreamOut *_12 = &(*streams).out;
@@ -32412,7 +32683,7 @@
3241232683 struct stack/*qtypepure*/ _parids; memset(&_parids, 0, sizeof(struct stack/*qtypepure*/));
3241332684 {
3241432685 const struct qtypepure *_16 = &(_par).qt;
32415- push(0 /* _15 */, &_parids, &*_16, sizeof(struct qtypepure), (void (*)(void *))qtypepure$dest, (void (*)(void *, const void *))qtypepure$copy, 6745);
32686+ push(0 /* _15 */, &_parids, &*_16, sizeof(struct qtypepure), (void (*)(void *))qtypepure$dest, (void (*)(void *, const void *))qtypepure$copy, 6782);
3241632687 }
3241732688 while(1)
3241832689 {
@@ -32462,7 +32733,7 @@
3246232733 }
3246332734 const struct qtypepure *par = &_20;
3246432735 {
32465- push(0 /* _21 */, &_parids, &*par, sizeof(struct qtypepure), (void (*)(void *))qtypepure$dest, (void (*)(void *, const void *))qtypepure$copy, 6752);
32736+ push(0 /* _21 */, &_parids, &*par, sizeof(struct qtypepure), (void (*)(void *))qtypepure$dest, (void (*)(void *, const void *))qtypepure$copy, 6789);
3246632737 }
3246732738 qtypepure$dest(&_20);
3246832739 }
@@ -32539,7 +32810,7 @@
3253932810 }
3254032811 struct stack/*qtypepureid*/ _parids; memset(&_parids, 0, sizeof(struct stack/*qtypepureid*/));
3254132812 {
32542- push(0 /* _21 */, &_parids, &_par, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 6773);
32813+ push(0 /* _21 */, &_parids, &_par, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 6810);
3254332814 }
3254432815 while(1)
3254532816 {
@@ -32589,7 +32860,7 @@
3258932860 }
3259032861 const struct qtypepureid *par = &_26;
3259132862 {
32592- push(0 /* _27 */, &_parids, &*par, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 6781);
32863+ push(0 /* _27 */, &_parids, &*par, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 6818);
3259332864 }
3259432865 qtypepureid$dest(&_26);
3259532866 }
@@ -32674,7 +32945,7 @@
3267432945 {
3267532946 struct stack/*qtypepureid*/ _20; memset(&_20, 0, sizeof(struct stack/*qtypepureid*/));
3267632947 {
32677- stack(&_20, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 6803);
32948+ stack(&_20, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 6840);
3267832949 }
3267932950 fnpartypeids(&_19, &_20);
3268032951 free$(&_20, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest);
@@ -32790,7 +33061,7 @@
3279033061 {
3279133062 struct stack/*qtypepureid*/ _18; memset(&_18, 0, sizeof(struct stack/*qtypepureid*/));
3279233063 {
32793- stack(&_18, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 6819);
33064+ stack(&_18, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 6856);
3279433065 }
3279533066 fnpartypeids(&_17, &_18);
3279633067 free$(&_18, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest);
@@ -32857,7 +33128,7 @@
3285733128 {
3285833129 struct stack/*par*/ _18; memset(&_18, 0, sizeof(struct stack/*par*/));
3285933130 {
32860- stack(&_18, sizeof(struct par), (void (*)(void *))par$dest, (void (*)(void *, const void *))par$copy, 6839);
33131+ stack(&_18, sizeof(struct par), (void (*)(void *))par$dest, (void (*)(void *, const void *))par$copy, 6876);
3286133132 }
3286233133 pscope(&_17, &_18);
3286333134 free$(&_18, sizeof(struct par), (void (*)(void *))par$dest);
@@ -32864,13 +33135,13 @@
3286433135 }
3286533136 struct stack/*vscope*/ _18; memset(&_18, 0, sizeof(struct stack/*vscope*/));
3286633137 {
32867- stack(&_18, sizeof(struct vscope), (void (*)(void *))vscope$dest, (void (*)(void *, const void *))vscope$copy, 6839);
33138+ stack(&_18, sizeof(struct vscope), (void (*)(void *))vscope$dest, (void (*)(void *, const void *))vscope$copy, 6876);
3286833139 }
3286933140 struct vscope _19; memset(&_19, 0, sizeof(struct vscope));
3287033141 {
3287133142 struct stack/*var*/ _20; memset(&_20, 0, sizeof(struct stack/*var*/));
3287233143 {
32873- stack(&_20, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 6839);
33144+ stack(&_20, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 6876);
3287433145 }
3287533146 vscope(&_19, &_20);
3287633147 free$(&_20, sizeof(struct var), (void (*)(void *))var$dest);
@@ -33019,7 +33290,7 @@
3301933290 const struct string *_30 = &(_ti).id;
3302033291 struct stack/*ReducedId*/ _31; memset(&_31, 0, sizeof(struct stack/*ReducedId*/));
3302133292 {
33022- stack(&_31, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest, (void (*)(void *, const void *))ReducedId$copy, 6892);
33293+ stack(&_31, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest, (void (*)(void *, const void *))ReducedId$copy, 6929);
3302333294 }
3302433295 ParseExpr2$(0 /* _29 */, &*streams, &*txtpos, &*state, &_level, &*sp, &*tmpnr, &_store, &_totality, &_action, &*_30, &_31);
3302533296 free$(&_31, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest);
@@ -34014,7 +34285,7 @@
3401434285 varinit(&_60, &_61);
3401534286 qtypepureid$dest(&_61);
3401634287 }
34017- push(0 /* _58 */, &*_59, &_60, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 7068);
34288+ push(0 /* _58 */, &*_59, &_60, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 7105);
3401834289 var$dest(&_60);
3401934290 }
3402034291 {
@@ -34099,7 +34370,7 @@
3409934370 varinit(&_71, &_72);
3410034371 qtypepureid$dest(&_72);
3410134372 }
34102- push(0 /* _69 */, &*_70, &_71, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 7076);
34373+ push(0 /* _69 */, &*_70, &_71, sizeof(struct var), (void (*)(void *))var$dest, (void (*)(void *, const void *))var$copy, 7113);
3410334374 var$dest(&_71);
3410434375 }
3410534376 {
@@ -34162,7 +34433,7 @@
3416234433 const struct string *_33 = &(_ti).id;
3416334434 struct stack/*ReducedId*/ _34; memset(&_34, 0, sizeof(struct stack/*ReducedId*/));
3416434435 {
34165- stack(&_34, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest, (void (*)(void *, const void *))ReducedId$copy, 7084);
34436+ stack(&_34, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest, (void (*)(void *, const void *))ReducedId$copy, 7121);
3416634437 }
3416734438 ParseExpr2$(0 /* _32 */, &*streams, &*txtpos, &*state, &_level, &_sp, &_tmpnr, &_store, &_totality, &_action, &*_33, &_34);
3416834439 free$(&_34, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest);
@@ -34206,13 +34477,13 @@
3420634477 qtypepureid(&_34, &_35, &*_36);
3420734478 qtypepure$dest(&_35);
3420834479 }
34209- solid(&_33, &_34, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 7090);
34480+ solid(&_33, &_34, sizeof(struct qtypepureid), (void (*)(void *))qtypepureid$dest, (void (*)(void *, const void *))qtypepureid$copy, 7127);
3421034481 qtypepureid$dest(&_34);
3421134482 }
3421234483 const struct string *_34 = &(_ti).id;
3421334484 struct stack/*ReducedId*/ _35; memset(&_35, 0, sizeof(struct stack/*ReducedId*/));
3421434485 {
34215- stack(&_35, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest, (void (*)(void *, const void *))ReducedId$copy, 7090);
34486+ stack(&_35, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest, (void (*)(void *, const void *))ReducedId$copy, 7127);
3421634487 }
3421734488 ParseBlock$(0 /* _32 */, &*streams, &*txtpos, &*state, &_level, &_sp, &_tmpnr, &_33, &_totality, &_action, &*_34, &_35);
3421834489 free$(&_35, sizeof(struct ReducedId), (void (*)(void *))ReducedId$dest);
@@ -34545,11 +34816,11 @@
3454534816 {
3454634817 struct stack/*def*/ _1; memset(&_1, 0, sizeof(struct stack/*def*/));
3454734818 {
34548- stack(&_1, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 7181);
34819+ stack(&_1, sizeof(struct def), (void (*)(void *))def$dest, (void (*)(void *, const void *))def$copy, 7218);
3454934820 }
3455034821 struct stack/*structdef*/ _2; memset(&_2, 0, sizeof(struct stack/*structdef*/));
3455134822 {
34552- stack(&_2, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 7181);
34823+ stack(&_2, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 7218);
3455334824 }
3455434825 state(&_state, &_1, &_2);
3455534826 free$(&_2, sizeof(struct structdef), (void (*)(void *))structdef$dest);
@@ -35038,7 +35309,7 @@
3503835309 string$dest(&_5);
3503935310 type_pure$dest(&_4);
3504035311 }
35041- push(0 /* _2 */, &_elems, &_3, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 7649);
35312+ push(0 /* _2 */, &_elems, &_3, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 7686);
3504235313 typepureid$dest(&_3);
3504335314 }
3504435315 {
@@ -35076,13 +35347,13 @@
3507635347 }
3507735348 struct stack/*typepureid*/ _6; memset(&_6, 0, sizeof(struct stack/*typepureid*/));
3507835349 {
35079- stack(&_6, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 7654);
35350+ stack(&_6, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 7691);
3508035351 }
3508135352 constr(&_4, &_5, &_6);
3508235353 free$(&_6, sizeof(struct typepureid), (void (*)(void *))typepureid$dest);
3508335354 typepureid$dest(&_5);
3508435355 }
35085- push(0 /* _3 */, &_constrs, &_4, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 7654);
35356+ push(0 /* _3 */, &_constrs, &_4, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 7691);
3508635357 constr$dest(&_4);
3508735358 }
3508835359 {
@@ -35105,13 +35376,13 @@
3510535376 }
3510635377 struct stack/*typepureid*/ _7; memset(&_7, 0, sizeof(struct stack/*typepureid*/));
3510735378 {
35108- stack(&_7, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 7655);
35379+ stack(&_7, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 7692);
3510935380 }
3511035381 constr(&_5, &_6, &_7);
3511135382 free$(&_7, sizeof(struct typepureid), (void (*)(void *))typepureid$dest);
3511235383 typepureid$dest(&_6);
3511335384 }
35114- push(0 /* _4 */, &_constrs, &_5, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 7655);
35385+ push(0 /* _4 */, &_constrs, &_5, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 7692);
3511535386 constr$dest(&_5);
3511635387 }
3511735388 {
@@ -35134,13 +35405,13 @@
3513435405 }
3513535406 struct stack/*typepureid*/ _8; memset(&_8, 0, sizeof(struct stack/*typepureid*/));
3513635407 {
35137- stack(&_8, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 7656);
35408+ stack(&_8, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 7693);
3513835409 }
3513935410 constr(&_6, &_7, &_8);
3514035411 free$(&_8, sizeof(struct typepureid), (void (*)(void *))typepureid$dest);
3514135412 typepureid$dest(&_7);
3514235413 }
35143- push(0 /* _5 */, &_constrs, &_6, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 7656);
35414+ push(0 /* _5 */, &_constrs, &_6, sizeof(struct constr), (void (*)(void *))constr$dest, (void (*)(void *, const void *))constr$copy, 7693);
3514435415 constr$dest(&_6);
3514535416 }
3514635417 {
@@ -39243,7 +39514,7 @@
3924339514 string$dest(&_66);
3924439515 type_pure$dest(&_65);
3924539516 }
39246- push(0 /* _63 */, &_elems, &_64, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 8446);
39517+ push(0 /* _63 */, &_elems, &_64, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 8483);
3924739518 typepureid$dest(&_64);
3924839519 }
3924939520 {
@@ -39262,7 +39533,7 @@
3926239533 string$dest(&_67);
3926339534 type_pure$dest(&_66);
3926439535 }
39265- push(0 /* _64 */, &_elems, &_65, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 8447);
39536+ push(0 /* _64 */, &_elems, &_65, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 8484);
3926639537 typepureid$dest(&_65);
3926739538 }
3926839539 {
@@ -39281,7 +39552,7 @@
3928139552 string$dest(&_68);
3928239553 type_pure$dest(&_67);
3928339554 }
39284- push(0 /* _65 */, &_elems, &_66, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 8448);
39555+ push(0 /* _65 */, &_elems, &_66, sizeof(struct typepureid), (void (*)(void *))typepureid$dest, (void (*)(void *, const void *))typepureid$copy, 8485);
3928539556 typepureid$dest(&_66);
3928639557 }
3928739558 {
@@ -39298,7 +39569,7 @@
3929839569 string$dest(&_70);
3929939570 flavour$dest(&_69);
3930039571 }
39301- push(0 /* _66 */, &*_67, &_68, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 8449);
39572+ push(0 /* _66 */, &*_67, &_68, sizeof(struct structdef), (void (*)(void *))structdef$dest, (void (*)(void *, const void *))structdef$copy, 8486);
3930239573 structdef$dest(&_68);
3930339574 }
3930439575 free$(&_elems, sizeof(struct typepureid), (void (*)(void *))typepureid$dest);
--- trunk/pragmatic/compiler.source.c (revision 400)
+++ trunk/pragmatic/compiler.source.c (revision 401)
@@ -954,6 +954,17 @@
954954 string id;
955955 }
956956
957+opt<u64> findTPI(stack<typepureid> elems, string id) =
958+ reduce elems to rest elem:
959+ (
960+ if strequ(elem.id, id) then
961+ solid<u64>(size<typepureid>(rest))
962+ else
963+ findTPI(rest, id)
964+ )
965+ term:
966+ empty<u64>();
967+
957968 struct constr
958969 {
959970 typepureid ti;
@@ -6437,6 +6448,7 @@
64376448 }
64386449 case solid:
64396450 {
6451+ let string compoundid = s.id;
64406452 let opt<flavour> f = s.type;
64416453 switch f
64426454 case empty:
@@ -6454,8 +6466,33 @@
64546466 }
64556467 case UNION:
64566468 {
6457- PutStr(streams.err, "matching union not implemented");
6458- Fail$(streams.err, txtpos);
6469+ let string constrid = ParseId$(streams, txtpos, level);
6470+ let opt<u64> idx = findTPI(f.elems, constrid);
6471+ switch idx
6472+ case empty:
6473+ {
6474+ PutStr(streams.err, constrid);
6475+ PutStr(streams.err, " is not a constructor of union ");
6476+ PutStr(streams.err, compoundid);
6477+ Fail$(streams.err, txtpos);
6478+ }
6479+ case solid:
6480+ {
6481+ Indent(streams.out, add<u64>(1, level)); PutStr(streams.out, "if(("); PutStr(streams.out, par.id); PutStr(streams.out, ").type != "); Print<u64>(streams.out, idx); PutStrLn(streams.out, ")");
6482+ Indent(streams.out, add<u64>(1, level)); PutStrLn(streams.out, "{");
6483+ Indent(streams.out, add<u64>(2, level)); EmitGenericCallId$(streams, ti.id, previous_case, parids);
6484+ Indent(streams.out, add<u64>(2, level)); PutStrLn(streams.out, "return;");
6485+ Indent(streams.out, add<u64>(1, level)); PutStrLn(streams.out, "}");
6486+
6487+
6488+ let typepureid elem = at_get$<typepureid>(f.elems, idx);
6489+ let qtypepureid elem = qtypepureid(qtypepure(par.qt.qualifier, elem.type), GenPar$(tmpnr));
6490+ Indent(streams.out, add<u64>(1, level)); EmitQTPI(streams.out, elem); PutStr(streams.out, " = &(("); PutStr(streams.out, par.id); PutStr(streams.out, ")."); PutStr(streams.out, constrid); PutStr(streams.out, ");\n");
6491+
6492+ let mut stack<qtypepureid> parids;
6493+ push<qtypepureid>(parids, elem);
6494+ ParseMatch$(streams, txtpos, structs, level, sp, tmpnr, elem, casenr, ti, parids, usedids);
6495+ };
64596496 }
64606497 case DATA:
64616498 {
Show on old repository browser