Note that we don't deal well with an N-ary operation which
starts off with pure children, and then has impure children
later appended. That needs a bit more thinking
}
*out = node;
+ node->flags.pure = tmpl_is_data(node->vpt);
xlat_flags_merge(&head->flags, &node->flags);
return fr_sbuff_used(&our_in);
xlat_exp_insert_tail(unary->call.args, node);
xlat_flags_merge(&unary->flags, &unary->call.args->flags);
+ unary->flags.can_purify = unary->call.func->flags.pure && unary->call.args->flags.pure;
/*
* Don't add it to head->flags, that will be done when it's actually inserted.
fr_assert(xlat_exp_head(node->call.args) != NULL);
+ node->flags.can_purify = node->call.func->flags.pure && node->call.args->flags.pure;
+
lhs = node;
goto redo;
}