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

Fix type: ignore line breaking when there is a destructuring assignment (#1065)
authorMichael J. Sullivan <sully@msully.net>
Tue, 15 Oct 2019 01:15:18 +0000 (18:15 -0700)
committerJelle Zijlstra <jelle.zijlstra@gmail.com>
Tue, 15 Oct 2019 01:15:18 +0000 (18:15 -0700)
It turns out we also need to handle invisible *left* parens added at
the *start* of a line. Refactor `contains_unsplittable_type_ignore` to
handle this more cleanly.

black.py
tests/data/comments6.py

index ff373c863d45b71849cb0ae0b1eb800af54c10a7..077698311087d75ad54b4090c8db231ccb10c55f 100644 (file)
--- a/black.py
+++ b/black.py
@@ -1341,19 +1341,15 @@ class Line:
         # only report an unsplittable 'type: ignore' if this line was
         # one line in the original code.
 
         # only report an unsplittable 'type: ignore' if this line was
         # one line in the original code.
 
-        # Like in the type comment check above, we need to skip a black added
-        # trailing comma or invisible paren, since it will be the original leaf
-        # before it that has the original line number.
-        last_idx = -1
-        last_leaf = self.leaves[-1]
-        if len(self.leaves) > 2 and (
-            last_leaf.type == token.COMMA
-            or (last_leaf.type == token.RPAR and not last_leaf.value)
-        ):
-            last_idx = -2
-
-        if self.leaves[0].lineno == self.leaves[last_idx].lineno:
-            for node in self.leaves[last_idx:]:
+        # Grab the first and last line numbers, skipping generated leaves
+        first_line = next((l.lineno for l in self.leaves if l.lineno != 0), 0)
+        last_line = next((l.lineno for l in reversed(self.leaves) if l.lineno != 0), 0)
+
+        if first_line == last_line:
+            # We look at the last two leaves since a comma or an
+            # invisible paren could have been added at the end of the
+            # line.
+            for node in self.leaves[-2:]:
                 for comment in self.comments.get(id(node), []):
                     if is_type_comment(comment, " ignore"):
                         return True
                 for comment in self.comments.get(id(node), []):
                     if is_type_comment(comment, " ignore"):
                         return True
index 3de8b2eb3baba735c560ca497a745ef34a1831d5..abfd96e8098ad27e73de8a99517386ede6699d8a 100644 (file)
@@ -112,3 +112,5 @@ call_to_some_function_asdf(
     foo,
     [AAAAAAAAAAAAAAAAAAAAAAA, AAAAAAAAAAAAAAAAAAAAAAA, AAAAAAAAAAAAAAAAAAAAAAA, BBBBBBBBBBBB],  # type: ignore
 )
     foo,
     [AAAAAAAAAAAAAAAAAAAAAAA, AAAAAAAAAAAAAAAAAAAAAAA, AAAAAAAAAAAAAAAAAAAAAAA, BBBBBBBBBBBB],  # type: ignore
 )
+
+aaaaaaaaaaaaa, bbbbbbbbb = map(list, map(itertools.chain.from_iterable, zip(*items)))  # type: ignore[arg-type]