74177d79c9
Currently array and dictionary expressions cannot be spread over multiple lines in match statements. Adding mutliline push/pop while parsing the pattern for bracket and brace enables the ability for these to be multiline. This enables more complex patterns to be matched without exceeding line limits. Fixes #90372
64 lines
1.3 KiB
GDScript
64 lines
1.3 KiB
GDScript
func foo(x):
|
|
match x:
|
|
{"key1": "value1", "key2": "value2"}:
|
|
print('{"key1": "value1", "key2": "value2"}')
|
|
{"key1": "value1", "key2"}:
|
|
print('{"key1": "value1", "key2"}')
|
|
{"key1", "key2": "value2"}:
|
|
print('{"key1", "key2": "value2"}')
|
|
{"key1", "key2"}:
|
|
print('{"key1", "key2"}')
|
|
{"key1": "value1"}:
|
|
print('{"key1": "value1"}')
|
|
{"key1"}:
|
|
print('{"key1"}')
|
|
_:
|
|
print("wildcard")
|
|
|
|
func bar(x):
|
|
match x:
|
|
{0}:
|
|
print("0")
|
|
{1}:
|
|
print("1")
|
|
{2}:
|
|
print("2")
|
|
_:
|
|
print("wildcard")
|
|
|
|
func baz(x):
|
|
match x:
|
|
{
|
|
"key1": "value1"
|
|
}:
|
|
print('multiline {"key1": "value1"}')
|
|
{
|
|
"key2": "value2",
|
|
}:
|
|
print('multiline {"key2": "value2",}')
|
|
{
|
|
"key3": {
|
|
"key1",
|
|
..,
|
|
},
|
|
}:
|
|
print('multiline {"key3": {"key1", ..,},}')
|
|
|
|
func test():
|
|
foo({"key1": "value1", "key2": "value2"})
|
|
foo({"key1": "value1", "key2": ""})
|
|
foo({"key1": "", "key2": "value2"})
|
|
foo({"key1": "", "key2": ""})
|
|
foo({"key1": "value1"})
|
|
foo({"key1": ""})
|
|
foo({"key1": "value1", "key2": "value2", "key3": "value3"})
|
|
foo({"key1": "value1", "key3": ""})
|
|
foo({"key2": "value2"})
|
|
foo({"key3": ""})
|
|
bar({0: "0"})
|
|
bar({1: "1"})
|
|
bar({2: "2"})
|
|
bar({3: "3"})
|
|
baz({"key1": "value1"})
|
|
baz({"key2": "value2"})
|
|
baz({"key3": {"key1": "value1", "key2": "value2"}})
|