]> git.madduck.net Git - etc/vim.git/commitdiff

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Allow top-level starred expression on match (#2659)
authorBatuhan Taskaya <isidentical@gmail.com>
Tue, 30 Nov 2021 15:52:25 +0000 (18:52 +0300)
committerGitHub <noreply@github.com>
Tue, 30 Nov 2021 15:52:25 +0000 (07:52 -0800)
Fixes #2647

CHANGES.md
src/blib2to3/Grammar.txt
tests/data/pattern_matching_extras.py

index 57af2c5deae0d6d8ec633969a074c0823b4b11cc..4a8ee0e692c329313ab161b00e03126f35b812a9 100644 (file)
@@ -8,7 +8,8 @@
   cell magics were tokenized, leading to possible indentation errors e.g. with
   `%%writefile`. (#2630)
 - Fixed Python 3.10 support on platforms without ProcessPoolExecutor (#2631)
-- Fixed `match` statements with open sequence subjects, like `match a, b:` (#2639)
+- Fixed `match` statements with open sequence subjects, like `match a, b:` or
+  `match a, *b:` (#2639) (#2659)
 - Fixed assignment to environment variables in Jupyter Notebooks (#2642)
 - Add `flake8-simplify` and `flake8-comprehensions` plugins (#2653)
 
index de9a6a2283fe3a26bde755cbd765a989b0b47180..c3001e810652f7c28ed78f679854d3aeb6d9f15b 100644 (file)
@@ -238,7 +238,11 @@ yield_arg: 'from' test | testlist_star_expr
 # to reformat them.
 
 match_stmt: "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT
-subject_expr: namedexpr_test (',' namedexpr_test)* [',']
+
+# This is more permissive than the actual version. For example it
+# accepts `match *something:`, even though single-item starred expressions
+# are forbidden.
+subject_expr: (namedexpr_test|star_expr) (',' (namedexpr_test|star_expr))* [',']
 
 # cases
 case_block: "case" patterns [guard] ':' suite
index d4bba38ee7cd35f21f086c4c89936a8039a6bc60..706148561a272fc57ae44933abf8d0cea6123468 100644 (file)
@@ -43,3 +43,10 @@ match more := (than, one), indeed,:
         pass
     case _:
         pass
+
+
+match a, *b, c:
+    case [*_]:
+        return "seq"
+    case {}:
+        return "map"