コード例 #1
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();
}
コード例 #2
0
ファイル: compiler_evaltempl.c プロジェクト: jlp765/csources
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;
	}
}