*perr |= Eruntime;
if (v->constant)
*perr |= Econst;
- if (!type)
- return v->type;
- return type;
+ return v->type;
}
###### interp exec cases
return Tnone;
if (t) {
- if (propagate_types(b->right, c, perr_local, t, 0) != t)
+ if (propagate_types(b->right, c, perr_local, t, 0) != t &&
+ *perr_local & Efail)
if (b->left->type == Xvar)
type_err(c, "info: variable '%v' was set as %1 here.",
cast(var, b->left)->var->where_set, t, rules, NULL);