Skip to content

Commit c940431

Browse files
committed
Supplement signal type hint support #189
1 parent 5b37fe1 commit c940431

File tree

7 files changed

+37
-1
lines changed

7 files changed

+37
-1
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
- Added support for unique node names in parser & formatter
1111
- Added support for property etters in parser & formatter
1212
- Added support for inline-lambdas in parser & formatter
13+
- Added support for func-level constants
14+
- Added support for typed signal arguments
1315

1416
### Changed
1517
- Removed support for legacy (Godot `3.x`) GDScript from core testcases

gdtoolkit/formatter/expression_to_str.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,10 @@ def expression_to_str(expression: Node) -> str:
102102
"enum_body": _enum_body_to_str,
103103
"enum_element": _enum_element_to_str,
104104
"signal_args": _args_to_str,
105+
"signal_arg_typed": lambda e: "{}: {}".format(
106+
e.children[0].value,
107+
e.children[1].value,
108+
),
105109
"comma_separated_list": lambda e: _arguments_to_str(e.children),
106110
"contextless_comma_separated_list": lambda e: _arguments_to_str(e.children),
107111
"contextless_operator_chain_based_expression": (

gdtoolkit/formatter/expression_utils.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ def is_foldable(expression: Node) -> bool:
2323
"node_path",
2424
"string_name",
2525
"unique_node_path",
26+
"signal_arg_typed",
2627
]
2728
and not expression.data.endswith("_pattern")
2829
)

gdtoolkit/parser/gdscript.lark

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ enum_named: "enum" NAME enum_body
2727
enum_body: "{" [enum_element ("," enum_element)* [trailing_comma]] "}"
2828
enum_element: NAME ["=" test_expr]
2929
signal_stmt: "signal" NAME [signal_args]
30-
signal_args: "(" [NAME [":" TYPE_HINT] ("," NAME [":" TYPE_HINT])* [trailing_comma]] ")"
30+
signal_args: "(" [signal_arg ("," signal_arg)* [trailing_comma]] ")"
31+
?signal_arg: NAME
32+
| NAME ":" TYPE_HINT -> signal_arg_typed
3133
extends_stmt: "extends" (NAME | string) ("." NAME)*
3234
classname_stmt: "class_name" NAME
3335
!classname_extends_stmt: "class_name" NAME "extends" (NAME | string) ("." NAME)*

tests/formatter/input-output-pairs/complex-signal-statements.in.gd

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,7 @@ class X:
22
signal a(x, y)
33
signal b(aaaaaaaa, bbbbbbbbb, ccccccccc, dddddddd, eeeeeeee, ffffffff, ggggggggg, hhhhhhhh, iiiiiiii, jjjjjjjjjjj)
44
signal c(x, y,)
5+
signal d(x:int,)
6+
signal e(x,y:float)
7+
signal f(x:int,aaaaaaaa, bbbbbbbbb, ccccccccc, dddddddd, eeeeeeee, ffffffff, ggggggggg, hhhhhhhh, iiiiiiii, jjjjjjjjjjj,y:float)
8+
signal g(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx: int)

tests/formatter/input-output-pairs/complex-signal-statements.out.gd

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,24 @@ class X:
1616
x,
1717
y,
1818
)
19+
signal d(
20+
x: int,
21+
)
22+
signal e(x, y: float)
23+
signal f(
24+
x: int,
25+
aaaaaaaa,
26+
bbbbbbbbb,
27+
ccccccccc,
28+
dddddddd,
29+
eeeeeeee,
30+
ffffffff,
31+
ggggggggg,
32+
hhhhhhhh,
33+
iiiiiiii,
34+
jjjjjjjjjjj,
35+
y: float
36+
)
37+
signal g(
38+
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx: int
39+
)

tests/valid-gd-scripts/signals.gd

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,5 @@ signal bbb (ccc)
33
signal ccc (ddd, eee )
44
signal empty()
55
signal w_trailing_comma(a,b,)
6+
signal w_types(a:int,)
7+
signal w_types_2(a:float,b:int,c,d)

0 commit comments

Comments
 (0)