From 048c9bb05e1c3011332c158d0198f0c79da06ca3 Mon Sep 17 00:00:00 2001 From: Eddie Darling Date: Sun, 1 Oct 2023 11:33:02 -0700 Subject: [PATCH 1/4] Add regression test --- tests/data/preview/comments7.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/data/preview/comments7.py b/tests/data/preview/comments7.py index 8b1224017e5..5b8896b8f64 100644 --- a/tests/data/preview/comments7.py +++ b/tests/data/preview/comments7.py @@ -131,6 +131,13 @@ def test_fails_invalid_post_data( square = Square(4) # type: Optional[Square] +# Regression test for https://github.com/psf/black/issues/3756. +[ + ( + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" # aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + ), +] + # output from .config import ( @@ -282,3 +289,11 @@ def test_fails_invalid_post_data( square = Square(4) # type: Optional[Square] + +# Regression test for https://github.com/psf/black/issues/3756. +[ + ( # aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + ), +] + From c1284a93be94d6d38a5cb594fe23d0a0d5a63bad Mon Sep 17 00:00:00 2001 From: Eddie Darling Date: Sun, 1 Oct 2023 11:35:03 -0700 Subject: [PATCH 2/4] Adopt parentless comments Since the id of the old leaf may be the key to comments, the new leaf must adopt the old comments --- src/black/trans.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/black/trans.py b/src/black/trans.py index daed26427d7..c0cc92613ac 100644 --- a/src/black/trans.py +++ b/src/black/trans.py @@ -942,6 +942,9 @@ def _transform_to_new_line( LL[lpar_or_rpar_idx].remove() # Remove lpar. replace_child(LL[idx], string_leaf) new_line.append(string_leaf) + # replace comments + old_comments = new_line.comments.pop(id(LL[idx]), []) + new_line.comments.setdefault(id(string_leaf), []).extend(old_comments) else: LL[lpar_or_rpar_idx].remove() # This is a rpar. From aa26b02d04ca5fc2d32aad1f21898537736a3b8a Mon Sep 17 00:00:00 2001 From: Eddie Darling Date: Sun, 1 Oct 2023 11:36:19 -0700 Subject: [PATCH 3/4] Add test variant --- tests/data/preview/comments7.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tests/data/preview/comments7.py b/tests/data/preview/comments7.py index 5b8896b8f64..0655de999ec 100644 --- a/tests/data/preview/comments7.py +++ b/tests/data/preview/comments7.py @@ -137,6 +137,11 @@ def test_fails_invalid_post_data( "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" # aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ), ] +[ + ( # aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" # aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + ), +] # output @@ -296,4 +301,8 @@ def test_fails_invalid_post_data( "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ), ] - +[ + ( # aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" # aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + ), +] From 59e02d3aa711730d0e5fc14666db018fa51c3de1 Mon Sep 17 00:00:00 2001 From: Eddie Darling Date: Sun, 1 Oct 2023 12:04:25 -0700 Subject: [PATCH 4/4] Add 3909 to CHANGES.md --- CHANGES.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index a879ab3e8da..028a01acd62 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -17,6 +17,8 @@ +- Fix comments getting removed from inside parenthesized strings (#3909) + ### Configuration