github-linguist 5.0.8 → 5.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/bin/linguist +1 -1
  3. data/grammars/source.assembly.json +2 -1
  4. data/grammars/source.clean.json +1 -1
  5. data/grammars/source.clojure.json +13 -3
  6. data/grammars/source.coffee.json +2 -2
  7. data/grammars/source.csound-document.json +1 -2
  8. data/grammars/source.csound.json +1 -1
  9. data/grammars/source.css.json +7 -7
  10. data/grammars/source.ditroff.json +5 -5
  11. data/grammars/source.elixir.json +2 -2
  12. data/grammars/source.gfm.json +31 -3
  13. data/grammars/source.harbour.json +21 -51
  14. data/grammars/source.jison.json +16 -16
  15. data/grammars/source.jisonlex.json +6 -6
  16. data/grammars/source.jolie.json +138 -0
  17. data/grammars/source.nim.json +20 -5
  18. data/grammars/source.perl6fe.json +3 -3
  19. data/grammars/source.python.json +23 -23
  20. data/grammars/source.renpy.json +2 -2
  21. data/grammars/source.solidity.json +2 -2
  22. data/grammars/source.sqf.json +1 -1
  23. data/grammars/source.terraform.json +78 -25
  24. data/grammars/source.ts.json +176 -157
  25. data/grammars/source.tsx.json +176 -157
  26. data/grammars/source.yaml.json +5 -4
  27. data/grammars/text.html.basic.json +212 -60
  28. data/grammars/text.html.ecr.json +1 -1
  29. data/grammars/text.html.php.blade.json +607 -264
  30. data/grammars/text.html.php.json +18 -14
  31. data/grammars/text.html.vue.json +10 -10
  32. data/grammars/text.marko.json +13 -2
  33. data/grammars/{source.gfm.clean.json → text.restructuredtext.clean.json} +4 -5
  34. data/grammars/text.restructuredtext.json +4 -3
  35. data/grammars/text.roff.json +390 -23
  36. data/grammars/text.tex.latex.json +1 -1
  37. data/lib/linguist.rb +1 -1
  38. data/lib/linguist/heuristics.rb +27 -18
  39. data/lib/linguist/languages.json +1 -1
  40. data/lib/linguist/languages.yml +39 -2
  41. data/lib/linguist/samples.json +1999 -737
  42. data/lib/linguist/version.rb +1 -1
  43. metadata +5 -4
@@ -34,9 +34,6 @@
34
34
  {
35
35
  "include": "#comment"
36
36
  },
37
- {
38
- "include": "#literal"
39
- },
40
37
  {
41
38
  "include": "#declaration"
42
39
  },
@@ -97,7 +94,7 @@
97
94
  "patterns": [
98
95
  {
99
96
  "name": "meta.var-single-variable.expr.tsx",
100
- "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n (=\\s*(\n (async\\s+) |\n (function\\s*[(<]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)",
97
+ "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n (=\\s*(\n (async\\s+) |\n (function\\s*[(<]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) |\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)",
101
98
  "beginCaptures": {
102
99
  "1": {
103
100
  "name": "meta.definition.variable.tsx entity.name.function.tsx"
@@ -106,13 +103,7 @@
106
103
  "end": "(?=$|[;,=}]|(\\s+(of|in)\\s+))",
107
104
  "patterns": [
108
105
  {
109
- "include": "#type-annotation"
110
- },
111
- {
112
- "include": "#string"
113
- },
114
- {
115
- "include": "#comment"
106
+ "include": "#var-single-variable-type-annotation"
116
107
  }
117
108
  ]
118
109
  },
@@ -124,7 +115,12 @@
124
115
  "name": "meta.definition.variable.tsx variable.other.constant.tsx"
125
116
  }
126
117
  },
127
- "end": "(?=$|[;,=}]|(\\s+(of|in)\\s+))"
118
+ "end": "(?=$|[;,=}]|(\\s+(of|in)\\s+))",
119
+ "patterns": [
120
+ {
121
+ "include": "#var-single-variable-type-annotation"
122
+ }
123
+ ]
128
124
  },
