]> 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 missed cases in the `# type: ignore` logic (#1059)
authorMichael J. Sullivan <sully@msully.net>
Fri, 11 Oct 2019 01:25:33 +0000 (18:25 -0700)
committerJelle Zijlstra <jelle.zijlstra@gmail.com>
Fri, 11 Oct 2019 01:25:33 +0000 (18:25 -0700)
In #1040 I had convinced myself that the type ignore logic didn't
need anything like the ignored_ids from the type comment logic, but I
was wrong, and we do.

We hit these cases in practice a bunch.

black.py
tests/data/comments2.py
tests/data/comments6.py

index d8aa3562d8fe968c43a4de7f4ab407de1bf66a7d..b8736e7b1d9360085674307b71318ef427d873ab 100644 (file)
--- a/black.py
+++ b/black.py
@@ -1340,10 +1340,23 @@ class Line:
         # (unfortunately) need to check the actual source lines and
         # only report an unsplittable 'type: ignore' if this line was
         # one line in the original code.
-        if self.leaves[0].lineno == self.leaves[-1].lineno:
-            for comment in self.comments.get(id(self.leaves[-1]), []):
-                if is_type_comment(comment, " ignore"):
-                    return True
+
+        # 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:]:
+                for comment in self.comments.get(id(node), []):
+                    if is_type_comment(comment, " ignore"):
+                        return True
 
         return False
 
index 248552c12aa565484e3daf8156f395d56fdf044a..e928f6d5e163a55373e7858756e58a0b317c7ebc 100644 (file)
@@ -235,11 +235,7 @@ def inline_comments_in_brackets_ruin_everything():
             body,
             parameters.children[-1],  # )2
         ]
-        parameters.children = [
-            parameters.what_if_this_was_actually_long.children[0],
-            body,
-            parameters.children[-1],
-        ]  # type: ignore
+        parameters.children = [parameters.what_if_this_was_actually_long.children[0], body, parameters.children[-1]]  # type: ignore
     if (
         self._proc is not None
         # has the child process finished?
index 7bc83ae964da35d35aa9ba79780c15fea6fa5f1f..3de8b2eb3baba735c560ca497a745ef34a1831d5 100644 (file)
@@ -105,3 +105,10 @@ def func(
 
 
 result = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"  # aaa
+
+AAAAAAAAAAAAA = [AAAAAAAAAAAAA] + SHARED_AAAAAAAAAAAAA + USER_AAAAAAAAAAAAA + AAAAAAAAAAAAA  # type: ignore
+
+call_to_some_function_asdf(
+    foo,
+    [AAAAAAAAAAAAAAAAAAAAAAA, AAAAAAAAAAAAAAAAAAAAAAA, AAAAAAAAAAAAAAAAAAAAAAA, BBBBBBBBBBBB],  # type: ignore
+)