Parse list patterns

This commit is contained in:
Ayaz Hafiz 2022-10-26 17:03:22 -05:00
parent 02a76bb8bd
commit 4d35ab9957
No known key found for this signature in database
GPG key ID: 0E2A37416A25EF58
10 changed files with 305 additions and 7 deletions

View file

@ -0,0 +1,216 @@
When(
@5-7 List(
[],
),
[
WhenBranch {
patterns: [
@13-15 SpaceBefore(
List(
[],
),
[
Newline,
],
),
],
value: @19-21 Record(
[],
),
guard: None,
},
WhenBranch {
patterns: [
@24-28 SpaceBefore(
List(
[
@25-27 ListRest,
],
),
[
Newline,
],
),
],
value: @32-34 Record(
[],
),
guard: None,
},
WhenBranch {
patterns: [
@37-51 SpaceBefore(
List(
[
@38-39 Underscore(
"",
),
@41-43 ListRest,
@45-46 Underscore(
"",
),
@48-50 ListRest,
],
),
[
Newline,
],
),
],
value: @55-57 Record(
[],
),
guard: None,
},
WhenBranch {
patterns: [
@60-72 SpaceBefore(
List(
[
@61-62 Identifier(
"a",
),
@64-65 Identifier(
"b",
),
@67-68 Identifier(
"c",
),
@70-71 Identifier(
"d",
),
],
),
[
Newline,
],
),
],
value: @76-78 Record(
[],
),
guard: None,
},
WhenBranch {
patterns: [
@81-91 SpaceBefore(
List(
[
@82-83 Identifier(
"a",
),
@85-86 Identifier(
"b",
),
@88-90 ListRest,
],
),
[
Newline,
],
),
],
value: @95-97 Record(
[],
),
guard: None,
},
WhenBranch {
patterns: [
@100-110 SpaceBefore(
List(
[
@101-103 ListRest,
@105-106 Identifier(
"c",
),
@108-109 Identifier(
"d",
),
],
),
[
Newline,
],
),
],
value: @114-116 Record(
[],
),
guard: None,
},
WhenBranch {
patterns: [
@119-135 SpaceBefore(
List(
[
@120-123 List(
[
@121-122 Tag(
"A",
),
],
),
@125-129 List(
[
@126-128 ListRest,
],
),
@131-134 List(
[
@132-133 Identifier(
"a",
),
],
),
],
),
[
Newline,
],
),
],
value: @139-141 Record(
[],
),
guard: None,
},
WhenBranch {
patterns: [
@144-163 SpaceBefore(
List(
[
@145-153 List(
[
@146-148 List(
[],
),
@150-152 List(
[],
),
],
),
@155-162 List(
[
@156-158 List(
[],
),
@160-161 Identifier(
"x",
),
],
),
],
),
[
Newline,
],
),
],
value: @167-169 Record(
[],
),
guard: None,
},
],
)

View file

@ -0,0 +1,9 @@
when [] is
[] -> {}
[..] -> {}
[_, .., _, ..] -> {}
[a, b, c, d] -> {}
[a, b, ..] -> {}
[.., c, d] -> {}
[[A], [..], [a]] -> {}
[[[], []], [[], x]] -> {}

View file

@ -175,6 +175,7 @@ mod test_parse {
pass/list_closing_indent_not_enough.expr,
pass/list_closing_same_indent_no_trailing_comma.expr,
pass/list_closing_same_indent_with_trailing_comma.expr,
pass/list_patterns.expr,
pass/lowest_float.expr,
pass/lowest_int.expr,
pass/malformed_ident_due_to_underscore.expr,