github-linguist 7.11.1 → 7.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (583) hide show
  1. checksums.yaml +4 -4
  2. data/ext/linguist/lex.linguist_yy.c +619 -363
  3. data/ext/linguist/lex.linguist_yy.h +425 -59
  4. data/ext/linguist/linguist.c +5 -35
  5. data/ext/linguist/linguist.h +0 -18
  6. data/ext/linguist/tokenizer.l +61 -36
  7. data/grammars/annotation.liquidhaskell.haskell.json +1 -1835
  8. data/grammars/config.xcompose.json +1 -80
  9. data/grammars/documentation.markdown.injection.haxe.json +1 -22
  10. data/grammars/etc.json +1 -987
  11. data/grammars/file.lasso.json +1 -702
  12. data/grammars/hidden.manref.json +1 -29
  13. data/grammars/hidden.regexp.injection-shell.json +1 -28
  14. data/grammars/hint.haskell.json +1 -1762
  15. data/grammars/hint.message.haskell.json +1 -1786
  16. data/grammars/hint.type.haskell.json +1 -1759
  17. data/grammars/injections.etc.json +1 -659
  18. data/grammars/inline.prisma.json +1 -55
  19. data/grammars/markdown.hack.codeblock.json +1 -20
  20. data/grammars/markdown.haxe.codeblock.json +1 -26
  21. data/grammars/markdown.hxml.codeblock.json +1 -26
  22. data/grammars/markdown.plantuml.codeblock.json +1 -26
  23. data/grammars/objdump.x86asm.json +1 -69
  24. data/grammars/source.4dm.json +1 -1156
  25. data/grammars/source.SASLog.json +1 -18
  26. data/grammars/source.abap.json +1 -335
  27. data/grammars/source.abl.json +1 -734
  28. data/grammars/source.abnf.json +1 -294
  29. data/grammars/source.actionscript.3.json +1 -1538
  30. data/grammars/source.acucobol.json +1 -13
  31. data/grammars/source.ada.json +1 -133
  32. data/grammars/source.afm.json +1 -1207
  33. data/grammars/source.agc.json +1 -87
  34. data/grammars/source.agda.json +1 -72
  35. data/grammars/source.ahk.json +1 -195
  36. data/grammars/source.al.json +1 -130
  37. data/grammars/source.alloy.json +1 -40
  38. data/grammars/source.ampl.json +1 -151
  39. data/grammars/source.angelscript.json +1 -186
  40. data/grammars/source.antlr.json +1 -295
  41. data/grammars/source.apache-config.json +1 -346
  42. data/grammars/source.apache-config.mod_perl.json +1 -65
  43. data/grammars/source.apl.json +1 -1427
  44. data/grammars/source.applescript.json +1 -1384
  45. data/grammars/source.asl.json +1 -56
  46. data/grammars/source.asn.json +1 -55
  47. data/grammars/source.asp.json +1 -151
  48. data/grammars/source.aspectj.json +1 -960
  49. data/grammars/source.assembly.json +1 -116
  50. data/grammars/source.ats.json +1 -164
  51. data/grammars/source.autoit.json +1 -167
  52. data/grammars/source.avro.json +1 -381
  53. data/grammars/source.awk.json +1 -384
  54. data/grammars/source.ballerina.json +1 -1785
  55. data/grammars/source.batchfile.json +1 -732
  56. data/grammars/source.bdf.json +1 -425
  57. data/grammars/source.befunge.json +1 -34
  58. data/grammars/source.bf.json +1 -30
  59. data/grammars/source.blitzmax.json +1 -905
  60. data/grammars/source.bnf.json +1 -191
  61. data/grammars/source.boo.json +1 -448
  62. data/grammars/source.brightauthorproject.json +1 -24
  63. data/grammars/source.brightscript.json +1 -148
  64. data/grammars/source.bsl.json +1 -451
  65. data/grammars/source.bsv.json +1 -277
  66. data/grammars/source.c++.json +1 -436
  67. data/grammars/source.c++.qt.json +1 -29
  68. data/grammars/source.c.ec.json +1 -33
  69. data/grammars/source.c.json +1 -712
  70. data/grammars/source.c.nwscript.json +1 -0
  71. data/grammars/source.c.platform.json +1 -1115
  72. data/grammars/source.c2hs.json +1 -24
  73. data/grammars/source.cabal.json +1 -63
  74. data/grammars/source.cache.cmake.json +1 -70
  75. data/grammars/source.cake.json +1 -13
  76. data/grammars/source.camlp4.ocaml.json +1 -60
  77. data/grammars/source.capnp.json +1 -88
  78. data/grammars/source.ceylon.json +1 -93
  79. data/grammars/source.cfscript.cfc.json +1 -162
  80. data/grammars/source.cfscript.json +1 -737
  81. data/grammars/source.changelogs.rpm-spec.json +1 -91
  82. data/grammars/source.chapel.json +1 -265
  83. data/grammars/source.cirru.json +1 -61
  84. data/grammars/source.clarion.json +1 -146
  85. data/grammars/source.clean.json +1 -222
  86. data/grammars/source.click.json +1 -107
  87. data/grammars/source.clips.json +1 -67
  88. data/grammars/source.clojure.json +1 -429
  89. data/grammars/source.cm.json +1 -49
  90. data/grammars/source.cmake.json +1 -173
  91. data/grammars/source.cobol.json +1 -485
  92. data/grammars/source.coffee.json +1 -1310
  93. data/grammars/source.cool.json +1 -96
  94. data/grammars/source.coq.json +1 -58
  95. data/grammars/source.crystal.json +1 -2694
  96. data/grammars/source.cs.json +1 -4323
  97. data/grammars/source.csound-document.json +1 -175
  98. data/grammars/source.csound-score.json +1 -191
  99. data/grammars/source.csound.json +1 -824
  100. data/grammars/source.css.json +1 -1859
  101. data/grammars/source.css.less.json +1 -536
  102. data/grammars/source.css.mss.json +1 -249
  103. data/grammars/source.css.postcss.sugarss.json +1 -260
  104. data/grammars/source.css.scss.json +1 -1873
  105. data/grammars/source.csx.json +1 -13
  106. data/grammars/source.cuda-c++.json +1 -103
  107. data/grammars/source.curlrc.json +1 -984
  108. data/grammars/source.cwl.json +1 -103
  109. data/grammars/source.cython.json +1 -1912
  110. data/grammars/source.d.json +1 -741
  111. data/grammars/source.dart.json +1 -433
  112. data/grammars/source.data-weave.json +1 -1580
  113. data/grammars/source.desktop.json +1 -86
  114. data/grammars/source.diff.json +1 -153
  115. data/grammars/source.dircolors.json +1 -137
  116. data/grammars/source.direct-x.json +1 -135
  117. data/grammars/source.disasm.json +1 -30
  118. data/grammars/source.ditroff.desc.json +1 -411
  119. data/grammars/source.ditroff.json +1 -1280
  120. data/grammars/source.dm.json +1 -628
  121. data/grammars/source.dmf.json +1 -96
  122. data/grammars/source.dockerfile.json +1 -88
  123. data/grammars/source.dosbox-conf.json +1 -97
  124. data/grammars/source.dot.json +1 -117
  125. data/grammars/source.dylan.json +1 -212
  126. data/grammars/source.ebnf.json +1 -240
  127. data/grammars/source.editorconfig.json +1 -365
  128. data/grammars/source.eiffel.json +1 -133
  129. data/grammars/source.elixir.json +1 -965
  130. data/grammars/source.elm.json +1 -375
  131. data/grammars/source.emacs.lisp.json +1 -1301
  132. data/grammars/source.erlang.json +1 -1647
  133. data/grammars/source.essl.json +1 -37
  134. data/grammars/source.factor.json +1 -252
  135. data/grammars/source.fan.json +1 -341
  136. data/grammars/source.fancy.json +1 -245
  137. data/grammars/source.faust.json +1 -119
  138. data/grammars/source.figctrl.json +1 -252
  139. data/grammars/source.figfont.json +1 -121
  140. data/grammars/source.firestore.json +1 -289
  141. data/grammars/source.fish.json +1 -190
  142. data/grammars/source.fontdir.json +1 -99
  143. data/grammars/source.fontforge.json +1 -355
  144. data/grammars/source.forth.json +1 -84
  145. data/grammars/source.fortran.json +1 -464
  146. data/grammars/source.fortran.modern.json +1 -200
  147. data/grammars/source.fsharp.fsi.json +1 -9
  148. data/grammars/source.fsharp.fsl.json +1 -9
  149. data/grammars/source.fsharp.fsx.json +1 -13
  150. data/grammars/source.fsharp.json +1 -452
  151. data/grammars/source.fstar.json +1 -439
  152. data/grammars/source.futhark.json +1 -167
  153. data/grammars/source.gap.json +1 -163
  154. data/grammars/source.gcode.json +1 -176
  155. data/grammars/source.gdb.json +1 -160
  156. data/grammars/source.gdb.session.json +1 -70
  157. data/grammars/source.gdbregs.json +1 -14
  158. data/grammars/source.gdscript.json +1 -491
  159. data/grammars/source.gedcom.json +1 -196
  160. data/grammars/source.generic-db.json +1 -41
  161. data/grammars/source.gerber.json +1 -321
  162. data/grammars/source.gf.json +1 -51
  163. data/grammars/source.gfm.blade.json +1 -15
  164. data/grammars/source.gfm.json +1 -1913
  165. data/grammars/source.gitattributes.json +1 -111
  166. data/grammars/source.gitconfig.json +1 -450
  167. data/grammars/source.gitignore.json +1 -140
  168. data/grammars/source.glsl.json +1 -139
  169. data/grammars/source.gn.json +1 -345
  170. data/grammars/source.gnuplot.json +1 -260
  171. data/grammars/source.go.json +1 -540
  172. data/grammars/source.golo.json +1 -177
  173. data/grammars/source.gosu.2.json +1 -153
  174. data/grammars/source.grace.json +1 -675
  175. data/grammars/source.graphql.json +1 -978
  176. data/grammars/source.gremlin.json +1 -200
  177. data/grammars/source.groovy.gradle.json +1 -69
  178. data/grammars/source.groovy.json +1 -1374
  179. data/grammars/source.hack.json +1 -2595
  180. data/grammars/source.haproxy-config.json +1 -152
  181. data/grammars/source.harbour.json +1 -388
  182. data/grammars/source.haskell.json +1 -1760
  183. data/grammars/source.hc.json +1 -709
  184. data/grammars/source.hgignore.json +1 -34
  185. data/grammars/source.hlsl.json +1 -211
  186. data/grammars/source.hosts.json +1 -40
  187. data/grammars/source.hql.json +1 -492
  188. data/grammars/source.hsc2hs.json +1 -9
  189. data/grammars/source.hsig.json +1 -1760
  190. data/grammars/source.httpspec.json +1 -283
  191. data/grammars/source.hx.argument.json +1 -80
  192. data/grammars/source.hx.json +1 -2428
  193. data/grammars/source.hx.type.json +1 -8
  194. data/grammars/source.hxml.json +1 -59
  195. data/grammars/source.hy.json +1 -429
  196. data/grammars/source.ideal.json +1 -356
  197. data/grammars/source.idl-dlm.json +1 -105
  198. data/grammars/source.idl.json +1 -246
  199. data/grammars/source.idris.json +1 -523
  200. data/grammars/source.igor.json +1 -369
  201. data/grammars/source.inform7.json +1 -183
  202. data/grammars/source.ini.json +1 -107
  203. data/grammars/source.ini.npmrc.json +1 -311
  204. data/grammars/source.inno.json +1 -133
  205. data/grammars/source.inputrc.json +1 -500
  206. data/grammars/source.io.json +1 -156
  207. data/grammars/source.ioke.json +1 -266
  208. data/grammars/source.isabelle.root.json +1 -64
  209. data/grammars/source.isabelle.theory.json +1 -102
  210. data/grammars/source.j.json +1 -260
  211. data/grammars/source.jasmin.json +1 -294
  212. data/grammars/source.java-properties.json +1 -87
  213. data/grammars/source.java.json +1 -1020
  214. data/grammars/source.jcl.json +1 -46
  215. data/grammars/source.jflex.json +1 -484
  216. data/grammars/source.jison.json +1 -711
  217. data/grammars/source.jisonlex-injection.json +1 -10
  218. data/grammars/source.jisonlex.json +1 -434
  219. data/grammars/source.jolie.json +1 -132
  220. data/grammars/source.jq.json +1 -211
  221. data/grammars/source.js.css.json +1 -328
  222. data/grammars/source.js.json +1 -1897
  223. data/grammars/source.js.jsx.json +1 -2488
  224. data/grammars/source.js.objj.json +1 -419
  225. data/grammars/source.js.regexp.json +1 -152
  226. data/grammars/source.js.regexp.replacement.json +1 -26
  227. data/grammars/source.jsdoc.json +1 -460
  228. data/grammars/source.json.json +1 -139
  229. data/grammars/source.jsonnet.json +1 -197
  230. data/grammars/source.julia.console.json +1 -51
  231. data/grammars/source.julia.json +1 -991
  232. data/grammars/source.kotlin.json +1 -704
  233. data/grammars/source.lark.json +1 -0
  234. data/grammars/source.lbnf.json +1 -0
  235. data/grammars/source.lcov.json +1 -398
  236. data/grammars/source.lean.json +1 -226
  237. data/grammars/source.lean.markdown.json +1 -2598
  238. data/grammars/source.lex.json +1 -232
  239. data/grammars/source.lex.regexp.json +1 -269
  240. data/grammars/source.lid.json +1 -19
  241. data/grammars/source.lilypond.json +1 -869
  242. data/grammars/source.lisp.json +1 -101
  243. data/grammars/source.litcoffee.json +1 -654
  244. data/grammars/source.livescript.json +1 -603
  245. data/grammars/source.llvm.json +1 -61
  246. data/grammars/source.logos.json +1 -24
  247. data/grammars/source.logtalk.json +1 -310
  248. data/grammars/source.loomscript.json +1 -208
  249. data/grammars/source.lsl.json +1 -241
  250. data/grammars/source.ltspice.symbol.json +1 -294
  251. data/grammars/source.lua.json +1 -275
  252. data/grammars/source.m2.json +1 -125
  253. data/grammars/source.m4.json +1 -229
  254. data/grammars/source.m68k.json +1 -412
  255. data/grammars/source.mailmap.json +1 -28
  256. data/grammars/source.makefile.json +1 -470
  257. data/grammars/source.makegen.json +1 -9
  258. data/grammars/source.man-conf.json +1 -153
  259. data/grammars/source.mask.json +1 -816
  260. data/grammars/source.mata.json +1 -125
  261. data/grammars/source.mathematica.json +1 -416
  262. data/grammars/source.matlab.json +1 -1096
  263. data/grammars/source.maxscript.json +1 -465
  264. data/grammars/source.mcfunction-snapshot.json +1 -24480
  265. data/grammars/source.mcfunction.json +1 -1354
  266. data/grammars/source.mercury.json +1 -246
  267. data/grammars/source.meson.json +1 -165
  268. data/grammars/source.meta-info.json +1 -146
  269. data/grammars/source.ml.json +1 -285
  270. data/grammars/source.mlir.json +1 -109
  271. data/grammars/source.modelica.json +1 -142
  272. data/grammars/source.modula-3.json +1 -88
  273. data/grammars/source.modula2.json +1 -94
  274. data/grammars/source.monkey.json +1 -694
  275. data/grammars/source.moonscript.json +1 -144
  276. data/grammars/source.mql5.json +1 -187
  277. data/grammars/source.msl.json +1 -755
  278. data/grammars/source.mupad.json +1 -131
  279. data/grammars/source.nanorc.json +1 -333
  280. data/grammars/source.nasl.json +1 -155
  281. data/grammars/source.ncl.json +1 -53
  282. data/grammars/source.ne.json +1 -105
  283. data/grammars/source.nemerle.json +1 -132
  284. data/grammars/source.neon.json +1 -381
  285. data/grammars/source.nesc.json +1 -21
  286. data/grammars/source.netlinx.erb.json +1 -34
  287. data/grammars/source.netlinx.json +1 -704
  288. data/grammars/source.nextflow-groovy.json +1 -1359
  289. data/grammars/source.nextflow.json +1 -94
  290. data/grammars/source.nginx.json +1 -815
  291. data/grammars/source.nim.comment.json +1 -82
  292. data/grammars/source.nim.json +1 -1083
  293. data/grammars/source.nim_filter.json +1 -113
  294. data/grammars/source.nimcfg.json +1 -103
  295. data/grammars/source.ninja.json +1 -248
  296. data/grammars/source.nit.json +1 -234
  297. data/grammars/source.nix.json +1 -1196
  298. data/grammars/source.nsis.json +1 -152
  299. data/grammars/source.nu.json +1 -516
  300. data/grammars/source.nut.json +1 -262
  301. data/grammars/source.objc++.json +1 -12
  302. data/grammars/source.objc.json +1 -910
  303. data/grammars/source.objc.platform.json +1 -842
  304. data/grammars/source.objectscript.json +1 -309
  305. data/grammars/source.objectscript_class.json +1 -674
  306. data/grammars/source.objectscript_csp.json +1 -19
  307. data/grammars/source.objectscript_macros.json +1 -226
  308. data/grammars/source.ocaml.json +1 -1418
  309. data/grammars/source.ocamllex.json +1 -298
  310. data/grammars/source.ocamlyacc.json +1 -339
  311. data/grammars/source.odin-ehr.json +1 -806
  312. data/grammars/source.odin.json +1 -402
  313. data/grammars/source.ooc.json +1 -685
  314. data/grammars/source.opa.json +1 -196
  315. data/grammars/source.opal.json +1 -410
  316. data/grammars/source.opalsysdefs.json +1 -66
  317. data/grammars/source.openbsd-pkg.contents.json +1 -128
  318. data/grammars/source.opencobol.json +1 -62
  319. data/grammars/source.opentype.json +1 -448
  320. data/grammars/source.opts.json +1 -108
  321. data/grammars/source.ox.json +1 -89
  322. data/grammars/source.oz.json +1 -77
  323. data/grammars/source.p4.json +1 -122
  324. data/grammars/source.paket.dependencies.json +1 -0
  325. data/grammars/source.paket.lock.json +1 -0
  326. data/grammars/source.pan.json +1 -706
  327. data/grammars/source.papyrus.skyrim.json +1 -1272
  328. data/grammars/source.parrot.pir.json +1 -145
  329. data/grammars/source.pascal.json +1 -143
  330. data/grammars/source.pawn.json +1 -1194
  331. data/grammars/source.pcb.board.json +1 -285
  332. data/grammars/source.pcb.schematic.json +1 -424
  333. data/grammars/source.pcb.sexp.json +1 -232
  334. data/grammars/source.pep8.json +1 -118
  335. data/grammars/source.perl.6.json +1 -309
  336. data/grammars/source.perl.json +1 -2519
  337. data/grammars/source.php.zephir.json +1 -353
  338. data/grammars/source.pic.json +1 -908
  339. data/grammars/source.pig_latin.json +1 -168
  340. data/grammars/source.pike.json +1 -49
  341. data/grammars/source.plist.json +1 -336
  342. data/grammars/source.po.json +1 -222
  343. data/grammars/source.pogoscript.json +1 -79
  344. data/grammars/source.pony.json +1 -245
  345. data/grammars/source.postcss.json +1 -370
  346. data/grammars/source.postscript.json +1 -477
  347. data/grammars/source.pov-ray sdl.json +1 -82
  348. data/grammars/source.powershell.json +1 -981
  349. data/grammars/source.prisma.json +1 -435
  350. data/grammars/source.processing.json +1 -872
  351. data/grammars/source.prolog.eclipse.json +1 -201
  352. data/grammars/source.prolog.json +1 -286
  353. data/grammars/source.protobuf.json +1 -471
  354. data/grammars/source.puppet.json +1 -433
  355. data/grammars/source.purescript.json +1 -861
  356. data/grammars/source.pyjade.json +1 -996
  357. data/grammars/source.python.django.json +1 -29
  358. data/grammars/source.python.json +1 -5292
  359. data/grammars/source.python.salt.json +1 -9
  360. data/grammars/source.q.json +1 -215
  361. data/grammars/source.q_output.json +1 -348
  362. data/grammars/source.qasm.json +1 -66
  363. data/grammars/source.ql.json +1 -1408
  364. data/grammars/source.qmake.json +1 -210
  365. data/grammars/source.qml.json +1 -174
  366. data/grammars/source.qsharp.json +1 -120
  367. data/grammars/source.quake.json +1 -44
  368. data/grammars/source.quoting.raku.json +1 -0
  369. data/grammars/source.r.json +1 -194
  370. data/grammars/source.racket.json +1 -98
  371. data/grammars/source.raku.json +1 -0
  372. data/grammars/source.rascal.json +1 -283
  373. data/grammars/source.reason.hover.type.json +1 -14
  374. data/grammars/source.reason.json +1 -3382
  375. data/grammars/source.rebol.json +1 -637
  376. data/grammars/source.red.json +1 -644
  377. data/grammars/source.reg.json +1 -159
  378. data/grammars/source.regexp.extended.json +1 -558
  379. data/grammars/source.regexp.json +1 -1434
  380. data/grammars/source.regexp.python.json +1 -490
  381. data/grammars/source.regexp.raku.json +1 -0
  382. data/grammars/source.regexp.spin.json +1 -179
  383. data/grammars/source.rego.json +1 -124
  384. data/grammars/source.renpy.json +1 -1948
  385. data/grammars/source.rescript.json +1 -0
  386. data/grammars/source.rexx.json +1 -52
  387. data/grammars/source.ring.json +1 -247
  388. data/grammars/source.rpm-spec.json +1 -765
  389. data/grammars/source.ruby.gemfile.json +1 -24
  390. data/grammars/source.ruby.json +1 -2605
  391. data/grammars/source.ruby.rspec.cucumber.steps.json +1 -261
  392. data/grammars/source.rust.json +1 -629
  393. data/grammars/source.sas.json +1 -286
  394. data/grammars/source.sass.json +1 -1089
  395. data/grammars/source.sassdoc.json +1 -346
  396. data/grammars/source.scad.json +1 -145
  397. data/grammars/source.scala.json +1 -1121
  398. data/grammars/source.scaml.json +1 -451
  399. data/grammars/source.scheme.json +1 -353
  400. data/grammars/source.scilab.json +1 -96
  401. data/grammars/source.sdbl.json +1 -90
  402. data/grammars/source.sed.json +1 -1520
  403. data/grammars/source.shaderlab.json +1 -198
  404. data/grammars/source.shell.json +1 -1272
  405. data/grammars/source.shen.json +1 -143
  406. data/grammars/source.sieve.json +1 -383
  407. data/grammars/source.slice.json +1 -2755
  408. data/grammars/source.smali.json +1 -1610
  409. data/grammars/source.smalltalk.json +1 -187
  410. data/grammars/source.smpl.json +1 -314
  411. data/grammars/source.smt.json +1 -158
  412. data/grammars/source.solidity.json +1 -189
  413. data/grammars/source.sourcepawn.json +1 -651
  414. data/grammars/source.sparql.json +1 -18
  415. data/grammars/source.spin.json +1 -916
  416. data/grammars/source.sqf.json +1 -111
  417. data/grammars/source.sql.json +1 -459
  418. data/grammars/source.ssh-config.json +1 -97
  419. data/grammars/source.stan.json +1 -388
  420. data/grammars/source.stata.json +1 -197
  421. data/grammars/source.strings.json +1 -49
  422. data/grammars/source.stylus.json +1 -1018
  423. data/grammars/source.supercollider.json +1 -93
  424. data/grammars/source.svelte.json +1 -827
  425. data/grammars/source.swift.json +1 -3134
  426. data/grammars/source.sy.json +1 -2954
  427. data/grammars/source.systemverilog.json +1 -1036
  428. data/grammars/source.tags.json +1 -266
  429. data/grammars/source.tcl.json +1 -260
  430. data/grammars/source.tea.json +1 -174
  431. data/grammars/source.terra.json +1 -138
  432. data/grammars/source.terraform.json +1 -694
  433. data/grammars/source.thrift.json +1 -698
  434. data/grammars/source.tl.json +1 -259
  435. data/grammars/source.tla.json +1 -140
  436. data/grammars/source.tnsaudit.json +1 -256
  437. data/grammars/source.toc.json +1 -52
  438. data/grammars/source.toml.json +1 -426
  439. data/grammars/source.ts.json +1 -5581
  440. data/grammars/source.tsql.json +1 -507
  441. data/grammars/source.tsx.json +1 -5834
  442. data/grammars/source.turing.json +1 -1553
  443. data/grammars/source.turtle.json +1 -489
  444. data/grammars/source.txl.json +1 -48
  445. data/grammars/source.ucd.nameslist.json +1 -444
  446. data/grammars/source.ucd.unidata.json +1 -570
  447. data/grammars/source.ucfconstraints.json +1 -67
  448. data/grammars/source.ur.json +1 -31
  449. data/grammars/source.v.json +1 -1010
  450. data/grammars/source.vala.json +1 -800
  451. data/grammars/source.varnish.vcl.json +1 -331
  452. data/grammars/source.vbnet.json +1 -239
  453. data/grammars/source.verilog.json +1 -296
  454. data/grammars/source.vhdl.json +1 -1374
  455. data/grammars/source.vim-snippet.json +1 -645
  456. data/grammars/source.viml.json +1 -1197
  457. data/grammars/source.vtt.json +1 -702
  458. data/grammars/source.vyper.json +1 -213
  459. data/grammars/source.wavefront.mtl.json +1 -1190
  460. data/grammars/source.wavefront.obj.json +1 -1341
  461. data/grammars/source.wdl.json +1 -220
  462. data/grammars/source.webassembly.json +1 -349
  463. data/grammars/source.webidl.json +1 -807
  464. data/grammars/source.wgetrc.json +1 -1640
  465. data/grammars/source.wollok.json +1 -100
  466. data/grammars/source.wsd.json +1 -781
  467. data/grammars/source.x10.json +1 -64
  468. data/grammars/source.x86.json +1 -299
  469. data/grammars/source.x86asm.json +1 -42
  470. data/grammars/source.xc.json +1 -371
  471. data/grammars/source.xlfd.json +1 -462
  472. data/grammars/source.xojo.json +1 -85
  473. data/grammars/source.xq.json +1 -230
  474. data/grammars/source.xtend.json +1 -724
  475. data/grammars/source.yacc.json +1 -626
  476. data/grammars/source.yaml.json +1 -443
  477. data/grammars/source.yaml.salt.json +1 -345
  478. data/grammars/source.yang.json +1 -78
  479. data/grammars/source.yara.json +1 -99
  480. data/grammars/source.yasnippet.json +1 -377
  481. data/grammars/source.zap.json +1 -260
  482. data/grammars/source.zeek.json +1 -412
  483. data/grammars/source.zenscript.json +1 -282
  484. data/grammars/source.zig.json +1 -547
  485. data/grammars/source.zil.json +1 -750
  486. data/grammars/text.bibtex.json +1 -246
  487. data/grammars/text.cfml.basic.json +1 -735
  488. data/grammars/text.conllu.json +1 -45
  489. data/grammars/text.dfy.dafny.json +1 -188
  490. data/grammars/text.elixir.json +1 -52
  491. data/grammars/text.eml.basic.json +1 -296
  492. data/grammars/text.error-list.json +1 -53
  493. data/grammars/text.find-refs.json +1 -926
  494. data/grammars/text.gherkin.feature.json +1 -127
  495. data/grammars/text.haml.json +1 -518
  496. data/grammars/text.hamlc.json +1 -219
  497. data/grammars/text.html.asciidoc.json +1 -478
  498. data/grammars/text.html.asdoc.json +1 -529
  499. data/grammars/text.html.asp.json +1 -53
  500. data/grammars/text.html.basic.json +1 -908
  501. data/grammars/text.html.cfm.json +1 -802
  502. data/grammars/text.html.creole.json +1 -317
  503. data/grammars/text.html.cshtml.json +1 -356
  504. data/grammars/text.html.django.json +1 -63
  505. data/grammars/text.html.ecr.json +1 -48
  506. data/grammars/text.html.elixir.json +1 -21
  507. data/grammars/text.html.erb.json +1 -150
  508. data/grammars/text.html.erlang.yaws.json +1 -67
  509. data/grammars/text.html.factor.json +1 -19
  510. data/grammars/text.html.ftl.json +1 -76
  511. data/grammars/text.html.handlebars.json +1 -845
  512. data/grammars/text.html.javadoc.json +1 -426
  513. data/grammars/text.html.js.json +1 -24
  514. data/grammars/text.html.jsp.json +1 -1196
  515. data/grammars/text.html.liquid.json +1 -25
  516. data/grammars/text.html.mako.json +1 -726
  517. data/grammars/text.html.markdown.source.gfm.apib.json +1 -1298
  518. data/grammars/text.html.markdown.source.gfm.mson.json +1 -1156
  519. data/grammars/text.html.mediawiki.elm-build-output.json +1 -97
  520. data/grammars/text.html.mediawiki.elm-documentation.json +1 -17
  521. data/grammars/text.html.mediawiki.json +1 -946
  522. data/grammars/text.html.php.blade.json +1 -3833
  523. data/grammars/text.html.php.json +1 -2507
  524. data/grammars/text.html.riot.json +1 -788
  525. data/grammars/text.html.slash.json +1 -307
  526. data/grammars/text.html.smarty.json +1 -232
  527. data/grammars/text.html.soy.json +1 -606
  528. data/grammars/text.html.ssp.json +1 -43
  529. data/grammars/text.html.tcl.json +1 -37
  530. data/grammars/text.html.twig.json +1 -1344
  531. data/grammars/text.html.vue.json +1 -963
  532. data/grammars/text.idl-idldoc.json +1 -10
  533. data/grammars/text.jade.json +1 -963
  534. data/grammars/text.junit-test-report.json +1 -89
  535. data/grammars/text.log.latex.json +1 -84
  536. data/grammars/text.marko.json +1 -1662
  537. data/grammars/text.muse.json +1 -1471
  538. data/grammars/text.openbsd-pkg.desc.json +1 -78
  539. data/grammars/text.plain.json +1 -18
  540. data/grammars/text.python.console.json +1 -21
  541. data/grammars/text.python.traceback.json +1 -43
  542. data/grammars/text.rdoc.json +1 -44
  543. data/grammars/text.restructuredtext.clean.json +1 -24
  544. data/grammars/text.restructuredtext.json +1 -1765
  545. data/grammars/text.robot.json +1 -63
  546. data/grammars/text.roff.json +1 -6927
  547. data/grammars/text.rtf.json +1 -148
  548. data/grammars/text.runoff.json +1 -308
  549. data/grammars/text.sfd.json +1 -292
  550. data/grammars/text.shell-session.json +1 -29
  551. data/grammars/text.slim.json +1 -527
  552. data/grammars/text.srt.json +1 -166
  553. data/grammars/text.tex.json +1 -264
  554. data/grammars/text.tex.latex.beamer.json +1 -57
  555. data/grammars/text.tex.latex.haskell.json +1 -1826
  556. data/grammars/text.tex.latex.json +1 -1003
  557. data/grammars/text.tex.latex.memoir.json +1 -129
  558. data/grammars/text.tex.latex.rd.json +1 -111
  559. data/grammars/text.texinfo.json +1 -1525
  560. data/grammars/text.vim-help.json +1 -383
  561. data/grammars/text.xml.ant.json +1 -195
  562. data/grammars/text.xml.flex-config.json +1 -2628
  563. data/grammars/text.xml.genshi.json +1 -28
  564. data/grammars/text.xml.json +1 -351
  565. data/grammars/text.xml.plist.json +1 -664
  566. data/grammars/text.xml.pom.json +1 -769
  567. data/grammars/text.xml.svg.json +1 -562
  568. data/grammars/text.xml.xsl.json +1 -88
  569. data/grammars/text.zone_file.json +1 -67
  570. data/grammars/version +1 -1
  571. data/lib/linguist/VERSION +1 -1
  572. data/lib/linguist/generic.yml +17 -0
  573. data/lib/linguist/heuristics.yml +37 -17
  574. data/lib/linguist/languages.json +1 -1
  575. data/lib/linguist/languages.yml +41 -2
  576. data/lib/linguist/linguist.bundle +0 -0
  577. data/lib/linguist/samples.json +1 -1
  578. data/lib/linguist/strategy/extension.rb +13 -5
  579. metadata +12 -6
  580. data/ext/linguist/strndup.c +0 -10
  581. data/grammars/source.perl6fe.json +0 -2769
  582. data/grammars/source.quoting.perl6fe.json +0 -2369
  583. data/grammars/source.regexp.perl6fe.json +0 -244
