]> 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:

grammar: accept open sequences on match subject (GH-2639)
authorBatuhan Taskaya <isidentical@gmail.com>
Thu, 25 Nov 2021 01:21:36 +0000 (04:21 +0300)
committerGitHub <noreply@github.com>
Thu, 25 Nov 2021 01:21:36 +0000 (20:21 -0500)
* grammar: accept open sequences on match subject
* give an example about the fixed match subject

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

index db519ac6bbc9a636fc1dd90de43f04f53c5f1ee5..94d1c69259a413e2af37ee1d453c4a16f19b69ff 100644 (file)
@@ -5,6 +5,7 @@
 ### _Black_
 
 - Fixed Python 3.10 support on platforms without ProcessPoolExecutor (#2631)
+- Fixed `match` statements with open sequence subjects, like `match a, b:` (#2639)
 
 ## 21.11b1
 
index c2a62543abb41cdd5e3427804468809389e7da63..de9a6a2283fe3a26bde755cbd765a989b0b47180 100644 (file)
@@ -238,7 +238,7 @@ yield_arg: 'from' test | testlist_star_expr
 # to reformat them.
 
 match_stmt: "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT
-subject_expr: namedexpr_test
+subject_expr: namedexpr_test (',' namedexpr_test)* [',']
 
 # cases
 case_block: "case" patterns [guard] ':' suite
index 614e66aebe65ee3039eb4df24d7a746bf56a107a..d4bba38ee7cd35f21f086c4c89936a8039a6bc60 100644 (file)
@@ -27,3 +27,19 @@ def func(match: case, case: match) -> case:
             ...
         case func(match, case):
             ...
+
+
+match maybe, multiple:
+    case perhaps, 5:
+        pass
+    case perhaps, 6,:
+        pass
+
+
+match more := (than, one), indeed,:
+    case _, (5, 6):
+        pass
+    case [[5], (6)], [7],:
+        pass
+    case _:
+        pass