You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Clean up and document syntax tree child access API
Here I commit to a more consistent but simpler child access API for
syntax trees, as informed by the JuliaLowering work so far:
* `is_leaf(node)` is given a precise definition (previously
`!haschildren()` - but that had issues - see #483)
* `children(node)` returns the child list, or `nothing` if there are no
children. The `nothing` might be seen as inconvenient, but mapping
across the children of a leaf node is probably an error and one should
probably branch on `is_leaf` first.
* `numchildren(node)` is documented
* `node[i]`, `node[i:j]` are documented to index into the child list
We distinguish `GreenNode` and its implementation of `span` from
`SyntaxNode` and its implementation of `byte_range` and `sourcetext` -
these seem to just have very different APIs, at least as of now.
I've deleted the questionable overloads of multidimensional `getindex`
and the `child` function in favor of single dimensional getindex. I
don't know whether anyone ever ended up using these. But I didn't and
they didn't seem useful+consistent enough to keep the complexity.
I've kept setindex! for now, to set a child of a `SyntaxNode`. Though
I'm not sure this is a good idea to support by default.
0 commit comments