so that when we're purifying functions, if the current node is not
pure, AND the node has no pure children, then we can short-circuit
the walk, and ignore this node.
bool needs_async; //!< Node and all child nodes are guaranteed to not
///< require asynchronous expansion.
bool pure; //!< has no external side effects
+ bool has_pure_children; //!< as the sticker says
} xlat_flags_t;
/*
parent->needs_resolving |= child->needs_resolving;
parent->pure &= child->pure; /* purity can only be removed, never added */
parent->pure &= !parent->needs_async; /* things needing async cannot be pure */
+ parent->has_pure_children |= child->pure | child->has_pure_children;
}
/** Set the type of an xlat node