129
125
  {
130
126
  "name": "meta.var-single-variable.expr.tsx",
@@ -137,18 +133,25 @@
137
133
  "end": "(?=$|[;,=}]|(\\s+(of|in)\\s+))",
138
134
  "patterns": [
139
135
  {
140
- "include": "#type-annotation"
141
- },
142
- {
143
- "include": "#string"
144
- },
145
- {
146
- "include": "#comment"
136
+ "include": "#var-single-variable-type-annotation"
147
137
  }
148
138
  ]
149
139
  }
150
140
  ]
151
141
  },
142
+ "var-single-variable-type-annotation": {
143
+ "patterns": [
144
+ {
145
+ "include": "#type-annotation"
146
+ },
147
+ {
148
+ "include": "#string"
149
+ },
150
+ {
151
+ "include": "#comment"
152
+ }
153
+ ]
154
+ },
152
155
  "destructuring-variable": {
153
156
  "patterns": [
154
157
  {
@@ -334,7 +337,6 @@
334
337
  ]
335
338
  },
336
339
  "expression": {
337
- "name": "meta.expression.tsx",
338
340
  "patterns": [
339
341
  {
340
342
  "include": "#jsx"
@@ -352,10 +354,7 @@
352
354
  "include": "#comment"
353
355
  },
354
356
  {
355
- "include": "#literal"
356
- },
357
- {
358
- "include": "#function-declaration"
357
+ "include": "#function-expression"
359
358
  },
360
359
  {
361
360
  "include": "#class-or-interface-declaration"
@@ -381,6 +380,9 @@
381
380
  {
382
381
  "include": "#function-call"
383
382
  },
383
+ {
384
+ "include": "#literal"
385
+ },
384
386
  {
385
387
  "include": "#support-objects"
386
388
  },
@@ -412,17 +414,6 @@
412
414
  "name": "keyword.control.flow.tsx",
413
415
  "match": "(?<!\\.|\\$)\\b(return)\\b(?!\\$)"
414
416
  },
415
- {
416
- "match": "(?<!\\.|\\$)\\b(yield)\\b(?!\\$)(?:\\s*(\\*))?",
417
- "captures": {
418
- "1": {
419
- "name": "keyword.control.flow.tsx"
420
- },
421
- "2": {
422
- "name": "keyword.generator.asterisk.tsx"
423
- }
424
- }
425
- },
426
417
  {
427
418
  "name": "keyword.control.switch.tsx",
428
419
  "match": "(?<!\\.|\\$)\\b(case|default|switch)\\b(?!\\$)"
@@ -446,7 +437,6 @@
446
437
  ]
447
438
  },
448
439
  "declaration": {
449
- "name": "meta.declaration.tsx",
450
440
  "patterns": [
451
441
  {
452
442
  "include": "#decorator"
@@ -613,7 +603,7 @@
613
603
  },
614
604
  "namespace-declaration": {
615
605
  "name": "meta.namespace.declaration.tsx",
616
- "begin": "(?<!\\.|\\$)(?:(\\bexport)\\s+)?\\b(namespace|module)\\s+",
606
+ "begin": "(?<!\\.|\\$)(?:(\\bexport)\\s+)?\\b(namespace|module)\\s+(?=[_$[:alpha:]\"'`])",
617
607
  "beginCaptures": {
618
608
  "1": {
619
609
  "name": "keyword.control.export.tsx"
@@ -883,7 +873,7 @@
883
873
  },
884
874
  "class-or-interface-declaration": {
885
875
  "name": "meta.class.tsx",
886
- "begin": "(?<!\\.|\\$)\\b(?:(export)\\s+)?\\b(?:(abstract)\\s+)?\\b(?:(class)|(interface))\\b",
876
+ "begin": "(?<!\\.|\\$)\\b(?:(export)\\s+)?\\b(?:(abstract)\\s+)?\\b(?:(class)|(interface))\\b(?=\\s+|/[/*])",
887
877
  "beginCaptures": {
888
878
  "1": {
889
879
  "name": "keyword.control.export.tsx"
@@ -1018,6 +1008,12 @@
1018
1008
  {
1019
1009
  "include": "#property-accessor"
1020
1010
  },
1011
+ {
1012
+ "include": "#after-operator-block"
1013
+ },
1014
+ {
1015
+ "include": "#decl-block"
1016
+ },
1021
1017
  {
1022
1018
  "include": "#expression"
1023
1019
  },
@@ -1125,7 +1121,7 @@
1125
1121
  },
1126
1122
  {
1127
1123
  "name": "meta.definition.property.tsx entity.name.function.tsx",
1128
- "match": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=(\\?\\s*)?\\s*\n (=\\s*(\n (async\\s+) |\n (function\\s*[(<]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)"
1124
+ "match": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=(\\?\\s*)?\\s*\n (=\\s*(\n (async\\s+) |\n (function\\s*[(<]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) |\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)"
1129
1125
  },
1130
1126
  {
1131
1127
  "name": "meta.definition.property.tsx variable.object.property.tsx",
@@ -1165,7 +1161,7 @@
1165
1161
  "name": "keyword.generator.asterisk.tsx"
1166
1162
  }
1167
1163
  },
1168
- "end": "(?=\\}|;|,)|(?<=\\})",
1164
+ "end": "(?=\\}|;|,|$)|(?<=\\})",
1169
1165
  "patterns": [
1170
1166
  {
1171
1167
  "include": "#method-declaration-name"
@@ -1182,46 +1178,11 @@
1182
1178
  {
1183
1179
  "include": "#return-type"
1184
1180
  },
1185
- {
1186
- "include": "#method-overload-declaration"
1187
- },
1188
1181
  {
1189
1182
  "include": "#decl-block"
1190
1183
  }
1191
1184
  ]
1192
1185
  },
1193
- "method-overload-declaration": {
1194
- "begin": "(?<!\\.|\\$)(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(?:\\b(?:(new)|(constructor))\\b(?!\\$|:))|(?:(\\*)\\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\\'[^']*\\')|(\\\"[^\"]*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))?\\s*[\\(\\<]))",
1195
- "beginCaptures": {
1196
- "1": {
1197
- "name": "storage.modifier.tsx"
1198
- },
1199
- "2": {
1200
- "name": "storage.modifier.tsx"
1201
- },
1202
- "3": {
1203
- "name": "storage.modifier.async.tsx"
1204
- },
1205
- "4": {
1206
- "name": "storage.type.property.tsx"
1207
- },
1208
- "5": {
1209
- "name": "keyword.operator.new.tsx"
1210
- },
1211
- "6": {
1212
- "name": "storage.type.tsx"
1213
- },
1214
- "7": {
1215
- "name": "keyword.generator.asterisk.tsx"
1216
- }
1217
- },
1218
- "end": "(?=\\(|\\<)",
1219
- "patterns": [
1220
- {
1221
- "include": "#method-declaration-name"
1222
- }
1223
- ]
1224
- },
1225
1186
  "method-declaration-name": {
1226
1187
  "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\'[^']*\\')|(\\\"[^\"]*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\<])",
1227
1188
  "end": "(?=\\(|\\<)",
@@ -1274,7 +1235,7 @@
1274
1235
  "include": "#return-type"
1275
1236
  },
1276
1237
  {
1277
- "include": "#method-overload-declaration"
1238
+ "include": "#object-literal-method-overload-declaration"
1278
1239
  },
1279
1240
  {
1280
1241
  "include": "#decl-block"
@@ -1382,7 +1343,7 @@
1382
1343
  "name": "meta.definition.function.tsx entity.name.function.tsx"
1383
1344
  }
1384
1345
  },
1385
- "end": "(?=;|\\})|(?<=\\})",
1346
+ "end": "(?=$|;)|(?<=\\})",
1386
1347
  "patterns": [
1387
1348
  {
1388
1349
  "include": "#comment"
@@ -1396,34 +1357,46 @@
1396
1357
  {
1397
1358
  "include": "#return-type"
1398
1359
  },
1399
- {
1400
- "include": "#function-overload-declaration"
1401
- },
1402
1360
  {
1403
1361
  "include": "#decl-block"
1404
1362
  }
1405
1363
  ]
1406
1364
  },
1407
- "function-overload-declaration": {
1408
- "name": "meta.function.overload.tsx",
1409
- "match": "(?<!\\.|\\$)\\b(?:(export)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
1410
- "captures": {
1365
+ "function-expression": {
1366
+ "name": "meta.function.expression.tsx",
1367
+ "begin": "(?<!\\.|\\$)\\b(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
1368
+ "beginCaptures": {
1411
1369
  "1": {
1412
- "name": "keyword.control.export.tsx"
1413
- },
1414
- "2": {
1415
1370
  "name": "storage.modifier.async.tsx"
1416
1371
  },
1417
- "3": {
1372
+ "2": {
1418
1373
  "name": "storage.type.function.tsx"
1419
1374
  },
1420
- "4": {
1375
+ "3": {
1421
1376
  "name": "keyword.generator.asterisk.tsx"
1422
1377
  },
1423
- "5": {
1378
+ "4": {
1424
1379
  "name": "meta.definition.function.tsx entity.name.function.tsx"
1425
1380
  }
1426
- }
1381
+ },
1382
+ "end": "(?<=\\})",
1383
+ "patterns": [
1384
+ {
1385
+ "include": "#comment"
1386
+ },
1387
+ {
1388
+ "include": "#type-parameters"
1389
+ },
1390
+ {
1391
+ "include": "#function-parameters"
1392
+ },
1393
+ {
1394
+ "include": "#return-type"
1395
+ },
1396
+ {
1397
+ "include": "#decl-block"
1398
+ }
1399
+ ]
1427
1400
  },
1428
1401
  "object-literal": {
1429
1402
  "name": "meta.objectliteral.tsx",
@@ -1496,7 +1469,7 @@
1496
1469
  }
1497
1470
  },
1498
1471
  {
1499
- "match": "(?x)(?:\\s*\\b(public|private|protected|readonly)\\s+)?(\\.\\.\\.)?\\s*(?<!=|:)([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\??)(?=\\s*\n (=\\s*(\n (async\\s+) |\n (function\\s*[(<]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)",
1472
+ "match": "(?x)(?:\\s*\\b(public|private|protected|readonly)\\s+)?(\\.\\.\\.)?\\s*(?<!=|:)([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\??)(?=\\s*\n (=\\s*(\n (async\\s+) |\n (function\\s*[(<]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) |\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))\n ) |\n (:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )))\n )\n)",
1500
1473
  "captures": {
1501
1474
  "1": {
1502
1475
  "name": "storage.modifier.tsx"
@@ -1694,7 +1667,7 @@
1694
1667
  "name": "keyword.operator.type.annotation.tsx"
1695
1668
  }
1696
1669
  },
1697
- "end": "(?<!:)((?=$)|(?=\\{|;|//|\\}))",
1670
+ "end": "(?<!:)((?=$)|(?=[{};,]|//))",
1698
1671
  "patterns": [
1699
1672
  {
1700
1673
  "include": "#comment"
@@ -1750,7 +1723,6 @@
1750
1723
  ]
1751
1724
  },
1752
1725
  "type": {
1753
- "name": "meta.type.tsx",
1754
1726
  "patterns": [
1755
1727
  {
1756
1728
  "include": "#comment"
@@ -1838,7 +1810,7 @@
1838
1810
  },
1839
1811
  "type-builtin-literals": {
1840
1812
  "name": "support.type.builtin.tsx",
1841
- "match": "(?<!\\.|\\$)\\b(this|true|false|undefined|null)\\b(?!\\$)"
1813
+ "match": "(?<!\\.|\\$)\\b(this|true|false|undefined|null|object)\\b(?!\\$)"
1842
1814
  },
1843
1815
  "type-paren-or-function-parameters": {
1844
1816
  "name": "meta.type.paren.cover.tsx",
@@ -1889,16 +1861,6 @@
1889
1861
  }
1890
1862
  ]
1891
1863
  },
1892
- {
1893
- "name": "meta.type.function.tsx",
1894
- "begin": "(?<=\\>)\\s*(?=\\()",
1895
- "end": "(?<=\\))",
1896
- "patterns": [
1897
- {
1898
- "include": "#function-parameters"
1899
- }
1900
- ]
1901
- },
1902
1864
  {
1903
1865
  "name": "meta.type.function.tsx",
1904
1866
  "begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) | \n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
@@ -2031,6 +1993,10 @@
2031
1993
  "name": "storage.modifier.tsx",
2032
1994
  "match": "(?<!\\.|\\$)\\b(extends)\\b(?!\\$)"
2033
1995
  },
1996
+ {
1997
+ "name": "keyword.operator.assignment.tsx",
1998
+ "match": "\\=(?!>)"
1999
+ },
2034
2000
  {
2035
2001
  "include": "#type"
2036
2002
  },
@@ -2040,16 +2006,34 @@
2040
2006
  ]
2041
2007
  },
2042
2008
  "variable-initializer": {
2043
- "begin": "(?<!=|!)(=)(?!=)",
2044
- "beginCaptures": {
2045
- "1": {
2046
- "name": "keyword.operator.assignment.tsx"
2047
- }
2048
- },
2049
- "end": "(?=$|[,);}\\]])",
2050
2009
  "patterns": [
2051
2010
  {
2052
- "include": "#expression"
2011
+ "begin": "(?<!=|!)(=)(?!=)(?=\\s*\\S)",
2012
+ "beginCaptures": {
2013
+ "1": {
2014
+ "name": "keyword.operator.assignment.tsx"
2015
+ }
2016
+ },
2017
+ "end": "(?=$|[,);}\\]])",
2018
+ "patterns": [
2019
+ {
2020
+ "include": "#expression"
2021
+ }
2022
+ ]
2023
+ },
2024
+ {
2025
+ "begin": "(?<!=|!)(=)(?!=)",
2026
+ "beginCaptures": {
2027
+ "1": {
2028
+ "name": "keyword.operator.assignment.tsx"
2029
+ }
2030
+ },
2031
+ "end": "(?=[,);}\\]])|(?=^\\s*$)",
2032
+ "patterns": [
2033
+ {
2034
+ "include": "#expression"
2035
+ }
2036
+ ]
2053
2037
  }
2054
2038
  ]
2055
2039
  },
@@ -2269,10 +2253,6 @@
2269
2253
  "name": "support.class.node.tsx",
2270
2254
  "match": "(?x)(?<!\\.|\\$)\\b(Buffer|EventEmitter|Server|Pipe|Socket|REPLServer|ReadStream|WriteStream|Stream\n |Inflate|Deflate|InflateRaw|DeflateRaw|GZip|GUnzip|Unzip|Zip)\\b(?!\\$)"
2271
2255
  },
2272
- {
2273
- "name": "support.module.node.tsx",
2274
- "match": "(?x)(?<!\\.|\\$)\\b(assert|buffer|child_process|cluster|constants|crypto|dgram|dns|domain|events|fs|http|https|net\n |os|path|punycode|querystring|readline|repl|stream|string_decoder|timers|tls|tty|url|util|vm|zlib)\\b(?!\\$)"
2275
- },
2276
2256
  {
2277
2257
  "match": "(?x)(?<!\\.|\\$)\\b(process)(?:(\\.)(?:\n (arch|argv|config|connected|env|execArgv|execPath|exitCode|mainModule|pid|platform|release|stderr|stdin|stdout|title|version|versions)\n |\n (abort|chdir|cwd|disconnect|exit|[sg]ete?[gu]id|send|[sg]etgroups|initgroups|kill|memoryUsage|nextTick|umask|uptime|hrtime)\n))?\\b(?!\\$)",
2278
2258
  "captures": {
@@ -2331,12 +2311,18 @@
2331
2311
  ]
2332
2312
  },
2333
2313
  "function-call": {
2334
- "begin": "(?=(\\.\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\()",
2335
- "end": "(?<=\\))(?!(\\.\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\()",
2314
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\.\\s*)*|(\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\s*(<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\()",
2315
+ "end": "(?<=\\))(?!(([_$[:alpha:]][_$[:alnum:]]*\\s*\\.\\s*)*|(\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\s*(<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\()",
2336
2316
  "patterns": [
2317
+ {
2318
+ "include": "#literal"
2319
+ },
2337
2320
  {
2338
2321
  "include": "#support-objects"
2339
2322
  },
2323
+ {
2324
+ "include": "#object-identifiers"
2325
+ },
2340
2326
  {
2341
2327
  "include": "#punctuation-accessor"
2342
2328
  },
@@ -2378,53 +2364,68 @@
2378
2364
  "identifiers": {
2379
2365
  "patterns": [
2380
2366
  {
2381
- "name": "support.class.tsx",
2382
- "match": "([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\.\\s*prototype\\b(?!\\$))"
2367
+ "include": "#object-identifiers"
2383
2368
  },
2384
2369
  {
2385
- "match": "(?x)(\\.)\\s*(?:\n ([[:upper:]][_$[:digit:][:upper:]]*) |\n ([_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)",
2370
+ "match": "(?x)(?:(\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n (async\\s+)|(function\\s*[(<])|(function\\s+)|\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)|\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>)))",
2386
2371
  "captures": {
2387
2372
  "1": {
2388
2373
  "name": "punctuation.accessor.tsx"
2389
2374
  },
2390
2375
  "2": {
2391
- "name": "variable.other.constant.object.property.tsx"
2392
- },
2393
- "3": {
2394
- "name": "variable.other.object.property.tsx"
2376
+ "name": "entity.name.function.tsx"
2395
2377
  }
2396
2378
  }
2397
2379
  },
2398
2380
  {
2399
- "match": "(?x)(?:(\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n (async\\s+)|(function\\s*[(<])|(function\\s+)|\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)|\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>)))",
2381
+ "match": "(\\.)\\s*([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",
2400
2382
  "captures": {
2401
2383
  "1": {
2402
2384
  "name": "punctuation.accessor.tsx"
2403
2385
  },
2404
2386
  "2": {
2405
- "name": "entity.name.function.tsx"
2387
+ "name": "variable.other.constant.property.tsx"
2406
2388
  }
2407
2389
  }
2408
2390
  },
2409
2391
  {
2410
- "match": "(\\.)\\s*([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",
2392
+ "match": "(\\.)\\s*([_$[:alpha:]][_$[:alnum:]]*)",
2411
2393
  "captures": {
2412
2394
  "1": {
2413
2395
  "name": "punctuation.accessor.tsx"
2414
2396
  },
2415
2397
  "2": {
2416
- "name": "variable.other.constant.property.tsx"
2398
+ "name": "variable.other.property.tsx"
2417
2399
  }
2418
2400
  }
2419
2401
  },
2420
2402
  {
2421
- "match": "(\\.)\\s*([_$[:alpha:]][_$[:alnum:]]*)",
2403
+ "name": "variable.other.constant.tsx",
2404
+ "match": "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"
2405
+ },
2406
+ {
2407
+ "name": "variable.other.readwrite.tsx",
2408
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
2409
+ }
2410
+ ]
2411
+ },
2412
+ "object-identifiers": {
2413
+ "patterns": [
2414
+ {
2415
+ "name": "support.class.tsx",
2416
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\.\\s*prototype\\b(?!\\$))"
2417
+ },
2418
+ {
2419
+ "match": "(?x)(\\.)\\s*(?:\n ([[:upper:]][_$[:digit:][:upper:]]*) |\n ([_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)",
2422
2420
  "captures": {
2423
2421
  "1": {
2424
2422
  "name": "punctuation.accessor.tsx"
2425
2423
  },
2426
2424
  "2": {
2427
- "name": "variable.other.property.tsx"
2425
+ "name": "variable.other.constant.object.property.tsx"
2426
+ },
2427
+ "3": {
2428
+ "name": "variable.other.object.property.tsx"
2428
2429
  }
2429
2430
  }
2430
2431
  },
@@ -2438,14 +2439,6 @@
2438
2439
  "name": "variable.other.object.tsx"
2439
2440
  }
2440
2441
  }
2441
- },
2442
- {
2443
- "name": "variable.other.constant.tsx",
2444
- "match": "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"
2445
- },
2446
- {
2447
- "name": "variable.other.readwrite.tsx",
2448
- "match": "[_$[:alpha:]][_$[:alnum:]]*"
2449
2442
  }
2450
2443
  ]
2451
2444
  },
@@ -2464,7 +2457,7 @@
2464
2457
  "name": "keyword.operator.new.tsx"
2465
2458
  }
2466
2459
  },
2467
- "end": "(?<=\\))|(?=[;),]|$|((?<!\\.|\\$)\\bnew\\b(?!\\$)))",
2460
+ "end": "(?<=\\))|(?=[;),}]|$|((?<!\\.|\\$)\\bnew\\b(?!\\$)))",
2468
2461
  "patterns": [
2469
2462
  {
2470
2463
  "include": "#paren-expression"
@@ -2515,7 +2508,7 @@
2515
2508
  },
2516
2509
  {
2517
2510
  "name": "meta.object.member.tsx",
2518
- "begin": "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*(\n (async\\s+)|(function\\s*[(<])|(function\\s+)|\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)|\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))))",
2511
+ "begin": "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*(\n (async\\s+)|(function\\s*[(<])|(function\\s+)|\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)|\n ([(]\\s*(([)]\\s*:)|([_$[:alpha:]][_$[:alnum:]]*\\s*:)|(\\.\\.\\.) )) |\n ([<]\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s*[^=>])|(\\s*[,]))) |\n ((<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>))))",
2519
2512
  "beginCaptures": {
2520
2513
  "0": {
2521
2514
  "name": "meta.object-literal.key.tsx"
@@ -2587,6 +2580,17 @@
2587
2580
  "name": "keyword.control.flow.tsx",
2588
2581
  "match": "(?<!\\.|\\$)\\b(await)\\b(?!\\$)"
2589
2582
  },
2583
+ {
2584
+ "match": "(?<!\\.|\\$)\\b(yield)\\b(?!\\$)(?:\\s*(\\*))?",
2585
+ "captures": {
2586
+ "1": {
2587
+ "name": "keyword.control.flow.tsx"
2588
+ },
2589
+ "2": {
2590
+ "name": "keyword.generator.asterisk.tsx"
2591
+ }
2592
+ }
2593
+ },
2590
2594
  {
2591
2595
  "name": "keyword.operator.expression.delete.tsx",
2592
2596
  "match": "(?<!\\.|\\$)\\bdelete\\b(?!\\$)"
@@ -2692,15 +2696,6 @@
2692
2696
  },
2693
2697
  "arrow-function": {
2694
2698
  "patterns": [
2695
- {
2696
- "name": "meta.arrow.tsx",
2697
- "match": "(?<!\\.|\\$)(\\basync)(?=\\s*[<(])",
2698
- "captures": {
2699
- "1": {
2700
- "name": "storage.modifier.async.tsx"
2701
- }
2702
- }
2703
- },
2704
2699
  {
2705
2700
  "name": "meta.arrow.tsx",
2706
2701
  "match": "(?:(?<!\\.|\\$)(\\basync)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==>)",
@@ -2715,8 +2710,13 @@
2715
2710
  },
2716
2711
  {
2717
2712
  "name": "meta.arrow.tsx",
2718
- "begin": "(?x)\\s*(?=(<([^<>]|\\<[^<>]+\\>)+>\\s*)?\\(([^()]|\\([^()]*\\))*\\)(\\s*:\\s*(.)*)?\\s*=>)",
2719
- "end": "(?==>)",
2713
+ "begin": "(?x) (?:\n (?<!\\.|\\$)(\\basync)(?=\\s*[<(])\n) | ((?<![})\\]])\\s*\n (?=\n # sure shot arrow functions even if => is on new line\n (\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ([_$[:alpha:]][_$[:alnum:]]*\\s*:) | # [(]param:\n (\\.\\.\\.) # [(]...\n )\n ) |\n (\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends \n ) |\n # arrow function possible to detect only with => on same line\n (\n (<([^<>]|\\<[^<>]+\\>)+>\\s*)? # typeparameters\n \\(([^()]|\\([^()]*\\))*\\) # parameteres\n (\\s*:\\s*(.)*)? # return type\n \\s*=> # arrow operator\n )\n )\n)",
2714
+ "beginCaptures": {
2715
+ "1": {
2716
+ "name": "storage.modifier.async.tsx"
2717
+ }
2718
+ },
2719
+ "end": "(?==>|\\{)",
2720
2720
  "patterns": [
2721
2721
  {
2722
2722
  "include": "#comment"
@@ -2760,8 +2760,28 @@
2760
2760
  "name": "keyword.operator.type.annotation.tsx"
2761
2761
  }
2762
2762
  },
2763
- "end": "(?<!:)((?=$)|(?==>|;|//))",
2763
+ "end": "(?==>|\\{)",
2764
2764
  "patterns": [
2765
+ {
2766
+ "name": "meta.object.type.tsx",
2767
+ "begin": "(?<=:)\\s*(\\{)",
2768
+ "beginCaptures": {
2769
+ "1": {
2770
+ "name": "punctuation.definition.block.tsx"
2771
+ }
2772
+ },
2773
+ "end": "\\}",
2774
+ "endCaptures": {
2775
+ "0": {
2776
+ "name": "punctuation.definition.block.tsx"
2777
+ }
2778
+ },
2779
+ "patterns": [
2780
+ {
2781
+ "include": "#type-object-members"
2782
+ }
2783
+ ]
2784
+ },
2765
2785
  {
2766
2786
  "include": "#type-predicate-operator"
2767
2787
  },
@@ -2853,7 +2873,7 @@
2853
2873
  "regex": {
2854
2874
  "patterns": [
2855
2875
  {
2856
- "name": "string.regex.tsx",
2876
+ "name": "string.regexp.tsx",
2857
2877
  "begin": "(?<=[=(:,\\[?+!]|return|case|=>|&&|\\|\\||\\*\\/)\\s*(/)(?![/*])(?=(?:[^/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\])+/(?![/*])[gimy]*(?!\\s*[a-zA-Z0-9_$]))",
2858
2878
  "beginCaptures": {
2859
2879
  "1": {
@@ -2876,7 +2896,7 @@
2876
2896
  ]
2877
2897
  },
2878
2898
  {
2879
- "name": "string.regex.tsx",
2899
+ "name": "string.regexp.tsx",
2880
2900
  "begin": "(?<![_$[:alnum:]])/(?![/*])(?=(?:[^/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\])+/(?![/*])[gimy]*(?!\\s*[a-zA-Z0-9_$]))",
2881
2901
  "beginCaptures": {
2882
2902
  "0": {
@@ -3103,7 +3123,6 @@
3103
3123
  ]
3104
3124
  },
3105
3125
  "literal": {
3106
- "name": "literal.tsx",
3107
3126
  "patterns": [
3108
3127
  {
3109
3128
  "include": "#numeric-literal"