Commit Graph

201 Commits

Author SHA1 Message Date
Jonas Schievink 8a7f0d920e Allow macros to expand to or-patterns 2022-01-17 16:52:53 +01:00
Aleksey Kladov 2e34a5e2e9 add empty input tests 2022-01-02 18:50:32 +03:00
Aleksey Kladov c72908a201 more intuitive order 2022-01-02 18:46:01 +03:00
Aleksey Kladov d846afdeef check top level entry point invariants 2022-01-02 18:41:32 +03:00
Aleksey Kladov fa049d94d1 add top-level tests for expressions 2022-01-02 17:52:05 +03:00
Aleksey Kladov 640cc27ff0 add top level tests for types 2022-01-02 17:45:18 +03:00
Aleksey Kladov e78424846e enforce parsing invariant for patterns 2022-01-02 17:32:15 +03:00
Aleksey Kladov 7989d567e2 internal: more macro tests 2022-01-02 17:18:21 +03:00
Aleksey Kladov 7de4b964a9 add test for macro items 2022-01-02 16:48:10 +03:00
Aleksey Kladov bebfb83fd0 split prefix/top tests 2022-01-02 15:18:34 +03:00
Aleksey Kladov 2bd7c74706 add tests for macro statements 2022-01-02 15:17:32 +03:00
Aleksey Kladov f2ea7853ee start top-level entry point tests 2022-01-02 15:15:04 +03:00
Aleksey Kladov e366b3c730 minor: generalize 2022-01-02 15:01:20 +03:00
Aleksey Kladov e36f557e4d internal: add more prefix entry point tests 2022-01-01 20:04:09 +03:00
Aleksey Kladov 7c4276b3e1 add path tests 2022-01-01 19:02:47 +03:00
Aleksey Kladov 287e748aa9 add expr tests 2022-01-01 18:58:30 +03:00
Aleksey Kladov 58fa7ce782 tests for ty 2022-01-01 18:58:30 +03:00
Aleksey Kladov 5ca83a5fb3 internal: add tests for patterns 2022-01-01 18:58:30 +03:00
Aleksey Kladov 2f3237912d restore invariatns 2021-12-29 20:37:08 +03:00
Aleksey Kladov b5369927d7 parse empty statemet as statemetn 2021-12-29 20:04:36 +03:00
Aleksey Kladov f5cfc0504e rename 2021-12-29 19:18:34 +03:00
Aleksey Kladov 8234a85d15 compress 2021-12-29 18:51:05 +03:00
Aleksey Kladov 3f5fc05d66 internal: add tests for extra parser entry points 2021-12-29 18:28:11 +03:00
Aleksey Kladov 660cf34d8c dead code 2021-12-28 19:13:30 +03:00
Aleksey Kladov f0fefde401 remove Item::parse 2021-12-28 17:00:55 +03:00
Aleksey Kladov b468bd6645 internal: start isolating ssr-related parsing APIs to SSR 2021-12-28 17:00:55 +03:00
Aleksey Kladov 8794892432 dead code 2021-12-28 17:00:55 +03:00
Aleksey Kladov afffa096f6 add TopEntryPoint 2021-12-28 17:00:55 +03:00
Aleksey Kladov 8e7fc7be65 simplify 2021-12-28 17:00:55 +03:00
Aleksey Kladov 369001615f move path 2021-12-28 17:00:55 +03:00
Aleksey Kladov c5d8a9b341 move expr 2021-12-28 17:00:55 +03:00
Aleksey Kladov 04ae18de29 move ty 2021-12-28 17:00:55 +03:00
Aleksey Kladov 5636bef2ec move pat to prefix entry points 2021-12-28 17:00:55 +03:00
Aleksey Kladov f10f51833c move stmt to entry points 2021-12-28 17:00:55 +03:00
Aleksey Kladov 519ee21bcb internal: move block to prefix entry point 2021-12-28 17:00:55 +03:00
Aleksey Kladov 350d5dc152 internal: move visibility to a prefix entry point 2021-12-28 17:00:55 +03:00
Aleksey Kladov abc658aad0 internal: add prefix entry points 2021-12-28 17:00:55 +03:00
Aleksey Kladov 8e9734e18f fix line endings 2021-12-26 18:46:21 +03:00
Aleksey Kladov b360ea91f2 internal: move inline parser tests to parser crate 2021-12-26 18:19:09 +03:00
Aleksey Kladov 0f74758fea internal: move outlined parser tests 2021-12-26 17:58:33 +03:00
Aleksey Kladov f4cb0ff9be internal: move ws attachment logic to the parser crate
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.
2021-12-26 16:47:10 +03:00
Aleksey Kladov 74de79b1da internal: rename 2021-12-25 22:02:26 +03:00
Aleksey Kladov d0d05075ed internal: replace TreeSink with a data structure
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.
2021-12-25 22:02:26 +03:00
bors[bot] f46731a230 Merge #11028
11028: Bump MSRV (1.57) r=Veykril a=iDawer

This bumps MSRV on all crates to 1.57 except `la-arena`

#10986 requires >=1.57 

Co-authored-by: iDawer <ilnur.iskhakov.oss@outlook.com>
2021-12-20 13:45:35 +00:00
Aleksey Kladov 92dad471bc Update crates/parser/src/lexed_str.rs
Co-authored-by: bjorn3 <bjorn3@users.noreply.github.com>
2021-12-18 17:34:55 +03:00
Aleksey Kladov a022ad68c9 internal: move all the lexing to the parser crate 2021-12-18 17:20:38 +03:00
Aleksey Kladov 78926027e3 converting lexed str to tokens 2021-12-18 15:36:21 +03:00
Aleksey Kladov 8b9d145dea soa all the things 2021-12-18 15:31:50 +03:00
Aleksey Kladov 799941e05e move tests 2021-12-18 14:55:20 +03:00
Aleksey Kladov 7e99864dbf move lexing to the parser crate 2021-12-18 14:55:20 +03:00