Skip to content

Commit 38be6ec

Browse files
brandonsparkamaanq
authored andcommitted
feat: add unnamed patterns
1 parent 2a15634 commit 38be6ec

File tree

6 files changed

+33501
-33252
lines changed

6 files changed

+33501
-33252
lines changed

grammar.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -499,10 +499,14 @@ module.exports = grammar({
499499
type_pattern: $ => seq($._unannotated_type, choice($.identifier, $._reserved_identifier)),
500500
record_pattern: $ => seq(choice($.identifier, $._reserved_identifier, $.generic_type), $.record_pattern_body),
501501
record_pattern_body: $ => seq('(', commaSep(choice($.record_pattern_component, $.record_pattern)), ')'),
502-
record_pattern_component: $ => seq(
503-
$._unannotated_type,
504-
choice($.identifier, $._reserved_identifier)
505-
),
502+
record_pattern_component: $ => choice(
503+
$.underscore_pattern,
504+
seq(
505+
$._unannotated_type,
506+
choice($.identifier, $._reserved_identifier)
507+
)),
508+
509+
underscore_pattern: $ => '_',
506510

507511
guard: $ => seq('when', $.expression),
508512

@@ -1081,7 +1085,7 @@ module.exports = grammar({
10811085
),
10821086

10831087
_variable_declarator_id: $ => seq(
1084-
field('name', choice($.identifier, $._reserved_identifier)),
1088+
field('name', choice($.identifier, $._reserved_identifier, $.underscore_pattern)),
10851089
field('dimensions', optional($.dimensions))
10861090
),
10871091

src/grammar.json

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3831,27 +3831,40 @@
38313831
]
38323832
},
38333833
"record_pattern_component": {
3834-
"type": "SEQ",
3834+
"type": "CHOICE",
38353835
"members": [
38363836
{
38373837
"type": "SYMBOL",
3838-
"name": "_unannotated_type"
3838+
"name": "underscore_pattern"
38393839
},
38403840
{
3841-
"type": "CHOICE",
3841+
"type": "SEQ",
38423842
"members": [
38433843
{
38443844
"type": "SYMBOL",
3845-
"name": "identifier"
3845+
"name": "_unannotated_type"
38463846
},
38473847
{
3848-
"type": "SYMBOL",
3849-
"name": "_reserved_identifier"
3848+
"type": "CHOICE",
3849+
"members": [
3850+
{
3851+
"type": "SYMBOL",
3852+
"name": "identifier"
3853+
},
3854+
{
3855+
"type": "SYMBOL",
3856+
"name": "_reserved_identifier"
3857+
}
3858+
]
38503859
}
38513860
]
38523861
}
38533862
]
38543863
},
3864+
"underscore_pattern": {
3865+
"type": "STRING",
3866+
"value": "_"
3867+
},
38553868
"guard": {
38563869
"type": "SEQ",
38573870
"members": [
@@ -6884,6 +6897,10 @@
68846897
{
68856898
"type": "SYMBOL",
68866899
"name": "_reserved_identifier"
6900+
},
6901+
{
6902+
"type": "SYMBOL",
6903+
"name": "underscore_pattern"
68876904
}
68886905
]
68896906
}

src/node-types.json

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1061,6 +1061,10 @@
10611061
{
10621062
"type": "identifier",
10631063
"named": true
1064+
},
1065+
{
1066+
"type": "underscore_pattern",
1067+
"named": true
10641068
}
10651069
]
10661070
}
@@ -1586,6 +1590,10 @@
15861590
{
15871591
"type": "identifier",
15881592
"named": true
1593+
},
1594+
{
1595+
"type": "underscore_pattern",
1596+
"named": true
15891597
}
15901598
]
15911599
},
@@ -2072,6 +2080,10 @@
20722080
{
20732081
"type": "identifier",
20742082
"named": true
2083+
},
2084+
{
2085+
"type": "underscore_pattern",
2086+
"named": true
20752087
}
20762088
]
20772089
},
@@ -3138,6 +3150,10 @@
31383150
{
31393151
"type": "identifier",
31403152
"named": true
3153+
},
3154+
{
3155+
"type": "underscore_pattern",
3156+
"named": true
31413157
}
31423158
]
31433159
}
@@ -3198,6 +3214,10 @@
31983214
{
31993215
"type": "identifier",
32003216
"named": true
3217+
},
3218+
{
3219+
"type": "underscore_pattern",
3220+
"named": true
32013221
}
32023222
]
32033223
},
@@ -3948,6 +3968,10 @@
39483968
{
39493969
"type": "identifier",
39503970
"named": true
3971+
},
3972+
{
3973+
"type": "underscore_pattern",
3974+
"named": true
39513975
}
39523976
]
39533977
},
@@ -4519,6 +4543,10 @@
45194543
"type": "type_identifier",
45204544
"named": true
45214545
},
4546+
{
4547+
"type": "underscore_pattern",
4548+
"named": true
4549+
},
45224550
{
45234551
"type": "uses",
45244552
"named": false

0 commit comments

Comments
 (0)