Skip to content

Commit c2340f8

Browse files
committed
Add support for typed dictionaries, fixes #322
1 parent 430a782 commit c2340f8

File tree

5 files changed

+31
-1
lines changed

5 files changed

+31
-1
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
### Added
66
- Added support for multi-statement lambdas (#191)
7+
- Added support for typed dictionaries (#322)
78

89
### Changed
910
- Removed `private-method-call` linter check due to false positives when calling `super._foo()`

gdtoolkit/parser/gdscript.lark

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,8 +288,9 @@ eq_dict_element: NAME "=" type_cast
288288

289289
SET: "set"
290290
GET: "get"
291+
// TODO: fix whitespaces
291292
TYPE: NAME ([" "] "." [" "] NAME)*
292-
TYPE_HINT: NAME ([" "] "." [" "] NAME)* ["[" NAME ([" "] "." [" "] NAME)* "]"]
293+
TYPE_HINT: TYPE ["[" TYPE [[" "] "," [" "] TYPE] "]"]
293294
NUMBER: ["+"|"-"] (FLOAT | INT)
294295
FLOAT: INT _EXP | DECIMAL _EXP?
295296
_EXP: ("e"|"E") SIGNED_INT
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
func foo():
2+
var d : Dictionary[String, int]
3+
var d2 :Dictionary[int, int] = { 1: 2 }
4+
var d3 :Dictionary[int, int] = { 1: 2,2:3,3:4,4:5,5:6,6:7,7:8,8:9,9:10,10:11,11:12,12:13,13:14,14:15,15:16 }
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
func foo():
2+
var d: Dictionary[String, int]
3+
var d2: Dictionary[int, int] = {1: 2}
4+
var d3: Dictionary[int, int] = {
5+
1: 2,
6+
2: 3,
7+
3: 4,
8+
4: 5,
9+
5: 6,
10+
6: 7,
11+
7: 8,
12+
8: 9,
13+
9: 10,
14+
10: 11,
15+
11: 12,
16+
12: 13,
17+
13: 14,
18+
14: 15,
19+
15: 16
20+
}

tests/valid-gd-scripts/typed_dicts.gd

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
func foo():
2+
var d : Dictionary[String, int]
3+
var d2 :Dictionary[int, int] = { 1: 2 }
4+
var d3 :Dictionary[int, int] = { 1: 2,2:3,3:4,4:5,5:6,6:7,7:8,8:9,9:10,10:11,11:12,12:13,13:14,14:15,15:16 }

0 commit comments

Comments
 (0)