Skip to content

Commit 05951dd

Browse files
authored
Fix inconsistent expr_lambda formatting (#6318)
1 parent c260762 commit 05951dd

File tree

3 files changed

+109
-4
lines changed

3 files changed

+109
-4
lines changed

crates/ruff_python_formatter/resources/test/fixtures/ruff/expression/lambda.py

+35
Original file line numberDiff line numberDiff line change
@@ -118,3 +118,38 @@ def f(
118118
# 4
119119
None # 5
120120
)
121+
122+
(
123+
lambda
124+
# comment
125+
*x: x
126+
)
127+
128+
(
129+
lambda
130+
# comment 1
131+
*
132+
# comment 2
133+
x:
134+
# comment 3
135+
x
136+
)
137+
138+
(
139+
lambda # comment 1
140+
* # comment 2
141+
x: # comment 3
142+
x
143+
)
144+
145+
lambda *x\
146+
:x
147+
148+
(
149+
lambda
150+
# comment
151+
*\
152+
x: x
153+
)
154+
155+

crates/ruff_python_formatter/src/expression/expr_lambda.rs

+5
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ impl FormatNodeRule<ExprLambda> for FormatExprLambda {
4343
write!(f, [dangling_comments(dangling)])?;
4444
}
4545

46+
// Insert hard line break if body has leading comment to ensure consistent formatting
47+
if comments.has_leading(body.as_ref()) {
48+
write!(f, [hard_line_break()])?;
49+
}
50+
4651
write!(f, [body.format()])
4752
}
4853

crates/ruff_python_formatter/tests/snapshots/format@expression__lambda.py.snap

+69-4
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,41 @@ lambda a, /, c: a
124124
# 4
125125
None # 5
126126
)
127+
128+
(
129+
lambda
130+
# comment
131+
*x: x
132+
)
133+
134+
(
135+
lambda
136+
# comment 1
137+
*
138+
# comment 2
139+
x:
140+
# comment 3
141+
x
142+
)
143+
144+
(
145+
lambda # comment 1
146+
* # comment 2
147+
x: # comment 3
148+
x
149+
)
150+
151+
lambda *x\
152+
:x
153+
154+
(
155+
lambda
156+
# comment
157+
*\
158+
x: x
159+
)
160+
161+
127162
```
128163

129164
## Output
@@ -185,7 +220,8 @@ lambda x: lambda y: lambda z: (
185220
# Trailing
186221
187222
a = (
188-
lambda: # Dangling
223+
lambda:
224+
# Dangling
189225
1
190226
)
191227
@@ -232,22 +268,51 @@ lambda a, /, c: a
232268
233269
# Dangling comments without parameters.
234270
(
235-
lambda: # 3
271+
lambda:
272+
# 3
236273
None
237274
)
238275
239276
(
240-
lambda: # 3
277+
lambda:
278+
# 3
241279
None
242280
)
243281
244282
(
245-
lambda: # 1
283+
lambda:
284+
# 1
246285
# 2
247286
# 3
248287
# 4
249288
None # 5
250289
)
290+
291+
(
292+
lambda # comment
293+
*x: x
294+
)
295+
296+
(
297+
lambda # comment 1
298+
# comment 2
299+
*x:
300+
# comment 3
301+
x
302+
)
303+
304+
(
305+
lambda # comment 1
306+
# comment 2
307+
*x: x # comment 3
308+
)
309+
310+
lambda *x: x
311+
312+
(
313+
lambda # comment
314+
*x: x
315+
)
251316
```
252317

253318

0 commit comments

Comments
 (0)