Commit graph

90 commits

Author SHA1 Message Date
Amos Wenger 74998e46e9 Fix .gitattributes for test_data 2022-07-24 14:05:35 +02:00
Chayim Refael Friedman 821b791b6d Validate let expressions
Emit an error if they're found in an invalid position.
2022-02-21 08:34:35 +02:00
Chayim Refael Friedman a1b7169b48 Update tests
Unfortunately, we lost some recovery for expressions.
2022-02-21 08:34:35 +02:00
Aleksey Kladov 55f1564101 remove fragments from syntax 2021-12-28 17:00:55 +03:00
Aleksey Kladov 7e9c74d20b drop dead code 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 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
zhoufan a539b5e693 fix: parse the range pat inside the tuple pat 2021-11-18 11:11:37 +08:00
Laurențiu Nicola b23bebebc0 Remove validation of super in use paths 2021-11-16 20:02:42 +02: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
Lukas Wirth b219a4c465 internal: Parse const trait bounds 2021-10-19 14:20:00 +02:00
Milo 35de195c41 a few clippy fixes 2021-10-14 19:57:21 +01: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
zhoufan a248f39cb4 make Some(1..) parsed 2021-10-04 17:33:48 +08:00
zhoufan 0ee6b70b34 Parse outer attributes on StructPatternEtCetera 2021-10-02 09:57:44 +08:00
Aleksey Kladov 2bf81922f7 internal: more reasonable grammar for blocks
Consider these expples

        { 92 }
  async { 92 }
    'a: { 92 }
   #[a] { 92 }

Previously the tree for them were

  BLOCK_EXPR
    { ... }

  EFFECT_EXPR
    async
    BLOCK_EXPR
      { ... }

  EFFECT_EXPR
    'a:
    BLOCK_EXPR
      { ... }

  BLOCK_EXPR
    #[a]
    { ... }

As you see, it gets progressively worse :) The last two items are
especially odd. The last one even violates the balanced curleys
invariant we have (#10357) The new approach is to say that the stuff in
`{}` is stmt_list, and the block is stmt_list + optional modifiers

  BLOCK_EXPR
    STMT_LIST
      { ... }

  BLOCK_EXPR
    async
    STMT_LIST
      { ... }

  BLOCK_EXPR
    'a:
    STMT_LIST
      { ... }

  BLOCK_EXPR
    #[a]
    STMT_LIST
      { ... }
2021-09-26 19:16:09 +03:00
Aleksey Kladov 56964c9bd3 feat: allow attributes on all expressions
Attrs are syntactically valid on any expression, even if they are not
allowed semantically everywhere yet.
2021-09-25 22:19:27 +03:00
Aleksey Kladov f27cda6865 minor: more condensed tests 2021-09-25 14:24:57 +03:00
Aleksey Kladov 1567bbb73e minor: more focusted tests 2021-09-25 14:04:27 +03:00
Aleksey Kladov a6181bfdb7 internal: more focused tests for const arguments 2021-09-19 16:35:10 +03:00
Aleksey Kladov f99bdf4cc0 fix: don't allow two turbo-fishes in generic arguments 2021-09-19 12:09:50 +03:00
Aleksey Kladov 8ae1f9c335 internal: add erroneous test for double turbo fish
We parse `f` successfully, but that is a bug.
2021-09-19 11:42:10 +03:00
Aleksey Kladov c0556bd8c1 minor: improve readability 2021-09-18 15:56:26 +03:00
Aleksey Kladov 3dc2aeea0f internal: parser cleanup 2021-09-18 15:46:28 +03:00
Aleksey Kladov af9fd37cd9 internal: minimize use_tree parser tests
The code here is intentionally dense and does exactly what is written.
Explaining semantic difference between Rust 2015 and 2018 doesn't help
with understanding syntax. Better to just add more targeted tests.
2021-09-18 15:22:49 +03:00
Aleksey Kladov 1d2e9818d6 internal: parser cleanups 2021-09-18 14:53:46 +03:00
Aleksey Kladov aaadaa40bd internal: more focused trait item parsing tests 2021-09-18 14:34:29 +03:00
Aleksey Kladov 3474e3b3b1 intenral: more local tests for statics 2021-09-18 01:02:43 +03:00
Aleksey Kladov 2195ecd7e7 internal: cleanup adt parsing 2021-09-18 00:50:27 +03:00
Aleksey Kladov d890c767c4 internal: cleanup item parsing 2021-09-18 00:33:42 +03:00
Aleksey Kladov 77e8421d0f internal: more local parsing tests for macros 2021-09-17 22:21:57 +03:00
Aleksey Kladov 073d5f7733 internal: more focused parsing tests 2021-09-17 22:15:12 +03:00
Aleksey Kladov 55078c81e0 internal: more local test for mod item 2021-09-17 21:53:24 +03:00
Aleksey Kladov 715cd8d938 internal: more local parsing tests 2021-09-17 21:49:01 +03:00
Aleksey Kladov 940b3afd00 internal: fix bugs in tests by simplifying code 2021-09-13 13:29:27 +03:00
Aleksey Kladov 4452f9ec48 internal: improve style
Group related stuff together, use only on path for parsing extern blocks
(they actually have modifiers).

Perhaps we should get rid of items_without_modifiers altogether? Better
to handle these kinds on diagnostics in validation layer...
2021-08-30 15:55:40 +03:00
Aleksey Kladov 8dc3b46017 fix: avoid panic when parsing extern block
closes #10083
2021-08-30 15:40:47 +03:00
Jonas Schievink d568e7686a Support if let match guards 2021-08-13 00:25:14 +02:00
Jade 775670e32c Split the test 2021-08-04 03:01:48 -07:00
Jade b90ed92a5c Support exclusive_range_pattern
Fix #9779
2021-08-03 21:36:29 -07:00
Lukas Wirth f04cff102f Simplify 2021-07-30 13:12:52 +02:00
Lukas Wirth 4de447b293 Attach comma token to MATCH_ARM instead of MATCH_ARM_LIST 2021-07-29 23:02:52 +02:00
Lukas Wirth f43cd562bc Fix generic_arg not parsing opt_generic_arg_list properly in arg lists 2021-07-26 15:21:19 +02:00
bors[bot] ea105f9396
Merge #9619
9619: Support GATs for associated type arg parsing r=Veykril a=Veykril

Fixes #9602

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-07-18 09:10:56 +00:00
Lukas Wirth e7aa37c20a Support GATs for associated type arg parsing 2021-07-18 11:08:43 +02:00
Aleksey Kladov 15f11dce4a feat: improve parser error recovery for function parameters 2021-07-17 22:41:04 +03:00
Lukas Wirth 02d25ab60d Fix parser tests for 1.53 2021-06-17 18:09:44 +02:00