Commit Graph

279 Commits

Author SHA1 Message Date
Jonas Schievink
34dc8e9383 Wrap floats in token trees in FLOAT_LITERAL node 2022-05-05 16:28:59 +02:00
Jonas Schievink
2a755495d0 Add tests 2022-05-05 16:28:59 +02:00
Jonas Schievink
1bc3305d95 Split float literal tokens at the . 2022-05-05 16:28:58 +02:00
Jonas Schievink
502c519e7d Wrap float literals in their own node 2022-05-05 16:28:14 +02:00
Jonas Schievink
1f50e19eb2 Add a Converter type for token conversion 2022-05-02 17:47:12 +02:00
Lukas Wirth
e2344e78f3 fix: Use pattern recovery set when parsing ident patterns 2022-04-27 19:08:50 +02:00
XFFXFF
6580d75308 update parser to support associated const equality 2022-04-17 20:26:06 +08:00
Lukas Wirth
d8341c5b92 Parse for<'a> closure syntax 2022-04-10 17:50:14 +02:00
Jonas Schievink
872b7b9660 Wrap macros in expr position in MacroExpr node 2022-04-05 17:43:34 +02:00
hkalbasi
049f0a6d2c recover from missing type annotation 2022-04-01 17:20:54 +04:30
Jonas Schievink
42ecf406e8 Remove parser restriction on varargs positioning 2022-03-31 16:03:27 +02:00
Lukas Wirth
8e91bb7660 minor: Bump dependencies 2022-03-22 17:42:24 +01:00
Steven Joruk
8a28430676 refactor: Rename and move const_arg_path
It wasn't testing the `const_arg` code path, it was actually hitting
const_param's default value code path, so move it to the right place
and rename it.
2022-03-11 22:28:38 +00:00
Steven Joruk
e84453c47f refactor: Rename const_arg_content to const_arg_expr 2022-03-11 22:28:35 +00:00
Steven Joruk
972f50da2d fix: Stop wrapping ConstParam's default values in ConstArg
This was causing ConstParam::default_val to always return None for block
expressions.

CONST_ARG@24..29
  BLOCK_EXPR@24..29
    ...
2022-03-11 19:51:35 +00:00
Dario Nieuwenhuis
49d1207775 Add support for new where clause location in associated types.
A recent Rust nightly changed it: https://github.com/rust-lang/rust/issues/89122

This allows both the old and new location.
2022-03-10 18:21:29 +01:00
Aleksey Kladov
cf70ed5eac Bring back syntax highlighting in test data
cc #11597
2022-03-06 08:43:18 +00:00
Lukas Wirth
c0d6471143 fix: Recognize Self as a proper keyword 2022-03-05 23:20:06 +01:00
Chayim Refael Friedman
d9f0731bd2 Parse destructuring assignment
The only patterns we should parse are `..` in structs and `_`: the rest are either not supported or already valid expressions.
2022-03-02 01:51:25 +00:00
Chayim Refael Friedman
a1b7169b48 Update tests
Unfortunately, we lost some recovery for expressions.
2022-02-21 08:34:35 +02:00
Chayim Refael Friedman
de8633f15f Parse let expressions in order to support let chains
We still need to reject freestanding `let` expressions: see https://github.com/rust-analyzer/rust-analyzer/issues/11320#issuecomment-1018212465.
2022-02-21 08:34:34 +02:00
bellau
06452cd102 Fix style 2022-02-14 07:41:50 +01:00
bellau
dc68b89469 oops, remove println 2022-02-13 09:11:35 +01:00
bellau
0a18a050b5 fix handle static async and static async move 2022-02-13 09:09:44 +01:00
bellau
3ed19d54db Fix style 2022-02-12 17:31:17 +01:00
bellau
2008607946 support static move too 2022-02-12 16:07:58 +01:00
bellau
1284bc0af3 Fix styles 2022-02-12 15:35:06 +01:00
bellau
ccab6afabc Fix Immovable generator syntax (static ||) not recognized #11448 2022-02-12 15:17:10 +01:00
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
iDawer
676744be6e Bump MSRV (1.57) 2021-12-16 01:56:12 +05:00
Aleksey Kladov
3b5b988526 prettyfy 2021-12-12 19:36:14 +03:00
Aleksey Kladov
980dd56cdc consistency 2021-12-12 19:32:04 +03:00
Aleksey Kladov
6e4bb57014 simplify 2021-12-12 19:31:32 +03:00
Aleksey Kladov
57e6ef0bfb tighten up invariants 2021-12-12 19:22:37 +03:00
Aleksey Kladov
18d4737fb9 add cross-crate inlines 2021-12-12 19:17:04 +03:00
Aleksey Kladov
1055a6111a port mbe to soa tokens 2021-12-12 19:06:40 +03:00
Aleksey Kladov
965585748e more orthogonal interface 2021-12-12 18:38:49 +03:00
Aleksey Kladov
6ce587ba5a parser tests work 2021-12-12 18:31:05 +03:00
Aleksey Kladov
26bfd6023f Switch parser to use tokens 2021-12-12 16:54:09 +03:00
Aleksey Kladov
d5ad0f3ca0 use eof token pattenr 2021-12-12 16:54:09 +03:00
Aleksey Kladov
addfd8d9e8 start SOA parser interface 2021-12-12 16:54:09 +03:00
Laurențiu Nicola
f5db6e0e95 Bump parser step limit a little 2021-12-06 11:47:36 +02:00
zhoufan
a539b5e693 fix: parse the range pat inside the tuple pat 2021-11-18 11:11:37 +08:00
Adam Bratschi-Kaye
0d54754ca7 Handle pub tuple fields in tuple structs
The current implementation will throw a parser error for tuple structs
that contain a pub tuple field. For example,
```rust
struct Foo(pub (u32, u32));
```
is valid Rust, but rust-analyzer will throw a parser error.  This is
because the parens after `pub` is treated as a visibility context.
Allowing a tuple type to follow `pub` in the special case when we are
defining fields in a tuple struct can fix the issue.
2021-11-10 21:29:50 +01:00
Aleksey Kladov
485c5e6717 internal: remove unused dollars 2021-10-23 20:44:35 +03:00
Laurențiu Nicola
8457ae34bd Set MSRV 2021-10-23 15:07:11 +03:00
Lukas Wirth
1294bfce86 Migrate to edition 2021 2021-10-21 20:10:40 +02:00
Lukas Wirth
b219a4c465 internal: Parse const trait bounds 2021-10-19 14:20:00 +02:00
Jonas Schievink
f8acae7895 Support let...else 2021-10-07 17:06:24 +02:00
cynecx
07cd19dcef parser: fix parsing of macro call inside generic args 2021-10-06 22:41:35 +02:00
bors[bot]
94fa49c0a3
Merge #10420
10420: Parse outer attributes on StructPatternEtCetera r=jonas-schievink a=XFFXFF

Try to fix https://github.com/rust-analyzer/rust-analyzer/issues/8610  
Related pr in ungrammer: https://github.com/rust-analyzer/ungrammar/pull/41

Co-authored-by: zhoufan <1247714429@qq.com>
2021-10-06 15:05:40 +00:00