]>
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:
summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (parent:
2593af2 )
- Fix a bug where an illegal trailing comma was added to return type annotations using
PEP 604 unions (#3735)
- Fix a bug where an illegal trailing comma was added to return type annotations using
PEP 604 unions (#3735)
+- Fix several bugs and crashes where comments in stub files were removed or mishandled
+ under some circumstances. (#3745)
- Fix a bug where multi-line open parenthesis magic comment like `type: ignore` were not
correctly parsed (#3740)
- Fix a bug where multi-line open parenthesis magic comment like `type: ignore` were not
correctly parsed (#3740)
def is_stub_suite(node: Node) -> bool:
"""Return True if `node` is a suite with a stub body."""
def is_stub_suite(node: Node) -> bool:
"""Return True if `node` is a suite with a stub body."""
+
+ # If there is a comment, we want to keep it.
+ if node.prefix.strip():
+ return False
+
if (
len(node.children) != 4
or node.children[0].type != token.NEWLINE
if (
len(node.children) != 4
or node.children[0].type != token.NEWLINE
+ if node.children[3].prefix.strip():
+ return False
+
return is_stub_body(node.children[2])
return is_stub_body(node.children[2])
child = node.children[0]
return (
child = node.children[0]
return (
- child.type == syms.atom
+ not child.prefix.strip()
+ and child.type == syms.atom
and len(child.children) == 3
and all(leaf == Leaf(token.DOT, ".") for leaf in child.children)
)
and len(child.children) == 3
and all(leaf == Leaf(token.DOT, ".") for leaf in child.children)
)
--- /dev/null
+def f(): # type: ignore
+ ...
+
+class x: # some comment
+ ...
+
+class y:
+ ... # comment
+
+# whitespace doesn't matter (note the next line has a trailing space and tab)
+class z:
+ ...
+
+def g():
+ # hi
+ ...
+
+def h():
+ ...
+ # bye
+
+# output
+
+def f(): # type: ignore
+ ...
+
+class x: # some comment
+ ...
+
+class y: ... # comment
+
+# whitespace doesn't matter (note the next line has a trailing space and tab)
+class z: ...
+
+def g():
+ # hi
+ ...
+
+def h():
+ ...
+ # bye
@pytest.mark.parametrize("filename", all_data_cases("simple_cases"))
def test_simple_format(filename: str) -> None:
magic_trailing_comma = filename != "skip_magic_trailing_comma"
@pytest.mark.parametrize("filename", all_data_cases("simple_cases"))
def test_simple_format(filename: str) -> None:
magic_trailing_comma = filename != "skip_magic_trailing_comma"
- check_fil e(
- "simple_cases", filename, black.Mode(magic_trailing_comma=magic_trailing_comma )
+ mode = black.Mod e(
+ magic_trailing_comma=magic_trailing_comma, is_pyi=filename.endswith("_pyi" )
+ check_file("simple_cases", filename, mode)
@pytest.mark.parametrize("filename", all_data_cases("preview"))
@pytest.mark.parametrize("filename", all_data_cases("preview"))