@@ -106,35 +106,40 @@ repository:
106
106
- include : ' #array-binding-pattern'
107
107
- name : variable.other.readwrite.ts
108
108
match : ([_$[:alpha:]][_$[:alnum:]]*)
109
- - name : variable.other.readwrite.ts
110
- match : ([_$[:alpha:]][_$[:alnum:]]*)
111
- - name : meta.delimiter.object.comma.ts
112
- match : ' ,'
109
+ - include : ' #object-binding-pattern'
110
+ - include : ' #destructuring-variable-rest'
111
+ - include : ' #punctuation-comma'
113
112
114
113
array-binding-element :
115
114
patterns :
116
115
- include : ' #comment'
117
116
- include : ' #object-binding-pattern'
118
117
- include : ' #array-binding-pattern'
119
- - name : variable.other.readwrite.ts
120
- match : ([_$[:alpha:]][_$[:alnum:]]*)
121
- - name : meta.delimiter.object.comma.ts
122
- match : ' ,'
118
+ - include : ' #destructuring-variable-rest'
119
+ - include : ' #punctuation-comma'
120
+
121
+ destructuring-variable-rest :
122
+ match : (?:(\.\.\.)\s*)?([_$[:alpha:]][_$[:alnum:]]*)
123
+ captures :
124
+ ' 1 ' : { name: keyword.operator.rest.ts }
125
+ ' 2 ' : { name: variable.other.readwrite.ts }
123
126
124
127
object-binding-pattern :
125
- begin : \{
128
+ begin : (?:(\.\.\.)\s*)?(\{)
126
129
beginCaptures :
127
- ' 0 ' : { name: punctuation.definition.binding-pattern.object.ts }
130
+ ' 1 ' : { name: keyword.operator.rest.ts }
131
+ ' 2 ' : { name: punctuation.definition.binding-pattern.object.ts }
128
132
end : \}
129
133
endCaptures :
130
134
' 0 ' : { name: punctuation.definition.binding-pattern.object.ts }
131
135
patterns :
132
136
- include : ' #object-binding-element'
133
137
134
138
array-binding-pattern :
135
- begin : \[
139
+ begin : (?:(\.\.\.)\s*)?(\[)
136
140
beginCaptures :
137
- ' 0 ' : { name: punctuation.definition.binding-pattern.array.ts }
141
+ ' 1 ' : { name: keyword.operator.rest.ts }
142
+ ' 2 ' : { name: punctuation.definition.binding-pattern.array.ts }
138
143
end : \]
139
144
endCaptures :
140
145
' 0 ' : { name: punctuation.definition.binding-pattern.array.ts }
@@ -173,8 +178,7 @@ repository:
173
178
- include : ' #ternary-expression'
174
179
- include : ' #new-expr'
175
180
- include : ' #object-literal'
176
- - include : ' #expression-operator'
177
- - include : ' #operators'
181
+ - include : ' #expression-operators'
178
182
- include : ' #support-objects'
179
183
- include : ' #function-call'
180
184
- include : ' #identifiers'
@@ -371,8 +375,7 @@ repository:
371
375
' 4 ' : { name: keyword.control.as.ts }
372
376
' 5 ' : { name: invalid.illegal.ts }
373
377
' 6 ' : { name: variable.other.readwrite.alias.ts }
374
- - name : meta.delimiter.object.comma.ts
375
- match : ' ,'
378
+ - include : ' #punctuation-comma'
376
379
- name : constant.language.import-export-all.ts
377
380
match : \*
378
381
- name : keyword.control.default.ts
@@ -460,6 +463,12 @@ repository:
460
463
- include : ' #method-declaration'
461
464
- include : ' #indexer-declaration'
462
465
- include : ' #type-annotation'
466
+ - begin : \.\.\.
467
+ beginCaptures :
468
+ ' 0 ' : { name: keyword.operator.spread.ts }
469
+ end : ' (?=\}|;|,|$)|(?<=\})'
470
+ patterns :
471
+ - include : ' #type'
463
472
- include : ' #punctuation-comma'
464
473
- include : ' #punctuation-semicolon'
465
474
@@ -612,7 +621,7 @@ repository:
612
621
match : ' (?:\s*\b(public|private|protected)\b\s+)?(\.\.\.)?\s*(?<!=|:)([_$[:alpha:]][_$[:alnum:]]*)\s*(\??)'
613
622
captures :
614
623
' 1 ' : { name: storage.modifier.ts }
615
- ' 2 ' : { name: keyword.operator.spread .ts }
624
+ ' 2 ' : { name: keyword.operator.rest .ts }
616
625
' 3 ' : { name: variable.parameter.ts }
617
626
' 4 ' : { name: keyword.operator.optional.ts }
618
627
@@ -650,35 +659,40 @@ repository:
650
659
- include : ' #parameter-array-binding-pattern'
651
660
- name : variable.parameter.ts
652
661
match : ([_$[:alpha:]][_$[:alnum:]]*)
653
- - name : variable.parameter.ts
654
- match : ([_$[:alpha:]][_$[:alnum:]]*)
655
- - name : meta.delimiter.object.comma.ts
656
- match : ' ,'
662
+ - include : ' #parameter-object-binding-pattern'
663
+ - include : ' #destructuring-parameter-rest'
664
+ - include : ' #punctuation-comma'
657
665
658
666
parameter-array-binding-element :
659
667
patterns :
660
668
- include : ' #comment'
661
669
- include : ' #parameter-object-binding-pattern'
662
670
- include : ' #parameter-array-binding-pattern'
663
- - name : variable.parameter.ts
664
- match : ([_$[:alpha:]][_$[:alnum:]]*)
665
- - name : meta.delimiter.object.comma.ts
666
- match : ' ,'
671
+ - include : ' #destructuring-parameter-rest'
672
+ - include : ' #punctuation-comma'
673
+
674
+ destructuring-parameter-rest :
675
+ match : (?:(\.\.\.)\s*)?([_$[:alpha:]][_$[:alnum:]]*)
676
+ captures :
677
+ ' 1 ' : { name: keyword.operator.rest.ts }
678
+ ' 2 ' : { name: variable.parameter.ts }
667
679
668
680
parameter-object-binding-pattern :
669
- begin : \{
681
+ begin : (?:(\.\.\.)\s*)?(\{)
670
682
beginCaptures :
671
- ' 0 ' : { name: punctuation.definition.binding-pattern.object.ts }
683
+ ' 1 ' : { name: keyword.operator.rest.ts }
684
+ ' 2 ' : { name: punctuation.definition.binding-pattern.object.ts }
672
685
end : \}
673
686
endCaptures :
674
687
' 0 ' : { name: punctuation.definition.binding-pattern.object.ts }
675
688
patterns :
676
689
- include : ' #parameter-object-binding-element'
677
690
678
691
parameter-array-binding-pattern :
679
- begin : \[
692
+ begin : (?:(\.\.\.)\s*)?(\[)
680
693
beginCaptures :
681
- ' 0 ' : { name: punctuation.definition.binding-pattern.array.ts }
694
+ ' 1 ' : { name: keyword.operator.rest.ts }
695
+ ' 2 ' : { name: punctuation.definition.binding-pattern.array.ts }
682
696
end : \]
683
697
endCaptures :
684
698
' 0 ' : { name: punctuation.definition.binding-pattern.array.ts }
@@ -728,11 +742,10 @@ repository:
728
742
- include : ' #numeric-literal'
729
743
- include : ' #type-primitive'
730
744
- include : ' #type-builtin-literals'
731
- - include : ' #typeof-operator'
732
745
- include : ' #type-parameters'
733
746
- include : ' #type-tuple'
734
747
- include : ' #type-object'
735
- - include : ' #type-operator '
748
+ - include : ' #type-operators '
736
749
- include : ' #type-fn-type-parameters'
737
750
- include : ' #type-paren-or-function-parameters'
738
751
- include : ' #type-function-return-type'
@@ -819,9 +832,11 @@ repository:
819
832
patterns :
820
833
- include : ' #function-parameters'
821
834
822
- type-operator :
823
- name : keyword.operator.type.ts
824
- match : ' [&|]'
835
+ type-operators :
836
+ patterns :
837
+ - include : ' #typeof-operator'
838
+ - name : keyword.operator.type.ts
839
+ match : ' [&|]'
825
840
826
841
type-function-return-type :
827
842
name : meta.type.function.return.ts
@@ -1342,13 +1357,20 @@ repository:
1342
1357
end : (?=,|\})
1343
1358
patterns :
1344
1359
- include : ' #expression'
1360
+ - name : meta.object.member.ts
1361
+ begin : \.\.\.
1362
+ beginCaptures :
1363
+ ' 0 ' : { name: keyword.operator.spread.ts }
1364
+ end : (?=,|\})
1365
+ patterns :
1366
+ - include : ' #expression'
1345
1367
- name : meta.object.member.ts
1346
1368
match : ([_$[:alpha:]][_$[:alnum:]]*)\s*(?=,|\}|$)
1347
1369
captures :
1348
1370
' 1 ' : { name: variable.other.readwrite.ts }
1349
1371
- include : ' #punctuation-comma'
1350
1372
1351
- expression-operator :
1373
+ expression-operators :
1352
1374
patterns :
1353
1375
- name : keyword.control.flow.ts
1354
1376
match : (?<!\.|\$)\b(await)\b(?!\$)
@@ -1371,13 +1393,8 @@ repository:
1371
1393
end : (?=$|[;,})\]])
1372
1394
patterns :
1373
1395
- include : ' #type'
1374
-
1375
- typeof-operator :
1376
- name : keyword.operator.typeof.ts
1377
- match : (?<!\.|\$)\btypeof\b(?!\$)
1378
-
1379
- operators :
1380
- patterns :
1396
+ - name : keyword.operator.spread.ts
1397
+ match : \.\.\.
1381
1398
- name : keyword.operator.assignment.compound.ts
1382
1399
match : \*=|(?<!\()/=|%=|\+=|\-=
1383
1400
- name : keyword.operator.assignment.compound.bitwise.ts
@@ -1399,6 +1416,10 @@ repository:
1399
1416
- name : keyword.operator.arithmetic.ts
1400
1417
match : ' %|\*|/|-|\+'
1401
1418
1419
+ typeof-operator :
1420
+ name : keyword.operator.typeof.ts
1421
+ match : (?<!\.|\$)\btypeof\b(?!\$)
1422
+
1402
1423
arrow-function :
1403
1424
patterns :
1404
1425
- name : meta.arrow.ts
0 commit comments