Skip to content

Commit b310b41

Browse files
committed
Add support for locally scoped constants
1 parent 03d5c74 commit b310b41

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

gdtoolkit/formatter/function_statement.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ def format_func_statement(statement: Tree, context: Context) -> Outcome:
1515
handlers = {
1616
"pass_stmt": partial(format_simple_statement, "pass"),
1717
"func_var_stmt": format_var_statement,
18+
"const_stmt": _format_const_statement,
1819
"expr_stmt": _format_expr_statement,
1920
"return_stmt": _format_return_statement,
2021
"break_stmt": partial(format_simple_statement, "break"),
@@ -29,6 +30,21 @@ def format_func_statement(statement: Tree, context: Context) -> Outcome:
2930
return handlers[statement.data](statement, context)
3031

3132

33+
def _format_const_statement(statement: Tree, context: Context) -> Outcome:
34+
if len(statement.children) == 4:
35+
prefix = f"const {statement.children[1].value} = "
36+
elif len(statement.children) == 5:
37+
prefix = f"const {statement.children[1].value} := "
38+
elif len(statement.children) == 6:
39+
prefix = (
40+
f"const {statement.children[1].value}: {statement.children[3].value} = "
41+
)
42+
expression_context = ExpressionContext(
43+
prefix, statement.line, "", statement.end_line
44+
)
45+
return format_expression(statement.children[-1], expression_context, context)
46+
47+
3248
def _format_expr_statement(statement: Tree, context: Context) -> Outcome:
3349
expr = statement.children[0]
3450
expression_context = ExpressionContext("", statement.line, "", statement.end_line)

gdtoolkit/parser/gdscript.lark

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ _simple_func_stmt: single_func_stmt (";" single_func_stmt)* [";"]
7878
| break_stmt
7979
| continue_stmt
8080
| expr_stmt
81+
| const_stmt
8182
?compound_func_stmt: if_stmt
8283
| while_stmt
8384
| for_stmt

0 commit comments

Comments
 (0)