Example #1
0
N_NIMCALL(Tsym190843*, importmoduleas_250671)(Tnode190813* n, Tsym190843* realmodule) {
	Tsym190843* result;
	result = 0;
	result = realmodule;
	{
		if (!!(((*n).kind == ((NU8) 78)))) goto LA3;
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC6;
		NI LOC7;
		LOC6 = 0;
		LOC7 = 0;
		LOC7 = len_191097(n);
		LOC6 = !((LOC7 == ((NI) 2)));
		if (LOC6) goto LA8;
		LOC6 = !(((*(*n).kindU.S6.sons->data[((NI) 1)]).kind == ((NU8) 2)));
		LA8: ;
		if (!LOC6) goto LA9;
		localerror_164171((*n).info, ((NU16) 4), ((NimStringDesc*) &TMP3465));
	}
	goto LA1;
	LA9: ;
	{
		if (!!(((*(*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S5.ident).Sup.id == (*(*realmodule).name).Sup.id))) goto LA12;
		result = createmodulealias_193844(realmodule, (*(*n).kindU.S6.sons->data[((NI) 1)]).kindU.S5.ident, (*realmodule).info);
	}
	goto LA1;
	LA12: ;
	LA1: ;
	return result;
}
Example #2
0
N_NIMCALL(NU8, ispartof_398375)(Tnode190813* a, Tnode190813* b) {
	NU8 result;
	result = 0;
	{
		if (!((*a).kind == (*b).kind)) goto LA3;
		switch ((*a).kind) {
		case ((NU8) 3):
		{
			{
				if (!((*(*a).kindU.S4.sym).Sup.id == (*(*b).kindU.S4.sym).Sup.id)) goto LA8;
				result = ((NU8) 2);
			}
			goto LA6;
			LA8: ;
			{
				NIM_BOOL LOC11;
				LOC11 = 0;
				LOC11 = ((4384 &(1<<(((*(*a).kindU.S4.sym).kind)&31)))!=0);
				if (LOC11) goto LA12;
				LOC11 = ((4384 &(1<<(((*(*b).kindU.S4.sym).kind)&31)))!=0);
				LA12: ;
				if (!LOC11) goto LA13;
				result = ((NU8) 0);
			}
			goto LA6;
			LA13: ;
			{
				{
					NU8 LOC18;
					LOC18 = 0;
					LOC18 = ispartof_398362((*(*a).kindU.S4.sym).typ, (*(*b).kindU.S4.sym).typ);
					if (!!((LOC18 == ((NU8) 0)))) goto LA19;
					result = ((NU8) 1);
				}
				LA19: ;
			}
			LA6: ;
		}
		break;
		case ((NU8) 42):
		{
			Tnode190813* LOC22;
			Tnode190813* LOC23;
			LOC22 = 0;
			LOC22 = HEX5BHEX5D_191246(a, ((NI) 0));
			LOC23 = 0;
			LOC23 = HEX5BHEX5D_191246(b, ((NI) 0));
			result = ispartof_398375(LOC22, LOC23);
			{
				NIM_BOOL LOC26;
				NI LOC27;
				NI LOC29;
				LOC26 = 0;
				LOC27 = 0;
				LOC27 = len_191097(a);
				LOC26 = (((NI) 2) <= LOC27);
				if (!(LOC26)) goto LA28;
				LOC29 = 0;
				LOC29 = len_191097(b);
				LOC26 = (((NI) 2) <= LOC29);
				LA28: ;
				if (!LOC26) goto LA30;
				{
					NIM_BOOL LOC34;
					NIM_BOOL LOC35;
					Tnode190813* LOC37;
					Tnode190813* LOC39;
					Tnode190813* x;
					Tnode190813* y;
					LOC34 = 0;
					LOC35 = 0;
					LOC35 = (result == ((NU8) 2));
					if (!(LOC35)) goto LA36;
					LOC37 = 0;
					LOC37 = HEX5BHEX5D_191246(a, ((NI) 1));
					LOC35 = isdeepconstexpr_219459(LOC37);
					LA36: ;
					LOC34 = LOC35;
					if (!(LOC34)) goto LA38;
					LOC39 = 0;
					LOC39 = HEX5BHEX5D_191246(b, ((NI) 1));
					LOC34 = isdeepconstexpr_219459(LOC39);
					LA38: ;
					if (!LOC34) goto LA40;
					{
						Tnode190813* LOC44;
						Tnode190813* LOC47;
						LOC44 = 0;
						LOC44 = HEX5BHEX5D_191246(a, ((NI) 1));
						if (!((*LOC44).kind == ((NU8) 58))) goto LA45;
						LOC47 = 0;
						LOC47 = HEX5BHEX5D_191246(a, ((NI) 1));
						x = HEX5BHEX5D_191246(LOC47, ((NI) 1));
					}
					goto LA42;
					LA45: ;
					{
						x = HEX5BHEX5D_191246(a, ((NI) 1));
					}
					LA42: ;
					{
						Tnode190813* LOC51;
						Tnode190813* LOC54;
						LOC51 = 0;
						LOC51 = HEX5BHEX5D_191246(b, ((NI) 1));
						if (!((*LOC51).kind == ((NU8) 58))) goto LA52;
						LOC54 = 0;
						LOC54 = HEX5BHEX5D_191246(b, ((NI) 1));
						y = HEX5BHEX5D_191246(LOC54, ((NI) 1));
					}
					goto LA49;
					LA52: ;
					{
						y = HEX5BHEX5D_191246(b, ((NI) 1));
					}
					LA49: ;
					{
						NIM_BOOL LOC58;
						LOC58 = 0;
						LOC58 = samevalue_198324(x, y);
						if (!LOC58) goto LA59;
						result = ((NU8) 2);
					}
					goto LA56;
					LA59: ;
					{
						result = ((NU8) 0);
					}
					LA56: ;
				}
				LA40: ;
			}
			goto LA24;
			LA30: ;
			{
				{
					if (!!((result == ((NU8) 2)))) goto LA65;
					{
						NU8 LOC69;
						LOC69 = 0;
						LOC69 = ispartof_398362((*a).typ, (*b).typ);
						if (!!((LOC69 == ((NU8) 0)))) goto LA70;
						result = ((NU8) 1);
					}
					LA70: ;
				}
				LA65: ;
			}
			LA24: ;
		}
		break;
		case ((NU8) 45):
		{
			Tnode190813* LOC73;
			Tnode190813* LOC74;
			LOC73 = 0;
			LOC73 = HEX5BHEX5D_191246(a, ((NI) 0));
			LOC74 = 0;
			LOC74 = HEX5BHEX5D_191246(b, ((NI) 0));
			result = ispartof_398375(LOC73, LOC74);
			{
				if (!!((result == ((NU8) 0)))) goto LA77;
				{
					Tnode190813* LOC81;
					Tnode190813* LOC82;
					LOC81 = 0;
					LOC81 = HEX5BHEX5D_191246(a, ((NI) 1));
					LOC82 = 0;
					LOC82 = HEX5BHEX5D_191246(b, ((NI) 1));
					if (!!(((*(*LOC81).kindU.S4.sym).Sup.id == (*(*LOC82).kindU.S4.sym).Sup.id))) goto LA83;
					result = ((NU8) 0);
				}
				LA83: ;
			}
			LA77: ;
		}
		break;
		case ((NU8) 65):
		case ((NU8) 47):
		{
			Tnode190813* LOC86;
			Tnode190813* LOC87;
			LOC86 = 0;
			LOC86 = HEX5BHEX5D_191246(a, ((NI) 0));
			LOC87 = 0;
			LOC87 = HEX5BHEX5D_191246(b, ((NI) 0));
			result = ispartof_398375(LOC86, LOC87);
			{
				if (!!((result == ((NU8) 2)))) goto LA90;
				{
					NU8 LOC94;
					LOC94 = 0;
					LOC94 = ispartof_398362((*a).typ, (*b).typ);
					if (!!((LOC94 == ((NU8) 0)))) goto LA95;
					result = ((NU8) 1);
				}
				LA95: ;
			}
			LA90: ;
		}
		break;
		case ((NU8) 58):
		case ((NU8) 59):
		case ((NU8) 60):
		{
			Tnode190813* LOC98;
			Tnode190813* LOC99;
			LOC98 = 0;
			LOC98 = HEX5BHEX5D_191246(a, ((NI) 1));
			LOC99 = 0;
			LOC99 = HEX5BHEX5D_191246(b, ((NI) 1));
			result = ispartof_398375(LOC98, LOC99);
		}
		break;
		case ((NU8) 67):
		case ((NU8) 66):
		case ((NU8) 46):
		{
			Tnode190813* LOC101;
			Tnode190813* LOC102;
			LOC101 = 0;
			LOC101 = HEX5BHEX5D_191246(a, ((NI) 0));
			LOC102 = 0;
			LOC102 = HEX5BHEX5D_191246(b, ((NI) 0));
			result = ispartof_398375(LOC101, LOC102);
		}
		break;
		default:
		{
		}
		break;
		}
	}
	goto LA1;
	LA3: ;
	{
		switch ((*b).kind) {
		case ((NU8) 45):
		case ((NU8) 42):
		case ((NU8) 67):
		case ((NU8) 66):
		case ((NU8) 46):
		{
			Tnode190813* LOC106;
			LOC106 = 0;
			LOC106 = HEX5BHEX5D_191246(b, ((NI) 0));
			result = ispartof_398375(a, LOC106);
		}
		break;
		case ((NU8) 65):
		case ((NU8) 47):
		{
			{
				NU8 LOC110;
				Tnode190813* LOC113;
				LOC110 = 0;
				LOC110 = ispartof_398362((*a).typ, (*b).typ);
				if (!!((LOC110 == ((NU8) 0)))) goto LA111;
				LOC113 = 0;
				LOC113 = HEX5BHEX5D_191246(b, ((NI) 0));
				result = ispartof_398375(a, LOC113);
				{
					if (!(result == ((NU8) 0))) goto LA116;
					result = ((NU8) 1);
				}
				LA116: ;
			}
			LA111: ;
		}
		break;
		case ((NU8) 58):
		case ((NU8) 59):
		case ((NU8) 60):
		{
			Tnode190813* LOC119;
			LOC119 = 0;
			LOC119 = HEX5BHEX5D_191246(b, ((NI) 1));
			result = ispartof_398375(a, LOC119);
		}
		break;
		case ((NU8) 3):
		{
			switch ((*a).kind) {
			case ((NU8) 45):
			case ((NU8) 42):
			case ((NU8) 67):
			case ((NU8) 66):
			case ((NU8) 46):
			{
				Tnode190813* LOC122;
				LOC122 = 0;
				LOC122 = HEX5BHEX5D_191246(a, ((NI) 0));
				result = ispartof_398375(LOC122, b);
			}
			break;
			case ((NU8) 58):
			case ((NU8) 59):
			case ((NU8) 60):
			{
				Tnode190813* LOC124;
				LOC124 = 0;
				LOC124 = HEX5BHEX5D_191246(a, ((NI) 1));
				result = ispartof_398375(LOC124, b);
			}
			break;
			case ((NU8) 65):
			case ((NU8) 47):
			{
				{
					NU8 LOC128;
					Tnode190813* LOC131;
					LOC128 = 0;
					LOC128 = ispartof_398362((*a).typ, (*b).typ);
					if (!!((LOC128 == ((NU8) 0)))) goto LA129;
					LOC131 = 0;
					LOC131 = HEX5BHEX5D_191246(a, ((NI) 0));
					result = ispartof_398375(LOC131, b);
					{
						if (!(result == ((NU8) 0))) goto LA134;
						result = ((NU8) 1);
					}
					LA134: ;
				}
				LA129: ;
			}
			break;
			default:
			{
			}
			break;
			}
		}
		break;
		default:
		{
		}
		break;
		}
	}
	LA1: ;
	return result;
}
Example #3
0
N_NIMCALL(Tnode190813*, evaltemplate_383260)(Tnode190813* n, Tsym190843* tmpl, Tsym190843* gensymowner) {
	Tnode190813* result;
	NI TMP7634;
	Tnode190813* args;
	Templctx383019 ctx;
	Tnode190813* body;
	NI TMP7637;
	nimfr("evalTemplate", "evaltempl.nim")
	result = 0;
	nimln(78, "evaltempl.nim");
	TMP7634 = addInt(evaltemplatecounter_383256, ((NI) 1));
	evaltemplatecounter_383256 = (NI)(TMP7634);
	nimln(79, "evaltempl.nim");
	{
		if (!(((NI) 100) < evaltemplatecounter_383256)) goto LA3;
		nimln(80, "evaltempl.nim");
		globalerror_164134((*n).info, ((NU16) 183), ((NimStringDesc*) &TMP7631));
		nimln(81, "evaltempl.nim");
		result = n;
	}
	LA3: ;
	nimln(84, "evaltempl.nim");
	args = evaltemplateargs_383184(n, tmpl);
	memset((void*)(&ctx), 0, sizeof(ctx));
	nimln(86, "evaltempl.nim");
	ctx.owner = tmpl;
	nimln(87, "evaltempl.nim");
	ctx.gensymowner = gensymowner;
	nimln(88, "evaltempl.nim");
	initidtable_194057((&ctx.mapping));
	nimln(90, "evaltempl.nim");
	body = getbody_235648(tmpl);
	nimln(91, "evaltempl.nim");
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = isatom_195905(body);
		if (!LOC7) goto LA8;
		nimln(92, "evaltempl.nim");
		result = newnodei_192351(((NU8) 37), (*body).info);
		nimln(93, "evaltempl.nim");
		evaltemplateaux_383039(body, args, (&ctx), result);
		nimln(94, "evaltempl.nim");
		{
			NI LOC12;
			LOC12 = 0;
			LOC12 = len_191097(result);
			if (!(LOC12 == ((NI) 1))) goto LA13;
			if (((TMP7624[(*result).kind/8] &(1<<((*result).kind%8)))!=0)) raiseFieldError(((NimStringDesc*) &TMP7625));
			if ((NU)(((NI) 0)) >= (NU)((*result).kindU.S6.sons->Sup.len)) raiseIndexError();
			result = (*result).kindU.S6.sons->data[((NI) 0)];
		}
		goto LA10;
		LA13: ;
		{
			NimStringDesc* LOC16;
			nimln(96, "evaltempl.nim");
			nimln(97, "evaltempl.nim");
			LOC16 = 0;
			LOC16 = rendertree_212058(result, 4);
			localerror_164155((*result).info, ((NU16) 1), LOC16);
		}
		LA10: ;
	}
	goto LA5;
	LA8: ;
	{
		nimln(99, "evaltempl.nim");
		result = copynode_194640(body);
		nimln(100, "evaltempl.nim");
		ctx.instlines = !(((*body).kind == ((NU8) 115) || (*body).kind == ((NU8) 126) || (*body).kind == ((NU8) 112) || (*body).kind == ((NU8) 127)));
		nimln(102, "evaltempl.nim");
		{
			if (!ctx.instlines) goto LA20;
			(*result).info = (*n).info;
		}
		LA20: ;
		{
			NI i_383308;
			NI HEX3Atmp_383322;
			NI LOC23;
			NI TMP7635;
			NI res_383325;
			i_383308 = 0;
			HEX3Atmp_383322 = 0;
			nimln(103, "evaltempl.nim");
			LOC23 = 0;
			LOC23 = safelen_191125(body);
			TMP7635 = subInt(LOC23, ((NI) 1));
			HEX3Atmp_383322 = (NI)(TMP7635);
			nimln(1598, "system.nim");
			res_383325 = ((NI) 0);
			{
				nimln(1599, "system.nim");
				while (1) {
					NI TMP7636;
					if (!(res_383325 <= HEX3Atmp_383322)) goto LA25;
					nimln(1600, "system.nim");
					i_383308 = res_383325;
					nimln(104, "evaltempl.nim");
					if (((TMP7624[(*body).kind/8] &(1<<((*body).kind%8)))!=0)) raiseFieldError(((NimStringDesc*) &TMP7625));
					if ((NU)(i_383308) >= (NU)((*body).kindU.S6.sons->Sup.len)) raiseIndexError();
					evaltemplateaux_383039((*body).kindU.S6.sons->data[i_383308], args, (&ctx), result);
					nimln(1614, "system.nim");
					TMP7636 = addInt(res_383325, ((NI) 1));
					res_383325 = (NI)(TMP7636);
				} LA25: ;
			}
		}
	}
	LA5: ;
	nimln(106, "evaltempl.nim");
	TMP7637 = subInt(evaltemplatecounter_383256, ((NI) 1));
	evaltemplatecounter_383256 = (NI)(TMP7637);
	popFrame();
	return result;
}
Example #4
0
N_NIMCALL(void, evaltemplateaux_383039)(Tnode190813* templ, Tnode190813* actual, Templctx383019* c, Tnode190813* result) {
	nimfr("evalTemplateAux", "evaltempl.nim")
	nimln(28, "evaltempl.nim");
	switch ((*templ).kind) {
	case ((NU8) 3):
	{
		Tsym190843* s;
		nimln(30, "evaltempl.nim");
		if (!(((TMP7622[(*templ).kind/8] &(1<<((*templ).kind%8)))!=0))) raiseFieldError(((NimStringDesc*) &TMP7623));
		s = (*templ).kindU.S4.sym;
		nimln(31, "evaltempl.nim");
		{
			if (!((*(*s).owner).Sup.id == (*(*c).owner).Sup.id)) goto LA4;
			nimln(32, "evaltempl.nim");
			{
				NIM_BOOL LOC8;
				Tnode190813* x;
				LOC8 = 0;
				LOC8 = ((*s).kind == ((NU8) 3));
				if (!(LOC8)) goto LA9;
				LOC8 = !((((*s).flags &(1<<((((NU8) 31))&31)))!=0));
				LA9: ;
				if (!LOC8) goto LA10;
				nimln(33, "evaltempl.nim");
				if (((TMP7624[(*actual).kind/8] &(1<<((*actual).kind%8)))!=0)) raiseFieldError(((NimStringDesc*) &TMP7625));
				if ((NU)((*s).position) >= (NU)((*actual).kindU.S6.sons->Sup.len)) raiseIndexError();
				x = (*actual).kindU.S6.sons->data[(*s).position];
				nimln(34, "evaltempl.nim");
				{
					if (!((*x).kind == ((NU8) 152))) goto LA14;
					{
						Tnode190813* y_383083;
						y_383083 = 0;
						{
							NI i_383142;
							NI HEX3Atmp_383144;
							NI LOC18;
							NI res_383146;
							i_383142 = 0;
							HEX3Atmp_383144 = 0;
							nimln(1537, "ast.nim");
							LOC18 = 0;
							LOC18 = len_191097(x);
							HEX3Atmp_383144 = subInt(LOC18, 1);
							nimln(1598, "system.nim");
							res_383146 = ((NI) 0);
							{
								nimln(1599, "system.nim");
								while (1) {
									NI TMP7626;
									if (!(res_383146 <= HEX3Atmp_383144)) goto LA20;
									nimln(1600, "system.nim");
									i_383142 = res_383146;
									nimln(1537, "ast.nim");
									if (((TMP7624[(*x).kind/8] &(1<<((*x).kind%8)))!=0)) raiseFieldError(((NimStringDesc*) &TMP7625));
									if ((NU)(i_383142) >= (NU)((*x).kindU.S6.sons->Sup.len)) raiseIndexError();
									y_383083 = (*x).kindU.S6.sons->data[i_383142];
									nimln(35, "evaltempl.nim");
									add_191164(result, y_383083);
									nimln(1619, "system.nim");
									TMP7626 = addInt(res_383146, ((NI) 1));
									res_383146 = (NI)(TMP7626);
								} LA20: ;
							}
						}
					}
				}
				goto LA12;
				LA14: ;
				{
					Tnode190813* LOC22;
					nimln(37, "evaltempl.nim");
					LOC22 = 0;
					LOC22 = copytree_195028(x);
					add_191164(result, LOC22);
				}
				LA12: ;
			}
			goto LA6;
			LA10: ;
			{
				Tsym190843* x;
				Tidobj166015* LOC29;
				TNimObject* LOC30;
				Tlineinfo162338 LOC37;
				Tnode190813* LOC43;
				nimln(854, "msgs.nim");
				{
					NimStringDesc* LOC28;
					nimln(39, "evaltempl.nim");
					if (!!((((*s).flags &(1<<((((NU8) 31))&31)))!=0))) goto LA26;
					nimln(854, "msgs.nim");
					LOC28 = 0;
					LOC28 = HEX24_164306(TMP7627);
					internalerror_164218(LOC28);
				}
				LA26: ;
				nimln(40, "evaltempl.nim");
				LOC29 = 0;
				LOC29 = &s->Sup;
				LOC30 = 0;
				LOC30 = idtableget_198182((*c).mapping, LOC29);
				if (LOC30) chckObj((*LOC30).m_type, (&NTI190843));
				x = ((Tsym190843*) (LOC30));
				nimln(41, "evaltempl.nim");
				{
					Tidobj166015* LOC35;
					TNimObject* LOC36;
					if (!(x == NIM_NIL)) goto LA33;
					nimln(42, "evaltempl.nim");
					x = copysym_193607(s, NIM_FALSE);
					nimln(43, "evaltempl.nim");
					asgnRefNoCycle((void**) (&(*x).owner), (*c).gensymowner);
					nimln(44, "evaltempl.nim");
					LOC35 = 0;
					LOC35 = &s->Sup;
					LOC36 = 0;
					LOC36 = &x->Sup.Sup;
					idtableput_198196((&(*c).mapping), LOC35, LOC36);
				}
				LA33: ;
				nimln(45, "evaltempl.nim");
				{
					if (!(*c).instlines) goto LA40;
					LOC37 = (*actual).info;
				}
				goto LA38;
				LA40: ;
				{
					LOC37 = (*templ).info;
				}
				LA38: ;
				LOC43 = 0;
				LOC43 = newsymnode_192338(x, LOC37);
				add_191164(result, LOC43);
			}
			LA6: ;
		}
		goto LA2;
		LA4: ;
		{
			Tnode190813* LOC45;
			nimln(47, "evaltempl.nim");
			LOC45 = 0;
			LOC45 = copynode_383027((&(*c)), templ, actual);
			add_191164(result, LOC45);
		}
		LA2: ;
	}
	break;
	case ((NU8) 0) ... ((NU8) 2):
	case ((NU8) 4) ... ((NU8) 23):
	{
		Tnode190813* LOC47;
		nimln(49, "evaltempl.nim");
		LOC47 = 0;
		LOC47 = copynode_383027((&(*c)), templ, actual);
		add_191164(result, LOC47);
	}
	break;
	default:
	{
		Tnode190813* res;
		nimln(51, "evaltempl.nim");
		res = copynode_383027((&(*c)), templ, actual);
		{
			NI i_383135;
			NI HEX3Atmp_383150;
			NI LOC50;
			NI TMP7629;
			NI res_383153;
			i_383135 = 0;
			HEX3Atmp_383150 = 0;
			nimln(52, "evaltempl.nim");
			LOC50 = 0;
			LOC50 = sonslen_193403(templ);
			TMP7629 = subInt(LOC50, ((NI) 1));
			HEX3Atmp_383150 = (NI)(TMP7629);
			nimln(1598, "system.nim");
			res_383153 = ((NI) 0);
			{
				nimln(1599, "system.nim");
				while (1) {
					NI TMP7630;
					if (!(res_383153 <= HEX3Atmp_383150)) goto LA52;
					nimln(1600, "system.nim");
					i_383135 = res_383153;
					nimln(53, "evaltempl.nim");
					if (((TMP7624[(*templ).kind/8] &(1<<((*templ).kind%8)))!=0)) raiseFieldError(((NimStringDesc*) &TMP7625));
					if ((NU)(i_383135) >= (NU)((*templ).kindU.S6.sons->Sup.len)) raiseIndexError();
					evaltemplateaux_383039((*templ).kindU.S6.sons->data[i_383135], actual, c, res);
					nimln(1614, "system.nim");
					TMP7630 = addInt(res_383153, ((NI) 1));
					res_383153 = (NI)(TMP7630);
				} LA52: ;
			}
		}
		nimln(54, "evaltempl.nim");
		add_191164(result, res);
	}
	break;
	}
	popFrame();
}
Example #5
0
N_NIMCALL(Tnode190813*, evaltemplate_382260)(Tnode190813* n, Tsym190843* tmpl, Tsym190843* gensymowner) {
	Tnode190813* result;
	Tnode190813* args;
	Templctx382019 ctx;
	Tnode190813* body;
	result = 0;
	evaltemplatecounter_382256 += ((NI) 1);
	{
		if (!(((NI) 100) < evaltemplatecounter_382256)) goto LA3;
		globalerror_164150((*n).info, ((NU16) 183), ((NimStringDesc*) &TMP2819));
		result = n;
	}
	LA3: ;
	args = evaltemplateargs_382184(n, tmpl);
	memset((void*)(&ctx), 0, sizeof(ctx));
	ctx.owner = tmpl;
	ctx.gensymowner = gensymowner;
	initidtable_194057((&ctx.mapping));
	body = getbody_234647(tmpl);
	{
		NIM_BOOL LOC7;
		LOC7 = 0;
		LOC7 = isatom_195906(body);
		if (!LOC7) goto LA8;
		result = newnodei_192351(((NU8) 37), (*body).info);
		evaltemplateaux_382039(body, args, (&ctx), result);
		{
			NI LOC12;
			LOC12 = 0;
			LOC12 = len_191097(result);
			if (!(LOC12 == ((NI) 1))) goto LA13;
			result = (*result).kindU.S6.sons->data[((NI) 0)];
		}
		goto LA10;
		LA13: ;
		{
			NimStringDesc* LOC16;
			LOC16 = 0;
			LOC16 = rendertree_212058(result, 4);
			localerror_164171((*result).info, ((NU16) 1), LOC16);
		}
		LA10: ;
	}
	goto LA5;
	LA8: ;
	{
		result = copynode_194644(body);
		ctx.instlines = !(((*body).kind == ((NU8) 115) || (*body).kind == ((NU8) 126) || (*body).kind == ((NU8) 112) || (*body).kind == ((NU8) 127)));
		{
			if (!ctx.instlines) goto LA20;
			(*result).info = (*n).info;
		}
		LA20: ;
		{
			NI i_382308;
			NI HEX3Atmp_382322;
			NI LOC23;
			NI res_382325;
			i_382308 = 0;
			HEX3Atmp_382322 = 0;
			LOC23 = 0;
			LOC23 = safelen_191125(body);
			HEX3Atmp_382322 = (NI)(LOC23 - ((NI) 1));
			res_382325 = ((NI) 0);
			{
				while (1) {
					if (!(res_382325 <= HEX3Atmp_382322)) goto LA25;
					i_382308 = res_382325;
					evaltemplateaux_382039((*body).kindU.S6.sons->data[i_382308], args, (&ctx), result);
					res_382325 += ((NI) 1);
				} LA25: ;
			}
		}
	}
	LA5: ;
	evaltemplatecounter_382256 -= ((NI) 1);
	return result;
}
Example #6
0
N_NIMCALL(void, evaltemplateaux_382039)(Tnode190813* templ, Tnode190813* actual, Templctx382019* c, Tnode190813* result) {
	switch ((*templ).kind) {
	case ((NU8) 3):
	{
		Tsym190843* s;
		s = (*templ).kindU.S4.sym;
		{
			if (!((*(*s).owner).Sup.id == (*(*c).owner).Sup.id)) goto LA4;
			{
				NIM_BOOL LOC8;
				Tnode190813* x;
				LOC8 = 0;
				LOC8 = ((*s).kind == ((NU8) 3));
				if (!(LOC8)) goto LA9;
				LOC8 = !((((*s).flags &(1<<((((NU8) 31))&31)))!=0));
				LA9: ;
				if (!LOC8) goto LA10;
				x = (*actual).kindU.S6.sons->data[(*s).position];
				{
					if (!((*x).kind == ((NU8) 152))) goto LA14;
					{
						Tnode190813* y_382083;
						y_382083 = 0;
						{
							NI i_382142;
							NI HEX3Atmp_382144;
							NI LOC18;
							NI res_382146;
							i_382142 = 0;
							HEX3Atmp_382144 = 0;
							LOC18 = 0;
							LOC18 = len_191097(x);
							HEX3Atmp_382144 = (LOC18 - 1);
							res_382146 = ((NI) 0);
							{
								while (1) {
									if (!(res_382146 <= HEX3Atmp_382144)) goto LA20;
									i_382142 = res_382146;
									y_382083 = (*x).kindU.S6.sons->data[i_382142];
									add_191164(result, y_382083);
									res_382146 += ((NI) 1);
								} LA20: ;
							}
						}
					}
				}
				goto LA12;
				LA14: ;
				{
					Tnode190813* LOC22;
					LOC22 = 0;
					LOC22 = copytree_195028(x);
					add_191164(result, LOC22);
				}
				LA12: ;
			}
			goto LA6;
			LA10: ;
			{
				Tsym190843* x;
				Tidobj166015* LOC29;
				TNimObject* LOC30;
				Tlineinfo162338 LOC37;
				Tnode190813* LOC43;
				{
					NimStringDesc* LOC28;
					if (!!((((*s).flags &(1<<((((NU8) 31))&31)))!=0))) goto LA26;
					LOC28 = 0;
					LOC28 = HEX24_164322(TMP2820);
					internalerror_164234(LOC28);
				}
				LA26: ;
				LOC29 = 0;
				LOC29 = &s->Sup;
				LOC30 = 0;
				LOC30 = idtableget_198182((*c).mapping, LOC29);
				x = ((Tsym190843*) (LOC30));
				{
					Tidobj166015* LOC35;
					TNimObject* LOC36;
					if (!(x == NIM_NIL)) goto LA33;
					x = copysym_193607(s, NIM_FALSE);
					asgnRefNoCycle((void**) (&(*x).owner), (*c).gensymowner);
					LOC35 = 0;
					LOC35 = &s->Sup;
					LOC36 = 0;
					LOC36 = &x->Sup.Sup;
					idtableput_198196((&(*c).mapping), LOC35, LOC36);
				}
				LA33: ;
				{
					if (!(*c).instlines) goto LA40;
					LOC37 = (*actual).info;
				}
				goto LA38;
				LA40: ;
				{
					LOC37 = (*templ).info;
				}
				LA38: ;
				LOC43 = 0;
				LOC43 = newsymnode_192338(x, LOC37);
				add_191164(result, LOC43);
			}
			LA6: ;
		}
		goto LA2;
		LA4: ;
		{
			Tnode190813* LOC45;
			LOC45 = 0;
			LOC45 = copynode_382027((&(*c)), templ, actual);
			add_191164(result, LOC45);
		}
		LA2: ;
	}
	break;
	case ((NU8) 0) ... ((NU8) 2):
	case ((NU8) 4) ... ((NU8) 23):
	{
		Tnode190813* LOC47;
		LOC47 = 0;
		LOC47 = copynode_382027((&(*c)), templ, actual);
		add_191164(result, LOC47);
	}
	break;
	default:
	{
		Tnode190813* res;
		res = copynode_382027((&(*c)), templ, actual);
		{
			NI i_382135;
			NI HEX3Atmp_382150;
			NI LOC50;
			NI res_382153;
			i_382135 = 0;
			HEX3Atmp_382150 = 0;
			LOC50 = 0;
			LOC50 = sonslen_193403(templ);
			HEX3Atmp_382150 = (NI)(LOC50 - ((NI) 1));
			res_382153 = ((NI) 0);
			{
				while (1) {
					if (!(res_382153 <= HEX3Atmp_382150)) goto LA52;
					i_382135 = res_382153;
					evaltemplateaux_382039((*templ).kindU.S6.sons->data[i_382135], actual, c, res);
					res_382153 += ((NI) 1);
				} LA52: ;
			}
		}
		add_191164(result, res);
	}
	break;
	}
}