mirror of
https://github.com/roc-lang/roc.git
synced 2025-11-01 21:40:58 +00:00
Parse list patterns
This commit is contained in:
parent
02a76bb8bd
commit
4d35ab9957
10 changed files with 305 additions and 7 deletions
|
|
@ -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,
|
||||
},
|
||||
],
|
||||
)
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
when [] is
|
||||
[] -> {}
|
||||
[..] -> {}
|
||||
[_, .., _, ..] -> {}
|
||||
[a, b, c, d] -> {}
|
||||
[a, b, ..] -> {}
|
||||
[.., c, d] -> {}
|
||||
[[A], [..], [a]] -> {}
|
||||
[[[], []], [[], x]] -> {}
|
||||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue