+ if (n == 1 && ops->n_args == node->n_args)
+ {
+ for (size_t i = 0; i < ops->n_args; i++)
+ if ((ops->args[i] == OP_ni_format
+ || ops->args[i] == OP_no_format)
+ && expr_node_returns (node->args[i]) == OP_format)
+ {
+ const struct fmt_spec *f = &node->args[i]->format;
+ char *error = fmt_check__ (f, (ops->args[i] == OP_ni_format
+ ? FMT_FOR_INPUT : FMT_FOR_OUTPUT));
+ if (!error)
+ error = fmt_check_type_compat__ (f, VAL_NUMERIC);
+ if (error)
+ {
+ msg_at (SN, expr_location (e, node->args[i]), "%s", error);
+ free (error);
+ }
+ }
+ }
+