@@ -1,3134 +1 @@
1
- {
2
- "name": "Swift",
3
- "scopeName": "source.swift",
4
- "patterns": [
5
- {
6
- "include": "#root"
7
- }
8
- ],
9
- "repository": {
10
- "attributes": {
11
- "patterns": [
12
- {
13
- "name": "meta.attribute.available.swift",
14
- "begin": "((@)available)(\\()",
15
- "end": "\\)",
16
- "patterns": [
17
- {
18
- "match": "\\b(swift|(?:iOS|macOS|OSX|watchOS|tvOS|UIKitForMac)(?:ApplicationExtension)?)\\b(?:\\s+([0-9]+(?:\\.[0-9]+)*\\b))?",
19
- "captures": {
20
- "1": {
21
- "name": "keyword.other.platform.os.swift"
22
- },
23
- "2": {
24
- "name": "constant.numeric.swift"
25
- }
26
- }
27
- },
28
- {
29
- "begin": "\\b(introduced|deprecated|obsoleted)\\s*(:)\\s*",
30
- "end": "(?!\\G)",
31
- "patterns": [
32
- {
33
- "name": "constant.numeric.swift",
34
- "match": "\\b[0-9]+(?:\\.[0-9]+)*\\b"
35
- }
36
- ],
37
- "beginCaptures": {
38
- "1": {
39
- "name": "keyword.other.swift"
40
- },
41
- "2": {
42
- "name": "punctuation.separator.key-value.swift"
43
- }
44
- }
45
- },
46
- {
47
- "begin": "\\b(message|renamed)\\s*(:)\\s*(?=\")",
48
- "end": "(?!\\G)",
49
- "patterns": [
50
- {
51
- "include": "#literals"
52
- }
53
- ],
54
- "beginCaptures": {
55
- "1": {
56
- "name": "keyword.other.swift"
57
- },
58
- "2": {
59
- "name": "punctuation.separator.key-value.swift"
60
- }
61
- }
62
- },
63
- {
64
- "match": "(?:(\\*)|\\b(deprecated|unavailable)\\b)\\s*(.*?)(?=[,)])",
65
- "captures": {
66
- "1": {
67
- "name": "keyword.other.platform.all.swift"
68
- },
69
- "2": {
70
- "name": "keyword.other.swift"
71
- },
72
- "3": {
73
- "name": "invalid.illegal.character-not-allowed-here.swift"
74
- }
75
- }
76
- }
77
- ],
78
- "beginCaptures": {
79
- "1": {
80
- "name": "storage.modifier.attribute.swift"
81
- },
82
- "2": {
83
- "name": "punctuation.definition.attribute.swift"
84
- },
85
- "3": {
86
- "name": "punctuation.definition.arguments.begin.swift"
87
- }
88
- },
89
- "endCaptures": {
90
- "0": {
91
- "name": "punctuation.definition.arguments.end.swift"
92
- }
93
- }
94
- },
95
- {
96
- "name": "meta.attribute.objc.swift",
97
- "begin": "((@)objc)(\\()",
98
- "end": "\\)",
99
- "patterns": [
100
- {
101
- "name": "entity.name.function.swift",
102
- "match": "\\w*(?::(?:\\w*:)*(\\w*))?",
103
- "captures": {
104
- "1": {
105
- "name": "invalid.illegal.missing-colon-after-selector-piece.swift"
106
- }
107
- }
108
- }
109
- ],
110
- "beginCaptures": {
111
- "1": {
112
- "name": "storage.modifier.attribute.swift"
113
- },
114
- "2": {
115
- "name": "punctuation.definition.attribute.swift"
116
- },
117
- "3": {
118
- "name": "punctuation.definition.arguments.begin.swift"
119
- }
120
- },
121
- "endCaptures": {
122
- "0": {
123
- "name": "punctuation.definition.arguments.end.swift"
124
- }
125
- }
126
- },
127
- {
128
- "name": "meta.attribute.swift",
129
- "begin": "(@)(?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e)",
130
- "end": "(?!\\G\\()",
131
- "patterns": [
132
- {
133
- "name": "meta.arguments.attribute.swift",
134
- "begin": "\\(",
135
- "end": "\\)",
136
- "patterns": [
137
- {
138
- "include": "#expressions"
139
- }
140
- ],
141
- "beginCaptures": {
142
- "0": {
143
- "name": "punctuation.definition.arguments.begin.swift"
144
- }
145
- },
146
- "endCaptures": {
147
- "0": {
148
- "name": "punctuation.definition.arguments.end.swift"
149
- }
150
- }
151
- }
152
- ],
153
- "beginCaptures": {
154
- "0": {
155
- "name": "storage.modifier.attribute.swift"
156
- },
157
- "1": {
158
- "name": "punctuation.definition.attribute.swift"
159
- },
160
- "2": {
161
- "name": "punctuation.definition.identifier.swift"
162
- },
163
- "3": {
164
- "name": "punctuation.definition.identifier.swift"
165
- }
166
- }
167
- }
168
- ]
169
- },
170
- "builtin-functions": {
171
- "patterns": [
172
- {
173
- "name": "support.function.swift",
174
- "match": "(?\u003c=\\.)(?:s(?:ort(?:ed)?|plit)|contains|index|partition|f(?:i(?:lter|rst)|orEach|latMap)|with(?:MutableCharacters|CString|U(?:nsafe(?:Mutable(?:BufferPointer|Pointer(?:s|To(?:Header|Elements)))|BufferPointer)|TF8Buffer))|m(?:in|a(?:p|x)))(?=\\s*[({])\\b"
175
- },
176
- {
177
- "name": "support.function.swift",
178
- "match": "(?\u003c=\\.)(?:s(?:ymmetricDifference|t(?:oreBytes|arts|ride)|ortInPlace|u(?:ccessor|ffix|btract(?:ing|InPlace|WithOverflow)?)|quareRoot|amePosition)|h(?:oldsUnique(?:Reference|OrPinnedReference)|as(?:Suffix|Prefix))|ne(?:gate(?:d)?|xt)|c(?:o(?:untByEnumerating|py(?:Bytes)?)|lamp(?:ed)?|reate)|t(?:o(?:IntMax|Opaque|UIntMax)|ake(?:RetainedValue|UnretainedValue)|r(?:uncatingRemainder|a(?:nscodedLength|ilSurrogate)))|i(?:s(?:MutableAndUniquelyReferenced(?:OrPinned)?|S(?:trictSu(?:perset(?:Of)?|bset(?:Of)?)|u(?:perset(?:Of)?|bset(?:Of)?))|Continuation|T(?:otallyOrdered|railSurrogate)|Disjoint(?:With)?|Unique(?:Reference|lyReferenced(?:OrPinned)?)|Equal|Le(?:ss(?:ThanOrEqualTo)?|adSurrogate))|n(?:sert(?:ContentsOf)?|tersect(?:ion|InPlace)?|itialize(?:Memory|From)?|dex(?:Of|ForKey)))|o(?:verlaps|bjectAt)|d(?:i(?:stance(?:To)?|vide(?:d|WithOverflow)?)|e(?:s(?:cendant|troy)|code(?:CString)?|initialize|alloc(?:ate(?:Capacity)?)?)|rop(?:First|Last))|u(?:n(?:ion(?:InPlace)?|derestimateCount|wrappedOrError)|p(?:date(?:Value)?|percased))|join(?:ed|WithSeparator)|p(?:op(?:First|Last)|ass(?:Retained|Unretained)|re(?:decessor|fix))|e(?:scape(?:d)?|n(?:code|umerate(?:d)?)|lementsEqual|xclusiveOr(?:InPlace)?)|f(?:orm(?:Remainder|S(?:ymmetricDifference|quareRoot)|TruncatingRemainder|In(?:tersection|dex)|Union)|latten|rom(?:CString(?:RepairingIllFormedUTF8)?|Opaque))|w(?:i(?:thMemoryRebound|dth)|rite(?:To)?)|l(?:o(?:wercased|ad)|e(?:adSurrogate|xicographical(?:Compare|lyPrecedes)))|a(?:ss(?:ign(?:BackwardFrom|From)?|umingMemoryBound)|d(?:d(?:ing(?:Product)?|Product|WithOverflow)?|vanced(?:By)?)|utorelease|ppend(?:ContentsOf)?|lloc(?:ate)?|bs)|r(?:ound(?:ed)?|e(?:serveCapacity|tain|duce|place(?:Range|Subrange)?|verse(?:d)?|quest(?:NativeBuffer|UniqueMutableBackingBuffer)|lease|m(?:ove(?:Range|Subrange|Value(?:ForKey)?|First|Last|A(?:tIndex|ll))?|ainder(?:WithOverflow)?)))|ge(?:nerate|t(?:Objects|Element))|m(?:in(?:imum(?:Magnitude)?|Element)|ove(?:Initialize(?:Memory|BackwardFrom|From)?|Assign(?:From)?)?|ultipl(?:y(?:WithOverflow)?|ied)|easure|a(?:ke(?:Iterator|Description)|x(?:imum(?:Magnitude)?|Element)))|bindMemory)(?=\\s*\\()"
179
- },
180
- {
181
- "name": "support.function.swift",
182
- "match": "(?\u003c=\\.)(?:s(?:uperclassMirror|amePositionIn|tartsWith)|nextObject|c(?:haracterAtIndex|o(?:untByEnumeratingWithState|pyWithZone)|ustom(?:Mirror|PlaygroundQuickLook))|is(?:EmptyInput|ASCII)|object(?:Enumerator|ForKey|AtIndex)|join|put|keyEnumerator|withUnsafeMutablePointerToValue|length|getMirror|m(?:oveInitializeAssignFrom|ember))(?=\\s*\\()"
183
- }
184
- ]
185
- },
186
- "builtin-global-functions": {
187
- "patterns": [
188
- {
189
- "begin": "\\b(type)(\\()\\s*(of)(:)",
190
- "end": "\\)",
191
- "patterns": [
192
- {
193
- "include": "#expressions"
194
- }
195
- ],
196
- "beginCaptures": {
197
- "1": {
198
- "name": "support.function.dynamic-type.swift"
199
- },
200
- "2": {
201
- "name": "punctuation.definition.arguments.begin.swift"
202
- },
203
- "3": {
204
- "name": "support.variable.parameter.swift"
205
- },
206
- "4": {
207
- "name": "punctuation.separator.argument-label.begin.swift"
208
- }
209
- },
210
- "endCaptures": {
211
- "0": {
212
- "name": "punctuation.definition.arguments.end.swift"
213
- }
214
- }
215
- },
216
- {
217
- "name": "support.function.swift",
218
- "match": "\\b(?:anyGenerator|autoreleasepool)(?=\\s*[({])\\b"
219
- },
220
- {
221
- "name": "support.function.swift",
222
- "match": "\\b(?:s(?:tride(?:of(?:Value)?)?|izeof(?:Value)?|equence|wap)|numericCast|transcode|is(?:UniquelyReferenced(?:NonObjC)?|KnownUniquelyReferenced)|zip|d(?:ump|ebugPrint)|unsafe(?:BitCast|Downcast|Unwrap|Address(?:Of)?)|pr(?:int|econdition(?:Failure)?)|fatalError|with(?:Unsafe(?:MutablePointer|Pointer)|ExtendedLifetime|VaList)|a(?:ssert(?:ionFailure)?|lignof(?:Value)?|bs)|re(?:peatElement|adLine)|getVaList|m(?:in|ax))(?=\\s*\\()"
223
- },
224
- {
225
- "name": "support.function.swift",
226
- "match": "\\b(?:s(?:ort|uffix|pli(?:ce|t))|insert|overlaps|d(?:istance|rop(?:First|Last))|join|prefix|extend|withUnsafe(?:MutablePointers|Pointers)|lazy|advance|re(?:flect|move(?:Range|Last|A(?:tIndex|ll))))(?=\\s*\\()"
227
- }
228
- ]
229
- },
230
- "builtin-properties": {
231
- "patterns": [
232
- {
233
- "name": "support.variable.swift",
234
- "match": "(?\u003c=^Process\\.|\\WProcess\\.|^CommandLine\\.|\\WCommandLine\\.)(arguments|argc|unsafeArgv)"
235
- },
236
- {
237
- "name": "support.variable.swift",
238
- "match": "(?\u003c=\\.)(?:s(?:t(?:artIndex|ri(?:ngValue|de))|i(?:ze|gn(?:BitIndex|ificand(?:Bit(?:Count|Pattern)|Width)?|alingNaN)?)|u(?:perclassMirror|mmary|bscriptBaseAddress))|h(?:eader|as(?:hValue|PointerRepresentation))|n(?:ulTerminatedUTF8|ext(?:Down|Up)|a(?:n|tiveOwner))|c(?:haracters|ount(?:TrailingZeros)?|ustom(?:Mirror|PlaygroundQuickLook)|apacity)|i(?:s(?:S(?:ign(?:Minus|aling(?:NaN)?)|ubnormal)|N(?:ormal|aN)|Canonical|Infinite|Zero|Empty|Finite|ASCII)|n(?:dices|finity)|dentity)|owner|de(?:scription|bugDescription)|u(?:n(?:safelyUnwrapped|icodeScalar(?:s)?|derestimatedCount)|tf(?:16|8(?:Start|C(?:String|odeUnitCount))?)|intValue|ppercaseString|lp(?:OfOne)?)|p(?:i|ointee)|e(?:ndIndex|lements|xponent(?:Bit(?:Count|Pattern))?)|value(?:s)?|keys|quietNaN|f(?:irst(?:ElementAddress(?:IfContiguous)?)?|loatingPointClass)|l(?:ittleEndian|owercaseString|eastNo(?:nzeroMagnitude|rmalMagnitude)|a(?:st|zy))|a(?:l(?:ignment|l(?:ocatedElementCount|Zeros))|rray(?:PropertyIsNativeTypeChecked)?)|ra(?:dix|wValue)|greatestFiniteMagnitude|m(?:in|emory|ax)|b(?:yteS(?:ize|wapped)|i(?:nade|tPattern|gEndian)|uffer|ase(?:Address)?))\\b"
239
- },
240
- {
241
- "name": "support.variable.swift",
242
- "match": "(?\u003c=\\.)(?:boolValue|disposition|end|objectIdentifier|quickLookObject|start|valueType)\\b"
243
- },
244
- {
245
- "name": "support.variable.swift",
246
- "match": "(?\u003c=\\.)(?:s(?:calarValue|i(?:ze|gnalingNaN)|o(?:und|me)|uppressed|prite|et)|n(?:one|egative(?:Subnormal|Normal|Infinity|Zero))|c(?:ol(?:or|lection)|ustomized)|t(?:o(?:NearestOr(?:Even|AwayFromZero)|wardZero)|uple|ext)|i(?:nt|mage)|optional|d(?:ictionary|o(?:uble|wn))|u(?:Int|p|rl)|p(?:o(?:sitive(?:Subnormal|Normal|Infinity|Zero)|int)|lus)|e(?:rror|mptyInput)|view|quietNaN|float|a(?:ttributedString|wayFromZero)|r(?:ectangle|ange)|generated|minus|b(?:ool|ezierPath))\\b"
247
- }
248
- ]
249
- },
250
- "builtin-types": {
251
- "patterns": [
252
- {
253
- "include": "#builtin-class-type"
254
- },
255
- {
256
- "include": "#builtin-enum-type"
257
- },
258
- {
259
- "include": "#builtin-protocol-type"
260
- },
261
- {
262
- "include": "#builtin-struct-type"
263
- },
264
- {
265
- "include": "#builtin-typealias"
266
- },
267
- {
268
- "name": "support.type.any.swift",
269
- "match": "\\bAny\\b"
270
- }
271
- ],
272
- "repository": {
273
- "builtin-class-type": {
274
- "name": "support.class.swift",
275
- "match": "\\b(Managed(Buffer|ProtoBuffer)|NonObjectiveCBase|AnyGenerator)\\b"
276
- },
277
- "builtin-enum-type": {
278
- "patterns": [
279
- {
280
- "name": "support.constant.swift",
281
- "match": "\\b(?:CommandLine|Process(?=\\.))\\b"
282
- },
283
- {
284
- "name": "support.constant.never.swift",
285
- "match": "\\bNever\\b"
286
- },
287
- {
288
- "name": "support.type.swift",
289
- "match": "\\b(?:ImplicitlyUnwrappedOptional|Representation|MemoryLayout|FloatingPointClassification|SetIndexRepresentation|SetIteratorRepresentation|FloatingPointRoundingRule|UnicodeDecodingResult|Optional|DictionaryIndexRepresentation|AncestorRepresentation|DisplayStyle|PlaygroundQuickLook|Never|FloatingPointSign|Bit|DictionaryIteratorRepresentation)\\b"
290
- },
291
- {
292
- "name": "support.type.swift",
293
- "match": "\\b(?:MirrorDisposition|QuickLookObject)\\b"
294
- }
295
- ]
296
- },
297
- "builtin-protocol-type": {
298
- "patterns": [
299
- {
300
- "name": "support.type.swift",
301
- "match": "\\b(?:Ra(?:n(?:domAccess(?:Collection|Indexable)|geReplaceable(?:Collection|Indexable))|wRepresentable)|M(?:irrorPath|utable(?:Collection|Indexable))|Bi(?:naryFloatingPoint|twiseOperations|directional(?:Collection|Indexable))|S(?:tr(?:ideable|eamable)|igned(?:Number|Integer)|e(?:tAlgebra|quence))|Hashable|C(?:o(?:llection|mparable)|ustom(?:Reflectable|StringConvertible|DebugStringConvertible|PlaygroundQuickLookable|LeafReflectable)|VarArg)|TextOutputStream|I(?:n(?:teger(?:Arithmetic)?|dexable(?:Base)?)|teratorProtocol)|OptionSet|Un(?:signedInteger|icodeCodec)|E(?:quatable|rror|xpressibleBy(?:BooleanLiteral|String(?:Interpolation|Literal)|NilLiteral|IntegerLiteral|DictionaryLiteral|UnicodeScalarLiteral|ExtendedGraphemeClusterLiteral|FloatLiteral|ArrayLiteral))|FloatingPoint|L(?:osslessStringConvertible|azy(?:SequenceProtocol|CollectionProtocol))|A(?:nyObject|bsoluteValuable))\\b"
302
- },
303
- {
304
- "name": "support.type.swift",
305
- "match": "\\b(?:Ran(?:domAccessIndexType|geReplaceableCollectionType)|GeneratorType|M(?:irror(?:Type|PathType)|utable(?:Sliceable|CollectionType))|B(?:i(?:twiseOperationsType|directionalIndexType)|oolean(?:Type|LiteralConvertible))|S(?:tring(?:InterpolationConvertible|LiteralConvertible)|i(?:nkType|gned(?:NumberType|IntegerType))|e(?:tAlgebraType|quenceType)|liceable)|NilLiteralConvertible|C(?:ollectionType|VarArgType)|Inte(?:rvalType|ger(?:Type|LiteralConvertible|ArithmeticType))|O(?:utputStreamType|ptionSetType)|DictionaryLiteralConvertible|Un(?:signedIntegerType|icode(?:ScalarLiteralConvertible|CodecType))|E(?:rrorType|xten(?:sibleCollectionType|dedGraphemeClusterLiteralConvertible))|F(?:orwardIndexType|loat(?:ingPointType|LiteralConvertible))|A(?:nyCollectionType|rrayLiteralConvertible))\\b"
306
- }
307
- ]
308
- },
309
- "builtin-struct-type": {
310
- "patterns": [
311
- {
312
- "name": "support.type.swift",
313
- "match": "\\b(?:R(?:e(?:peat(?:ed)?|versed(?:RandomAccess(?:Collection|Index)|Collection|Index))|an(?:domAccessSlice|ge(?:Replaceable(?:RandomAccessSlice|BidirectionalSlice|Slice)|Generator)?))|Generator(?:Sequence|OfOne)|M(?:irror|utable(?:Ran(?:domAccessSlice|geReplaceable(?:RandomAccessSlice|BidirectionalSlice|Slice))|BidirectionalSlice|Slice)|anagedBufferPointer)|B(?:idirectionalSlice|ool)|S(?:t(?:aticString|ri(?:ng|deT(?:hrough(?:Generator|Iterator)?|o(?:Generator|Iterator)?)))|et(?:I(?:ndex|terator))?|lice)|HalfOpenInterval|C(?:haracter(?:View)?|o(?:ntiguousArray|untable(?:Range|ClosedRange)|llectionOfOne)|OpaquePointer|losed(?:Range(?:I(?:ndex|terator))?|Interval)|VaListPointer)|I(?:n(?:t(?:16|8|32|64)?|d(?:ices|ex(?:ing(?:Generator|Iterator))?))|terator(?:Sequence|OverOne)?)|Zip2(?:Sequence|Iterator)|O(?:paquePointer|bjectIdentifier)|D(?:ictionary(?:I(?:ndex|terator)|Literal)?|ouble|efault(?:RandomAccessIndices|BidirectionalIndices|Indices))|U(?:n(?:safe(?:RawPointer|Mutable(?:RawPointer|BufferPointer|Pointer)|BufferPointer(?:Generator|Iterator)?|Pointer)|icodeScalar(?:View)?|foldSequence|managed)|TF(?:16(?:View)?|8(?:View)?|32)|Int(?:16|8|32|64)?)|Join(?:Generator|ed(?:Sequence|Iterator))|PermutationGenerator|E(?:numerate(?:Generator|Sequence|d(?:Sequence|Iterator))|mpty(?:Generator|Collection|Iterator))|Fl(?:oat(?:80)?|atten(?:Generator|BidirectionalCollection(?:Index)?|Sequence|Collection(?:Index)?|Iterator))|L(?:egacyChildren|azy(?:RandomAccessCollection|Map(?:RandomAccessCollection|Generator|BidirectionalCollection|Sequence|Collection|Iterator)|BidirectionalCollection|Sequence|Collection|Filter(?:Generator|BidirectionalCollection|Sequence|Collection|I(?:ndex|terator))))|A(?:ny(?:RandomAccessCollection|Generator|BidirectionalCollection|Sequence|Hashable|Collection|I(?:ndex|terator))|utoreleasingUnsafeMutablePointer|rray(?:Slice)?))\\b"
314
- },
315
- {
316
- "name": "support.type.swift",
317
- "match": "\\b(?:R(?:everse(?:RandomAccess(?:Collection|Index)|Collection|Index)|awByte)|Map(?:Generator|Sequence|Collection)|S(?:inkOf|etGenerator)|Zip2Generator|DictionaryGenerator|Filter(?:Generator|Sequence|Collection(?:Index)?)|LazyForwardCollection|Any(?:RandomAccessIndex|BidirectionalIndex|Forward(?:Collection|Index)))\\b"
318
- }
319
- ]
320
- },
321
- "builtin-typealias": {
322
- "patterns": [
323
- {
324
- "name": "support.type.swift",
325
- "match": "\\b(?:Raw(?:Significand|Exponent|Value)|B(?:ooleanLiteralType|uffer|ase)|S(?:t(?:orage|r(?:i(?:ngLiteralType|de)|eam(?:1|2)))|ubSequence)|NativeBuffer|C(?:hild(?:ren)?|Bool|S(?:hort|ignedChar)|odeUnit|Char(?:16|32)?|Int|Double|Unsigned(?:Short|Char|Int|Long(?:Long)?)|Float|WideChar|Long(?:Long)?)|I(?:n(?:t(?:Max|egerLiteralType)|d(?:ices|ex(?:Distance)?))|terator)|Distance|U(?:n(?:icodeScalar(?:Type|Index|View|LiteralType)|foldFirstSequence)|TF(?:16(?:Index|View)|8Index)|IntMax)|E(?:lement(?:s)?|x(?:tendedGraphemeCluster(?:Type|LiteralType)|ponent))|V(?:oid|alue)|Key|Float(?:32|LiteralType|64)|AnyClass)\\b"
326
- },
327
- {
328
- "name": "support.type.swift",
329
- "match": "\\b(?:Generator|PlaygroundQuickLook|UWord|Word)\\b"
330
- }
331
- ]
332
- }
333
- }
334
- },
335
- "code-block": {
336
- "begin": "\\{",
337
- "end": "\\}",
338
- "patterns": [
339
- {
340
- "include": "$self"
341
- }
342
- ],
343
- "beginCaptures": {
344
- "0": {
345
- "name": "punctuation.section.scope.begin.swift"
346
- }
347
- },
348
- "endCaptures": {
349
- "0": {
350
- "name": "punctuation.section.scope.end.swift"
351
- }
352
- }
353
- },
354
- "comments": {
355
- "patterns": [
356
- {
357
- "name": "comment.line.number-sign.swift",
358
- "match": "\\A^(#!).*$\\n?",
359
- "captures": {
360
- "1": {
361
- "name": "punctuation.definition.comment.swift"
362
- }
363
- }
364
- },
365
- {
366
- "name": "comment.block.documentation.swift",
367
- "begin": "/\\*\\*(?!/)",
368
- "end": "\\*/",
369
- "patterns": [
370
- {
371
- "include": "#nested"
372
- }
373
- ],
374
- "beginCaptures": {
375
- "0": {
376
- "name": "punctuation.definition.comment.begin.swift"
377
- }
378
- },
379
- "endCaptures": {
380
- "0": {
381
- "name": "punctuation.definition.comment.end.swift"
382
- }
383
- }
384
- },
385
- {
386
- "name": "comment.block.documentation.playground.swift",
387
- "begin": "/\\*:",
388
- "end": "\\*/",
389
- "patterns": [
390
- {
391
- "include": "#nested"
392
- }
393
- ],
394
- "beginCaptures": {
395
- "0": {
396
- "name": "punctuation.definition.comment.begin.swift"
397
- }
398
- },
399
- "endCaptures": {
400
- "0": {
401
- "name": "punctuation.definition.comment.end.swift"
402
- }
403
- }
404
- },
405
- {
406
- "name": "comment.block.swift",
407
- "begin": "/\\*",
408
- "end": "\\*/",
409
- "patterns": [
410
- {
411
- "include": "#nested"
412
- }
413
- ],
414
- "beginCaptures": {
415
- "0": {
416
- "name": "punctuation.definition.comment.begin.swift"
417
- }
418
- },
419
- "endCaptures": {
420
- "0": {
421
- "name": "punctuation.definition.comment.end.swift"
422
- }
423
- }
424
- },
425
- {
426
- "name": "invalid.illegal.unexpected-end-of-block-comment.swift",
427
- "match": "\\*/"
428
- },
429
- {
430
- "begin": "(^[ \\t]+)?(?=//)",
431
- "end": "(?!\\G)",
432
- "patterns": [
433
- {
434
- "name": "comment.line.triple-slash.documentation.swift",
435
- "begin": "///",
436
- "end": "^",
437
- "beginCaptures": {
438
- "0": {
439
- "name": "punctuation.definition.comment.swift"
440
- }
441
- }
442
- },
443
- {
444
- "name": "comment.line.double-slash.documentation.swift",
445
- "begin": "//:",
446
- "end": "^",
447
- "beginCaptures": {
448
- "0": {
449
- "name": "punctuation.definition.comment.swift"
450
- }
451
- }
452
- },
453
- {
454
- "name": "comment.line.double-slash.swift",
455
- "begin": "//",
456
- "end": "^",
457
- "beginCaptures": {
458
- "0": {
459
- "name": "punctuation.definition.comment.swift"
460
- }
461
- }
462
- }
463
- ],
464
- "beginCaptures": {
465
- "1": {
466
- "name": "punctuation.whitespace.comment.leading.swift"
467
- }
468
- }
469
- }
470
- ],
471
- "repository": {
472
- "nested": {
473
- "begin": "/\\*",
474
- "end": "\\*/",
475
- "patterns": [
476
- {
477
- "include": "#nested"
478
- }
479
- ]
480
- }
481
- }
482
- },
483
- "compiler-control": {
484
- "patterns": [
485
- {
486
- "contentName": "comment.block.preprocessor.swift",
487
- "begin": "^\\s*(#)(if|elseif)\\s+(false)\\b.*?(?=$|//|/\\*)",
488
- "end": "(?=^\\s*(#(elseif|else|endif)\\b))",
489
- "beginCaptures": {
490
- "0": {
491
- "name": "meta.preprocessor.conditional.swift"
492
- },
493
- "1": {
494
- "name": "punctuation.definition.preprocessor.swift"
495
- },
496
- "2": {
497
- "name": "keyword.control.preprocessor.conditional.swift"
498
- },
499
- "3": {
500
- "name": "constant.language.boolean.swift"
501
- }
502
- }
503
- },
504
- {
505
- "name": "meta.preprocessor.conditional.swift",
506
- "begin": "^\\s*(#)(if|elseif)\\s+",
507
- "end": "(?=\\s*(?://|/\\*))|$",
508
- "patterns": [
509
- {
510
- "name": "keyword.operator.logical.swift",
511
- "match": "(\u0026\u0026|\\|\\|)"
512
- },
513
- {
514
- "name": "constant.language.boolean.swift",
515
- "match": "\\b(true|false)\\b"
516
- },
517
- {
518
- "match": "\\b(arch)\\s*(\\()\\s*(?:(arm|arm64|powerpc64|powerpc64le|i386|x86_64|s390x)|\\w+)\\s*(\\))",
519
- "captures": {
520
- "1": {
521
- "name": "keyword.other.condition.swift"
522
- },
523
- "2": {
524
- "name": "punctuation.definition.parameters.begin.swift"
525
- },
526
- "3": {
527
- "name": "support.constant.platform.architecture.swift"
528
- },
529
- "4": {
530
- "name": "punctuation.definition.parameters.end.swift"
531
- }
532
- }
533
- },
534
- {
535
- "match": "\\b(os)\\s*(\\()\\s*(?:(macOS|OSX|iOS|tvOS|watchOS|Android|Linux|FreeBSD|Windows|PS4)|\\w+)\\s*(\\))",
536
- "captures": {
537
- "1": {
538
- "name": "keyword.other.condition.swift"
539
- },
540
- "2": {
541
- "name": "punctuation.definition.parameters.begin.swift"
542
- },
543
- "3": {
544
- "name": "support.constant.platform.os.swift"
545
- },
546
- "4": {
547
- "name": "punctuation.definition.parameters.end.swift"
548
- }
549
- }
550
- },
551
- {
552
- "match": "\\b(canImport)\\s*(\\()([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)(\\))",
553
- "captures": {
554
- "1": {
555
- "name": "keyword.other.condition.swift"
556
- },
557
- "2": {
558
- "name": "punctuation.definition.parameters.begin.swift"
559
- },
560
- "3": {
561
- "name": "entity.name.type.module.swift"
562
- },
563
- "4": {
564
- "name": "punctuation.definition.parameters.end.swift"
565
- }
566
- }
567
- },
568
- {
569
- "begin": "\\b(targetEnvironment)\\s*(\\()",
570
- "end": "(\\))|$",
571
- "patterns": [
572
- {
573
- "name": "support.constant.platform.environment.swift",
574
- "match": "\\b(simulator|UIKitForMac)\\b"
575
- }
576
- ],
577
- "beginCaptures": {
578
- "1": {
579
- "name": "keyword.other.condition.swift"
580
- },
581
- "2": {
582
- "name": "punctuation.definition.parameters.begin.swift"
583
- }
584
- },
585
- "endCaptures": {
586
- "1": {
587
- "name": "punctuation.definition.parameters.end.swift"
588
- }
589
- }
590
- },
591
- {
592
- "begin": "\\b(swift|compiler)\\s*(\\()",
593
- "end": "(\\))|$",
594
- "patterns": [
595
- {
596
- "name": "keyword.operator.comparison.swift",
597
- "match": "\u003e=|\u003c"
598
- },
599
- {
600
- "name": "constant.numeric.swift",
601
- "match": "\\b[0-9]+(?:\\.[0-9]+)*\\b"
602
- }
603
- ],
604
- "beginCaptures": {
605
- "1": {
606
- "name": "keyword.other.condition.swift"
607
- },
608
- "2": {
609
- "name": "punctuation.definition.parameters.begin.swift"
610
- }
611
- },
612
- "endCaptures": {
613
- "1": {
614
- "name": "punctuation.definition.parameters.end.swift"
615
- }
616
- }
617
- }
618
- ],
619
- "captures": {
620
- "1": {
621
- "name": "punctuation.definition.preprocessor.swift"
622
- },
623
- "2": {
624
- "name": "keyword.control.preprocessor.conditional.swift"
625
- }
626
- }
627
- },
628
- {
629
- "name": "meta.preprocessor.conditional.swift",
630
- "match": "^\\s*(#)(else|endif)(.*?)(?=$|//|/\\*)",
631
- "captures": {
632
- "1": {
633
- "name": "punctuation.definition.preprocessor.swift"
634
- },
635
- "2": {
636
- "name": "keyword.control.preprocessor.conditional.swift"
637
- },
638
- "3": {
639
- "patterns": [
640
- {
641
- "name": "invalid.illegal.character-not-allowed-here.swift",
642
- "match": "\\S+"
643
- }
644
- ]
645
- }
646
- }
647
- },
648
- {
649
- "name": "meta.preprocessor.sourcelocation.swift",
650
- "match": "^\\s*(#)(sourceLocation)((\\()([^)]*)(\\)))(.*?)(?=$|//|/\\*)",
651
- "captures": {
652
- "1": {
653
- "name": "punctuation.definition.preprocessor.swift"
654
- },
655
- "2": {
656
- "name": "keyword.control.preprocessor.sourcelocation.swift"
657
- },
658
- "4": {
659
- "name": "punctuation.definition.parameters.begin.swift"
660
- },
661
- "5": {
662
- "patterns": [
663
- {
664
- "begin": "(file)\\s*(:)\\s*(?=\")",
665
- "end": "(?!\\G)",
666
- "patterns": [
667
- {
668
- "include": "#literals"
669
- }
670
- ],
671
- "beginCaptures": {
672
- "1": {
673
- "name": "support.variable.parameter.swift"
674
- },
675
- "2": {
676
- "name": "punctuation.separator.key-value.swift"
677
- }
678
- }
679
- },
680
- {
681
- "match": "(line)\\s*(:)\\s*([0-9]+)",
682
- "captures": {
683
- "1": {
684
- "name": "support.variable.parameter.swift"
685
- },
686
- "2": {
687
- "name": "punctuation.separator.key-value.swift"
688
- },
689
- "3": {
690
- "name": "constant.numeric.integer.swift"
691
- }
692
- }
693
- },
694
- {
695
- "name": "punctuation.separator.parameters.swift",
696
- "match": ","
697
- },
698
- {
699
- "name": "invalid.illegal.character-not-allowed-here.swift",
700
- "match": "\\S+"
701
- }
702
- ]
703
- },
704
- "6": {
705
- "name": "punctuation.definition.parameters.begin.swift"
706
- },
707
- "7": {
708
- "patterns": [
709
- {
710
- "name": "invalid.illegal.character-not-allowed-here.swift",
711
- "match": "\\S+"
712
- }
713
- ]
714
- }
715
- }
716
- }
717
- ]
718
- },
719
- "declarations": {
720
- "patterns": [
721
- {
722
- "include": "#function"
723
- },
724
- {
725
- "include": "#function-initializer"
726
- },
727
- {
728
- "include": "#import"
729
- },
730
- {
731
- "include": "#operator"
732
- },
733
- {
734
- "include": "#precedencegroup"
735
- },
736
- {
737
- "include": "#protocol"
738
- },
739
- {
740
- "include": "#type"
741
- },
742
- {
743
- "include": "#extension"
744
- },
745
- {
746
- "include": "#typealias"
747
- }
748
- ],
749
- "repository": {
750
- "available-types": {
751
- "patterns": [
752
- {
753
- "include": "#comments"
754
- },
755
- {
756
- "include": "#builtin-types"
757
- },
758
- {
759
- "include": "#attributes"
760
- },
761
- {
762
- "name": "keyword.control.exception.swift",
763
- "match": "\\b(?:throws|rethrows)\\b"
764
- },
765
- {
766
- "name": "storage.modifier.swift",
767
- "match": "\\binout\\b"
768
- },
769
- {
770
- "name": "variable.language.swift",
771
- "match": "\\bSelf\\b"
772
- },
773
- {
774
- "match": "(?\u003c![/=\\-+!*%\u003c\u003e\u0026|\\^~.])(-\u003e)(?![/=\\-+!*%\u003c\u003e\u0026|\\^~.])",
775
- "captures": {
776
- "1": {
777
- "name": "keyword.operator.type.function.swift"
778
- }
779
- }
780
- },
781
- {
782
- "match": "(?\u003c![/=\\-+!*%\u003c\u003e\u0026|\\^~.])(\u0026)(?![/=\\-+!*%\u003c\u003e\u0026|\\^~.])",
783
- "captures": {
784
- "1": {
785
- "name": "keyword.operator.type.composition.swift"
786
- }
787
- }
788
- },
789
- {
790
- "name": "keyword.operator.type.optional.swift",
791
- "match": "[?!]"
792
- },
793
- {
794
- "name": "keyword.operator.function.variadic-parameter.swift",
795
- "match": "\\.\\.\\."
796
- },
797
- {
798
- "name": "keyword.operator.type.composition.swift",
799
- "match": "\\bprotocol\\b"
800
- },
801
- {
802
- "name": "keyword.operator.type.metatype.swift",
803
- "match": "(?\u003c=\\.)(?:Protocol|Type)\\b"
804
- },
805
- {
806
- "include": "#tuple-type"
807
- },
808
- {
809
- "include": "#collection-type"
810
- },
811
- {
812
- "include": "#generic-argument-clause"
813
- }
814
- ],
815
- "repository": {
816
- "collection-type": {
817
- "begin": "\\[",
818
- "end": "\\]|(?=[\u003e){}])",
819
- "patterns": [
820
- {
821
- "include": "#available-types"
822
- },
823
- {
824
- "begin": ":",
825
- "end": "(?=\\]|[\u003e){}])",
826
- "patterns": [
827
- {
828
- "name": "invalid.illegal.extra-colon-in-dictionary-type.swift",
829
- "match": ":"
830
- },
831
- {
832
- "include": "#available-types"
833
- }
834
- ],
835
- "beginCaptures": {
836
- "0": {
837
- "name": "punctuation.separator.key-value.swift"
838
- }
839
- }
840
- }
841
- ],
842
- "beginCaptures": {
843
- "0": {
844
- "name": "punctuation.section.collection-type.begin.swift"
845
- }
846
- },
847
- "endCaptures": {
848
- "0": {
849
- "name": "punctuation.section.collection-type.end.swift"
850
- }
851
- }
852
- },
853
- "tuple-type": {
854
- "begin": "\\(",
855
- "end": "\\)|(?=[\u003e\\]{}])",
856
- "patterns": [
857
- {
858
- "include": "#available-types"
859
- }
860
- ],
861
- "beginCaptures": {
862
- "0": {
863
- "name": "punctuation.section.tuple-type.begin.swift"
864
- }
865
- },
866
- "endCaptures": {
867
- "0": {
868
- "name": "punctuation.section.tuple-type.end.swift"
869
- }
870
- }
871
- }
872
- }
873
- },
874
- "extension": {
875
- "name": "meta.definition.type.$1.swift",
876
- "begin": "\\b(extension)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))",
877
- "end": "(?\u003c=\\})",
878
- "patterns": [
879
- {
880
- "include": "#comments"
881
- },
882
- {
883
- "include": "#generic-where-clause"
884
- },
885
- {
886
- "include": "#inheritance-clause"
887
- },
888
- {
889
- "name": "meta.definition.type.body.swift",
890
- "begin": "\\{",
891
- "end": "\\}",
892
- "patterns": [
893
- {
894
- "include": "$self"
895
- }
896
- ],
897
- "beginCaptures": {
898
- "0": {
899
- "name": "punctuation.definition.type.begin.swift"
900
- }
901
- },
902
- "endCaptures": {
903
- "0": {
904
- "name": "punctuation.definition.type.end.swift"
905
- }
906
- }
907
- }
908
- ],
909
- "beginCaptures": {
910
- "1": {
911
- "name": "storage.type.$1.swift"
912
- },
913
- "2": {
914
- "name": "entity.name.type.swift",
915
- "patterns": [
916
- {
917
- "include": "#available-types"
918
- }
919
- ]
920
- },
921
- "3": {
922
- "name": "punctuation.definition.identifier.swift"
923
- },
924
- "4": {
925
- "name": "punctuation.definition.identifier.swift"
926
- }
927
- }
928
- },
929
- "function": {
930
- "name": "meta.definition.function.swift",
931
- "begin": "(?x)\n\t\t\t\t\t\t\\b\n\t\t\t\t\t\t(func)\n\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e)\n\t\t\t\t\t\t | (?:\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?\u003coph\u003e\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\\g\u003coph\u003e\n\t\t\t\t\t\t\t\t\t | (?\u003copc\u003e\t\t\t\t\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t\t\t[\\x{0300}-\\x{036F}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t)*\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t | ( \\. ( \\g\u003coph\u003e | \\g\u003copc\u003e | \\. )+ )\t\t\t# Dot operators\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t(?=\\(|\u003c)\n\t\t\t\t\t",
932
- "end": "(?\u003c=\\})|$(?# functions in protocol declarations or generated interfaces have no body)",
933
- "patterns": [
934
- {
935
- "include": "#comments"
936
- },
937
- {
938
- "include": "#generic-parameter-clause"
939
- },
940
- {
941
- "include": "#parameter-clause"
942
- },
943
- {
944
- "include": "#function-result"
945
- },
946
- {
947
- "name": "keyword.control.exception.swift",
948
- "match": "\\b(?:throws|rethrows)\\b"
949
- },
950
- {
951
- "include": "#generic-where-clause"
952
- },
953
- {
954
- "name": "meta.definition.function.body.swift",
955
- "begin": "(\\{)",
956
- "end": "(\\})",
957
- "patterns": [
958
- {
959
- "include": "$self"
960
- }
961
- ],
962
- "beginCaptures": {
963
- "1": {
964
- "name": "punctuation.section.function.begin.swift"
965
- }
966
- },
967
- "endCaptures": {
968
- "1": {
969
- "name": "punctuation.section.function.end.swift"
970
- }
971
- }
972
- }
973
- ],
974
- "beginCaptures": {
975
- "1": {
976
- "name": "storage.type.function.swift"
977
- },
978
- "2": {
979
- "name": "entity.name.function.swift"
980
- },
981
- "3": {
982
- "name": "punctuation.definition.identifier.swift"
983
- },
984
- "4": {
985
- "name": "punctuation.definition.identifier.swift"
986
- }
987
- }
988
- },
989
- "function-initializer": {
990
- "name": "meta.definition.function.initializer.swift",
991
- "begin": "(?\u003c!\\.)\\b(init[?!]*(?# only one is valid, but we want the in⇥ snippet to produce something that looks good))\\s*(?=\\(|\u003c)",
992
- "end": "(?\u003c=\\})|$",
993
- "patterns": [
994
- {
995
- "include": "#comments"
996
- },
997
- {
998
- "include": "#generic-parameter-clause"
999
- },
1000
- {
1001
- "include": "#parameter-clause"
1002
- },
1003
- {
1004
- "name": "keyword.control.exception.swift",
1005
- "match": "\\b(?:throws|rethrows)\\b"
1006
- },
1007
- {
1008
- "include": "#generic-where-clause"
1009
- },
1010
- {
1011
- "name": "meta.definition.function.body.swift",
1012
- "begin": "(\\{)",
1013
- "end": "(\\})",
1014
- "patterns": [
1015
- {
1016
- "include": "$self"
1017
- }
1018
- ],
1019
- "beginCaptures": {
1020
- "1": {
1021
- "name": "punctuation.section.function.begin.swift"
1022
- }
1023
- },
1024
- "endCaptures": {
1025
- "1": {
1026
- "name": "punctuation.section.function.end.swift"
1027
- }
1028
- }
1029
- }
1030
- ],
1031
- "beginCaptures": {
1032
- "1": {
1033
- "name": "storage.type.function.swift",
1034
- "patterns": [
1035
- {
1036
- "name": "invalid.illegal.character-not-allowed-here.swift",
1037
- "match": "(?\u003c=[?!])[?!]+"
1038
- }
1039
- ]
1040
- }
1041
- }
1042
- },
1043
- "function-result": {
1044
- "name": "meta.function-result.swift",
1045
- "begin": "(?\u003c![/=\\-+!*%\u003c\u003e\u0026|\\^~.])(-\u003e)(?![/=\\-+!*%\u003c\u003e\u0026|\\^~.])\\s*",
1046
- "end": "(?!\\G)(?=\\{|\\bwhere\\b|;)|$",
1047
- "patterns": [
1048
- {
1049
- "include": "#available-types"
1050
- }
1051
- ],
1052
- "beginCaptures": {
1053
- "1": {
1054
- "name": "keyword.operator.function-result.swift"
1055
- }
1056
- }
1057
- },
1058
- "generic-argument-clause": {
1059
- "name": "meta.generic-argument-clause.swift",
1060
- "begin": "\u003c",
1061
- "end": "\u003e|(?=[)\\]{}])",
1062
- "patterns": [
1063
- {
1064
- "include": "#available-types"
1065
- }
1066
- ],
1067
- "beginCaptures": {
1068
- "0": {
1069
- "name": "punctuation.separator.generic-argument-clause.begin.swift"
1070
- }
1071
- },
1072
- "endCaptures": {
1073
- "0": {
1074
- "name": "punctuation.separator.generic-argument-clause.end.swift"
1075
- }
1076
- }
1077
- },
1078
- "generic-parameter-clause": {
1079
- "name": "meta.generic-parameter-clause.swift",
1080
- "begin": "\u003c",
1081
- "end": "\u003e|(?=[^\\w\\d:\u003c\u003e\\s,=\u0026`])(?# characters besides these are never valid in a generic param list -- even if it's not really a valid clause, we should stop trying to parse it if we see one of them.)",
1082
- "patterns": [
1083
- {
1084
- "include": "#comments"
1085
- },
1086
- {
1087
- "include": "#generic-where-clause"
1088
- },
1089
- {
1090
- "match": "\\b((?!\\d)\\w[\\w\\d]*)\\b",
1091
- "captures": {
1092
- "1": {
1093
- "name": "variable.language.generic-parameter.swift"
1094
- }
1095
- }
1096
- },
1097
- {
1098
- "name": "punctuation.separator.generic-parameters.swift",
1099
- "match": ","
1100
- },
1101
- {
1102
- "name": "meta.generic-parameter-constraint.swift",
1103
- "begin": "(:)\\s*",
1104
- "end": "(?=[,\u003e]|(?!\\G)\\bwhere\\b)",
1105
- "patterns": [
1106
- {
1107
- "name": "entity.other.inherited-class.swift",
1108
- "begin": "\\G",
1109
- "end": "(?=[,\u003e]|(?!\\G)\\bwhere\\b)",
1110
- "patterns": [
1111
- {
1112
- "include": "#type-identifier"
1113
- }
1114
- ]
1115
- }
1116
- ],
1117
- "beginCaptures": {
1118
- "1": {
1119
- "name": "punctuation.separator.generic-parameter-constraint.swift"
1120
- }
1121
- }
1122
- }
1123
- ],
1124
- "beginCaptures": {
1125
- "0": {
1126
- "name": "punctuation.separator.generic-parameter-clause.begin.swift"
1127
- }
1128
- },
1129
- "endCaptures": {
1130
- "0": {
1131
- "name": "punctuation.separator.generic-parameter-clause.end.swift"
1132
- }
1133
- }
1134
- },
1135
- "generic-where-clause": {
1136
- "name": "meta.generic-where-clause.swift",
1137
- "begin": "\\b(where)\\b\\s*",
1138
- "end": "(?!\\G)$|(?=[\u003e{};\\n]|//|/\\*)",
1139
- "patterns": [
1140
- {
1141
- "include": "#comments"
1142
- },
1143
- {
1144
- "include": "#requirement-list"
1145
- }
1146
- ],
1147
- "beginCaptures": {
1148
- "1": {
1149
- "name": "keyword.other.generic-constraint-introducer.swift"
1150
- }
1151
- },
1152
- "repository": {
1153
- "requirement-list": {
1154
- "begin": "\\G|,\\s*",
1155
- "end": "(?=[,\u003e{};\\n]|//|/\\*)",
1156
- "patterns": [
1157
- {
1158
- "include": "#comments"
1159
- },
1160
- {
1161
- "include": "#constraint"
1162
- },
1163
- {
1164
- "include": "#available-types"
1165
- },
1166
- {
1167
- "name": "meta.generic-where-clause.same-type-requirement.swift",
1168
- "begin": "(?\u003c![/=\\-+!*%\u003c\u003e\u0026|\\^~.])(==)(?![/=\\-+!*%\u003c\u003e\u0026|\\^~.])",
1169
- "end": "(?=\\s*[,\u003e{};\\n]|//|/\\*)",
1170
- "patterns": [
1171
- {
1172
- "include": "#available-types"
1173
- }
1174
- ],
1175
- "beginCaptures": {
1176
- "1": {
1177
- "name": "keyword.operator.generic-constraint.same-type.swift"
1178
- }
1179
- }
1180
- },
1181
- {
1182
- "name": "meta.generic-where-clause.conformance-requirement.swift",
1183
- "begin": "(?\u003c![/=\\-+!*%\u003c\u003e\u0026|\\^~.])(:)(?![/=\\-+!*%\u003c\u003e\u0026|\\^~.])",
1184
- "end": "(?=\\s*[,\u003e{};\\n]|//|/\\*)",
1185
- "patterns": [
1186
- {
1187
- "contentName": "entity.other.inherited-class.swift",
1188
- "begin": "\\G\\s*",
1189
- "end": "(?=\\s*[,\u003e{};\\n]|//|/\\*)",
1190
- "patterns": [
1191
- {
1192
- "include": "#available-types"
1193
- }
1194
- ]
1195
- }
1196
- ],
1197
- "beginCaptures": {
1198
- "1": {
1199
- "name": "keyword.operator.generic-constraint.conforms-to.swift"
1200
- }
1201
- }
1202
- }
1203
- ]
1204
- }
1205
- }
1206
- },
1207
- "import": {
1208
- "name": "meta.import.swift",
1209
- "begin": "(?\u003c!\\.)\\b(import)\\s+",
1210
- "end": "(;)|$\\n?|(?=//|/\\*)",
1211
- "patterns": [
1212
- {
1213
- "begin": "\\G(?!;|$|//|/\\*)(?:(typealias|struct|class|enum|protocol|var|func)\\s+)?",
1214
- "end": "(?=;|$|//|/\\*)",
1215
- "patterns": [
1216
- {
1217
- "name": "entity.name.type.swift",
1218
- "match": "(?x)\n\t\t\t\t\t\t\t\t\t\t(?\u003c=\\G|\\.)\n\t\t\t\t\t\t\t\t\t\t(?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e)\n\t\t\t\t\t\t\t\t\t",
1219
- "captures": {
1220
- "1": {
1221
- "name": "punctuation.definition.identifier.swift"
1222
- },
1223
- "2": {
1224
- "name": "punctuation.definition.identifier.swift"
1225
- }
1226
- }
1227
- },
1228
- {
1229
- "name": "entity.name.type.swift",
1230
- "match": "(?x)\n\t\t\t\t\t\t\t\t\t\t(?\u003c=\\G|\\.)\n\t\t\t\t\t\t\t\t\t\t\\$[0-9]+\n\t\t\t\t\t\t\t\t\t"
1231
- },
1232
- {
1233
- "name": "entity.name.type.swift",
1234
- "match": "(?x)\n\t\t\t\t\t\t\t\t\t\t(?\u003c=\\G|\\.)\n\t\t\t\t\t\t\t\t\t\t(?:\n\t\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t\t(?\u003coph\u003e\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\\g\u003coph\u003e\n\t\t\t\t\t\t\t\t\t\t\t\t | (?\u003copc\u003e\t\t\t\t\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\\x{0300}-\\x{036F}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t)*\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t | ( \\. ( \\g\u003coph\u003e | \\g\u003copc\u003e | \\. )+ )\t\t\t# Dot operators\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t(?=\\.|;|$|//|/\\*|\\s)\n\t\t\t\t\t\t\t\t\t",
1235
- "captures": {
1236
- "1": {
1237
- "patterns": [
1238
- {
1239
- "name": "invalid.illegal.dot-not-allowed-here.swift",
1240
- "match": "\\."
1241
- }
1242
- ]
1243
- }
1244
- }
1245
- },
1246
- {
1247
- "name": "punctuation.separator.import.swift",
1248
- "match": "\\."
1249
- },
1250
- {
1251
- "name": "invalid.illegal.character-not-allowed-here.swift",
1252
- "begin": "(?!\\s*(;|$|//|/\\*))",
1253
- "end": "(?=\\s*(;|$|//|/\\*))"
1254
- }
1255
- ],
1256
- "beginCaptures": {
1257
- "1": {
1258
- "name": "storage.modifier.swift"
1259
- }
1260
- }
1261
- }
1262
- ],
1263
- "beginCaptures": {
1264
- "1": {
1265
- "name": "keyword.control.import.swift"
1266
- }
1267
- },
1268
- "endCaptures": {
1269
- "1": {
1270
- "name": "punctuation.terminator.statement.swift"
1271
- }
1272
- }
1273
- },
1274
- "inheritance-clause": {
1275
- "name": "meta.inheritance-clause.swift",
1276
- "begin": "(:)(?=\\s*\\{)|(:)\\s*",
1277
- "end": "(?!\\G)$|(?=[={}]|(?!\\G)\\bwhere\\b)",
1278
- "patterns": [
1279
- {
1280
- "begin": "\\bclass\\b",
1281
- "end": "(?=[={}]|(?!\\G)\\bwhere\\b)",
1282
- "patterns": [
1283
- {
1284
- "include": "#comments"
1285
- },
1286
- {
1287
- "include": "#more-types"
1288
- }
1289
- ],
1290
- "beginCaptures": {
1291
- "0": {
1292
- "name": "storage.type.class.swift"
1293
- }
1294
- }
1295
- },
1296
- {
1297
- "begin": "\\G",
1298
- "end": "(?!\\G)$|(?=[={}]|(?!\\G)\\bwhere\\b)",
1299
- "patterns": [
1300
- {
1301
- "include": "#comments"
1302
- },
1303
- {
1304
- "include": "#inherited-type"
1305
- },
1306
- {
1307
- "include": "#more-types"
1308
- }
1309
- ]
1310
- }
1311
- ],
1312
- "beginCaptures": {
1313
- "1": {
1314
- "name": "invalid.illegal.empty-inheritance-clause.swift"
1315
- },
1316
- "2": {
1317
- "name": "punctuation.separator.inheritance-clause.swift"
1318
- }
1319
- },
1320
- "repository": {
1321
- "inherited-type": {
1322
- "name": "entity.other.inherited-class.swift",
1323
- "begin": "(?=[`\\p{L}_])",
1324
- "end": "(?!\\G)",
1325
- "patterns": [
1326
- {
1327
- "include": "#type-identifier"
1328
- }
1329
- ]
1330
- },
1331
- "more-types": {
1332
- "name": "meta.inheritance-list.more-types",
1333
- "begin": ",\\s*",
1334
- "end": "(?!\\G)(?!//|/\\*)|(?=[,={}]|(?!\\G)\\bwhere\\b)",
1335
- "patterns": [
1336
- {
1337
- "include": "#comments"
1338
- },
1339
- {
1340
- "include": "#inherited-type"
1341
- },
1342
- {
1343
- "include": "#more-types"
1344
- }
1345
- ]
1346
- }
1347
- }
1348
- },
1349
- "operator": {
1350
- "name": "meta.definition.operator.swift",
1351
- "begin": "(?x)\n\t\t\t\t\t\t(?:\n\t\t\t\t\t\t\t\\b(prefix|infix|postfix)\n\t\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t)?\n\t\t\t\t\t\t\\b\n\t\t\t\t\t\t(operator)\n\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t(?\u003coph\u003e\t\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\n\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\\g\u003coph\u003e\n\t\t\t\t\t\t\t\t | \\.\t\t\t\t\t\t\t\t\t# Invalid dot\n\t\t\t\t\t\t\t\t | (?\u003copc\u003e\t\t\t\t\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t\t[\\x{0300}-\\x{036F}]\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)*+\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t | ( \\. ( \\g\u003coph\u003e | \\g\u003copc\u003e | \\. )++ )\t\t\t# Dot operators\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\\s*\n\t\t\t\t\t",
1352
- "end": "(;)|$\\n?|(?=//|/\\*)",
1353
- "patterns": [
1354
- {
1355
- "include": "#swift2"
1356
- },
1357
- {
1358
- "include": "#swift3"
1359
- },
1360
- {
1361
- "name": "invalid.illegal.character-not-allowed-here.swift",
1362
- "match": "((?!$|;|//|/\\*)\\S)+"
1363
- }
1364
- ],
1365
- "beginCaptures": {
1366
- "1": {
1367
- "name": "storage.modifier.swift"
1368
- },
1369
- "2": {
1370
- "name": "storage.type.function.operator.swift"
1371
- },
1372
- "3": {
1373
- "name": "entity.name.function.operator.swift"
1374
- },
1375
- "4": {
1376
- "patterns": [
1377
- {
1378
- "name": "invalid.illegal.dot-not-allowed-here.swift",
1379
- "match": "\\."
1380
- }
1381
- ]
1382
- }
1383
- },
1384
- "endCaptures": {
1385
- "1": {
1386
- "name": "punctuation.terminator.statement.swift"
1387
- }
1388
- },
1389
- "repository": {
1390
- "swift2": {
1391
- "begin": "\\G(\\{)",
1392
- "end": "(\\})",
1393
- "patterns": [
1394
- {
1395
- "include": "#comments"
1396
- },
1397
- {
1398
- "match": "\\b(associativity)\\s+(left|right)\\b",
1399
- "captures": {
1400
- "1": {
1401
- "name": "storage.modifier.swift"
1402
- },
1403
- "2": {
1404
- "name": "keyword.other.operator.associativity.swift"
1405
- }
1406
- }
1407
- },
1408
- {
1409
- "match": "\\b(precedence)\\s+([0-9]+)\\b",
1410
- "captures": {
1411
- "1": {
1412
- "name": "storage.modifier.swift"
1413
- },
1414
- "2": {
1415
- "name": "constant.numeric.integer.swift"
1416
- }
1417
- }
1418
- },
1419
- {
1420
- "match": "\\b(assignment)\\b",
1421
- "captures": {
1422
- "1": {
1423
- "name": "storage.modifier.swift"
1424
- }
1425
- }
1426
- }
1427
- ],
1428
- "beginCaptures": {
1429
- "1": {
1430
- "name": "punctuation.definition.operator.begin.swift"
1431
- }
1432
- },
1433
- "endCaptures": {
1434
- "1": {
1435
- "name": "punctuation.definition.operator.end.swift"
1436
- }
1437
- }
1438
- },
1439
- "swift3": {
1440
- "match": "\\G(:)\\s*((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))",
1441
- "captures": {
1442
- "2": {
1443
- "name": "entity.other.inherited-class.swift",
1444
- "patterns": [
1445
- {
1446
- "include": "#types-precedencegroup"
1447
- }
1448
- ]
1449
- },
1450
- "3": {
1451
- "name": "punctuation.definition.identifier.swift"
1452
- },
1453
- "4": {
1454
- "name": "punctuation.definition.identifier.swift"
1455
- }
1456
- }
1457
- }
1458
- }
1459
- },
1460
- "parameter-clause": {
1461
- "name": "meta.parameter-clause.swift",
1462
- "begin": "(\\()",
1463
- "end": "(\\))",
1464
- "patterns": [
1465
- {
1466
- "include": "#parameter-list"
1467
- }
1468
- ],
1469
- "beginCaptures": {
1470
- "1": {
1471
- "name": "punctuation.definition.parameters.begin.swift"
1472
- }
1473
- },
1474
- "endCaptures": {
1475
- "1": {
1476
- "name": "punctuation.definition.parameters.end.swift"
1477
- }
1478
- }
1479
- },
1480
- "parameter-list": {
1481
- "patterns": [
1482
- {
1483
- "match": "((?\u003cq1\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq1\u003e))\\s+((?\u003cq2\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq2\u003e))(?=\\s*:)",
1484
- "captures": {
1485
- "1": {
1486
- "name": "entity.name.function.swift"
1487
- },
1488
- "2": {
1489
- "name": "punctuation.definition.identifier.swift"
1490
- },
1491
- "3": {
1492
- "name": "punctuation.definition.identifier.swift"
1493
- },
1494
- "4": {
1495
- "name": "variable.parameter.function.swift"
1496
- },
1497
- "5": {
1498
- "name": "punctuation.definition.identifier.swift"
1499
- },
1500
- "6": {
1501
- "name": "punctuation.definition.identifier.swift"
1502
- }
1503
- }
1504
- },
1505
- {
1506
- "match": "(((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e)))(?=\\s*:)",
1507
- "captures": {
1508
- "1": {
1509
- "name": "variable.parameter.function.swift"
1510
- },
1511
- "2": {
1512
- "name": "entity.name.function.swift"
1513
- },
1514
- "3": {
1515
- "name": "punctuation.definition.identifier.swift"
1516
- },
1517
- "4": {
1518
- "name": "punctuation.definition.identifier.swift"
1519
- }
1520
- }
1521
- },
1522
- {
1523
- "begin": ":\\s*(?!\\s)",
1524
- "end": "(?=[,)])",
1525
- "patterns": [
1526
- {
1527
- "include": "#available-types"
1528
- },
1529
- {
1530
- "name": "invalid.illegal.extra-colon-in-parameter-list.swift",
1531
- "match": ":"
1532
- },
1533
- {
1534
- "begin": "=",
1535
- "end": "(?=[,)])",
1536
- "patterns": [
1537
- {
1538
- "include": "#expressions"
1539
- }
1540
- ],
1541
- "beginCaptures": {
1542
- "0": {
1543
- "name": "keyword.operator.assignment.swift"
1544
- }
1545
- }
1546
- }
1547
- ]
1548
- }
1549
- ]
1550
- },
1551
- "precedencegroup": {
1552
- "name": "meta.definition.precedencegroup.swift",
1553
- "begin": "\\b(precedencegroup)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*(?=\\{)",
1554
- "end": "(?!\\G)",
1555
- "patterns": [
1556
- {
1557
- "begin": "\\{",
1558
- "end": "\\}",
1559
- "patterns": [
1560
- {
1561
- "include": "#comments"
1562
- },
1563
- {
1564
- "match": "\\b(higherThan|lowerThan)\\s*:\\s*((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))",
1565
- "captures": {
1566
- "1": {
1567
- "name": "storage.modifier.swift"
1568
- },
1569
- "2": {
1570
- "name": "entity.other.inherited-class.swift",
1571
- "patterns": [
1572
- {
1573
- "include": "#types-precedencegroup"
1574
- }
1575
- ]
1576
- },
1577
- "3": {
1578
- "name": "punctuation.definition.identifier.swift"
1579
- },
1580
- "4": {
1581
- "name": "punctuation.definition.identifier.swift"
1582
- }
1583
- }
1584
- },
1585
- {
1586
- "match": "\\b(associativity)\\b(?:\\s*:\\s*(right|left|none)\\b)?",
1587
- "captures": {
1588
- "1": {
1589
- "name": "storage.modifier.swift"
1590
- },
1591
- "2": {
1592
- "name": "keyword.other.operator.associativity.swift"
1593
- }
1594
- }
1595
- },
1596
- {
1597
- "match": "\\b(assignment)\\b(?:\\s*:\\s*(true|false)\\b)?",
1598
- "captures": {
1599
- "1": {
1600
- "name": "storage.modifier.swift"
1601
- },
1602
- "2": {
1603
- "name": "constant.language.boolean.swift"
1604
- }
1605
- }
1606
- }
1607
- ],
1608
- "beginCaptures": {
1609
- "0": {
1610
- "name": "punctuation.definition.precedencegroup.begin.swift"
1611
- }
1612
- },
1613
- "endCaptures": {
1614
- "0": {
1615
- "name": "punctuation.definition.precedencegroup.end.swift"
1616
- }
1617
- }
1618
- }
1619
- ],
1620
- "beginCaptures": {
1621
- "1": {
1622
- "name": "storage.type.precedencegroup.swift"
1623
- },
1624
- "2": {
1625
- "name": "entity.name.type.precedencegroup.swift"
1626
- },
1627
- "3": {
1628
- "name": "punctuation.definition.identifier.swift"
1629
- },
1630
- "4": {
1631
- "name": "punctuation.definition.identifier.swift"
1632
- }
1633
- }
1634
- },
1635
- "protocol": {
1636
- "name": "meta.definition.type.protocol.swift",
1637
- "begin": "\\b(protocol)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))",
1638
- "end": "(?\u003c=\\})",
1639
- "patterns": [
1640
- {
1641
- "include": "#comments"
1642
- },
1643
- {
1644
- "include": "#inheritance-clause"
1645
- },
1646
- {
1647
- "include": "#generic-where-clause"
1648
- },
1649
- {
1650
- "name": "meta.definition.type.body.swift",
1651
- "begin": "\\{",
1652
- "end": "\\}",
1653
- "patterns": [
1654
- {
1655
- "include": "#protocol-method"
1656
- },
1657
- {
1658
- "include": "#protocol-initializer"
1659
- },
1660
- {
1661
- "include": "#associated-type"
1662
- },
1663
- {
1664
- "include": "$self"
1665
- }
1666
- ],
1667
- "beginCaptures": {
1668
- "0": {
1669
- "name": "punctuation.definition.type.begin.swift"
1670
- }
1671
- },
1672
- "endCaptures": {
1673
- "0": {
1674
- "name": "punctuation.definition.type.end.swift"
1675
- }
1676
- }
1677
- }
1678
- ],
1679
- "beginCaptures": {
1680
- "1": {
1681
- "name": "storage.type.$1.swift"
1682
- },
1683
- "2": {
1684
- "name": "entity.name.type.$1.swift"
1685
- },
1686
- "3": {
1687
- "name": "punctuation.definition.identifier.swift"
1688
- },
1689
- "4": {
1690
- "name": "punctuation.definition.identifier.swift"
1691
- }
1692
- },
1693
- "repository": {
1694
- "associated-type": {
1695
- "name": "meta.definition.associatedtype.swift",
1696
- "begin": "\\b(associatedtype)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*",
1697
- "end": "(?!\\G)$|(?=[;}]|$)",
1698
- "patterns": [
1699
- {
1700
- "include": "#inheritance-clause"
1701
- },
1702
- {
1703
- "include": "#generic-where-clause"
1704
- },
1705
- {
1706
- "include": "#typealias-assignment"
1707
- }
1708
- ],
1709
- "beginCaptures": {
1710
- "1": {
1711
- "name": "keyword.other.declaration-specifier.swift"
1712
- },
1713
- "2": {
1714
- "name": "variable.language.associatedtype.swift"
1715
- },
1716
- "3": {
1717
- "name": "punctuation.definition.identifier.swift"
1718
- },
1719
- "4": {
1720
- "name": "punctuation.definition.identifier.swift"
1721
- }
1722
- }
1723
- },
1724
- "protocol-initializer": {
1725
- "name": "meta.definition.function.initializer.swift",
1726
- "begin": "(?\u003c!\\.)\\b(init[?!]*(?# only one is valid, but we want the in⇥ snippet to produce something that looks good))\\s*(?=\\(|\u003c)",
1727
- "end": "$|(?=;|//|/\\*|\\})",
1728
- "patterns": [
1729
- {
1730
- "include": "#comments"
1731
- },
1732
- {
1733
- "include": "#generic-parameter-clause"
1734
- },
1735
- {
1736
- "include": "#parameter-clause"
1737
- },
1738
- {
1739
- "name": "keyword.control.exception.swift",
1740
- "match": "\\b(?:throws|rethrows)\\b"
1741
- },
1742
- {
1743
- "include": "#generic-where-clause"
1744
- },
1745
- {
1746
- "name": "invalid.illegal.function-body-not-allowed-in-protocol.swift",
1747
- "begin": "\\{",
1748
- "end": "\\}",
1749
- "patterns": [
1750
- {
1751
- "include": "$self"
1752
- }
1753
- ],
1754
- "beginCaptures": {
1755
- "0": {
1756
- "name": "punctuation.section.function.begin.swift"
1757
- }
1758
- },
1759
- "endCaptures": {
1760
- "0": {
1761
- "name": "punctuation.section.function.end.swift"
1762
- }
1763
- }
1764
- }
1765
- ],
1766
- "beginCaptures": {
1767
- "1": {
1768
- "name": "storage.type.function.swift",
1769
- "patterns": [
1770
- {
1771
- "name": "invalid.illegal.character-not-allowed-here.swift",
1772
- "match": "(?\u003c=[?!])[?!]+"
1773
- }
1774
- ]
1775
- }
1776
- }
1777
- },
1778
- "protocol-method": {
1779
- "name": "meta.definition.function.swift",
1780
- "begin": "(?x)\n\t\t\t\t\t\t\t\t\\b\n\t\t\t\t\t\t\t\t(func)\n\t\t\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e)\n\t\t \t\t\t\t\t\t | (?:\n\t\t \t\t\t\t\t\t\t\t(\n\t\t \t\t\t\t\t\t\t\t\t(?\u003coph\u003e\t\t\t\t\t\t\t\t# operator-head\n\t\t \t\t\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t \t\t\t\t\t\t\t\t\t)\n\t\t \t\t\t\t\t\t\t\t\t(\n\t\t \t\t\t\t\t\t\t\t\t\t\\g\u003coph\u003e\n\t\t \t\t\t\t\t\t\t\t\t | (?\u003copc\u003e\t\t\t\t\t\t\t\t# operator-character\n\t\t \t\t\t\t\t\t\t\t\t\t\t[\\x{0300}-\\x{036F}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t \t\t\t\t\t\t\t\t\t\t)\n\t\t \t\t\t\t\t\t\t\t\t)*\n\t\t \t\t\t\t\t\t\t\t)\n\t\t \t\t\t\t\t\t\t | ( \\. ( \\g\u003coph\u003e | \\g\u003copc\u003e | \\. )+ )\t\t\t# Dot operators\n\t\t \t\t\t\t\t\t\t)\n\t\t \t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t\t\t(?=\\(|\u003c)\n\t\t\t\t\t\t\t",
1781
- "end": "$|(?=;|//|/\\*|\\})",
1782
- "patterns": [
1783
- {
1784
- "include": "#comments"
1785
- },
1786
- {
1787
- "include": "#generic-parameter-clause"
1788
- },
1789
- {
1790
- "include": "#parameter-clause"
1791
- },
1792
- {
1793
- "include": "#function-result"
1794
- },
1795
- {
1796
- "name": "keyword.control.exception.swift",
1797
- "match": "\\b(?:throws|rethrows)\\b"
1798
- },
1799
- {
1800
- "include": "#generic-where-clause"
1801
- },
1802
- {
1803
- "name": "invalid.illegal.function-body-not-allowed-in-protocol.swift",
1804
- "begin": "\\{",
1805
- "end": "\\}",
1806
- "patterns": [
1807
- {
1808
- "include": "$self"
1809
- }
1810
- ],
1811
- "beginCaptures": {
1812
- "0": {
1813
- "name": "punctuation.section.function.begin.swift"
1814
- }
1815
- },
1816
- "endCaptures": {
1817
- "0": {
1818
- "name": "punctuation.section.function.end.swift"
1819
- }
1820
- }
1821
- }
1822
- ],
1823
- "beginCaptures": {
1824
- "1": {
1825
- "name": "storage.type.function.swift"
1826
- },
1827
- "2": {
1828
- "name": "entity.name.function.swift"
1829
- },
1830
- "3": {
1831
- "name": "punctuation.definition.identifier.swift"
1832
- },
1833
- "4": {
1834
- "name": "punctuation.definition.identifier.swift"
1835
- }
1836
- }
1837
- }
1838
- }
1839
- },
1840
- "type": {
1841
- "patterns": [
1842
- {
1843
- "name": "meta.definition.type.$1.swift",
1844
- "begin": "\\b(class(?!\\s+(?:func|var|let)\\b)|struct)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))",
1845
- "end": "(?\u003c=\\})",
1846
- "patterns": [
1847
- {
1848
- "include": "#comments"
1849
- },
1850
- {
1851
- "include": "#generic-parameter-clause"
1852
- },
1853
- {
1854
- "include": "#generic-where-clause"
1855
- },
1856
- {
1857
- "include": "#inheritance-clause"
1858
- },
1859
- {
1860
- "name": "meta.definition.type.body.swift",
1861
- "begin": "\\{",
1862
- "end": "\\}",
1863
- "patterns": [
1864
- {
1865
- "include": "$self"
1866
- }
1867
- ],
1868
- "beginCaptures": {
1869
- "0": {
1870
- "name": "punctuation.definition.type.begin.swift"
1871
- }
1872
- },
1873
- "endCaptures": {
1874
- "0": {
1875
- "name": "punctuation.definition.type.end.swift"
1876
- }
1877
- }
1878
- }
1879
- ],
1880
- "beginCaptures": {
1881
- "1": {
1882
- "name": "storage.type.$1.swift"
1883
- },
1884
- "2": {
1885
- "name": "entity.name.type.$1.swift"
1886
- },
1887
- "3": {
1888
- "name": "punctuation.definition.identifier.swift"
1889
- },
1890
- "4": {
1891
- "name": "punctuation.definition.identifier.swift"
1892
- }
1893
- }
1894
- },
1895
- {
1896
- "include": "#type-enum"
1897
- }
1898
- ]
1899
- },
1900
- "type-enum": {
1901
- "name": "meta.definition.type.$1.swift",
1902
- "begin": "\\b(enum)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))",
1903
- "end": "(?\u003c=\\})",
1904
- "patterns": [
1905
- {
1906
- "include": "#comments"
1907
- },
1908
- {
1909
- "include": "#generic-parameter-clause"
1910
- },
1911
- {
1912
- "include": "#generic-where-clause"
1913
- },
1914
- {
1915
- "include": "#inheritance-clause"
1916
- },
1917
- {
1918
- "name": "meta.definition.type.body.swift",
1919
- "begin": "\\{",
1920
- "end": "\\}",
1921
- "patterns": [
1922
- {
1923
- "include": "#enum-case-clause"
1924
- },
1925
- {
1926
- "include": "$self"
1927
- }
1928
- ],
1929
- "beginCaptures": {
1930
- "0": {
1931
- "name": "punctuation.definition.type.begin.swift"
1932
- }
1933
- },
1934
- "endCaptures": {
1935
- "0": {
1936
- "name": "punctuation.definition.type.end.swift"
1937
- }
1938
- }
1939
- }
1940
- ],
1941
- "beginCaptures": {
1942
- "1": {
1943
- "name": "storage.type.$1.swift"
1944
- },
1945
- "2": {
1946
- "name": "entity.name.type.$1.swift"
1947
- },
1948
- "3": {
1949
- "name": "punctuation.definition.identifier.swift"
1950
- },
1951
- "4": {
1952
- "name": "punctuation.definition.identifier.swift"
1953
- }
1954
- },
1955
- "repository": {
1956
- "associated-values": {
1957
- "begin": "\\G\\(",
1958
- "end": "\\)",
1959
- "patterns": [
1960
- {
1961
- "include": "#comments"
1962
- },
1963
- {
1964
- "begin": "(?x)\n\t\t\t\t\t\t\t\t\t\t(?:(_)|((?\u003cq1\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*\\k\u003cq1\u003e))\n\t\t\t\t\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t\t\t\t\t(((?\u003cq2\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*\\k\u003cq2\u003e))\n\t\t\t\t\t\t\t\t\t\t\\s*(:)",
1965
- "end": "(?=[,)\\]])",
1966
- "patterns": [
1967
- {
1968
- "include": "#available-types"
1969
- }
1970
- ],
1971
- "beginCaptures": {
1972
- "1": {
1973
- "name": "entity.name.function.swift"
1974
- },
1975
- "2": {
1976
- "name": "invalid.illegal.distinct-labels-not-allowed.swift"
1977
- },
1978
- "5": {
1979
- "name": "variable.parameter.function.swift"
1980
- },
1981
- "7": {
1982
- "name": "punctuation.separator.argument-label.swift"
1983
- }
1984
- }
1985
- },
1986
- {
1987
- "begin": "(((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*\\k\u003cq\u003e))\\s*(:)",
1988
- "end": "(?=[,)\\]])",
1989
- "patterns": [
1990
- {
1991
- "include": "#available-types"
1992
- }
1993
- ],
1994
- "beginCaptures": {
1995
- "1": {
1996
- "name": "entity.name.function.swift"
1997
- },
1998
- "2": {
1999
- "name": "variable.parameter.function.swift"
2000
- },
2001
- "4": {
2002
- "name": "punctuation.separator.argument-label.swift"
2003
- }
2004
- }
2005
- },
2006
- {
2007
- "begin": "(?![,)\\]])(?=\\S)",
2008
- "end": "(?=[,)\\]])",
2009
- "patterns": [
2010
- {
2011
- "include": "#available-types"
2012
- },
2013
- {
2014
- "name": "invalid.illegal.extra-colon-in-parameter-list.swift",
2015
- "match": ":"
2016
- }
2017
- ]
2018
- }
2019
- ],
2020
- "beginCaptures": {
2021
- "0": {
2022
- "name": "punctuation.definition.parameters.begin.swift"
2023
- }
2024
- },
2025
- "endCaptures": {
2026
- "0": {
2027
- "name": "punctuation.definition.parameters.end.swift"
2028
- }
2029
- }
2030
- },
2031
- "enum-case": {
2032
- "begin": "(?x)((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*",
2033
- "end": "(?\u003c=\\))|(?![=(])",
2034
- "patterns": [
2035
- {
2036
- "include": "#comments"
2037
- },
2038
- {
2039
- "include": "#associated-values"
2040
- },
2041
- {
2042
- "include": "#raw-value-assignment"
2043
- }
2044
- ],
2045
- "beginCaptures": {
2046
- "1": {
2047
- "name": "constant.other.swift"
2048
- }
2049
- }
2050
- },
2051
- "enum-case-clause": {
2052
- "begin": "\\b(case)\\b\\s*",
2053
- "end": "(?=[;}])|(?!\\G)(?!//|/\\*)(?=[^\\s,])",
2054
- "patterns": [
2055
- {
2056
- "include": "#comments"
2057
- },
2058
- {
2059
- "include": "#enum-case"
2060
- },
2061
- {
2062
- "include": "#more-cases"
2063
- }
2064
- ],
2065
- "beginCaptures": {
2066
- "1": {
2067
- "name": "storage.type.enum.case.swift"
2068
- }
2069
- }
2070
- },
2071
- "more-cases": {
2072
- "name": "meta.enum-case.more-cases",
2073
- "begin": ",\\s*",
2074
- "end": "(?!\\G)(?!//|/\\*)(?=[;}]|[^\\s,])",
2075
- "patterns": [
2076
- {
2077
- "include": "#comments"
2078
- },
2079
- {
2080
- "include": "#enum-case"
2081
- },
2082
- {
2083
- "include": "#more-cases"
2084
- }
2085
- ]
2086
- },
2087
- "raw-value-assignment": {
2088
- "begin": "(=)\\s*",
2089
- "end": "(?!\\G)",
2090
- "patterns": [
2091
- {
2092
- "include": "#comments"
2093
- },
2094
- {
2095
- "include": "#literals"
2096
- }
2097
- ],
2098
- "beginCaptures": {
2099
- "1": {
2100
- "name": "keyword.operator.assignment.swift"
2101
- }
2102
- }
2103
- }
2104
- }
2105
- },
2106
- "type-identifier": {
2107
- "begin": "((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*",
2108
- "end": "(?!\u003c)",
2109
- "patterns": [
2110
- {
2111
- "begin": "(?=\u003c)",
2112
- "end": "(?!\\G)",
2113
- "patterns": [
2114
- {
2115
- "include": "#generic-argument-clause"
2116
- }
2117
- ]
2118
- }
2119
- ],
2120
- "beginCaptures": {
2121
- "1": {
2122
- "name": "meta.type-name.swift",
2123
- "patterns": [
2124
- {
2125
- "include": "#builtin-types"
2126
- }
2127
- ]
2128
- },
2129
- "2": {
2130
- "name": "punctuation.definition.identifier.swift"
2131
- },
2132
- "3": {
2133
- "name": "punctuation.definition.identifier.swift"
2134
- }
2135
- }
2136
- },
2137
- "typealias": {
2138
- "name": "meta.definition.typealias.swift",
2139
- "begin": "\\b(typealias)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*",
2140
- "end": "(?!\\G)$|(?=;|//|/\\*|$)",
2141
- "patterns": [
2142
- {
2143
- "begin": "\\G(?=\u003c)",
2144
- "end": "(?!\\G)",
2145
- "patterns": [
2146
- {
2147
- "include": "#generic-parameter-clause"
2148
- }
2149
- ]
2150
- },
2151
- {
2152
- "include": "#typealias-assignment"
2153
- }
2154
- ],
2155
- "beginCaptures": {
2156
- "1": {
2157
- "name": "keyword.other.declaration-specifier.swift"
2158
- },
2159
- "2": {
2160
- "name": "entity.name.type.typealias.swift"
2161
- },
2162
- "3": {
2163
- "name": "punctuation.definition.identifier.swift"
2164
- },
2165
- "4": {
2166
- "name": "punctuation.definition.identifier.swift"
2167
- }
2168
- }
2169
- },
2170
- "typealias-assignment": {
2171
- "begin": "(=)\\s*",
2172
- "end": "(?!\\G)$|(?=;|//|/\\*|$)",
2173
- "patterns": [
2174
- {
2175
- "include": "#available-types"
2176
- }
2177
- ],
2178
- "beginCaptures": {
2179
- "1": {
2180
- "name": "keyword.operator.assignment.swift"
2181
- }
2182
- }
2183
- },
2184
- "types-precedencegroup": {
2185
- "patterns": [
2186
- {
2187
- "name": "support.type.swift",
2188
- "match": "\\b(?:BitwiseShift|Assignment|RangeFormation|Casting|Addition|NilCoalescing|Comparison|LogicalConjunction|LogicalDisjunction|Default|Ternary|Multiplication|FunctionArrow)Precedence\\b"
2189
- }
2190
- ]
2191
- }
2192
- }
2193
- },
2194
- "expressions": {
2195
- "patterns": [
2196
- {
2197
- "include": "#comments"
2198
- },
2199
- {
2200
- "include": "#code-block"
2201
- },
2202
- {
2203
- "include": "#attributes"
2204
- },
2205
- {
2206
- "include": "#closure-parameter"
2207
- },
2208
- {
2209
- "include": "#literals"
2210
- },
2211
- {
2212
- "include": "#operators"
2213
- },
2214
- {
2215
- "include": "#builtin-types"
2216
- },
2217
- {
2218
- "include": "#builtin-functions"
2219
- },
2220
- {
2221
- "include": "#builtin-global-functions"
2222
- },
2223
- {
2224
- "include": "#builtin-properties"
2225
- },
2226
- {
2227
- "include": "#compound-name"
2228
- },
2229
- {
2230
- "include": "#keywords"
2231
- },
2232
- {
2233
- "include": "#function-call-expression"
2234
- },
2235
- {
2236
- "include": "#subscript-expression"
2237
- },
2238
- {
2239
- "include": "#parenthesized-expression"
2240
- },
2241
- {
2242
- "include": "#member-reference"
2243
- },
2244
- {
2245
- "include": "#availability-condition"
2246
- },
2247
- {
2248
- "name": "support.variable.discard-value.swift",
2249
- "match": "\\b_\\b"
2250
- }
2251
- ],
2252
- "repository": {
2253
- "availability-condition": {
2254
- "begin": "\\B(#available)(\\()",
2255
- "end": "\\)",
2256
- "patterns": [
2257
- {
2258
- "match": "\\s*\\b((?:iOS|macOS|OSX|watchOS|tvOS|UIKitForMac)(?:ApplicationExtension)?)\\b(?:\\s+([0-9]+(?:\\.[0-9]+)*\\b))",
2259
- "captures": {
2260
- "1": {
2261
- "name": "keyword.other.platform.os.swift"
2262
- },
2263
- "2": {
2264
- "name": "constant.numeric.swift"
2265
- }
2266
- }
2267
- },
2268
- {
2269
- "match": "(\\*)\\s*(.*?)(?=[,)])",
2270
- "captures": {
2271
- "1": {
2272
- "name": "keyword.other.platform.all.swift"
2273
- },
2274
- "2": {
2275
- "name": "invalid.illegal.character-not-allowed-here.swift"
2276
- }
2277
- }
2278
- },
2279
- {
2280
- "name": "invalid.illegal.character-not-allowed-here.swift",
2281
- "match": "[^\\s,)]+"
2282
- }
2283
- ],
2284
- "beginCaptures": {
2285
- "1": {
2286
- "name": "support.function.availability-condition.swift"
2287
- },
2288
- "2": {
2289
- "name": "punctuation.definition.arguments.begin.swift"
2290
- }
2291
- },
2292
- "endCaptures": {
2293
- "0": {
2294
- "name": "punctuation.definition.arguments.end.swift"
2295
- }
2296
- }
2297
- },
2298
- "closure-parameter": {
2299
- "name": "variable.language.closure-parameter.swift",
2300
- "match": "\\$[0-9]+"
2301
- },
2302
- "compound-name": {
2303
- "match": "(?x)\n\t\t\t\t\t\t((?\u003cq1\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq1\u003e)) \t\t# function name\n\t\t\t\t\t\t\\(\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t((?\u003cq2\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq2\u003e)) \t# argument label\n\t\t\t\t\t\t\t\t\t:\t\t\t\t\t\t\t\t\t\t\t\t# colon\n\t\t\t\t\t\t\t\t)+\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\\)\n\t\t\t\t\t",
2304
- "captures": {
2305
- "1": {
2306
- "name": "entity.name.function.compound-name.swift"
2307
- },
2308
- "2": {
2309
- "name": "punctuation.definition.entity.swift"
2310
- },
2311
- "3": {
2312
- "name": "punctuation.definition.entity.swift"
2313
- },
2314
- "4": {
2315
- "patterns": [
2316
- {
2317
- "name": "entity.name.function.compound-name.swift",
2318
- "match": "(?\u003cq\u003e`?)(?!_:)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e):",
2319
- "captures": {
2320
- "1": {
2321
- "name": "punctuation.definition.entity.swift"
2322
- },
2323
- "2": {
2324
- "name": "punctuation.definition.entity.swift"
2325
- }
2326
- }
2327
- }
2328
- ]
2329
- }
2330
- }
2331
- },
2332
- "expression-element-list": {
2333
- "patterns": [
2334
- {
2335
- "include": "#comments"
2336
- },
2337
- {
2338
- "begin": "((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*(:)",
2339
- "end": "(?=[,)\\]])",
2340
- "patterns": [
2341
- {
2342
- "include": "#expressions"
2343
- }
2344
- ],
2345
- "beginCaptures": {
2346
- "1": {
2347
- "name": "support.function.any-method.swift"
2348
- },
2349
- "2": {
2350
- "name": "punctuation.definition.identifier.swift"
2351
- },
2352
- "3": {
2353
- "name": "punctuation.definition.identifier.swift"
2354
- },
2355
- "4": {
2356
- "name": "punctuation.separator.argument-label.swift"
2357
- }
2358
- }
2359
- },
2360
- {
2361
- "begin": "(?![,)\\]])(?=\\S)",
2362
- "end": "(?=[,)\\]])",
2363
- "patterns": [
2364
- {
2365
- "include": "#expressions"
2366
- }
2367
- ]
2368
- }
2369
- ]
2370
- },
2371
- "function-call-expression": {
2372
- "patterns": [
2373
- {
2374
- "name": "meta.function-call.swift",
2375
- "begin": "((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*(\\()",
2376
- "end": "\\)",
2377
- "patterns": [
2378
- {
2379
- "include": "#expression-element-list"
2380
- }
2381
- ],
2382
- "beginCaptures": {
2383
- "1": {
2384
- "name": "support.function.any-method.swift"
2385
- },
2386
- "2": {
2387
- "name": "punctuation.definition.identifier.swift"
2388
- },
2389
- "3": {
2390
- "name": "punctuation.definition.identifier.swift"
2391
- },
2392
- "4": {
2393
- "name": "punctuation.definition.arguments.begin.swift"
2394
- }
2395
- },
2396
- "endCaptures": {
2397
- "0": {
2398
- "name": "punctuation.definition.arguments.end.swift"
2399
- }
2400
- }
2401
- },
2402
- {
2403
- "name": "meta.function-call.swift",
2404
- "begin": "(?\u003c=[`\\])}\u003e\\p{L}_\\p{N}\\p{M}])\\s*(\\()",
2405
- "end": "\\)",
2406
- "patterns": [
2407
- {
2408
- "include": "#expression-element-list"
2409
- }
2410
- ],
2411
- "beginCaptures": {
2412
- "1": {
2413
- "name": "punctuation.definition.arguments.begin.swift"
2414
- }
2415
- },
2416
- "endCaptures": {
2417
- "0": {
2418
- "name": "punctuation.definition.arguments.end.swift"
2419
- }
2420
- }
2421
- }
2422
- ]
2423
- },
2424
- "member-reference": {
2425
- "patterns": [
2426
- {
2427
- "match": "(?\u003c=\\.)((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))",
2428
- "captures": {
2429
- "1": {
2430
- "name": "variable.other.swift"
2431
- },
2432
- "2": {
2433
- "name": "punctuation.definition.identifier.swift"
2434
- },
2435
- "3": {
2436
- "name": "punctuation.definition.identifier.swift"
2437
- }
2438
- }
2439
- }
2440
- ]
2441
- },
2442
- "parenthesized-expression": {
2443
- "begin": "\\(",
2444
- "end": "\\)",
2445
- "patterns": [
2446
- {
2447
- "include": "#expression-element-list"
2448
- }
2449
- ],
2450
- "beginCaptures": {
2451
- "0": {
2452
- "name": "punctuation.section.tuple.begin.swift"
2453
- }
2454
- },
2455
- "endCaptures": {
2456
- "0": {
2457
- "name": "punctuation.section.tuple.end.swift"
2458
- }
2459
- }
2460
- },
2461
- "subscript-expression": {
2462
- "name": "meta.subscript-expression.swift",
2463
- "begin": "(?\u003c=[`\\p{L}_\\p{N}\\p{M}])\\s*(\\[)",
2464
- "end": "\\]",
2465
- "patterns": [
2466
- {
2467
- "include": "#expression-element-list"
2468
- }
2469
- ],
2470
- "beginCaptures": {
2471
- "1": {
2472
- "name": "punctuation.definition.arguments.begin.swift"
2473
- }
2474
- },
2475
- "endCaptures": {
2476
- "0": {
2477
- "name": "punctuation.definition.arguments.end.swift"
2478
- }
2479
- }
2480
- }
2481
- }
2482
- },
2483
- "keywords": {
2484
- "patterns": [
2485
- {
2486
- "name": "keyword.control.branch.swift",
2487
- "match": "(?\u003c!\\.)\\b(?:if|else|guard|where|switch|case|default|fallthrough)\\b"
2488
- },
2489
- {
2490
- "name": "keyword.control.transfer.swift",
2491
- "match": "(?\u003c!\\.)\\b(?:continue|break|fallthrough|return)\\b"
2492
- },
2493
- {
2494
- "name": "keyword.control.loop.swift",
2495
- "match": "(?\u003c!\\.)\\b(?:while|for|in)\\b"
2496
- },
2497
- {
2498
- "match": "(?\u003c!\\.)\\b(repeat)\\b(\\s*)",
2499
- "captures": {
2500
- "1": {
2501
- "name": "keyword.control.loop.swift"
2502
- },
2503
- "2": {
2504
- "name": "punctuation.whitespace.trailing.repeat.swift"
2505
- }
2506
- }
2507
- },
2508
- {
2509
- "name": "keyword.control.defer.swift",
2510
- "match": "(?\u003c!\\.)\\bdefer\\b"
2511
- },
2512
- {
2513
- "name": "keyword.control.exception.swift",
2514
- "match": "(?\u003c!\\.)\\b(?:catch|throws?|rethrows|try)\\b|\\btry[?!]\\B"
2515
- },
2516
- {
2517
- "match": "(?\u003c!\\.)\\b(do)\\b(\\s*)",
2518
- "captures": {
2519
- "1": {
2520
- "name": "keyword.control.exception.swift"
2521
- },
2522
- "2": {
2523
- "name": "punctuation.whitespace.trailing.do.swift"
2524
- }
2525
- }
2526
- },
2527
- {
2528
- "name": "keyword.other.declaration-specifier.swift",
2529
- "match": "(?\u003c!\\.)\\b(?:associatedtype|let|operator|typealias|var)\\b"
2530
- },
2531
- {
2532
- "name": "storage.type.$1.swift",
2533
- "match": "(?\u003c!\\.)\\b(class|enum|extension|precedencegroup|protocol|struct)\\b"
2534
- },
2535
- {
2536
- "name": "storage.modifier.swift",
2537
- "match": "(?\u003c!\\.)\\b(?:inout|static|final|lazy|mutating|nonmutating|optional|indirect|required|override|dynamic|convenience|infix|prefix|postfix)\\b"
2538
- },
2539
- {
2540
- "name": "storage.type.function.swift",
2541
- "match": "\\binit[?!]|\\binit\\b|(?\u003c!\\.)\\b(?:func|deinit|subscript|didSet|get|set|willSet)\\b"
2542
- },
2543
- {
2544
- "name": "keyword.other.declaration-specifier.accessibility.swift",
2545
- "match": "(?\u003c!\\.)\\b(?:fileprivate|private|internal|public|open)\\b"
2546
- },
2547
- {
2548
- "name": "keyword.other.capture-specifier.swift",
2549
- "match": "(?\u003c!\\.)\\b(?:weak|unowned)\\b|\\bunowned\\((?:safe|unsafe)\\)"
2550
- },
2551
- {
2552
- "match": "(?\u003c=\\.)(?:(dynamicType|self)|(Protocol|Type))\\b",
2553
- "captures": {
2554
- "1": {
2555
- "name": "keyword.operator.type.swift"
2556
- },
2557
- "2": {
2558
- "name": "keyword.operator.type.metatype.swift"
2559
- }
2560
- }
2561
- },
2562
- {
2563
- "name": "variable.language.swift",
2564
- "match": "(?\u003c!\\.)\\b(?:super|self|Self)\\b"
2565
- },
2566
- {
2567
- "name": "support.variable.swift",
2568
- "match": "\\B(?:#file|#filePath|#fileID|#line|#column|#function|#dsohandle)\\b|\\b(?:__FILE__|__LINE__|__COLUMN__|__FUNCTION__|__DSO_HANDLE__)\\b"
2569
- },
2570
- {
2571
- "name": "keyword.control.import.swift",
2572
- "match": "(?\u003c!\\.)\\bimport\\b"
2573
- }
2574
- ]
2575
- },
2576
- "literals": {
2577
- "patterns": [
2578
- {
2579
- "include": "#boolean"
2580
- },
2581
- {
2582
- "include": "#numeric"
2583
- },
2584
- {
2585
- "include": "#string"
2586
- },
2587
- {
2588
- "name": "constant.language.nil.swift",
2589
- "match": "\\bnil\\b"
2590
- },
2591
- {
2592
- "name": "support.function.object-literal.swift",
2593
- "match": "\\B#(colorLiteral|imageLiteral|fileLiteral)\\b"
2594
- },
2595
- {
2596
- "name": "support.function.key-path.swift",
2597
- "match": "\\B#keyPath\\b"
2598
- },
2599
- {
2600
- "begin": "\\B(#selector)(\\()(?:\\s*(getter|setter)\\s*(:))?",
2601
- "end": "\\)",
2602
- "patterns": [
2603
- {
2604
- "include": "#expressions"
2605
- }
2606
- ],
2607
- "beginCaptures": {
2608
- "1": {
2609
- "name": "support.function.selector-reference.swift"
2610
- },
2611
- "2": {
2612
- "name": "punctuation.definition.arguments.begin.swift"
2613
- },
2614
- "3": {
2615
- "name": "support.variable.parameter.swift"
2616
- },
2617
- "4": {
2618
- "name": "punctuation.separator.argument-label.swift"
2619
- }
2620
- },
2621
- "endCaptures": {
2622
- "0": {
2623
- "name": "punctuation.definition.arguments.end.swift"
2624
- }
2625
- }
2626
- }
2627
- ],
2628
- "repository": {
2629
- "boolean": {
2630
- "name": "constant.language.boolean.swift",
2631
- "match": "\\b(true|false)\\b"
2632
- },
2633
- "numeric": {
2634
- "patterns": [
2635
- {
2636
- "name": "constant.numeric.float.decimal.swift",
2637
- "match": "(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)[0-9][0-9_]*(?=\\.[0-9]|[eE])(?:\\.[0-9][0-9_]*)?(?:[eE][-+]?[0-9][0-9_]*)?\\b(?!\\.[0-9])"
2638
- },
2639
- {
2640
- "name": "constant.numeric.float.hexadecimal.swift",
2641
- "match": "(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)(?:\\.[0-9a-fA-F][0-9a-fA-F_]*)?[pP][-+]?[0-9][0-9_]*\\b(?!\\.[0-9])"
2642
- },
2643
- {
2644
- "name": "invalid.illegal.numeric.float.invalid-exponent.swift",
2645
- "match": "(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)(?:\\.[0-9a-fA-F][0-9a-fA-F_]*)?(?:[pP][-+]?\\w*)\\b(?!\\.[0-9])"
2646
- },
2647
- {
2648
- "name": "invalid.illegal.numeric.float.missing-exponent.swift",
2649
- "match": "(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)\\.[0-9][\\w.]*"
2650
- },
2651
- {
2652
- "name": "invalid.illegal.numeric.float.missing-leading-zero.swift",
2653
- "match": "(?\u003c=\\s|^)\\-?\\.[0-9][\\w.]*"
2654
- },
2655
- {
2656
- "name": "invalid.illegal.numeric.leading-underscore.swift",
2657
- "match": "(\\B\\-|\\b)0[box]_[0-9a-fA-F_]*(?:[pPeE][+-]?\\w+)?[\\w.]+"
2658
- },
2659
- {
2660
- "match": "(?\u003c=[\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)[0-9]+\\b"
2661
- },
2662
- {
2663
- "name": "constant.numeric.integer.binary.swift",
2664
- "match": "(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0b[01][01_]*\\b(?!\\.[0-9])"
2665
- },
2666
- {
2667
- "name": "constant.numeric.integer.octal.swift",
2668
- "match": "(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0o[0-7][0-7_]*\\b(?!\\.[0-9])"
2669
- },
2670
- {
2671
- "name": "constant.numeric.integer.decimal.swift",
2672
- "match": "(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)[0-9][0-9_]*\\b(?!\\.[0-9])"
2673
- },
2674
- {
2675
- "name": "constant.numeric.integer.hexadecimal.swift",
2676
- "match": "(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0x[0-9a-fA-F][0-9a-fA-F_]*\\b(?!\\.[0-9])"
2677
- },
2678
- {
2679
- "name": "invalid.illegal.numeric.other.swift",
2680
- "match": "(\\B\\-|\\b)[0-9][\\w.]*"
2681
- }
2682
- ]
2683
- },
2684
- "string": {
2685
- "patterns": [
2686
- {
2687
- "name": "string.quoted.double.block.swift",
2688
- "begin": "\"\"\"",
2689
- "end": "\"\"\"(#*)",
2690
- "patterns": [
2691
- {
2692
- "name": "invalid.illegal.content-after-opening-delimiter.swift",
2693
- "match": "\\G.+(?=\"\"\")|\\G.+"
2694
- },
2695
- {
2696
- "name": "constant.character.escape.newline.swift",
2697
- "match": "\\\\\\s*\\n"
2698
- },
2699
- {
2700
- "include": "#string-guts"
2701
- },
2702
- {
2703
- "name": "invalid.illegal.content-before-closing-delimiter.swift",
2704
- "match": "\\S((?!\\\\\\().)*(?=\"\"\")"
2705
- }
2706
- ],
2707
- "beginCaptures": {
2708
- "0": {
2709
- "name": "punctuation.definition.string.begin.swift"
2710
- }
2711
- },
2712
- "endCaptures": {
2713
- "0": {
2714
- "name": "punctuation.definition.string.end.swift"
2715
- },
2716
- "1": {
2717
- "name": "invalid.illegal.extra-closing-delimiter.swift"
2718
- }
2719
- }
2720
- },
2721
- {
2722
- "name": "string.quoted.double.block.raw.swift",
2723
- "begin": "#\"\"\"",
2724
- "end": "\"\"\"#(#*)",
2725
- "patterns": [
2726
- {
2727
- "name": "invalid.illegal.content-after-opening-delimiter.swift",
2728
- "match": "\\G.+(?=\"\"\")|\\G.+"
2729
- },
2730
- {
2731
- "name": "constant.character.escape.newline.swift",
2732
- "match": "\\\\#\\s*\\n"
2733
- },
2734
- {
2735
- "include": "#raw-string-guts"
2736
- },
2737
- {
2738
- "name": "invalid.illegal.content-before-closing-delimiter.swift",
2739
- "match": "\\S((?!\\\\#\\().)*(?=\"\"\")"
2740
- }
2741
- ],
2742
- "beginCaptures": {
2743
- "0": {
2744
- "name": "punctuation.definition.string.begin.swift"
2745
- }
2746
- },
2747
- "endCaptures": {
2748
- "0": {
2749
- "name": "punctuation.definition.string.end.swift"
2750
- },
2751
- "1": {
2752
- "name": "invalid.illegal.extra-closing-delimiter.swift"
2753
- }
2754
- }
2755
- },
2756
- {
2757
- "name": "string.quoted.double.block.raw.swift",
2758
- "begin": "(##+)\"\"\"",
2759
- "end": "\"\"\"\\1(#*)",
2760
- "patterns": [
2761
- {
2762
- "name": "invalid.illegal.content-after-opening-delimiter.swift",
2763
- "match": "\\G.+(?=\"\"\")|\\G.+"
2764
- }
2765
- ],
2766
- "beginCaptures": {
2767
- "0": {
2768
- "name": "punctuation.definition.string.begin.swift"
2769
- }
2770
- },
2771
- "endCaptures": {
2772
- "0": {
2773
- "name": "punctuation.definition.string.end.swift"
2774
- },
2775
- "1": {
2776
- "name": "invalid.illegal.extra-closing-delimiter.swift"
2777
- }
2778
- }
2779
- },
2780
- {
2781
- "name": "string.quoted.double.single-line.swift",
2782
- "begin": "\"",
2783
- "end": "\"(#*)",
2784
- "patterns": [
2785
- {
2786
- "name": "invalid.illegal.returns-not-allowed.swift",
2787
- "match": "\\r|\\n"
2788
- },
2789
- {
2790
- "include": "#string-guts"
2791
- }
2792
- ],
2793
- "beginCaptures": {
2794
- "0": {
2795
- "name": "punctuation.definition.string.begin.swift"
2796
- }
2797
- },
2798
- "endCaptures": {
2799
- "0": {
2800
- "name": "punctuation.definition.string.end.swift"
2801
- },
2802
- "1": {
2803
- "name": "invalid.illegal.extra-closing-delimiter.swift"
2804
- }
2805
- }
2806
- },
2807
- {
2808
- "name": "string.quoted.double.single-line.raw.swift",
2809
- "begin": "(##+)\"",
2810
- "end": "\"\\1(#*)",
2811
- "patterns": [
2812
- {
2813
- "name": "invalid.illegal.returns-not-allowed.swift",
2814
- "match": "\\r|\\n"
2815
- }
2816
- ],
2817
- "beginCaptures": {
2818
- "0": {
2819
- "name": "punctuation.definition.string.begin.raw.swift"
2820
- }
2821
- },
2822
- "endCaptures": {
2823
- "0": {
2824
- "name": "punctuation.definition.string.end.raw.swift"
2825
- },
2826
- "1": {
2827
- "name": "invalid.illegal.extra-closing-delimiter.swift"
2828
- }
2829
- }
2830
- },
2831
- {
2832
- "name": "string.quoted.double.single-line.raw.swift",
2833
- "begin": "#\"",
2834
- "end": "\"#(#*)",
2835
- "patterns": [
2836
- {
2837
- "name": "invalid.illegal.returns-not-allowed.swift",
2838
- "match": "\\r|\\n"
2839
- },
2840
- {
2841
- "include": "#raw-string-guts"
2842
- }
2843
- ],
2844
- "beginCaptures": {
2845
- "0": {
2846
- "name": "punctuation.definition.string.begin.raw.swift"
2847
- }
2848
- },
2849
- "endCaptures": {
2850
- "0": {
2851
- "name": "punctuation.definition.string.end.raw.swift"
2852
- },
2853
- "1": {
2854
- "name": "invalid.illegal.extra-closing-delimiter.swift"
2855
- }
2856
- }
2857
- }
2858
- ],
2859
- "repository": {
2860
- "raw-string-guts": {
2861
- "patterns": [
2862
- {
2863
- "name": "constant.character.escape.swift",
2864
- "match": "\\\\#[0\\\\tnr\"']"
2865
- },
2866
- {
2867
- "name": "constant.character.escape.unicode.swift",
2868
- "match": "\\\\#u\\{[0-9a-fA-F]{1,8}\\}"
2869
- },
2870
- {
2871
- "name": "meta.embedded.line.swift",
2872
- "contentName": "source.swift",
2873
- "begin": "\\\\#\\(",
2874
- "end": "(\\))",
2875
- "patterns": [
2876
- {
2877
- "include": "$self"
2878
- },
2879
- {
2880
- "begin": "\\(",
2881
- "end": "\\)"
2882
- }
2883
- ],
2884
- "beginCaptures": {
2885
- "0": {
2886
- "name": "punctuation.section.embedded.begin.swift"
2887
- }
2888
- },
2889
- "endCaptures": {
2890
- "0": {
2891
- "name": "punctuation.section.embedded.end.swift"
2892
- },
2893
- "1": {
2894
- "name": "source.swift"
2895
- }
2896
- }
2897
- },
2898
- {
2899
- "name": "invalid.illegal.escape-not-recognized",
2900
- "match": "\\\\#."
2901
- }
2902
- ]
2903
- },
2904
- "string-guts": {
2905
- "patterns": [
2906
- {
2907
- "name": "constant.character.escape.swift",
2908
- "match": "\\\\[0\\\\tnr\"']"
2909
- },
2910
- {
2911
- "name": "constant.character.escape.unicode.swift",
2912
- "match": "\\\\u\\{[0-9a-fA-F]{1,8}\\}"
2913
- },
2914
- {
2915
- "name": "meta.embedded.line.swift",
2916
- "contentName": "source.swift",
2917
- "begin": "\\\\\\(",
2918
- "end": "(\\))",
2919
- "patterns": [
2920
- {
2921
- "include": "$self"
2922
- },
2923
- {
2924
- "begin": "\\(",
2925
- "end": "\\)"
2926
- }
2927
- ],
2928
- "beginCaptures": {
2929
- "0": {
2930
- "name": "punctuation.section.embedded.begin.swift"
2931
- }
2932
- },
2933
- "endCaptures": {
2934
- "0": {
2935
- "name": "punctuation.section.embedded.end.swift"
2936
- },
2937
- "1": {
2938
- "name": "source.swift"
2939
- }
2940
- }
2941
- },
2942
- {
2943
- "name": "invalid.illegal.escape-not-recognized",
2944
- "match": "\\\\."
2945
- }
2946
- ]
2947
- }
2948
- }
2949
- }
2950
- }
2951
- },
2952
- "operators": {
2953
- "patterns": [
2954
- {
2955
- "name": "keyword.operator.type-casting.swift",
2956
- "match": "\\b(is\\b|as([!?]\\B|\\b))"
2957
- },
2958
- {
2959
- "begin": "(?x)\n\t\t\t\t\t\t(?=\n\t\t\t\t\t\t\t(?\u003coph\u003e\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\n\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t | \\.\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\\g\u003coph\u003e\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t | \\.\n\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t",
2960
- "end": "(?!\\G)",
2961
- "patterns": [
2962
- {
2963
- "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(?\u003c=^|[\\s(\\[{,;:])\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t\t(?![\\s)\\]},;:]|\\z)\n\t\t\t\t\t\t\t",
2964
- "captures": {
2965
- "0": {
2966
- "patterns": [
2967
- {
2968
- "name": "keyword.operator.increment-or-decrement.swift",
2969
- "match": "\\G(\\+\\+|\\-\\-)$"
2970
- },
2971
- {
2972
- "name": "keyword.operator.arithmetic.unary.swift",
2973
- "match": "\\G(\\+|\\-)$"
2974
- },
2975
- {
2976
- "name": "keyword.operator.logical.not.swift",
2977
- "match": "\\G!$"
2978
- },
2979
- {
2980
- "name": "keyword.operator.bitwise.not.swift",
2981
- "match": "\\G~$"
2982
- },
2983
- {
2984
- "name": "keyword.operator.custom.prefix.swift",
2985
- "match": ".+"
2986
- }
2987
- ]
2988
- }
2989
- }
2990
- },
2991
- {
2992
- "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(?\u003c!^|[\\s(\\[{,;:])\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t\t(?=[\\s)\\]},;:]|\\z)\n\t\t\t\t\t\t\t",
2993
- "captures": {
2994
- "0": {
2995
- "patterns": [
2996
- {
2997
- "name": "keyword.operator.increment-or-decrement.swift",
2998
- "match": "\\G(\\+\\+|\\-\\-)$"
2999
- },
3000
- {
3001
- "name": "keyword.operator.increment-or-decrement.swift",
3002
- "match": "\\G!$"
3003
- },
3004
- {
3005
- "name": "keyword.operator.custom.postfix.swift",
3006
- "match": ".+"
3007
- }
3008
- ]
3009
- }
3010
- }
3011
- },
3012
- {
3013
- "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t",
3014
- "captures": {
3015
- "0": {
3016
- "patterns": [
3017
- {
3018
- "name": "keyword.operator.assignment.swift",
3019
- "match": "\\G=$"
3020
- },
3021
- {
3022
- "name": "keyword.operator.assignment.compound.swift",
3023
- "match": "\\G(\\+|\\-|\\*|/|%|\u003c\u003c|\u003e\u003e|\u0026|\\^|\\||\u0026\u0026|\\|\\|)=$"
3024
- },
3025
- {
3026
- "name": "keyword.operator.arithmetic.swift",
3027
- "match": "\\G(\\+|\\-|\\*|/)$"
3028
- },
3029
- {
3030
- "name": "keyword.operator.arithmetic.overflow.swift",
3031
- "match": "\\G\u0026(\\+|\\-|\\*)$"
3032
- },
3033
- {
3034
- "name": "keyword.operator.arithmetic.remainder.swift",
3035
- "match": "\\G%$"
3036
- },
3037
- {
3038
- "name": "keyword.operator.comparison.swift",
3039
- "match": "\\G(==|!=|\u003e|\u003c|\u003e=|\u003c=|~=)$"
3040
- },
3041
- {
3042
- "name": "keyword.operator.coalescing.swift",
3043
- "match": "\\G\\?\\?$"
3044
- },
3045
- {
3046
- "name": "keyword.operator.logical.swift",
3047
- "match": "\\G(\u0026\u0026|\\|\\|)$"
3048
- },
3049
- {
3050
- "name": "keyword.operator.bitwise.swift",
3051
- "match": "\\G(\u0026|\\||\\^|\u003c\u003c|\u003e\u003e)$"
3052
- },
3053
- {
3054
- "name": "keyword.operator.bitwise.swift",
3055
- "match": "\\G(===|!==)$"
3056
- },
3057
- {
3058
- "name": "keyword.operator.ternary.swift",
3059
- "match": "\\G\\?$"
3060
- },
3061
- {
3062
- "name": "keyword.operator.custom.infix.swift",
3063
- "match": ".+"
3064
- }
3065
- ]
3066
- }
3067
- }
3068
- },
3069
- {
3070
- "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(?\u003c=^|[\\s(\\[{,;:])\n\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t\t | [/=\\-+!*%\u003c\u003e\u0026|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t\t(?![\\s)\\]},;:]|\\z)\n\t\t\t\t\t\t\t",
3071
- "captures": {
3072
- "0": {
3073
- "patterns": [
3074
- {
3075
- "name": "keyword.operator.custom.prefix.dot.swift",
3076
- "match": ".+"
3077
- }
3078
- ]
3079
- }
3080
- }
3081
- },
3082
- {
3083
- "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(?\u003c!^|[\\s(\\[{,;:])\n\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t\t | [/=\\-+!*%\u003c\u003e\u0026|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t\t(?=[\\s)\\]},;:]|\\z)\n\t\t\t\t\t\t\t",
3084
- "captures": {
3085
- "0": {
3086
- "patterns": [
3087
- {
3088
- "name": "keyword.operator.custom.postfix.dot.swift",
3089
- "match": ".+"
3090
- }
3091
- ]
3092
- }
3093
- }
3094
- },
3095
- {
3096
- "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t\t | [/=\\-+!*%\u003c\u003e\u0026|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t",
3097
- "captures": {
3098
- "0": {
3099
- "patterns": [
3100
- {
3101
- "name": "keyword.operator.range.swift",
3102
- "match": "\\G\\.\\.[.\u003c]$"
3103
- },
3104
- {
3105
- "name": "keyword.operator.custom.infix.dot.swift",
3106
- "match": ".+"
3107
- }
3108
- ]
3109
- }
3110
- }
3111
- }
3112
- ]
3113
- },
3114
- {
3115
- "name": "keyword.operator.ternary.swift",
3116
- "match": ":"
3117
- }
3118
- ]
3119
- },
3120
- "root": {
3121
- "patterns": [
3122
- {
3123
- "include": "#compiler-control"
3124
- },
3125
- {
3126
- "include": "#declarations"
3127
- },
3128
- {
3129
- "include": "#expressions"
3130
- }
3131
- ]
3132
- }
3133
- }
3134
- }
1
+ {"name":"Swift","scopeName":"source.swift","patterns":[{"include":"#root"}],"repository":{"attributes":{"patterns":[{"name":"meta.attribute.available.swift","begin":"((@)available)(\\()","end":"\\)","patterns":[{"match":"\\b(swift|(?:iOS|macOS|OSX|watchOS|tvOS|UIKitForMac)(?:ApplicationExtension)?)\\b(?:\\s+([0-9]+(?:\\.[0-9]+)*\\b))?","captures":{"1":{"name":"keyword.other.platform.os.swift"},"2":{"name":"constant.numeric.swift"}}},{"begin":"\\b(introduced|deprecated|obsoleted)\\s*(:)\\s*","end":"(?!\\G)","patterns":[{"name":"constant.numeric.swift","match":"\\b[0-9]+(?:\\.[0-9]+)*\\b"}],"beginCaptures":{"1":{"name":"keyword.other.swift"},"2":{"name":"punctuation.separator.key-value.swift"}}},{"begin":"\\b(message|renamed)\\s*(:)\\s*(?=\")","end":"(?!\\G)","patterns":[{"include":"#literals"}],"beginCaptures":{"1":{"name":"keyword.other.swift"},"2":{"name":"punctuation.separator.key-value.swift"}}},{"match":"(?:(\\*)|\\b(deprecated|unavailable)\\b)\\s*(.*?)(?=[,)])","captures":{"1":{"name":"keyword.other.platform.all.swift"},"2":{"name":"keyword.other.swift"},"3":{"name":"invalid.illegal.character-not-allowed-here.swift"}}}],"beginCaptures":{"1":{"name":"storage.modifier.attribute.swift"},"2":{"name":"punctuation.definition.attribute.swift"},"3":{"name":"punctuation.definition.arguments.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.arguments.end.swift"}}},{"name":"meta.attribute.objc.swift","begin":"((@)objc)(\\()","end":"\\)","patterns":[{"name":"entity.name.function.swift","match":"\\w*(?::(?:\\w*:)*(\\w*))?","captures":{"1":{"name":"invalid.illegal.missing-colon-after-selector-piece.swift"}}}],"beginCaptures":{"1":{"name":"storage.modifier.attribute.swift"},"2":{"name":"punctuation.definition.attribute.swift"},"3":{"name":"punctuation.definition.arguments.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.arguments.end.swift"}}},{"name":"meta.attribute.swift","begin":"(@)(?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e)","end":"(?!\\G\\()","patterns":[{"name":"meta.arguments.attribute.swift","begin":"\\(","end":"\\)","patterns":[{"include":"#expressions"}],"beginCaptures":{"0":{"name":"punctuation.definition.arguments.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.arguments.end.swift"}}}],"beginCaptures":{"0":{"name":"storage.modifier.attribute.swift"},"1":{"name":"punctuation.definition.attribute.swift"},"2":{"name":"punctuation.definition.identifier.swift"},"3":{"name":"punctuation.definition.identifier.swift"}}}]},"builtin-functions":{"patterns":[{"name":"support.function.swift","match":"(?\u003c=\\.)(?:s(?:ort(?:ed)?|plit)|contains|index|partition|f(?:i(?:lter|rst)|orEach|latMap)|with(?:MutableCharacters|CString|U(?:nsafe(?:Mutable(?:BufferPointer|Pointer(?:s|To(?:Header|Elements)))|BufferPointer)|TF8Buffer))|m(?:in|a(?:p|x)))(?=\\s*[({])\\b"},{"name":"support.function.swift","match":"(?\u003c=\\.)(?:s(?:ymmetricDifference|t(?:oreBytes|arts|ride)|ortInPlace|u(?:ccessor|ffix|btract(?:ing|InPlace|WithOverflow)?)|quareRoot|amePosition)|h(?:oldsUnique(?:Reference|OrPinnedReference)|as(?:Suffix|Prefix))|ne(?:gate(?:d)?|xt)|c(?:o(?:untByEnumerating|py(?:Bytes)?)|lamp(?:ed)?|reate)|t(?:o(?:IntMax|Opaque|UIntMax)|ake(?:RetainedValue|UnretainedValue)|r(?:uncatingRemainder|a(?:nscodedLength|ilSurrogate)))|i(?:s(?:MutableAndUniquelyReferenced(?:OrPinned)?|S(?:trictSu(?:perset(?:Of)?|bset(?:Of)?)|u(?:perset(?:Of)?|bset(?:Of)?))|Continuation|T(?:otallyOrdered|railSurrogate)|Disjoint(?:With)?|Unique(?:Reference|lyReferenced(?:OrPinned)?)|Equal|Le(?:ss(?:ThanOrEqualTo)?|adSurrogate))|n(?:sert(?:ContentsOf)?|tersect(?:ion|InPlace)?|itialize(?:Memory|From)?|dex(?:Of|ForKey)))|o(?:verlaps|bjectAt)|d(?:i(?:stance(?:To)?|vide(?:d|WithOverflow)?)|e(?:s(?:cendant|troy)|code(?:CString)?|initialize|alloc(?:ate(?:Capacity)?)?)|rop(?:First|Last))|u(?:n(?:ion(?:InPlace)?|derestimateCount|wrappedOrError)|p(?:date(?:Value)?|percased))|join(?:ed|WithSeparator)|p(?:op(?:First|Last)|ass(?:Retained|Unretained)|re(?:decessor|fix))|e(?:scape(?:d)?|n(?:code|umerate(?:d)?)|lementsEqual|xclusiveOr(?:InPlace)?)|f(?:orm(?:Remainder|S(?:ymmetricDifference|quareRoot)|TruncatingRemainder|In(?:tersection|dex)|Union)|latten|rom(?:CString(?:RepairingIllFormedUTF8)?|Opaque))|w(?:i(?:thMemoryRebound|dth)|rite(?:To)?)|l(?:o(?:wercased|ad)|e(?:adSurrogate|xicographical(?:Compare|lyPrecedes)))|a(?:ss(?:ign(?:BackwardFrom|From)?|umingMemoryBound)|d(?:d(?:ing(?:Product)?|Product|WithOverflow)?|vanced(?:By)?)|utorelease|ppend(?:ContentsOf)?|lloc(?:ate)?|bs)|r(?:ound(?:ed)?|e(?:serveCapacity|tain|duce|place(?:Range|Subrange)?|verse(?:d)?|quest(?:NativeBuffer|UniqueMutableBackingBuffer)|lease|m(?:ove(?:Range|Subrange|Value(?:ForKey)?|First|Last|A(?:tIndex|ll))?|ainder(?:WithOverflow)?)))|ge(?:nerate|t(?:Objects|Element))|m(?:in(?:imum(?:Magnitude)?|Element)|ove(?:Initialize(?:Memory|BackwardFrom|From)?|Assign(?:From)?)?|ultipl(?:y(?:WithOverflow)?|ied)|easure|a(?:ke(?:Iterator|Description)|x(?:imum(?:Magnitude)?|Element)))|bindMemory)(?=\\s*\\()"},{"name":"support.function.swift","match":"(?\u003c=\\.)(?:s(?:uperclassMirror|amePositionIn|tartsWith)|nextObject|c(?:haracterAtIndex|o(?:untByEnumeratingWithState|pyWithZone)|ustom(?:Mirror|PlaygroundQuickLook))|is(?:EmptyInput|ASCII)|object(?:Enumerator|ForKey|AtIndex)|join|put|keyEnumerator|withUnsafeMutablePointerToValue|length|getMirror|m(?:oveInitializeAssignFrom|ember))(?=\\s*\\()"}]},"builtin-global-functions":{"patterns":[{"begin":"\\b(type)(\\()\\s*(of)(:)","end":"\\)","patterns":[{"include":"#expressions"}],"beginCaptures":{"1":{"name":"support.function.dynamic-type.swift"},"2":{"name":"punctuation.definition.arguments.begin.swift"},"3":{"name":"support.variable.parameter.swift"},"4":{"name":"punctuation.separator.argument-label.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.arguments.end.swift"}}},{"name":"support.function.swift","match":"\\b(?:anyGenerator|autoreleasepool)(?=\\s*[({])\\b"},{"name":"support.function.swift","match":"\\b(?:s(?:tride(?:of(?:Value)?)?|izeof(?:Value)?|equence|wap)|numericCast|transcode|is(?:UniquelyReferenced(?:NonObjC)?|KnownUniquelyReferenced)|zip|d(?:ump|ebugPrint)|unsafe(?:BitCast|Downcast|Unwrap|Address(?:Of)?)|pr(?:int|econdition(?:Failure)?)|fatalError|with(?:Unsafe(?:MutablePointer|Pointer)|ExtendedLifetime|VaList)|a(?:ssert(?:ionFailure)?|lignof(?:Value)?|bs)|re(?:peatElement|adLine)|getVaList|m(?:in|ax))(?=\\s*\\()"},{"name":"support.function.swift","match":"\\b(?:s(?:ort|uffix|pli(?:ce|t))|insert|overlaps|d(?:istance|rop(?:First|Last))|join|prefix|extend|withUnsafe(?:MutablePointers|Pointers)|lazy|advance|re(?:flect|move(?:Range|Last|A(?:tIndex|ll))))(?=\\s*\\()"}]},"builtin-properties":{"patterns":[{"name":"support.variable.swift","match":"(?\u003c=^Process\\.|\\WProcess\\.|^CommandLine\\.|\\WCommandLine\\.)(arguments|argc|unsafeArgv)"},{"name":"support.variable.swift","match":"(?\u003c=\\.)(?:s(?:t(?:artIndex|ri(?:ngValue|de))|i(?:ze|gn(?:BitIndex|ificand(?:Bit(?:Count|Pattern)|Width)?|alingNaN)?)|u(?:perclassMirror|mmary|bscriptBaseAddress))|h(?:eader|as(?:hValue|PointerRepresentation))|n(?:ulTerminatedUTF8|ext(?:Down|Up)|a(?:n|tiveOwner))|c(?:haracters|ount(?:TrailingZeros)?|ustom(?:Mirror|PlaygroundQuickLook)|apacity)|i(?:s(?:S(?:ign(?:Minus|aling(?:NaN)?)|ubnormal)|N(?:ormal|aN)|Canonical|Infinite|Zero|Empty|Finite|ASCII)|n(?:dices|finity)|dentity)|owner|de(?:scription|bugDescription)|u(?:n(?:safelyUnwrapped|icodeScalar(?:s)?|derestimatedCount)|tf(?:16|8(?:Start|C(?:String|odeUnitCount))?)|intValue|ppercaseString|lp(?:OfOne)?)|p(?:i|ointee)|e(?:ndIndex|lements|xponent(?:Bit(?:Count|Pattern))?)|value(?:s)?|keys|quietNaN|f(?:irst(?:ElementAddress(?:IfContiguous)?)?|loatingPointClass)|l(?:ittleEndian|owercaseString|eastNo(?:nzeroMagnitude|rmalMagnitude)|a(?:st|zy))|a(?:l(?:ignment|l(?:ocatedElementCount|Zeros))|rray(?:PropertyIsNativeTypeChecked)?)|ra(?:dix|wValue)|greatestFiniteMagnitude|m(?:in|emory|ax)|b(?:yteS(?:ize|wapped)|i(?:nade|tPattern|gEndian)|uffer|ase(?:Address)?))\\b"},{"name":"support.variable.swift","match":"(?\u003c=\\.)(?:boolValue|disposition|end|objectIdentifier|quickLookObject|start|valueType)\\b"},{"name":"support.variable.swift","match":"(?\u003c=\\.)(?:s(?:calarValue|i(?:ze|gnalingNaN)|o(?:und|me)|uppressed|prite|et)|n(?:one|egative(?:Subnormal|Normal|Infinity|Zero))|c(?:ol(?:or|lection)|ustomized)|t(?:o(?:NearestOr(?:Even|AwayFromZero)|wardZero)|uple|ext)|i(?:nt|mage)|optional|d(?:ictionary|o(?:uble|wn))|u(?:Int|p|rl)|p(?:o(?:sitive(?:Subnormal|Normal|Infinity|Zero)|int)|lus)|e(?:rror|mptyInput)|view|quietNaN|float|a(?:ttributedString|wayFromZero)|r(?:ectangle|ange)|generated|minus|b(?:ool|ezierPath))\\b"}]},"builtin-types":{"patterns":[{"include":"#builtin-class-type"},{"include":"#builtin-enum-type"},{"include":"#builtin-protocol-type"},{"include":"#builtin-struct-type"},{"include":"#builtin-typealias"},{"name":"support.type.any.swift","match":"\\bAny\\b"}],"repository":{"builtin-class-type":{"name":"support.class.swift","match":"\\b(Managed(Buffer|ProtoBuffer)|NonObjectiveCBase|AnyGenerator)\\b"},"builtin-enum-type":{"patterns":[{"name":"support.constant.swift","match":"\\b(?:CommandLine|Process(?=\\.))\\b"},{"name":"support.constant.never.swift","match":"\\bNever\\b"},{"name":"support.type.swift","match":"\\b(?:ImplicitlyUnwrappedOptional|Representation|MemoryLayout|FloatingPointClassification|SetIndexRepresentation|SetIteratorRepresentation|FloatingPointRoundingRule|UnicodeDecodingResult|Optional|DictionaryIndexRepresentation|AncestorRepresentation|DisplayStyle|PlaygroundQuickLook|Never|FloatingPointSign|Bit|DictionaryIteratorRepresentation)\\b"},{"name":"support.type.swift","match":"\\b(?:MirrorDisposition|QuickLookObject)\\b"}]},"builtin-protocol-type":{"patterns":[{"name":"support.type.swift","match":"\\b(?:Ra(?:n(?:domAccess(?:Collection|Indexable)|geReplaceable(?:Collection|Indexable))|wRepresentable)|M(?:irrorPath|utable(?:Collection|Indexable))|Bi(?:naryFloatingPoint|twiseOperations|directional(?:Collection|Indexable))|S(?:tr(?:ideable|eamable)|igned(?:Number|Integer)|e(?:tAlgebra|quence))|Hashable|C(?:o(?:llection|mparable)|ustom(?:Reflectable|StringConvertible|DebugStringConvertible|PlaygroundQuickLookable|LeafReflectable)|VarArg)|TextOutputStream|I(?:n(?:teger(?:Arithmetic)?|dexable(?:Base)?)|teratorProtocol)|OptionSet|Un(?:signedInteger|icodeCodec)|E(?:quatable|rror|xpressibleBy(?:BooleanLiteral|String(?:Interpolation|Literal)|NilLiteral|IntegerLiteral|DictionaryLiteral|UnicodeScalarLiteral|ExtendedGraphemeClusterLiteral|FloatLiteral|ArrayLiteral))|FloatingPoint|L(?:osslessStringConvertible|azy(?:SequenceProtocol|CollectionProtocol))|A(?:nyObject|bsoluteValuable))\\b"},{"name":"support.type.swift","match":"\\b(?:Ran(?:domAccessIndexType|geReplaceableCollectionType)|GeneratorType|M(?:irror(?:Type|PathType)|utable(?:Sliceable|CollectionType))|B(?:i(?:twiseOperationsType|directionalIndexType)|oolean(?:Type|LiteralConvertible))|S(?:tring(?:InterpolationConvertible|LiteralConvertible)|i(?:nkType|gned(?:NumberType|IntegerType))|e(?:tAlgebraType|quenceType)|liceable)|NilLiteralConvertible|C(?:ollectionType|VarArgType)|Inte(?:rvalType|ger(?:Type|LiteralConvertible|ArithmeticType))|O(?:utputStreamType|ptionSetType)|DictionaryLiteralConvertible|Un(?:signedIntegerType|icode(?:ScalarLiteralConvertible|CodecType))|E(?:rrorType|xten(?:sibleCollectionType|dedGraphemeClusterLiteralConvertible))|F(?:orwardIndexType|loat(?:ingPointType|LiteralConvertible))|A(?:nyCollectionType|rrayLiteralConvertible))\\b"}]},"builtin-struct-type":{"patterns":[{"name":"support.type.swift","match":"\\b(?:R(?:e(?:peat(?:ed)?|versed(?:RandomAccess(?:Collection|Index)|Collection|Index))|an(?:domAccessSlice|ge(?:Replaceable(?:RandomAccessSlice|BidirectionalSlice|Slice)|Generator)?))|Generator(?:Sequence|OfOne)|M(?:irror|utable(?:Ran(?:domAccessSlice|geReplaceable(?:RandomAccessSlice|BidirectionalSlice|Slice))|BidirectionalSlice|Slice)|anagedBufferPointer)|B(?:idirectionalSlice|ool)|S(?:t(?:aticString|ri(?:ng|deT(?:hrough(?:Generator|Iterator)?|o(?:Generator|Iterator)?)))|et(?:I(?:ndex|terator))?|lice)|HalfOpenInterval|C(?:haracter(?:View)?|o(?:ntiguousArray|untable(?:Range|ClosedRange)|llectionOfOne)|OpaquePointer|losed(?:Range(?:I(?:ndex|terator))?|Interval)|VaListPointer)|I(?:n(?:t(?:16|8|32|64)?|d(?:ices|ex(?:ing(?:Generator|Iterator))?))|terator(?:Sequence|OverOne)?)|Zip2(?:Sequence|Iterator)|O(?:paquePointer|bjectIdentifier)|D(?:ictionary(?:I(?:ndex|terator)|Literal)?|ouble|efault(?:RandomAccessIndices|BidirectionalIndices|Indices))|U(?:n(?:safe(?:RawPointer|Mutable(?:RawPointer|BufferPointer|Pointer)|BufferPointer(?:Generator|Iterator)?|Pointer)|icodeScalar(?:View)?|foldSequence|managed)|TF(?:16(?:View)?|8(?:View)?|32)|Int(?:16|8|32|64)?)|Join(?:Generator|ed(?:Sequence|Iterator))|PermutationGenerator|E(?:numerate(?:Generator|Sequence|d(?:Sequence|Iterator))|mpty(?:Generator|Collection|Iterator))|Fl(?:oat(?:80)?|atten(?:Generator|BidirectionalCollection(?:Index)?|Sequence|Collection(?:Index)?|Iterator))|L(?:egacyChildren|azy(?:RandomAccessCollection|Map(?:RandomAccessCollection|Generator|BidirectionalCollection|Sequence|Collection|Iterator)|BidirectionalCollection|Sequence|Collection|Filter(?:Generator|BidirectionalCollection|Sequence|Collection|I(?:ndex|terator))))|A(?:ny(?:RandomAccessCollection|Generator|BidirectionalCollection|Sequence|Hashable|Collection|I(?:ndex|terator))|utoreleasingUnsafeMutablePointer|rray(?:Slice)?))\\b"},{"name":"support.type.swift","match":"\\b(?:R(?:everse(?:RandomAccess(?:Collection|Index)|Collection|Index)|awByte)|Map(?:Generator|Sequence|Collection)|S(?:inkOf|etGenerator)|Zip2Generator|DictionaryGenerator|Filter(?:Generator|Sequence|Collection(?:Index)?)|LazyForwardCollection|Any(?:RandomAccessIndex|BidirectionalIndex|Forward(?:Collection|Index)))\\b"}]},"builtin-typealias":{"patterns":[{"name":"support.type.swift","match":"\\b(?:Raw(?:Significand|Exponent|Value)|B(?:ooleanLiteralType|uffer|ase)|S(?:t(?:orage|r(?:i(?:ngLiteralType|de)|eam(?:1|2)))|ubSequence)|NativeBuffer|C(?:hild(?:ren)?|Bool|S(?:hort|ignedChar)|odeUnit|Char(?:16|32)?|Int|Double|Unsigned(?:Short|Char|Int|Long(?:Long)?)|Float|WideChar|Long(?:Long)?)|I(?:n(?:t(?:Max|egerLiteralType)|d(?:ices|ex(?:Distance)?))|terator)|Distance|U(?:n(?:icodeScalar(?:Type|Index|View|LiteralType)|foldFirstSequence)|TF(?:16(?:Index|View)|8Index)|IntMax)|E(?:lement(?:s)?|x(?:tendedGraphemeCluster(?:Type|LiteralType)|ponent))|V(?:oid|alue)|Key|Float(?:32|LiteralType|64)|AnyClass)\\b"},{"name":"support.type.swift","match":"\\b(?:Generator|PlaygroundQuickLook|UWord|Word)\\b"}]}}},"code-block":{"begin":"\\{","end":"\\}","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.section.scope.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.section.scope.end.swift"}}},"comments":{"patterns":[{"name":"comment.line.number-sign.swift","match":"\\A^(#!).*$\\n?","captures":{"1":{"name":"punctuation.definition.comment.swift"}}},{"name":"comment.block.documentation.swift","begin":"/\\*\\*(?!/)","end":"\\*/","patterns":[{"include":"#nested"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.end.swift"}}},{"name":"comment.block.documentation.playground.swift","begin":"/\\*:","end":"\\*/","patterns":[{"include":"#nested"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.end.swift"}}},{"name":"comment.block.swift","begin":"/\\*","end":"\\*/","patterns":[{"include":"#nested"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.end.swift"}}},{"name":"invalid.illegal.unexpected-end-of-block-comment.swift","match":"\\*/"},{"begin":"(^[ \\t]+)?(?=//)","end":"(?!\\G)","patterns":[{"name":"comment.line.triple-slash.documentation.swift","begin":"///","end":"^","beginCaptures":{"0":{"name":"punctuation.definition.comment.swift"}}},{"name":"comment.line.double-slash.documentation.swift","begin":"//:","end":"^","beginCaptures":{"0":{"name":"punctuation.definition.comment.swift"}}},{"name":"comment.line.double-slash.swift","begin":"//","end":"^","beginCaptures":{"0":{"name":"punctuation.definition.comment.swift"}}}],"beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.swift"}}}],"repository":{"nested":{"begin":"/\\*","end":"\\*/","patterns":[{"include":"#nested"}]}}},"compiler-control":{"patterns":[{"contentName":"comment.block.preprocessor.swift","begin":"^\\s*(#)(if|elseif)\\s+(false)\\b.*?(?=$|//|/\\*)","end":"(?=^\\s*(#(elseif|else|endif)\\b))","beginCaptures":{"0":{"name":"meta.preprocessor.conditional.swift"},"1":{"name":"punctuation.definition.preprocessor.swift"},"2":{"name":"keyword.control.preprocessor.conditional.swift"},"3":{"name":"constant.language.boolean.swift"}}},{"name":"meta.preprocessor.conditional.swift","begin":"^\\s*(#)(if|elseif)\\s+","end":"(?=\\s*(?://|/\\*))|$","patterns":[{"name":"keyword.operator.logical.swift","match":"(\u0026\u0026|\\|\\|)"},{"name":"constant.language.boolean.swift","match":"\\b(true|false)\\b"},{"match":"\\b(arch)\\s*(\\()\\s*(?:(arm|arm64|powerpc64|powerpc64le|i386|x86_64|s390x)|\\w+)\\s*(\\))","captures":{"1":{"name":"keyword.other.condition.swift"},"2":{"name":"punctuation.definition.parameters.begin.swift"},"3":{"name":"support.constant.platform.architecture.swift"},"4":{"name":"punctuation.definition.parameters.end.swift"}}},{"match":"\\b(os)\\s*(\\()\\s*(?:(macOS|OSX|iOS|tvOS|watchOS|Android|Linux|FreeBSD|Windows|PS4)|\\w+)\\s*(\\))","captures":{"1":{"name":"keyword.other.condition.swift"},"2":{"name":"punctuation.definition.parameters.begin.swift"},"3":{"name":"support.constant.platform.os.swift"},"4":{"name":"punctuation.definition.parameters.end.swift"}}},{"match":"\\b(canImport)\\s*(\\()([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)(\\))","captures":{"1":{"name":"keyword.other.condition.swift"},"2":{"name":"punctuation.definition.parameters.begin.swift"},"3":{"name":"entity.name.type.module.swift"},"4":{"name":"punctuation.definition.parameters.end.swift"}}},{"begin":"\\b(targetEnvironment)\\s*(\\()","end":"(\\))|$","patterns":[{"name":"support.constant.platform.environment.swift","match":"\\b(simulator|UIKitForMac)\\b"}],"beginCaptures":{"1":{"name":"keyword.other.condition.swift"},"2":{"name":"punctuation.definition.parameters.begin.swift"}},"endCaptures":{"1":{"name":"punctuation.definition.parameters.end.swift"}}},{"begin":"\\b(swift|compiler)\\s*(\\()","end":"(\\))|$","patterns":[{"name":"keyword.operator.comparison.swift","match":"\u003e=|\u003c"},{"name":"constant.numeric.swift","match":"\\b[0-9]+(?:\\.[0-9]+)*\\b"}],"beginCaptures":{"1":{"name":"keyword.other.condition.swift"},"2":{"name":"punctuation.definition.parameters.begin.swift"}},"endCaptures":{"1":{"name":"punctuation.definition.parameters.end.swift"}}}],"captures":{"1":{"name":"punctuation.definition.preprocessor.swift"},"2":{"name":"keyword.control.preprocessor.conditional.swift"}}},{"name":"meta.preprocessor.conditional.swift","match":"^\\s*(#)(else|endif)(.*?)(?=$|//|/\\*)","captures":{"1":{"name":"punctuation.definition.preprocessor.swift"},"2":{"name":"keyword.control.preprocessor.conditional.swift"},"3":{"patterns":[{"name":"invalid.illegal.character-not-allowed-here.swift","match":"\\S+"}]}}},{"name":"meta.preprocessor.sourcelocation.swift","match":"^\\s*(#)(sourceLocation)((\\()([^)]*)(\\)))(.*?)(?=$|//|/\\*)","captures":{"1":{"name":"punctuation.definition.preprocessor.swift"},"2":{"name":"keyword.control.preprocessor.sourcelocation.swift"},"4":{"name":"punctuation.definition.parameters.begin.swift"},"5":{"patterns":[{"begin":"(file)\\s*(:)\\s*(?=\")","end":"(?!\\G)","patterns":[{"include":"#literals"}],"beginCaptures":{"1":{"name":"support.variable.parameter.swift"},"2":{"name":"punctuation.separator.key-value.swift"}}},{"match":"(line)\\s*(:)\\s*([0-9]+)","captures":{"1":{"name":"support.variable.parameter.swift"},"2":{"name":"punctuation.separator.key-value.swift"},"3":{"name":"constant.numeric.integer.swift"}}},{"name":"punctuation.separator.parameters.swift","match":","},{"name":"invalid.illegal.character-not-allowed-here.swift","match":"\\S+"}]},"6":{"name":"punctuation.definition.parameters.begin.swift"},"7":{"patterns":[{"name":"invalid.illegal.character-not-allowed-here.swift","match":"\\S+"}]}}}]},"declarations":{"patterns":[{"include":"#function"},{"include":"#function-initializer"},{"include":"#import"},{"include":"#operator"},{"include":"#precedencegroup"},{"include":"#protocol"},{"include":"#type"},{"include":"#extension"},{"include":"#typealias"}],"repository":{"available-types":{"patterns":[{"include":"#comments"},{"include":"#builtin-types"},{"include":"#attributes"},{"name":"keyword.control.exception.swift","match":"\\b(?:throws|rethrows)\\b"},{"name":"storage.modifier.swift","match":"\\binout\\b"},{"name":"variable.language.swift","match":"\\bSelf\\b"},{"match":"(?\u003c![/=\\-+!*%\u003c\u003e\u0026|\\^~.])(-\u003e)(?![/=\\-+!*%\u003c\u003e\u0026|\\^~.])","captures":{"1":{"name":"keyword.operator.type.function.swift"}}},{"match":"(?\u003c![/=\\-+!*%\u003c\u003e\u0026|\\^~.])(\u0026)(?![/=\\-+!*%\u003c\u003e\u0026|\\^~.])","captures":{"1":{"name":"keyword.operator.type.composition.swift"}}},{"name":"keyword.operator.type.optional.swift","match":"[?!]"},{"name":"keyword.operator.function.variadic-parameter.swift","match":"\\.\\.\\."},{"name":"keyword.operator.type.composition.swift","match":"\\bprotocol\\b"},{"name":"keyword.operator.type.metatype.swift","match":"(?\u003c=\\.)(?:Protocol|Type)\\b"},{"include":"#tuple-type"},{"include":"#collection-type"},{"include":"#generic-argument-clause"}],"repository":{"collection-type":{"begin":"\\[","end":"\\]|(?=[\u003e){}])","patterns":[{"include":"#available-types"},{"begin":":","end":"(?=\\]|[\u003e){}])","patterns":[{"name":"invalid.illegal.extra-colon-in-dictionary-type.swift","match":":"},{"include":"#available-types"}],"beginCaptures":{"0":{"name":"punctuation.separator.key-value.swift"}}}],"beginCaptures":{"0":{"name":"punctuation.section.collection-type.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.section.collection-type.end.swift"}}},"tuple-type":{"begin":"\\(","end":"\\)|(?=[\u003e\\]{}])","patterns":[{"include":"#available-types"}],"beginCaptures":{"0":{"name":"punctuation.section.tuple-type.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.section.tuple-type.end.swift"}}}}},"extension":{"name":"meta.definition.type.$1.swift","begin":"\\b(extension)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))","end":"(?\u003c=\\})","patterns":[{"include":"#comments"},{"include":"#generic-where-clause"},{"include":"#inheritance-clause"},{"name":"meta.definition.type.body.swift","begin":"\\{","end":"\\}","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.definition.type.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.type.end.swift"}}}],"beginCaptures":{"1":{"name":"storage.type.$1.swift"},"2":{"name":"entity.name.type.swift","patterns":[{"include":"#available-types"}]},"3":{"name":"punctuation.definition.identifier.swift"},"4":{"name":"punctuation.definition.identifier.swift"}}},"function":{"name":"meta.definition.function.swift","begin":"(?x)\n\t\t\t\t\t\t\\b\n\t\t\t\t\t\t(func)\n\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e)\n\t\t\t\t\t\t | (?:\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?\u003coph\u003e\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\\g\u003coph\u003e\n\t\t\t\t\t\t\t\t\t | (?\u003copc\u003e\t\t\t\t\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t\t\t[\\x{0300}-\\x{036F}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t)*\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t | ( \\. ( \\g\u003coph\u003e | \\g\u003copc\u003e | \\. )+ )\t\t\t# Dot operators\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t(?=\\(|\u003c)\n\t\t\t\t\t","end":"(?\u003c=\\})|$(?# functions in protocol declarations or generated interfaces have no body)","patterns":[{"include":"#comments"},{"include":"#generic-parameter-clause"},{"include":"#parameter-clause"},{"include":"#function-result"},{"name":"keyword.control.exception.swift","match":"\\b(?:throws|rethrows)\\b"},{"include":"#generic-where-clause"},{"name":"meta.definition.function.body.swift","begin":"(\\{)","end":"(\\})","patterns":[{"include":"$self"}],"beginCaptures":{"1":{"name":"punctuation.section.function.begin.swift"}},"endCaptures":{"1":{"name":"punctuation.section.function.end.swift"}}}],"beginCaptures":{"1":{"name":"storage.type.function.swift"},"2":{"name":"entity.name.function.swift"},"3":{"name":"punctuation.definition.identifier.swift"},"4":{"name":"punctuation.definition.identifier.swift"}}},"function-initializer":{"name":"meta.definition.function.initializer.swift","begin":"(?\u003c!\\.)\\b(init[?!]*(?# only one is valid, but we want the in⇥ snippet to produce something that looks good))\\s*(?=\\(|\u003c)","end":"(?\u003c=\\})|$","patterns":[{"include":"#comments"},{"include":"#generic-parameter-clause"},{"include":"#parameter-clause"},{"name":"keyword.control.exception.swift","match":"\\b(?:throws|rethrows)\\b"},{"include":"#generic-where-clause"},{"name":"meta.definition.function.body.swift","begin":"(\\{)","end":"(\\})","patterns":[{"include":"$self"}],"beginCaptures":{"1":{"name":"punctuation.section.function.begin.swift"}},"endCaptures":{"1":{"name":"punctuation.section.function.end.swift"}}}],"beginCaptures":{"1":{"name":"storage.type.function.swift","patterns":[{"name":"invalid.illegal.character-not-allowed-here.swift","match":"(?\u003c=[?!])[?!]+"}]}}},"function-result":{"name":"meta.function-result.swift","begin":"(?\u003c![/=\\-+!*%\u003c\u003e\u0026|\\^~.])(-\u003e)(?![/=\\-+!*%\u003c\u003e\u0026|\\^~.])\\s*","end":"(?!\\G)(?=\\{|\\bwhere\\b|;)|$","patterns":[{"include":"#available-types"}],"beginCaptures":{"1":{"name":"keyword.operator.function-result.swift"}}},"generic-argument-clause":{"name":"meta.generic-argument-clause.swift","begin":"\u003c","end":"\u003e|(?=[)\\]{}])","patterns":[{"include":"#available-types"}],"beginCaptures":{"0":{"name":"punctuation.separator.generic-argument-clause.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.separator.generic-argument-clause.end.swift"}}},"generic-parameter-clause":{"name":"meta.generic-parameter-clause.swift","begin":"\u003c","end":"\u003e|(?=[^\\w\\d:\u003c\u003e\\s,=\u0026`])(?# characters besides these are never valid in a generic param list -- even if it's not really a valid clause, we should stop trying to parse it if we see one of them.)","patterns":[{"include":"#comments"},{"include":"#generic-where-clause"},{"match":"\\b((?!\\d)\\w[\\w\\d]*)\\b","captures":{"1":{"name":"variable.language.generic-parameter.swift"}}},{"name":"punctuation.separator.generic-parameters.swift","match":","},{"name":"meta.generic-parameter-constraint.swift","begin":"(:)\\s*","end":"(?=[,\u003e]|(?!\\G)\\bwhere\\b)","patterns":[{"name":"entity.other.inherited-class.swift","begin":"\\G","end":"(?=[,\u003e]|(?!\\G)\\bwhere\\b)","patterns":[{"include":"#type-identifier"}]}],"beginCaptures":{"1":{"name":"punctuation.separator.generic-parameter-constraint.swift"}}}],"beginCaptures":{"0":{"name":"punctuation.separator.generic-parameter-clause.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.separator.generic-parameter-clause.end.swift"}}},"generic-where-clause":{"name":"meta.generic-where-clause.swift","begin":"\\b(where)\\b\\s*","end":"(?!\\G)$|(?=[\u003e{};\\n]|//|/\\*)","patterns":[{"include":"#comments"},{"include":"#requirement-list"}],"beginCaptures":{"1":{"name":"keyword.other.generic-constraint-introducer.swift"}},"repository":{"requirement-list":{"begin":"\\G|,\\s*","end":"(?=[,\u003e{};\\n]|//|/\\*)","patterns":[{"include":"#comments"},{"include":"#constraint"},{"include":"#available-types"},{"name":"meta.generic-where-clause.same-type-requirement.swift","begin":"(?\u003c![/=\\-+!*%\u003c\u003e\u0026|\\^~.])(==)(?![/=\\-+!*%\u003c\u003e\u0026|\\^~.])","end":"(?=\\s*[,\u003e{};\\n]|//|/\\*)","patterns":[{"include":"#available-types"}],"beginCaptures":{"1":{"name":"keyword.operator.generic-constraint.same-type.swift"}}},{"name":"meta.generic-where-clause.conformance-requirement.swift","begin":"(?\u003c![/=\\-+!*%\u003c\u003e\u0026|\\^~.])(:)(?![/=\\-+!*%\u003c\u003e\u0026|\\^~.])","end":"(?=\\s*[,\u003e{};\\n]|//|/\\*)","patterns":[{"contentName":"entity.other.inherited-class.swift","begin":"\\G\\s*","end":"(?=\\s*[,\u003e{};\\n]|//|/\\*)","patterns":[{"include":"#available-types"}]}],"beginCaptures":{"1":{"name":"keyword.operator.generic-constraint.conforms-to.swift"}}}]}}},"import":{"name":"meta.import.swift","begin":"(?\u003c!\\.)\\b(import)\\s+","end":"(;)|$\\n?|(?=//|/\\*)","patterns":[{"begin":"\\G(?!;|$|//|/\\*)(?:(typealias|struct|class|enum|protocol|var|func)\\s+)?","end":"(?=;|$|//|/\\*)","patterns":[{"name":"entity.name.type.swift","match":"(?x)\n\t\t\t\t\t\t\t\t\t\t(?\u003c=\\G|\\.)\n\t\t\t\t\t\t\t\t\t\t(?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e)\n\t\t\t\t\t\t\t\t\t","captures":{"1":{"name":"punctuation.definition.identifier.swift"},"2":{"name":"punctuation.definition.identifier.swift"}}},{"name":"entity.name.type.swift","match":"(?x)\n\t\t\t\t\t\t\t\t\t\t(?\u003c=\\G|\\.)\n\t\t\t\t\t\t\t\t\t\t\\$[0-9]+\n\t\t\t\t\t\t\t\t\t"},{"name":"entity.name.type.swift","match":"(?x)\n\t\t\t\t\t\t\t\t\t\t(?\u003c=\\G|\\.)\n\t\t\t\t\t\t\t\t\t\t(?:\n\t\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t\t(?\u003coph\u003e\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\\g\u003coph\u003e\n\t\t\t\t\t\t\t\t\t\t\t\t | (?\u003copc\u003e\t\t\t\t\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\\x{0300}-\\x{036F}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t)*\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t | ( \\. ( \\g\u003coph\u003e | \\g\u003copc\u003e | \\. )+ )\t\t\t# Dot operators\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t(?=\\.|;|$|//|/\\*|\\s)\n\t\t\t\t\t\t\t\t\t","captures":{"1":{"patterns":[{"name":"invalid.illegal.dot-not-allowed-here.swift","match":"\\."}]}}},{"name":"punctuation.separator.import.swift","match":"\\."},{"name":"invalid.illegal.character-not-allowed-here.swift","begin":"(?!\\s*(;|$|//|/\\*))","end":"(?=\\s*(;|$|//|/\\*))"}],"beginCaptures":{"1":{"name":"storage.modifier.swift"}}}],"beginCaptures":{"1":{"name":"keyword.control.import.swift"}},"endCaptures":{"1":{"name":"punctuation.terminator.statement.swift"}}},"inheritance-clause":{"name":"meta.inheritance-clause.swift","begin":"(:)(?=\\s*\\{)|(:)\\s*","end":"(?!\\G)$|(?=[={}]|(?!\\G)\\bwhere\\b)","patterns":[{"begin":"\\bclass\\b","end":"(?=[={}]|(?!\\G)\\bwhere\\b)","patterns":[{"include":"#comments"},{"include":"#more-types"}],"beginCaptures":{"0":{"name":"storage.type.class.swift"}}},{"begin":"\\G","end":"(?!\\G)$|(?=[={}]|(?!\\G)\\bwhere\\b)","patterns":[{"include":"#comments"},{"include":"#inherited-type"},{"include":"#more-types"}]}],"beginCaptures":{"1":{"name":"invalid.illegal.empty-inheritance-clause.swift"},"2":{"name":"punctuation.separator.inheritance-clause.swift"}},"repository":{"inherited-type":{"name":"entity.other.inherited-class.swift","begin":"(?=[`\\p{L}_])","end":"(?!\\G)","patterns":[{"include":"#type-identifier"}]},"more-types":{"name":"meta.inheritance-list.more-types","begin":",\\s*","end":"(?!\\G)(?!//|/\\*)|(?=[,={}]|(?!\\G)\\bwhere\\b)","patterns":[{"include":"#comments"},{"include":"#inherited-type"},{"include":"#more-types"}]}}},"operator":{"name":"meta.definition.operator.swift","begin":"(?x)\n\t\t\t\t\t\t(?:\n\t\t\t\t\t\t\t\\b(prefix|infix|postfix)\n\t\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t)?\n\t\t\t\t\t\t\\b\n\t\t\t\t\t\t(operator)\n\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t(?\u003coph\u003e\t\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\n\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\\g\u003coph\u003e\n\t\t\t\t\t\t\t\t | \\.\t\t\t\t\t\t\t\t\t# Invalid dot\n\t\t\t\t\t\t\t\t | (?\u003copc\u003e\t\t\t\t\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t\t[\\x{0300}-\\x{036F}]\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)*+\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t | ( \\. ( \\g\u003coph\u003e | \\g\u003copc\u003e | \\. )++ )\t\t\t# Dot operators\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\\s*\n\t\t\t\t\t","end":"(;)|$\\n?|(?=//|/\\*)","patterns":[{"include":"#swift2"},{"include":"#swift3"},{"name":"invalid.illegal.character-not-allowed-here.swift","match":"((?!$|;|//|/\\*)\\S)+"}],"beginCaptures":{"1":{"name":"storage.modifier.swift"},"2":{"name":"storage.type.function.operator.swift"},"3":{"name":"entity.name.function.operator.swift"},"4":{"patterns":[{"name":"invalid.illegal.dot-not-allowed-here.swift","match":"\\."}]}},"endCaptures":{"1":{"name":"punctuation.terminator.statement.swift"}},"repository":{"swift2":{"begin":"\\G(\\{)","end":"(\\})","patterns":[{"include":"#comments"},{"match":"\\b(associativity)\\s+(left|right)\\b","captures":{"1":{"name":"storage.modifier.swift"},"2":{"name":"keyword.other.operator.associativity.swift"}}},{"match":"\\b(precedence)\\s+([0-9]+)\\b","captures":{"1":{"name":"storage.modifier.swift"},"2":{"name":"constant.numeric.integer.swift"}}},{"match":"\\b(assignment)\\b","captures":{"1":{"name":"storage.modifier.swift"}}}],"beginCaptures":{"1":{"name":"punctuation.definition.operator.begin.swift"}},"endCaptures":{"1":{"name":"punctuation.definition.operator.end.swift"}}},"swift3":{"match":"\\G(:)\\s*((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))","captures":{"2":{"name":"entity.other.inherited-class.swift","patterns":[{"include":"#types-precedencegroup"}]},"3":{"name":"punctuation.definition.identifier.swift"},"4":{"name":"punctuation.definition.identifier.swift"}}}}},"parameter-clause":{"name":"meta.parameter-clause.swift","begin":"(\\()","end":"(\\))","patterns":[{"include":"#parameter-list"}],"beginCaptures":{"1":{"name":"punctuation.definition.parameters.begin.swift"}},"endCaptures":{"1":{"name":"punctuation.definition.parameters.end.swift"}}},"parameter-list":{"patterns":[{"match":"((?\u003cq1\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq1\u003e))\\s+((?\u003cq2\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq2\u003e))(?=\\s*:)","captures":{"1":{"name":"entity.name.function.swift"},"2":{"name":"punctuation.definition.identifier.swift"},"3":{"name":"punctuation.definition.identifier.swift"},"4":{"name":"variable.parameter.function.swift"},"5":{"name":"punctuation.definition.identifier.swift"},"6":{"name":"punctuation.definition.identifier.swift"}}},{"match":"(((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e)))(?=\\s*:)","captures":{"1":{"name":"variable.parameter.function.swift"},"2":{"name":"entity.name.function.swift"},"3":{"name":"punctuation.definition.identifier.swift"},"4":{"name":"punctuation.definition.identifier.swift"}}},{"begin":":\\s*(?!\\s)","end":"(?=[,)])","patterns":[{"include":"#available-types"},{"name":"invalid.illegal.extra-colon-in-parameter-list.swift","match":":"},{"begin":"=","end":"(?=[,)])","patterns":[{"include":"#expressions"}],"beginCaptures":{"0":{"name":"keyword.operator.assignment.swift"}}}]}]},"precedencegroup":{"name":"meta.definition.precedencegroup.swift","begin":"\\b(precedencegroup)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*(?=\\{)","end":"(?!\\G)","patterns":[{"begin":"\\{","end":"\\}","patterns":[{"include":"#comments"},{"match":"\\b(higherThan|lowerThan)\\s*:\\s*((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))","captures":{"1":{"name":"storage.modifier.swift"},"2":{"name":"entity.other.inherited-class.swift","patterns":[{"include":"#types-precedencegroup"}]},"3":{"name":"punctuation.definition.identifier.swift"},"4":{"name":"punctuation.definition.identifier.swift"}}},{"match":"\\b(associativity)\\b(?:\\s*:\\s*(right|left|none)\\b)?","captures":{"1":{"name":"storage.modifier.swift"},"2":{"name":"keyword.other.operator.associativity.swift"}}},{"match":"\\b(assignment)\\b(?:\\s*:\\s*(true|false)\\b)?","captures":{"1":{"name":"storage.modifier.swift"},"2":{"name":"constant.language.boolean.swift"}}}],"beginCaptures":{"0":{"name":"punctuation.definition.precedencegroup.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.precedencegroup.end.swift"}}}],"beginCaptures":{"1":{"name":"storage.type.precedencegroup.swift"},"2":{"name":"entity.name.type.precedencegroup.swift"},"3":{"name":"punctuation.definition.identifier.swift"},"4":{"name":"punctuation.definition.identifier.swift"}}},"protocol":{"name":"meta.definition.type.protocol.swift","begin":"\\b(protocol)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))","end":"(?\u003c=\\})","patterns":[{"include":"#comments"},{"include":"#inheritance-clause"},{"include":"#generic-where-clause"},{"name":"meta.definition.type.body.swift","begin":"\\{","end":"\\}","patterns":[{"include":"#protocol-method"},{"include":"#protocol-initializer"},{"include":"#associated-type"},{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.definition.type.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.type.end.swift"}}}],"beginCaptures":{"1":{"name":"storage.type.$1.swift"},"2":{"name":"entity.name.type.$1.swift"},"3":{"name":"punctuation.definition.identifier.swift"},"4":{"name":"punctuation.definition.identifier.swift"}},"repository":{"associated-type":{"name":"meta.definition.associatedtype.swift","begin":"\\b(associatedtype)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*","end":"(?!\\G)$|(?=[;}]|$)","patterns":[{"include":"#inheritance-clause"},{"include":"#generic-where-clause"},{"include":"#typealias-assignment"}],"beginCaptures":{"1":{"name":"keyword.other.declaration-specifier.swift"},"2":{"name":"variable.language.associatedtype.swift"},"3":{"name":"punctuation.definition.identifier.swift"},"4":{"name":"punctuation.definition.identifier.swift"}}},"protocol-initializer":{"name":"meta.definition.function.initializer.swift","begin":"(?\u003c!\\.)\\b(init[?!]*(?# only one is valid, but we want the in⇥ snippet to produce something that looks good))\\s*(?=\\(|\u003c)","end":"$|(?=;|//|/\\*|\\})","patterns":[{"include":"#comments"},{"include":"#generic-parameter-clause"},{"include":"#parameter-clause"},{"name":"keyword.control.exception.swift","match":"\\b(?:throws|rethrows)\\b"},{"include":"#generic-where-clause"},{"name":"invalid.illegal.function-body-not-allowed-in-protocol.swift","begin":"\\{","end":"\\}","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.section.function.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.section.function.end.swift"}}}],"beginCaptures":{"1":{"name":"storage.type.function.swift","patterns":[{"name":"invalid.illegal.character-not-allowed-here.swift","match":"(?\u003c=[?!])[?!]+"}]}}},"protocol-method":{"name":"meta.definition.function.swift","begin":"(?x)\n\t\t\t\t\t\t\t\t\\b\n\t\t\t\t\t\t\t\t(func)\n\t\t\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e)\n\t\t \t\t\t\t\t\t | (?:\n\t\t \t\t\t\t\t\t\t\t(\n\t\t \t\t\t\t\t\t\t\t\t(?\u003coph\u003e\t\t\t\t\t\t\t\t# operator-head\n\t\t \t\t\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t \t\t\t\t\t\t\t\t\t)\n\t\t \t\t\t\t\t\t\t\t\t(\n\t\t \t\t\t\t\t\t\t\t\t\t\\g\u003coph\u003e\n\t\t \t\t\t\t\t\t\t\t\t | (?\u003copc\u003e\t\t\t\t\t\t\t\t# operator-character\n\t\t \t\t\t\t\t\t\t\t\t\t\t[\\x{0300}-\\x{036F}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t \t\t\t\t\t\t\t\t\t\t)\n\t\t \t\t\t\t\t\t\t\t\t)*\n\t\t \t\t\t\t\t\t\t\t)\n\t\t \t\t\t\t\t\t\t | ( \\. ( \\g\u003coph\u003e | \\g\u003copc\u003e | \\. )+ )\t\t\t# Dot operators\n\t\t \t\t\t\t\t\t\t)\n\t\t \t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t\t\t(?=\\(|\u003c)\n\t\t\t\t\t\t\t","end":"$|(?=;|//|/\\*|\\})","patterns":[{"include":"#comments"},{"include":"#generic-parameter-clause"},{"include":"#parameter-clause"},{"include":"#function-result"},{"name":"keyword.control.exception.swift","match":"\\b(?:throws|rethrows)\\b"},{"include":"#generic-where-clause"},{"name":"invalid.illegal.function-body-not-allowed-in-protocol.swift","begin":"\\{","end":"\\}","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.section.function.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.section.function.end.swift"}}}],"beginCaptures":{"1":{"name":"storage.type.function.swift"},"2":{"name":"entity.name.function.swift"},"3":{"name":"punctuation.definition.identifier.swift"},"4":{"name":"punctuation.definition.identifier.swift"}}}}},"type":{"patterns":[{"name":"meta.definition.type.$1.swift","begin":"\\b(class(?!\\s+(?:func|var|let)\\b)|struct)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))","end":"(?\u003c=\\})","patterns":[{"include":"#comments"},{"include":"#generic-parameter-clause"},{"include":"#generic-where-clause"},{"include":"#inheritance-clause"},{"name":"meta.definition.type.body.swift","begin":"\\{","end":"\\}","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.definition.type.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.type.end.swift"}}}],"beginCaptures":{"1":{"name":"storage.type.$1.swift"},"2":{"name":"entity.name.type.$1.swift"},"3":{"name":"punctuation.definition.identifier.swift"},"4":{"name":"punctuation.definition.identifier.swift"}}},{"include":"#type-enum"}]},"type-enum":{"name":"meta.definition.type.$1.swift","begin":"\\b(enum)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))","end":"(?\u003c=\\})","patterns":[{"include":"#comments"},{"include":"#generic-parameter-clause"},{"include":"#generic-where-clause"},{"include":"#inheritance-clause"},{"name":"meta.definition.type.body.swift","begin":"\\{","end":"\\}","patterns":[{"include":"#enum-case-clause"},{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.definition.type.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.type.end.swift"}}}],"beginCaptures":{"1":{"name":"storage.type.$1.swift"},"2":{"name":"entity.name.type.$1.swift"},"3":{"name":"punctuation.definition.identifier.swift"},"4":{"name":"punctuation.definition.identifier.swift"}},"repository":{"associated-values":{"begin":"\\G\\(","end":"\\)","patterns":[{"include":"#comments"},{"begin":"(?x)\n\t\t\t\t\t\t\t\t\t\t(?:(_)|((?\u003cq1\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*\\k\u003cq1\u003e))\n\t\t\t\t\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t\t\t\t\t(((?\u003cq2\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*\\k\u003cq2\u003e))\n\t\t\t\t\t\t\t\t\t\t\\s*(:)","end":"(?=[,)\\]])","patterns":[{"include":"#available-types"}],"beginCaptures":{"1":{"name":"entity.name.function.swift"},"2":{"name":"invalid.illegal.distinct-labels-not-allowed.swift"},"5":{"name":"variable.parameter.function.swift"},"7":{"name":"punctuation.separator.argument-label.swift"}}},{"begin":"(((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*\\k\u003cq\u003e))\\s*(:)","end":"(?=[,)\\]])","patterns":[{"include":"#available-types"}],"beginCaptures":{"1":{"name":"entity.name.function.swift"},"2":{"name":"variable.parameter.function.swift"},"4":{"name":"punctuation.separator.argument-label.swift"}}},{"begin":"(?![,)\\]])(?=\\S)","end":"(?=[,)\\]])","patterns":[{"include":"#available-types"},{"name":"invalid.illegal.extra-colon-in-parameter-list.swift","match":":"}]}],"beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.parameters.end.swift"}}},"enum-case":{"begin":"(?x)((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*","end":"(?\u003c=\\))|(?![=(])","patterns":[{"include":"#comments"},{"include":"#associated-values"},{"include":"#raw-value-assignment"}],"beginCaptures":{"1":{"name":"constant.other.swift"}}},"enum-case-clause":{"begin":"\\b(case)\\b\\s*","end":"(?=[;}])|(?!\\G)(?!//|/\\*)(?=[^\\s,])","patterns":[{"include":"#comments"},{"include":"#enum-case"},{"include":"#more-cases"}],"beginCaptures":{"1":{"name":"storage.type.enum.case.swift"}}},"more-cases":{"name":"meta.enum-case.more-cases","begin":",\\s*","end":"(?!\\G)(?!//|/\\*)(?=[;}]|[^\\s,])","patterns":[{"include":"#comments"},{"include":"#enum-case"},{"include":"#more-cases"}]},"raw-value-assignment":{"begin":"(=)\\s*","end":"(?!\\G)","patterns":[{"include":"#comments"},{"include":"#literals"}],"beginCaptures":{"1":{"name":"keyword.operator.assignment.swift"}}}}},"type-identifier":{"begin":"((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*","end":"(?!\u003c)","patterns":[{"begin":"(?=\u003c)","end":"(?!\\G)","patterns":[{"include":"#generic-argument-clause"}]}],"beginCaptures":{"1":{"name":"meta.type-name.swift","patterns":[{"include":"#builtin-types"}]},"2":{"name":"punctuation.definition.identifier.swift"},"3":{"name":"punctuation.definition.identifier.swift"}}},"typealias":{"name":"meta.definition.typealias.swift","begin":"\\b(typealias)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*","end":"(?!\\G)$|(?=;|//|/\\*|$)","patterns":[{"begin":"\\G(?=\u003c)","end":"(?!\\G)","patterns":[{"include":"#generic-parameter-clause"}]},{"include":"#typealias-assignment"}],"beginCaptures":{"1":{"name":"keyword.other.declaration-specifier.swift"},"2":{"name":"entity.name.type.typealias.swift"},"3":{"name":"punctuation.definition.identifier.swift"},"4":{"name":"punctuation.definition.identifier.swift"}}},"typealias-assignment":{"begin":"(=)\\s*","end":"(?!\\G)$|(?=;|//|/\\*|$)","patterns":[{"include":"#available-types"}],"beginCaptures":{"1":{"name":"keyword.operator.assignment.swift"}}},"types-precedencegroup":{"patterns":[{"name":"support.type.swift","match":"\\b(?:BitwiseShift|Assignment|RangeFormation|Casting|Addition|NilCoalescing|Comparison|LogicalConjunction|LogicalDisjunction|Default|Ternary|Multiplication|FunctionArrow)Precedence\\b"}]}}},"expressions":{"patterns":[{"include":"#comments"},{"include":"#code-block"},{"include":"#attributes"},{"include":"#closure-parameter"},{"include":"#literals"},{"include":"#operators"},{"include":"#builtin-types"},{"include":"#builtin-functions"},{"include":"#builtin-global-functions"},{"include":"#builtin-properties"},{"include":"#compound-name"},{"include":"#keywords"},{"include":"#function-call-expression"},{"include":"#subscript-expression"},{"include":"#parenthesized-expression"},{"include":"#member-reference"},{"include":"#availability-condition"},{"name":"support.variable.discard-value.swift","match":"\\b_\\b"}],"repository":{"availability-condition":{"begin":"\\B(#available)(\\()","end":"\\)","patterns":[{"match":"\\s*\\b((?:iOS|macOS|OSX|watchOS|tvOS|UIKitForMac)(?:ApplicationExtension)?)\\b(?:\\s+([0-9]+(?:\\.[0-9]+)*\\b))","captures":{"1":{"name":"keyword.other.platform.os.swift"},"2":{"name":"constant.numeric.swift"}}},{"match":"(\\*)\\s*(.*?)(?=[,)])","captures":{"1":{"name":"keyword.other.platform.all.swift"},"2":{"name":"invalid.illegal.character-not-allowed-here.swift"}}},{"name":"invalid.illegal.character-not-allowed-here.swift","match":"[^\\s,)]+"}],"beginCaptures":{"1":{"name":"support.function.availability-condition.swift"},"2":{"name":"punctuation.definition.arguments.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.arguments.end.swift"}}},"closure-parameter":{"name":"variable.language.closure-parameter.swift","match":"\\$[0-9]+"},"compound-name":{"match":"(?x)\n\t\t\t\t\t\t((?\u003cq1\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq1\u003e)) \t\t# function name\n\t\t\t\t\t\t\\(\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t((?\u003cq2\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq2\u003e)) \t# argument label\n\t\t\t\t\t\t\t\t\t:\t\t\t\t\t\t\t\t\t\t\t\t# colon\n\t\t\t\t\t\t\t\t)+\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\\)\n\t\t\t\t\t","captures":{"1":{"name":"entity.name.function.compound-name.swift"},"2":{"name":"punctuation.definition.entity.swift"},"3":{"name":"punctuation.definition.entity.swift"},"4":{"patterns":[{"name":"entity.name.function.compound-name.swift","match":"(?\u003cq\u003e`?)(?!_:)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e):","captures":{"1":{"name":"punctuation.definition.entity.swift"},"2":{"name":"punctuation.definition.entity.swift"}}}]}}},"expression-element-list":{"patterns":[{"include":"#comments"},{"begin":"((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*(:)","end":"(?=[,)\\]])","patterns":[{"include":"#expressions"}],"beginCaptures":{"1":{"name":"support.function.any-method.swift"},"2":{"name":"punctuation.definition.identifier.swift"},"3":{"name":"punctuation.definition.identifier.swift"},"4":{"name":"punctuation.separator.argument-label.swift"}}},{"begin":"(?![,)\\]])(?=\\S)","end":"(?=[,)\\]])","patterns":[{"include":"#expressions"}]}]},"function-call-expression":{"patterns":[{"name":"meta.function-call.swift","begin":"((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*(\\()","end":"\\)","patterns":[{"include":"#expression-element-list"}],"beginCaptures":{"1":{"name":"support.function.any-method.swift"},"2":{"name":"punctuation.definition.identifier.swift"},"3":{"name":"punctuation.definition.identifier.swift"},"4":{"name":"punctuation.definition.arguments.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.arguments.end.swift"}}},{"name":"meta.function-call.swift","begin":"(?\u003c=[`\\])}\u003e\\p{L}_\\p{N}\\p{M}])\\s*(\\()","end":"\\)","patterns":[{"include":"#expression-element-list"}],"beginCaptures":{"1":{"name":"punctuation.definition.arguments.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.arguments.end.swift"}}}]},"member-reference":{"patterns":[{"match":"(?\u003c=\\.)((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))","captures":{"1":{"name":"variable.other.swift"},"2":{"name":"punctuation.definition.identifier.swift"},"3":{"name":"punctuation.definition.identifier.swift"}}}]},"parenthesized-expression":{"begin":"\\(","end":"\\)","patterns":[{"include":"#expression-element-list"}],"beginCaptures":{"0":{"name":"punctuation.section.tuple.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.section.tuple.end.swift"}}},"subscript-expression":{"name":"meta.subscript-expression.swift","begin":"(?\u003c=[`\\p{L}_\\p{N}\\p{M}])\\s*(\\[)","end":"\\]","patterns":[{"include":"#expression-element-list"}],"beginCaptures":{"1":{"name":"punctuation.definition.arguments.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.arguments.end.swift"}}}}},"keywords":{"patterns":[{"name":"keyword.control.branch.swift","match":"(?\u003c!\\.)\\b(?:if|else|guard|where|switch|case|default|fallthrough)\\b"},{"name":"keyword.control.transfer.swift","match":"(?\u003c!\\.)\\b(?:continue|break|fallthrough|return)\\b"},{"name":"keyword.control.loop.swift","match":"(?\u003c!\\.)\\b(?:while|for|in)\\b"},{"match":"(?\u003c!\\.)\\b(repeat)\\b(\\s*)","captures":{"1":{"name":"keyword.control.loop.swift"},"2":{"name":"punctuation.whitespace.trailing.repeat.swift"}}},{"name":"keyword.control.defer.swift","match":"(?\u003c!\\.)\\bdefer\\b"},{"name":"keyword.control.exception.swift","match":"(?\u003c!\\.)\\b(?:catch|throws?|rethrows|try)\\b|\\btry[?!]\\B"},{"match":"(?\u003c!\\.)\\b(do)\\b(\\s*)","captures":{"1":{"name":"keyword.control.exception.swift"},"2":{"name":"punctuation.whitespace.trailing.do.swift"}}},{"name":"keyword.other.declaration-specifier.swift","match":"(?\u003c!\\.)\\b(?:associatedtype|let|operator|typealias|var)\\b"},{"name":"storage.type.$1.swift","match":"(?\u003c!\\.)\\b(class|enum|extension|precedencegroup|protocol|struct)\\b"},{"name":"storage.modifier.swift","match":"(?\u003c!\\.)\\b(?:inout|static|final|lazy|mutating|nonmutating|optional|indirect|required|override|dynamic|convenience|infix|prefix|postfix)\\b"},{"name":"storage.type.function.swift","match":"\\binit[?!]|\\binit\\b|(?\u003c!\\.)\\b(?:func|deinit|subscript|didSet|get|set|willSet)\\b"},{"name":"keyword.other.declaration-specifier.accessibility.swift","match":"(?\u003c!\\.)\\b(?:fileprivate|private|internal|public|open)\\b"},{"name":"keyword.other.capture-specifier.swift","match":"(?\u003c!\\.)\\b(?:weak|unowned)\\b|\\bunowned\\((?:safe|unsafe)\\)"},{"match":"(?\u003c=\\.)(?:(dynamicType|self)|(Protocol|Type))\\b","captures":{"1":{"name":"keyword.operator.type.swift"},"2":{"name":"keyword.operator.type.metatype.swift"}}},{"name":"variable.language.swift","match":"(?\u003c!\\.)\\b(?:super|self|Self)\\b"},{"name":"support.variable.swift","match":"\\B(?:#file|#filePath|#fileID|#line|#column|#function|#dsohandle)\\b|\\b(?:__FILE__|__LINE__|__COLUMN__|__FUNCTION__|__DSO_HANDLE__)\\b"},{"name":"keyword.control.import.swift","match":"(?\u003c!\\.)\\bimport\\b"}]},"literals":{"patterns":[{"include":"#boolean"},{"include":"#numeric"},{"include":"#string"},{"name":"constant.language.nil.swift","match":"\\bnil\\b"},{"name":"support.function.object-literal.swift","match":"\\B#(colorLiteral|imageLiteral|fileLiteral)\\b"},{"name":"support.function.key-path.swift","match":"\\B#keyPath\\b"},{"begin":"\\B(#selector)(\\()(?:\\s*(getter|setter)\\s*(:))?","end":"\\)","patterns":[{"include":"#expressions"}],"beginCaptures":{"1":{"name":"support.function.selector-reference.swift"},"2":{"name":"punctuation.definition.arguments.begin.swift"},"3":{"name":"support.variable.parameter.swift"},"4":{"name":"punctuation.separator.argument-label.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.arguments.end.swift"}}}],"repository":{"boolean":{"name":"constant.language.boolean.swift","match":"\\b(true|false)\\b"},"numeric":{"patterns":[{"name":"constant.numeric.float.decimal.swift","match":"(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)[0-9][0-9_]*(?=\\.[0-9]|[eE])(?:\\.[0-9][0-9_]*)?(?:[eE][-+]?[0-9][0-9_]*)?\\b(?!\\.[0-9])"},{"name":"constant.numeric.float.hexadecimal.swift","match":"(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)(?:\\.[0-9a-fA-F][0-9a-fA-F_]*)?[pP][-+]?[0-9][0-9_]*\\b(?!\\.[0-9])"},{"name":"invalid.illegal.numeric.float.invalid-exponent.swift","match":"(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)(?:\\.[0-9a-fA-F][0-9a-fA-F_]*)?(?:[pP][-+]?\\w*)\\b(?!\\.[0-9])"},{"name":"invalid.illegal.numeric.float.missing-exponent.swift","match":"(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)\\.[0-9][\\w.]*"},{"name":"invalid.illegal.numeric.float.missing-leading-zero.swift","match":"(?\u003c=\\s|^)\\-?\\.[0-9][\\w.]*"},{"name":"invalid.illegal.numeric.leading-underscore.swift","match":"(\\B\\-|\\b)0[box]_[0-9a-fA-F_]*(?:[pPeE][+-]?\\w+)?[\\w.]+"},{"match":"(?\u003c=[\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)[0-9]+\\b"},{"name":"constant.numeric.integer.binary.swift","match":"(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0b[01][01_]*\\b(?!\\.[0-9])"},{"name":"constant.numeric.integer.octal.swift","match":"(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0o[0-7][0-7_]*\\b(?!\\.[0-9])"},{"name":"constant.numeric.integer.decimal.swift","match":"(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)[0-9][0-9_]*\\b(?!\\.[0-9])"},{"name":"constant.numeric.integer.hexadecimal.swift","match":"(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0x[0-9a-fA-F][0-9a-fA-F_]*\\b(?!\\.[0-9])"},{"name":"invalid.illegal.numeric.other.swift","match":"(\\B\\-|\\b)[0-9][\\w.]*"}]},"string":{"patterns":[{"name":"string.quoted.double.block.swift","begin":"\"\"\"","end":"\"\"\"(#*)","patterns":[{"name":"invalid.illegal.content-after-opening-delimiter.swift","match":"\\G.+(?=\"\"\")|\\G.+"},{"name":"constant.character.escape.newline.swift","match":"\\\\\\s*\\n"},{"include":"#string-guts"},{"name":"invalid.illegal.content-before-closing-delimiter.swift","match":"\\S((?!\\\\\\().)*(?=\"\"\")"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.swift"},"1":{"name":"invalid.illegal.extra-closing-delimiter.swift"}}},{"name":"string.quoted.double.block.raw.swift","begin":"#\"\"\"","end":"\"\"\"#(#*)","patterns":[{"name":"invalid.illegal.content-after-opening-delimiter.swift","match":"\\G.+(?=\"\"\")|\\G.+"},{"name":"constant.character.escape.newline.swift","match":"\\\\#\\s*\\n"},{"include":"#raw-string-guts"},{"name":"invalid.illegal.content-before-closing-delimiter.swift","match":"\\S((?!\\\\#\\().)*(?=\"\"\")"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.swift"},"1":{"name":"invalid.illegal.extra-closing-delimiter.swift"}}},{"name":"string.quoted.double.block.raw.swift","begin":"(##+)\"\"\"","end":"\"\"\"\\1(#*)","patterns":[{"name":"invalid.illegal.content-after-opening-delimiter.swift","match":"\\G.+(?=\"\"\")|\\G.+"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.swift"},"1":{"name":"invalid.illegal.extra-closing-delimiter.swift"}}},{"name":"string.quoted.double.single-line.swift","begin":"\"","end":"\"(#*)","patterns":[{"name":"invalid.illegal.returns-not-allowed.swift","match":"\\r|\\n"},{"include":"#string-guts"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.swift"},"1":{"name":"invalid.illegal.extra-closing-delimiter.swift"}}},{"name":"string.quoted.double.single-line.raw.swift","begin":"(##+)\"","end":"\"\\1(#*)","patterns":[{"name":"invalid.illegal.returns-not-allowed.swift","match":"\\r|\\n"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.raw.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.raw.swift"},"1":{"name":"invalid.illegal.extra-closing-delimiter.swift"}}},{"name":"string.quoted.double.single-line.raw.swift","begin":"#\"","end":"\"#(#*)","patterns":[{"name":"invalid.illegal.returns-not-allowed.swift","match":"\\r|\\n"},{"include":"#raw-string-guts"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.raw.swift"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.raw.swift"},"1":{"name":"invalid.illegal.extra-closing-delimiter.swift"}}}],"repository":{"raw-string-guts":{"patterns":[{"name":"constant.character.escape.swift","match":"\\\\#[0\\\\tnr\"']"},{"name":"constant.character.escape.unicode.swift","match":"\\\\#u\\{[0-9a-fA-F]{1,8}\\}"},{"name":"meta.embedded.line.swift","contentName":"source.swift","begin":"\\\\#\\(","end":"(\\))","patterns":[{"include":"$self"},{"begin":"\\(","end":"\\)"}],"beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.section.embedded.end.swift"},"1":{"name":"source.swift"}}},{"name":"invalid.illegal.escape-not-recognized","match":"\\\\#."}]},"string-guts":{"patterns":[{"name":"constant.character.escape.swift","match":"\\\\[0\\\\tnr\"']"},{"name":"constant.character.escape.unicode.swift","match":"\\\\u\\{[0-9a-fA-F]{1,8}\\}"},{"name":"meta.embedded.line.swift","contentName":"source.swift","begin":"\\\\\\(","end":"(\\))","patterns":[{"include":"$self"},{"begin":"\\(","end":"\\)"}],"beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.swift"}},"endCaptures":{"0":{"name":"punctuation.section.embedded.end.swift"},"1":{"name":"source.swift"}}},{"name":"invalid.illegal.escape-not-recognized","match":"\\\\."}]}}}}},"operators":{"patterns":[{"name":"keyword.operator.type-casting.swift","match":"\\b(is\\b|as([!?]\\B|\\b))"},{"begin":"(?x)\n\t\t\t\t\t\t(?=\n\t\t\t\t\t\t\t(?\u003coph\u003e\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\n\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t | \\.\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\\g\u003coph\u003e\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t | \\.\n\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t","end":"(?!\\G)","patterns":[{"match":"(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(?\u003c=^|[\\s(\\[{,;:])\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t\t(?![\\s)\\]},;:]|\\z)\n\t\t\t\t\t\t\t","captures":{"0":{"patterns":[{"name":"keyword.operator.increment-or-decrement.swift","match":"\\G(\\+\\+|\\-\\-)$"},{"name":"keyword.operator.arithmetic.unary.swift","match":"\\G(\\+|\\-)$"},{"name":"keyword.operator.logical.not.swift","match":"\\G!$"},{"name":"keyword.operator.bitwise.not.swift","match":"\\G~$"},{"name":"keyword.operator.custom.prefix.swift","match":".+"}]}}},{"match":"(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(?\u003c!^|[\\s(\\[{,;:])\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t\t(?=[\\s)\\]},;:]|\\z)\n\t\t\t\t\t\t\t","captures":{"0":{"patterns":[{"name":"keyword.operator.increment-or-decrement.swift","match":"\\G(\\+\\+|\\-\\-)$"},{"name":"keyword.operator.increment-or-decrement.swift","match":"\\G!$"},{"name":"keyword.operator.custom.postfix.swift","match":".+"}]}}},{"match":"(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%\u003c\u003e\u0026|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t","captures":{"0":{"patterns":[{"name":"keyword.operator.assignment.swift","match":"\\G=$"},{"name":"keyword.operator.assignment.compound.swift","match":"\\G(\\+|\\-|\\*|/|%|\u003c\u003c|\u003e\u003e|\u0026|\\^|\\||\u0026\u0026|\\|\\|)=$"},{"name":"keyword.operator.arithmetic.swift","match":"\\G(\\+|\\-|\\*|/)$"},{"name":"keyword.operator.arithmetic.overflow.swift","match":"\\G\u0026(\\+|\\-|\\*)$"},{"name":"keyword.operator.arithmetic.remainder.swift","match":"\\G%$"},{"name":"keyword.operator.comparison.swift","match":"\\G(==|!=|\u003e|\u003c|\u003e=|\u003c=|~=)$"},{"name":"keyword.operator.coalescing.swift","match":"\\G\\?\\?$"},{"name":"keyword.operator.logical.swift","match":"\\G(\u0026\u0026|\\|\\|)$"},{"name":"keyword.operator.bitwise.swift","match":"\\G(\u0026|\\||\\^|\u003c\u003c|\u003e\u003e)$"},{"name":"keyword.operator.bitwise.swift","match":"\\G(===|!==)$"},{"name":"keyword.operator.ternary.swift","match":"\\G\\?$"},{"name":"keyword.operator.custom.infix.swift","match":".+"}]}}},{"match":"(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(?\u003c=^|[\\s(\\[{,;:])\n\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t\t | [/=\\-+!*%\u003c\u003e\u0026|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t\t(?![\\s)\\]},;:]|\\z)\n\t\t\t\t\t\t\t","captures":{"0":{"patterns":[{"name":"keyword.operator.custom.prefix.dot.swift","match":".+"}]}}},{"match":"(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(?\u003c!^|[\\s(\\[{,;:])\n\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t\t | [/=\\-+!*%\u003c\u003e\u0026|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t\t(?=[\\s)\\]},;:]|\\z)\n\t\t\t\t\t\t\t","captures":{"0":{"patterns":[{"name":"keyword.operator.custom.postfix.dot.swift","match":".+"}]}}},{"match":"(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t\t | [/=\\-+!*%\u003c\u003e\u0026|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t","captures":{"0":{"patterns":[{"name":"keyword.operator.range.swift","match":"\\G\\.\\.[.\u003c]$"},{"name":"keyword.operator.custom.infix.dot.swift","match":".+"}]}}}]},{"name":"keyword.operator.ternary.swift","match":":"}]},"root":{"patterns":[{"include":"#compiler-control"},{"include":"#declarations"},{"include":"#expressions"}]}}}