Skip to content

Commit f1fb2a2

Browse files
committed
Add initial 'complex_multistatement_lambdas' tests & align lambda formatter implementation
1 parent 6e6cba6 commit f1fb2a2

File tree

3 files changed

+141
-2
lines changed

3 files changed

+141
-2
lines changed

gdtoolkit/formatter/expression.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -772,7 +772,6 @@ def _format_lambda_to_multiple_lines(
772772
expression_context: ExpressionContext,
773773
context: Context,
774774
) -> FormattedLines:
775-
assert expression_context.suffix_string == ""
776775
expression_context_for_header = ExpressionContext(
777776
expression_context.prefix_string, expression_context.prefix_line, "", -1
778777
)
@@ -788,8 +787,18 @@ def _format_lambda_to_multiple_lines(
788787
function_statement_module.format_func_statement,
789788
child_context,
790789
)
790+
last_block_line_number, last_block_line_content = block_lines[-1]
791791

792-
return header_lines + block_lines
792+
return (
793+
header_lines
794+
+ block_lines[:-1]
795+
+ [
796+
(
797+
last_block_line_number,
798+
f"{last_block_line_content}{expression_context.suffix_string}",
799+
)
800+
]
801+
)
793802

794803

795804
def _format_lambda_header_to_multiple_lines(
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
func foo(x):
2+
pass
3+
func bar(x,y):
4+
pass
5+
func baz():
6+
foo(func():
7+
var x = 1
8+
return x)
9+
10+
foo(func():
11+
var x = 1
12+
if x > 1:
13+
print(x))
14+
15+
foo(func():
16+
var x = 1
17+
if x > 1:
18+
print(x)
19+
)
20+
21+
bar(func():
22+
var x = 1
23+
return x, func():
24+
var y = 1
25+
return y)
26+
27+
bar(func():
28+
var x = 1
29+
return x,
30+
func():
31+
var y = 1
32+
return y)
33+
34+
bar(func():
35+
var x = 1
36+
return x,
37+
38+
func():
39+
var y = 1
40+
return y)
41+
42+
bar(func():
43+
var x = 1
44+
if x > 0:
45+
print(x), func():
46+
var y = 1
47+
return y)
48+
49+
bar(func():
50+
var x = 1
51+
if x > 0:
52+
print(x),
53+
func():
54+
var y = 1
55+
return y)
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
func foo(x):
2+
pass
3+
4+
5+
func bar(x, y):
6+
pass
7+
8+
9+
func baz():
10+
foo(
11+
func():
12+
var x = 1
13+
return x
14+
)
15+
16+
foo(
17+
func():
18+
var x = 1
19+
if x > 1:
20+
print(x)
21+
)
22+
23+
foo(
24+
func():
25+
var x = 1
26+
if x > 1:
27+
print(x)
28+
)
29+
30+
bar(
31+
func():
32+
var x = 1
33+
return x,
34+
func():
35+
var y = 1
36+
return y
37+
)
38+
39+
bar(
40+
func():
41+
var x = 1
42+
return x,
43+
func():
44+
var y = 1
45+
return y
46+
)
47+
48+
bar(
49+
func():
50+
var x = 1
51+
return x,
52+
func():
53+
var y = 1
54+
return y
55+
)
56+
57+
bar(
58+
func():
59+
var x = 1
60+
if x > 0:
61+
print(x),
62+
func():
63+
var y = 1
64+
return y
65+
)
66+
67+
bar(
68+
func():
69+
var x = 1
70+
if x > 0:
71+
print(x),
72+
func():
73+
var y = 1
74+
return y
75+
)

0 commit comments

Comments
 (0)