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

Don't make parentheses invisible around yield expressions
authorŁukasz Langa <lukasz@langa.pl>
Wed, 9 May 2018 06:31:41 +0000 (23:31 -0700)
committerŁukasz Langa <lukasz@langa.pl>
Wed, 9 May 2018 06:31:41 +0000 (23:31 -0700)
black.py
tests/expression.diff
tests/expression.py
tests/function.py

index efe5af998b865f35d665ff39b56e6b80c812a78d..b2cf543a1002f6d8f4b120fc636cbf27f4f79fa3 100644 (file)
--- a/black.py
+++ b/black.py
@@ -2258,6 +2258,7 @@ def maybe_make_parens_invisible_in_atom(node: LN) -> bool:
         node.type != syms.atom
         or is_empty_tuple(node)
         or is_one_tuple(node)
+        or is_yield(node)
         or max_delimiter_priority_in_atom(node) >= COMMA_PRIORITY
     ):
         return False
@@ -2308,6 +2309,27 @@ def is_one_tuple(node: LN) -> bool:
     )
 
 
+def is_yield(node: LN) -> bool:
+    """Return True if `node` holds a `yield` or `yield from` expression."""
+    if node.type == syms.yield_expr:
+        return True
+
+    if node.type == token.NAME and node.value == "yield":  # type: ignore
+        return True
+
+    if node.type != syms.atom:
+        return False
+
+    if len(node.children) != 3:
+        return False
+
+    lpar, expr, rpar = node.children
+    if lpar.type == token.LPAR and rpar.type == token.RPAR:
+        return is_yield(expr)
+
+    return False
+
+
 def is_vararg(leaf: Leaf, within: Set[NodeType]) -> bool:
     """Return True if `leaf` is a star or double star in a vararg or kwarg.
 
index 3d170ddbb3cfe093164803fc3a87e99e6b1159d2..423cf5783efd418487fd6fa3456c236950e03174 100644 (file)
 +
  def gen():
      yield from outside_of_generator
--    a = (yield)
-+    a = yield
-+
+     a = (yield)
  
++
  async def f():
      await some.complicated[0].call(with_args=(True or (1 is not 1)))
 -print(* [] or [1])
index 63f6a4f9632f42429a7d2c378cc413f8d422a431..17b77c429d9d47d2244735f39725da8a88f26834 100644 (file)
@@ -426,7 +426,7 @@ mapping = {
 
 def gen():
     yield from outside_of_generator
-    a = yield
+    a = (yield)
 
 
 async def f():
index a18121219f58a4da1dc5533e9693467378d83521..ea27ebb9c7f6cfb20fdc540b43d96c5bf6e34062 100644 (file)
@@ -85,11 +85,14 @@ def f(
   a,
   **kwargs,
 ) -> A:
-    return A(
-        very_long_argument_name1=very_long_value_for_the_argument,
-        very_long_argument_name2=very_long_value_for_the_argument,
-        **kwargs,
+    return (
+        yield from A(
+            very_long_argument_name1=very_long_value_for_the_argument,
+            very_long_argument_name2=very_long_value_for_the_argument,
+            **kwargs,
+        )
     )
+def __await__(): return (yield)
 
 # output
 
@@ -224,8 +227,14 @@ def trailing_comma():
 
 
 def f(a, **kwargs) -> A:
-    return A(
-        very_long_argument_name1=very_long_value_for_the_argument,
-        very_long_argument_name2=very_long_value_for_the_argument,
-        **kwargs,
+    return (
+        yield from A(
+            very_long_argument_name1=very_long_value_for_the_argument,
+            very_long_argument_name2=very_long_value_for_the_argument,
+            **kwargs,
+        )
     )
+
+
+def __await__():
+    return (yield)