static void _xlat_debug(xlat_exp_head_t const *head, int depth)
{
int i = 0;
+#ifndef NDEBUG
+ bool needs_resolving = false;
+#endif
#define INFO_INDENT(_fmt, ...) INFO("%*s"_fmt, depth * 2, " ", ## __VA_ARGS__)
node->flags.needs_async ? "need_async" : "",
node->flags.pure ? "pure" : "",
node->flags.can_purify ? "can_purify" : "");
+
+#ifndef NDEBUG
+ if (node->flags.needs_resolving) fr_assert(head->flags.needs_resolving);
+
+ if (!head->flags.needs_resolving) fr_assert(!node->flags.needs_resolving);
+
+ needs_resolving |= node->flags.needs_resolving;
+#endif
+
if (node->quote != T_BARE_WORD) INFO_INDENT("quote = %c", fr_token_quote[node->quote]);
switch (node->type) {
break;
}
}
+
+ fr_assert(needs_resolving == head->flags.needs_resolving);
}
void xlat_debug(xlat_exp_head_t const *head)