X-Git-Url: https://ocean-lang.org/code/?p=ocean;a=blobdiff_plain;f=csrc%2Foceani.mdc;fp=csrc%2Foceani.mdc;h=3dbe0b19340f4a73fab60591bedc42768385e2cd;hp=a59ba63d9cd0ac1651ab3eab4cf0be8edc5e01a2;hb=43ad94dfe7822a0dee3ad9648b9e00eb05ab1dab;hpb=454d1b434bdcc76d33d3eb5eace74a3de2fd1aa3 diff --git a/csrc/oceani.mdc b/csrc/oceani.mdc index a59ba63..3dbe0b1 100644 --- a/csrc/oceani.mdc +++ b/csrc/oceani.mdc @@ -1274,13 +1274,13 @@ executable. $0->val.bool = 0; }$ | NUMBER ${ { - char tail[3]; + char tail[3] = ""; $0 = new_val(Tnum, $1); - if (number_parse($0->val.num, tail, $1.txt) == 0) - mpq_init($0->val.num); // UNTESTED - if (tail[0]) - tok_err(c, "error: unsupported number suffix", - &$1); + if (number_parse($0->val.num, tail, $1.txt) == 0) { + mpq_init($0->val.num); + tok_err(c, "error: unsupported number format", &$NUM); + } else if (tail[0]) + tok_err(c, "error: unsupported number suffix", &$1); } }$ | STRING ${ { char tail[3]; @@ -2023,7 +2023,7 @@ tell if it was set or not later. { if (!v->global) { if (!c->local || !v->type) - return NULL; // UNTESTED + return NULL; // NOTEST if (v->frame_pos + v->type->size > c->local_size) { printf("INVALID frame_pos\n"); // NOTEST exit(2); // NOTEST @@ -5355,9 +5355,7 @@ casepart` to track a list of case parts. ###### propagate binode cases case Loop: - t = propagate_types(b->right, c, perr_local, Tnone, 0); - if (!type_compat(Tnone, t, 0)) - *perr |= Efail; // UNTESTED + propagate_types(b->right, c, perr_local, Tnone, 0); return propagate_types(b->left, c, perr, type, rules); ###### propagate exec cases @@ -5377,13 +5375,9 @@ casepart` to track a list of case parts. struct casepart *cp; t = propagate_types(cs->forpart, c, perr, Tnone, 0); - if (!type_compat(Tnone, t, 0)) - *perr |= Efail; // UNTESTED if (cs->looppart) { t = propagate_types(cs->thenpart, c, perr, Tnone, 0); - if (!type_compat(Tnone, t, 0)) - *perr |= Efail; // UNTESTED } if (cs->casepart == NULL) { propagate_types(cs->condpart, c, perr, Tbool, 0); @@ -5395,9 +5389,9 @@ casepart` to track a list of case parts. cp && !t; cp = cp->next) t = propagate_types(cp->value, c, perr, NULL, 0); if (!t && cs->condpart) - t = propagate_types(cs->condpart, c, perr, NULL, Rboolok); // UNTESTED + t = propagate_types(cs->condpart, c, perr, NULL, Rboolok); // NOTEST if (!t && cs->looppart) - t = propagate_types(cs->looppart, c, perr, NULL, Rboolok); // UNTESTED + t = propagate_types(cs->looppart, c, perr, NULL, Rboolok); // NOTEST // Now we have a type (I hope) push it down if (t) { for (cp = cs->casepart; cp; cp = cp->next) @@ -5413,8 +5407,8 @@ casepart` to track a list of case parts. type = propagate_types(cs->elsepart, c, perr, NULL, rules); for (cp = cs->casepart; cp && !type; - cp = cp->next) // UNTESTED - type = propagate_types(cp->action, c, perr, NULL, rules); // UNTESTED + cp = cp->next) // NOTEST + type = propagate_types(cp->action, c, perr, NULL, rules); // NOTEST if (type) { if (!cs->looppart) propagate_types(cs->thenpart, c, perr, type, rules); @@ -5512,7 +5506,7 @@ various declarations in the parse context. | DeclarationList Declaration Declaration -> ERROR Newlines ${ - tok_err(c, // UNTESTED + tok_err(c, // NOTEST "error: unhandled parse error", &$1); }$ | DeclareConstant