Commit graph

73 commits

Author SHA1 Message Date
zhoufan a248f39cb4 make Some(1..) parsed 2021-10-04 17:33:48 +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
Aleksey Kladov 067e97d149 internal: enforce no #[ignore] and no #[should_panic] 2021-06-15 16:54:43 +03:00
Jonas Schievink 1d6eef1350 Update ungrammar 2021-06-11 18:34:30 +02:00
Lukas Wirth 4b5b54279a Attach comments to ast::Impl 2021-05-15 17:32:28 +02:00
Jonas Schievink cb8632d87c Parse const param defaults 2021-04-29 03:07:53 +02:00
Jonas Schievink caee3a2eeb Correctly parse negated literals as const args 2021-04-29 02:27:55 +02:00
Lukas Wirth 3f7a086b4f Parse outer atttributes for RecordPatField 2021-04-21 11:08:15 +02:00
Aleksey Kladov 5f89a60f1a fix: false positive about inner attrs in docs
closes #8541
2021-04-19 17:11:49 +03:00
cynecx cf3b4f1e20 hir_ty: Expand macros at type position 2021-04-17 16:24:56 +02:00
Jonas Schievink 022a0f061e Correctly parse attributes on fn parameters 2021-03-17 18:28:27 +01:00
Arnaud 95d239da99 Specialization for async traits 2021-02-15 18:33:12 +01:00
Lukas Wirth 70d43c3faf Add validation for mutable const items 2021-01-24 02:17:41 +01:00
Lukas Wirth b26002410b Parse impl const Trait 2021-01-18 20:18:02 +01:00
Lukas Wirth 98718e0544 Wrap remaining self/super/crate in Name{Ref} 2021-01-15 22:18:43 +01:00
Lukas Wirth cb863390f2 Handle self/super/crate in PathSegment as NameRef 2021-01-15 19:21:23 +01:00
Daiki Ihara 138514bea2 Add test for yield_expr 2021-01-15 23:35:17 +09:00
bors[bot] 607b9ea160
Merge #7218
7218: Fix typos r=Veykril a=regexident

Apart from the very last commit on this PR (which fixes a public type's name) all changes are non-breaking.

Co-authored-by: Vincent Esche <regexident@gmail.com>
2021-01-10 18:16:29 +00:00
Vincent Esche d462119744 Updated tests via cargo xtask codegen 2021-01-10 18:36:27 +01:00