This has to re-introduce the `sink` pattern, because doing this purely
with iterators is awkward :( Maaaybe the event vector was a false start?
But, anyway, I like the current factoring more -- it sort-of obvious
that we do want to keep ws-attachment business in the parser, and that
we also don't want that to depend on the particular tree structure. I
think `shortcuts` module achieves that.
11117: internal: replace TreeSink with a data structure r=matklad a=matklad
The general theme of this is to make parser a better independent
library.
The specific thing we do here is replacing callback based TreeSink with
a data structure. That is, rather than calling user-provided tree
construction methods, the parser now spits out a very bare-bones tree,
effectively a log of a DFS traversal.
This makes the parser usable without any *specifc* tree sink, and allows
us to, eg, move tests into this crate.
Now, it's also true that this is a distinction without a difference, as
the old and the new interface are equivalent in expressiveness. Still,
this new thing seems somewhat simpler. But yeah, I admit I don't have a
suuper strong motivation here, just a hunch that this is better.
cc #10765
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
The general theme of this is to make parser a better independent
library.
The specific thing we do here is replacing callback based TreeSink with
a data structure. That is, rather than calling user-provided tree
construction methods, the parser now spits out a very bare-bones tree,
effectively a log of a DFS traversal.
This makes the parser usable without any *specifc* tree sink, and allows
us to, eg, move tests into this crate.
Now, it's also true that this is a distinction without a difference, as
the old and the new interface are equivalent in expressiveness. Still,
this new thing seems somewhat simpler. But yeah, I admit I don't have a
suuper strong motivation here, just a hunch that this is better.
11103: internal: Improve `github-release` action r=lnicola a=lnicola
Upgrade ``@actions/github`` to get `listReleaseAssets` and retry individual uploads in addition to the whole thing.
Also disables `ci`, `metrics` and `rustdoc` on forks to save some CPU time.
CC #11056
Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
11096: Code: Use the same `displayName` for pre-release versions r=lnicola a=lnicola
Otherwise the Marketplace shows `(nightly)` for the stable version.
bors r+
Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
11095: internal: Disable unstable APIs for nightly releases r=lnicola a=lnicola
bors r+
The Marketplace doesn't allow us to publish extensions using these, even as pre-release versions.
Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
11086: internal: Simplify completion rendering r=Veykril a=Veykril
Removes all the helper render structs in favor of simple functions, making things a lot easier to oversee(imho)
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>