All child nodes of this node.
All child nodes of this node. Must be implemented by subclasses.
Rebuild this node with a new list of children.
Rebuild this node with a new list of children. Implementations of this method *must not* perform any optimization to reuse the current node. This method always returns a fresh copy.
Rebuild this node and all children with their computed type.
Rebuild this node and all children with their computed type. If this
node already has a type, it is only recomputed if
is set to
true. The types of all children are computed recursively (if this node's
type is actually computed) using the same retype
setting.retype
Names for the child nodes to show in AST dumps.
Names for the child nodes to show in AST dumps. Defaults to a numbered sequence starting at 0 but can be overridden by subclasses to produce more suitable names.
The intrinsic symbol that points to this Node object.
Apply a mapping function to all children of this node and recreate the node with the new children.
Apply a mapping function to all children of this node and recreate the node with the new children. If all new children are identical to the old ones, this node is returned.
Like nodeMapChildren, except the type of this node is kept even if the children have changed.
Like nodeMapChildren, except the type of this node is kept even if the children have changed. We don't do this by default in nodeMapChildren because many transformations change the type.
The current type of this node
Return this Node with a Type assigned.
Return this Node with a Type assigned. This may only be called on freshly constructed nodes with no other existing references, i.e. creating the Node plus assigning it a Type must be atomic.
Return this Node with a Type assigned (if no other type has been seen for it yet) or a typed copy.
A node in the query AST.
Every Node has a number of child nodes and an optional type annotation.