Skip to content

Commit ce8051d

Browse files
committed
Fix erroneous DedentError when using inline lambas, fixes #339
1 parent 1f80ba1 commit ce8051d

File tree

5 files changed

+20
-7
lines changed

5 files changed

+20
-7
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
### Changed
66
- Fixed false-positive `expression-not-assigned` linter check on lambdas
7+
- Fixed erroneous DedentError raised in case of inline lambas
78

89
## [4.3.2] 2024-10-20
910

gdtoolkit/formatter/__main__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -313,13 +313,13 @@ def _format_code(
313313
file=sys.stderr,
314314
)
315315
except lark.indenter.DedentError as exception:
316+
success = False
316317
print(
317318
f"{file_path}:\n",
318319
str(exception),
319320
sep="\n",
320321
file=sys.stderr,
321322
)
322-
return 1
323323
except TreeInvariantViolation:
324324
success = False
325325
print(

gdtoolkit/parser/gdscript_indenter.py

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from typing import Iterator
22
from collections import defaultdict
33

4-
from lark.indenter import DedentError, Indenter
4+
from lark.indenter import Indenter
55
from lark.lexer import Token
66

77

@@ -81,11 +81,7 @@ def _handle_NL_in_parens(self, token: Token):
8181
self.undedented_lambdas_at_paren_level[self.paren_level] -= 1
8282
yield Token.new_borrow_pos(self.DEDENT_type, indent_str, token)
8383

84-
if indent != self.indent_level[-1]:
85-
raise DedentError(
86-
"Unexpected dedent to column %s. Expected dedent to %s"
87-
% (indent, self.indent_level[-1])
88-
)
84+
# never raising DedentError here as it doesn't make sense in parens
8985

9086
def _dedent_lambda_at_token(self, token: Token):
9187
self.indent_level.pop()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
func _ready():
2+
var string_array: Array[String]
3+
var result := string_array.map(func(a): return a).filter(
4+
func(has_underscore):
5+
return (has_underscore.begins_with("a") or has_underscore.begins_with("b"))
6+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
func _ready():
2+
var string_array: Array[String]
3+
var result := (
4+
string_array
5+
. map(func(a): return a)
6+
. filter(
7+
func(has_underscore):
8+
return has_underscore.begins_with("a") or has_underscore.begins_with("b")
9+
)
10+
)

0 commit comments

Comments
 (0)