Return the name, main info, attribute info and named children
Names for the child nodes to show in AST dumps.
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. If
is set to true, the type
of this node is kept even if the children have changed.keepType
Rebuild this node with a new list of children.
Rebuild this node with a new list of children unless all children are identical to the current ones.
Rebuild this node with a new list of children unless all children are identical to the current ones.
The current type of this node
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.
Return this Node with a Type assigned (if no other type has been seen for it yet) or a typed copy.
Return this Node with no Type assigned (if it's type has not been observed yet) or an untyped copy.
Return this Node with no Type assigned (if it's type has not been observed yet) or an untyped 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, the children are only type-checked again if
is set to true. if typeChildren
is also set to true, the
existing type of this node is replaced. If this node does not yet have
a type, the types of all children are computed.retype
(join: StringAdd).self
(join: StringFormat).self
(join: ArrowAssoc[Join]).x
(Since version 2.10.0) Use leftOfArrow
instead
(join: Ensuring[Join]).x
(Since version 2.10.0) Use resultOfEnsuring
instead
A join expression. For joins without option extension, the type rule is (CollectionType(c, t), CollectionType(_, u)) => CollecionType(c, (t, u)). Option-extended left outer joins are typed as (CollectionType(c, t), CollectionType(_, u)) => CollecionType(c, (t, Option(u))), Option-extended right outer joins as (CollectionType(c, t), CollectionType(_, u)) => CollecionType(c, (Option(t), u)) and Option-extended full outer joins as (CollectionType(c, t), CollectionType(_, u)) => CollecionType(c, (Option(t), Option(u))).