github-linguist 5.3.3 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. checksums.yaml +4 -4
  2. data/bin/git-linguist +5 -2
  3. data/ext/linguist/linguist.c +18 -7
  4. data/grammars/annotation.liquidhaskell.haskell.json +969 -862
  5. data/grammars/config.xcompose.json +22 -25
  6. data/grammars/file.lasso.json +296 -309
  7. data/grammars/hint.haskell.json +867 -766
  8. data/grammars/hint.message.haskell.json +867 -766
  9. data/grammars/hint.type.haskell.json +867 -766
  10. data/grammars/objdump.x86asm.json +20 -24
  11. data/grammars/source.Kotlin.json +220 -225
  12. data/grammars/source.LS.json +36 -55
  13. data/grammars/source.MCPOST.json +24 -38
  14. data/grammars/source.MOD.json +26 -41
  15. data/grammars/source.SASLog.json +9 -16
  16. data/grammars/source.abap.json +48 -56
  17. data/grammars/source.abl.json +8 -14
  18. data/grammars/source.abnf.json +88 -98
  19. data/grammars/source.actionscript.3.json +398 -429
  20. data/grammars/source.acucobol.json +5 -8
  21. data/grammars/source.ada.json +46 -53
  22. data/grammars/source.afm.json +548 -554
  23. data/grammars/source.agc.json +34 -37
  24. data/grammars/source.agda.json +79 -91
  25. data/grammars/source.ahk.json +62 -66
  26. data/grammars/source.alloy.json +16 -20
  27. data/grammars/source.ampl.json +41 -47
  28. data/grammars/source.angelscript.json +71 -80
  29. data/grammars/source.antlr.json +131 -136
  30. data/grammars/source.apache-config.json +93 -99
  31. data/grammars/source.apache-config.mod_perl.json +19 -24
  32. data/grammars/source.apl.json +1038 -1029
  33. data/grammars/source.applescript.json +501 -523
  34. data/grammars/source.apt.json +9 -16
  35. data/grammars/source.asn.json +27 -31
  36. data/grammars/source.asp.json +61 -67
  37. data/grammars/source.aspectj.json +385 -391
  38. data/grammars/source.assembly.json +49 -55
  39. data/grammars/source.ats.json +45 -121
  40. data/grammars/source.autoit.json +64 -69
  41. data/grammars/source.awk.json +172 -176
  42. data/grammars/source.ballerina.json +48 -395
  43. data/grammars/source.batchfile.json +269 -269
  44. data/grammars/source.befunge.json +17 -21
  45. data/grammars/source.bf.json +5 -11
  46. data/grammars/source.bison.json +10 -14
  47. data/grammars/source.blitzmax.json +300 -305
  48. data/grammars/source.boo.json +189 -193
  49. data/grammars/source.brightauthorproject.json +8 -13
  50. data/grammars/source.brightscript.json +37 -47
  51. data/grammars/source.bro.json +134 -140
  52. data/grammars/source.bsl.json +152 -193
  53. data/grammars/source.bsv.json +96 -102
  54. data/grammars/source.c++.json +176 -193
  55. data/grammars/source.c++.qt.json +13 -21
  56. data/grammars/source.c.ec.json +15 -21
  57. data/grammars/source.c.json +237 -251
  58. data/grammars/source.c.platform.json +153 -159
  59. data/grammars/source.c2hs.json +3 -6
  60. data/grammars/source.cabal.json +17 -20
  61. data/grammars/source.cache.cmake.json +18 -23
  62. data/grammars/source.cake.json +4 -7
  63. data/grammars/source.camlp4.ocaml.json +24 -27
  64. data/grammars/source.capnp.json +33 -38
  65. data/grammars/source.ceylon.json +44 -50
  66. data/grammars/source.cfscript.cfc.json +78 -86
  67. data/grammars/source.cfscript.json +513 -520
  68. data/grammars/source.changelogs.rpm-spec.json +8 -16
  69. data/grammars/source.chapel.json +109 -87
  70. data/grammars/source.cirru.json +25 -30
  71. data/grammars/source.clarion.json +41 -54
  72. data/grammars/source.clean.json +90 -95
  73. data/grammars/source.click.json +25 -28
  74. data/grammars/source.clips.json +10 -23
  75. data/grammars/source.clojure.json +151 -168
  76. data/grammars/source.cm.json +14 -19
  77. data/grammars/source.cmake.json +53 -61
  78. data/grammars/source.cobol.json +165 -180
  79. data/grammars/source.coffee.json +454 -462
  80. data/grammars/source.cool.json +36 -43
  81. data/grammars/source.coq.json +17 -21
  82. data/grammars/source.crystal.json +889 -983
  83. data/grammars/source.cs.json +739 -740
  84. data/grammars/source.csound-document.json +69 -73
  85. data/grammars/source.csound-score.json +52 -55
  86. data/grammars/source.csound.json +167 -171
  87. data/grammars/source.css.json +683 -688
  88. data/grammars/source.css.less.json +211 -511
  89. data/grammars/source.css.mss.json +94 -101
  90. data/grammars/source.css.postcss.sugarss.json +260 -0
  91. data/grammars/source.csx.json +4 -7
  92. data/grammars/source.cuda-c++.json +47 -81
  93. data/grammars/source.cwl.json +103 -0
  94. data/grammars/source.cython.json +536 -582
  95. data/grammars/source.d.json +243 -252
  96. data/grammars/source.dart.json +161 -166
  97. data/grammars/source.data-weave.json +901 -905
  98. data/grammars/source.desktop.json +29 -33
  99. data/grammars/source.diff.json +43 -52
  100. data/grammars/source.disasm.json +15 -16
  101. data/grammars/source.ditroff.desc.json +73 -84
  102. data/grammars/source.ditroff.json +60 -61
  103. data/grammars/source.dm.json +202 -213
  104. data/grammars/source.dmf.json +44 -47
  105. data/grammars/source.dockerfile.json +29 -34
  106. data/grammars/source.dot.json +46 -55
  107. data/grammars/source.dylan.json +63 -68
  108. data/grammars/source.ebnf.json +55 -62
  109. data/grammars/source.eiffel.json +57 -62
  110. data/grammars/source.elixir.json +321 -366
  111. data/grammars/source.emacs.lisp.json +458 -249
  112. data/grammars/source.erazor.json +49 -57
  113. data/grammars/source.erlang.json +508 -515
  114. data/grammars/source.essl.json +17 -30
  115. data/grammars/source.factor.json +85 -91
  116. data/grammars/source.fan.json +92 -96
  117. data/grammars/source.fancy.json +93 -118
  118. data/grammars/source.fish.json +74 -98
  119. data/grammars/source.fontforge.json +142 -146
  120. data/grammars/source.forth.json +42 -57
  121. data/grammars/source.fortran.json +193 -231
  122. data/grammars/source.fortran.modern.json +77 -103
  123. data/grammars/source.fsharp.fsi.json +1 -6
  124. data/grammars/source.fsharp.fsl.json +1 -6
  125. data/grammars/source.fsharp.fsx.json +1 -6
  126. data/grammars/source.fsharp.json +148 -153
  127. data/grammars/source.gap.json +60 -70
  128. data/grammars/source.gcode.json +9 -16
  129. data/grammars/source.gdb.json +63 -79
  130. data/grammars/source.gdb.session.json +27 -28
  131. data/grammars/source.gdbregs.json +7 -8
  132. data/grammars/source.gdscript.json +92 -96
  133. data/grammars/source.gerber.json +38 -56
  134. data/grammars/source.gfm.json +447 -462
  135. data/grammars/source.glsl.json +58 -83
  136. data/grammars/source.gn.json +188 -193
  137. data/grammars/source.gnuplot.json +104 -120
  138. data/grammars/source.go.json +169 -181
  139. data/grammars/source.golo.json +82 -87
  140. data/grammars/source.gosu.2.json +58 -68
  141. data/grammars/source.grace.json +266 -270
  142. data/grammars/source.graphql.json +586 -596
  143. data/grammars/source.groovy.gradle.json +18 -22
  144. data/grammars/source.groovy.json +422 -433
  145. data/grammars/source.harbour.json +129 -173
  146. data/grammars/source.haskell.json +871 -772
  147. data/grammars/source.haxe.2.json +402 -413
  148. data/grammars/source.hlsl.json +6 -16
  149. data/grammars/source.hsc2hs.json +1 -4
  150. data/grammars/source.hsig.json +871 -770
  151. data/grammars/source.hss.1.json +122 -144
  152. data/grammars/source.httpspec.json +119 -123
  153. data/grammars/source.hxml.json +8 -15
  154. data/grammars/source.ideal.json +125 -125
  155. data/grammars/source.idl-dlm.json +25 -32
  156. data/grammars/source.idl.json +59 -80
  157. data/grammars/source.idris.json +171 -185
  158. data/grammars/source.inform7.json +117 -121
  159. data/grammars/source.ini.json +37 -43
  160. data/grammars/source.io.json +65 -73
  161. data/grammars/source.ioke.json +72 -78
  162. data/grammars/source.isabelle.root.json +26 -30
  163. data/grammars/source.isabelle.theory.json +46 -50
  164. data/grammars/source.j.json +18 -21
  165. data/grammars/source.jasmin.json +45 -50
  166. data/grammars/source.java-properties.json +31 -41
  167. data/grammars/source.java.json +333 -342
  168. data/grammars/source.jcl.json +15 -18
  169. data/grammars/source.jflex.json +166 -172
  170. data/grammars/source.jison.json +331 -334
  171. data/grammars/source.jisonlex-injection.json +1 -2
  172. data/grammars/source.jisonlex.json +148 -151
  173. data/grammars/source.jolie.json +37 -43
  174. data/grammars/source.jq.json +80 -87
  175. data/grammars/source.js.json +798 -818
  176. data/grammars/source.js.jsx.json +2115 -2225
  177. data/grammars/source.js.objj.json +167 -172
  178. data/grammars/source.js.regexp.json +50 -50
  179. data/grammars/source.js.regexp.replacement.json +7 -7
  180. data/grammars/source.jsdoc.json +94 -94
  181. data/grammars/source.json.json +61 -71
  182. data/grammars/source.julia.console.json +5 -6
  183. data/grammars/source.julia.json +237 -234
  184. data/grammars/source.lean.json +55 -67
  185. data/grammars/source.lid.json +6 -10
  186. data/grammars/source.lilypond.json +181 -195
  187. data/grammars/source.lisp.json +40 -50
  188. data/grammars/source.litcoffee.json +169 -183
  189. data/grammars/source.livescript.json +207 -220
  190. data/grammars/source.llvm.json +28 -38
  191. data/grammars/source.logos.json +7 -14
  192. data/grammars/source.logtalk.json +136 -141
  193. data/grammars/source.loomscript.json +77 -83
  194. data/grammars/source.lsl.json +90 -106
  195. data/grammars/source.lua.json +100 -109
  196. data/grammars/source.makefile.json +181 -188
  197. data/grammars/source.makegen.json +3 -7
  198. data/grammars/source.mask.json +260 -265
  199. data/grammars/source.mata.json +38 -46
  200. data/grammars/source.mathematica.json +155 -167
  201. data/grammars/source.matlab.json +407 -684
  202. data/grammars/source.maxscript.json +293 -281
  203. data/grammars/source.mercury.json +179 -184
  204. data/grammars/source.meson.json +52 -58
  205. data/grammars/source.meta-info.json +64 -74
  206. data/grammars/source.ml.json +107 -113
  207. data/grammars/source.modelica.json +51 -59
  208. data/grammars/source.modula2.json +33 -42
  209. data/grammars/source.monkey.json +234 -241
  210. data/grammars/source.moonscript.json +51 -56
  211. data/grammars/source.mql5.json +74 -101
  212. data/grammars/source.mupad.json +30 -72
  213. data/grammars/source.ncl.json +1 -14
  214. data/grammars/source.ne.json +39 -42
  215. data/grammars/source.nemerle.json +58 -63
  216. data/grammars/source.nesc.json +9 -15
  217. data/grammars/source.netlinx.erb.json +13 -25
  218. data/grammars/source.netlinx.json +231 -292
  219. data/grammars/source.nextflow-groovy.json +1360 -0
  220. data/grammars/source.nextflow.json +74 -0
  221. data/grammars/source.nginx.json +274 -287
  222. data/grammars/source.nim.json +442 -483
  223. data/grammars/source.nim_filter.json +6 -26
  224. data/grammars/source.nimcfg.json +38 -51
  225. data/grammars/source.ninja.json +64 -70
  226. data/grammars/source.nit.json +60 -64
  227. data/grammars/source.nix.json +269 -273
  228. data/grammars/source.nmml.json +31 -37
  229. data/grammars/source.nsis.json +66 -72
  230. data/grammars/source.nu.json +129 -139
  231. data/grammars/source.nut.json +129 -133
  232. data/grammars/source.objc++.json +3 -10
  233. data/grammars/source.objc.json +303 -314
  234. data/grammars/source.objc.platform.json +145 -151
  235. data/grammars/source.ocaml.json +506 -514
  236. data/grammars/source.ocamllex.json +108 -115
  237. data/grammars/source.ocamlyacc.json +116 -123
  238. data/grammars/source.ooc.json +148 -155
  239. data/grammars/source.opa.json +39 -49
  240. data/grammars/source.opal.json +84 -89
  241. data/grammars/source.opalsysdefs.json +9 -13
  242. data/grammars/source.opencobol.json +22 -25
  243. data/grammars/source.opentype.json +148 -152
  244. data/grammars/source.ox.json +36 -44
  245. data/grammars/source.oz.json +31 -38
  246. data/grammars/source.p4.json +49 -59
  247. data/grammars/source.pan.json +273 -278
  248. data/grammars/source.papyrus.skyrim.json +705 -781
  249. data/grammars/source.parrot.pir.json +59 -65
  250. data/grammars/source.pascal.json +54 -61
  251. data/grammars/source.pawn.json +835 -849
  252. data/grammars/source.pcb.board.json +153 -158
  253. data/grammars/source.pcb.schematic.json +134 -138
  254. data/grammars/source.pcb.sexp.json +64 -74
  255. data/grammars/source.pep8.json +28 -32
  256. data/grammars/source.perl.6.json +83 -92
  257. data/grammars/source.perl.json +711 -737
  258. data/grammars/source.perl6fe.json +1204 -1218
  259. data/grammars/source.php.zephir.json +80 -89
  260. data/grammars/source.pic.json +137 -142
  261. data/grammars/source.pig_latin.json +76 -80
  262. data/grammars/source.pike.json +23 -36
  263. data/grammars/source.po.json +74 -84
  264. data/grammars/source.pogoscript.json +23 -29
  265. data/grammars/source.pony.json +98 -108
  266. data/grammars/source.postcss.json +370 -0
  267. data/grammars/source.postscript.json +88 -97
  268. data/grammars/source.pov-ray sdl.json +36 -42
  269. data/grammars/source.powershell.json +175 -197
  270. data/grammars/source.processing.json +236 -249
  271. data/grammars/source.prolog.eclipse.json +33 -38
  272. data/grammars/source.prolog.json +66 -72
  273. data/grammars/source.protobuf.json +88 -94
  274. data/grammars/source.puppet.json +144 -151
  275. data/grammars/source.purescript.json +268 -289
  276. data/grammars/source.pyjade.json +256 -281
  277. data/grammars/source.python.django.json +13 -18
  278. data/grammars/source.python.json +3319 -3367
  279. data/grammars/source.python.salt.json +3 -7
  280. data/grammars/source.qmake.json +83 -90
  281. data/grammars/source.qml.json +57 -78
  282. data/grammars/source.quoting.perl6fe.json +666 -669
  283. data/grammars/source.r.json +75 -84
  284. data/grammars/source.racket.json +17 -38
  285. data/grammars/source.rascal.json +77 -80
  286. data/grammars/source.reason.hover.type.json +1 -1
  287. data/grammars/source.reason.json +1025 -1080
  288. data/grammars/source.rebol.json +167 -177
  289. data/grammars/source.red.json +169 -177
  290. data/grammars/source.regexp.babel.json +74 -77
  291. data/grammars/source.regexp.extended.json +4 -5
  292. data/grammars/source.regexp.json +260 -264
  293. data/grammars/source.regexp.perl6fe.json +108 -111
  294. data/grammars/source.regexp.python.json +210 -215
  295. data/grammars/source.regexp.spin.json +63 -72
  296. data/grammars/source.renpy.json +617 -687
  297. data/grammars/source.rexx.json +25 -32
  298. data/grammars/source.ring.json +84 -114
  299. data/grammars/source.rpm-spec.json +392 -401
  300. data/grammars/source.ruby.gemfile.json +9 -12
  301. data/grammars/source.ruby.json +862 -952
  302. data/grammars/source.ruby.rspec.cucumber.steps.json +90 -103
  303. data/grammars/source.rust.json +223 -281
  304. data/grammars/source.sas.json +88 -105
  305. data/grammars/source.sass.json +100 -108
  306. data/grammars/source.sbt.json +16 -23
  307. data/grammars/source.scad.json +60 -67
  308. data/grammars/source.scala.json +215 -228
  309. data/grammars/source.scaml.json +120 -135
  310. data/grammars/source.scheme.json +119 -136
  311. data/grammars/source.scilab.json +40 -47
  312. data/grammars/source.scss.json +369 -403
  313. data/grammars/source.sdbl.json +14 -25
  314. data/grammars/source.shaderlab.json +24 -27
  315. data/grammars/source.shell.json +409 -440
  316. data/grammars/source.shen.json +75 -94
  317. data/grammars/source.smali.json +232 -293
  318. data/grammars/source.smalltalk.json +60 -75
  319. data/grammars/source.smt.json +67 -82
  320. data/grammars/source.solidity.json +35 -54
  321. data/grammars/source.sp.json +40 -45
  322. data/grammars/source.sparql.json +3 -8
  323. data/grammars/source.spin.json +277 -297
  324. data/grammars/source.sqf.json +34 -44
  325. data/grammars/source.sql.json +142 -156
  326. data/grammars/source.stan.json +201 -160
  327. data/grammars/source.stata.json +57 -68
  328. data/grammars/source.strings.json +26 -30
  329. data/grammars/source.stylus.json +558 -565
  330. data/grammars/source.supercollider.json +33 -40
  331. data/grammars/source.swift.json +999 -1077
  332. data/grammars/source.systemverilog.json +351 -365
  333. data/grammars/source.tcl.json +77 -94
  334. data/grammars/source.tea.json +61 -67
  335. data/grammars/source.terra.json +25 -32
  336. data/grammars/source.terraform.json +68 -88
  337. data/grammars/source.thrift.json +300 -306
  338. data/grammars/source.tl.json +112 -117
  339. data/grammars/source.tla.json +65 -69
  340. data/grammars/source.toc.json +21 -25
  341. data/grammars/source.toml.json +117 -122
  342. data/grammars/source.ts.json +2838 -2774
  343. data/grammars/source.tsx.json +180 -184
  344. data/grammars/source.turing.json +970 -974
  345. data/grammars/source.turtle.json +124 -140
  346. data/grammars/source.txl.json +23 -37
  347. data/grammars/source.ucfconstraints.json +16 -21
  348. data/grammars/source.ur.json +15 -27
  349. data/grammars/source.vala.json +221 -235
  350. data/grammars/source.varnish.vcl.json +117 -129
  351. data/grammars/source.vbnet.json +69 -106
  352. data/grammars/source.verilog.json +101 -107
  353. data/grammars/source.vhdl.json +437 -445
  354. data/grammars/source.viml.json +540 -550
  355. data/grammars/source.wavefront.mtl.json +274 -277
  356. data/grammars/source.wavefront.obj.json +781 -784
  357. data/grammars/source.wdl.json +66 -46
  358. data/grammars/source.webassembly.json +97 -102
  359. data/grammars/source.webidl.json +311 -326
  360. data/grammars/source.x10.json +28 -32
  361. data/grammars/source.x86asm.json +21 -26
  362. data/grammars/source.xc.json +164 -172
  363. data/grammars/source.xq.json +81 -92
  364. data/grammars/source.xtend.json +199 -208
  365. data/grammars/source.yaml-ext.json +118 -124
  366. data/grammars/source.yaml.json +155 -174
  367. data/grammars/source.yaml.salt.json +113 -116
  368. data/grammars/source.yang.json +10 -13
  369. data/grammars/source.yara.json +98 -0
  370. data/grammars/text.bibtex.json +95 -100
  371. data/grammars/text.cfml.basic.json +403 -404
  372. data/grammars/text.elixir.json +18 -23
  373. data/grammars/text.error-list.json +15 -16
  374. data/grammars/text.find-refs.json +487 -488
  375. data/grammars/text.gherkin.feature.json +45 -53
  376. data/grammars/text.haml.json +176 -189
  377. data/grammars/text.hamlc.json +82 -88
  378. data/grammars/text.html.abl.json +16 -21
  379. data/grammars/text.html.asciidoc.json +139 -153
  380. data/grammars/text.html.asdoc.json +145 -155
  381. data/grammars/text.html.asp.json +23 -28
  382. data/grammars/text.html.basic.json +323 -338
  383. data/grammars/text.html.cfm.json +316 -325
  384. data/grammars/text.html.creole.json +177 -189
  385. data/grammars/text.html.django.json +27 -33
  386. data/grammars/text.html.ecr.json +21 -25
  387. data/grammars/text.html.elixir.json +3 -9
  388. data/grammars/text.html.erb.json +81 -85
  389. data/grammars/text.html.erlang.yaws.json +24 -29
  390. data/grammars/text.html.factor.json +5 -11
  391. data/grammars/text.html.ftl.json +16 -25
  392. data/grammars/text.html.handlebars.json +579 -598
  393. data/grammars/text.html.javadoc.json +426 -0
  394. data/grammars/text.html.js.json +11 -17
  395. data/grammars/text.html.jsp.json +377 -384
  396. data/grammars/text.html.liquid.json +8 -18
  397. data/grammars/text.html.mako.json +257 -275
  398. data/grammars/text.html.markdown.source.gfm.apib.json +419 -427
  399. data/grammars/text.html.markdown.source.gfm.mson.json +405 -414
  400. data/grammars/text.html.mediawiki.json +318 -344
  401. data/grammars/text.html.php.blade.json +2134 -2140
  402. data/grammars/text.html.php.json +980 -1013
  403. data/grammars/text.html.slash.json +101 -107
  404. data/grammars/text.html.smarty.json +75 -83
  405. data/grammars/text.html.soy.json +250 -253
  406. data/grammars/text.html.ssp.json +18 -24
  407. data/grammars/text.html.tcl.json +17 -24
  408. data/grammars/text.html.twig.json +712 -718
  409. data/grammars/text.idl-idldoc.json +5 -9
  410. data/grammars/text.jade.json +213 -235
  411. data/grammars/text.junit-test-report.json +25 -28
  412. data/grammars/text.log.latex.json +44 -46
  413. data/grammars/text.marko.json +370 -401
  414. data/grammars/text.python.console.json +3 -7
  415. data/grammars/text.python.traceback.json +2 -5
  416. data/grammars/text.rdoc.json +15 -19
  417. data/grammars/text.restructuredtext.clean.json +8 -11
  418. data/grammars/text.restructuredtext.json +886 -873
  419. data/grammars/text.robot.json +26 -36
  420. data/grammars/text.roff.json +2852 -2915
  421. data/grammars/text.runoff.json +56 -69
  422. data/grammars/text.sfd.json +151 -155
  423. data/grammars/text.shell-session.json +5 -8
  424. data/grammars/text.slim.json +184 -210
  425. data/grammars/text.srt.json +54 -57
  426. data/grammars/text.tex.json +98 -105
  427. data/grammars/text.tex.latex.beamer.json +14 -20
  428. data/grammars/text.tex.latex.haskell.json +883 -782
  429. data/grammars/text.tex.latex.json +281 -291
  430. data/grammars/text.tex.latex.memoir.json +39 -46
  431. data/grammars/text.tex.latex.rd.json +32 -38
  432. data/grammars/text.xml.ant.json +62 -69
  433. data/grammars/text.xml.flex-config.json +1009 -1013
  434. data/grammars/text.xml.genshi.json +10 -16
  435. data/grammars/text.xml.json +117 -130
  436. data/grammars/text.xml.pom.json +235 -240
  437. data/grammars/text.xml.xsl.json +31 -37
  438. data/grammars/text.zone_file.json +24 -29
  439. data/lib/linguist/blob.rb +10 -1
  440. data/lib/linguist/blob_helper.rb +4 -1
  441. data/lib/linguist/file_blob.rb +5 -0
  442. data/lib/linguist/generated.rb +16 -0
  443. data/lib/linguist/heuristics.rb +23 -11
  444. data/lib/linguist/language.rb +3 -6
  445. data/lib/linguist/languages.json +1 -1
  446. data/lib/linguist/languages.yml +74 -12
  447. data/lib/linguist/lazy_blob.rb +15 -1
  448. data/lib/linguist/linguist.bundle +0 -0
  449. data/lib/linguist/samples.json +1666 -3381
  450. data/lib/linguist/shebang.rb +2 -0
  451. data/lib/linguist/strategy/modeline.rb +2 -0
  452. data/lib/linguist/vendor.yml +5 -6
  453. data/lib/linguist/version.rb +1 -1
  454. metadata +12 -11
  455. data/grammars/source.elm.json +0 -381
  456. data/grammars/source.nant-build.json +0 -86
  457. data/grammars/source.octave.json +0 -451
  458. data/grammars/text.html.mediawiki.elm-build-output.json +0 -111
  459. data/grammars/text.html.mediawiki.elm-documentation.json +0 -22
  460. data/grammars/text.html.vue.json +0 -936
@@ -1,100 +1,93 @@
1
1
  {
2
- "fileTypes": [
3
- "sc",
4
- "scd"
5
- ],
6
- "foldingStartMarker": "\\{|\\/\\*",
7
- "foldingStopMarker": "\\}|\\*\\/",
8
2
  "name": "SuperCollider",
3
+ "scopeName": "source.supercollider",
9
4
  "patterns": [
10
5
  {
11
- "match": "\\b(arg|var|classvar|const|this|thisThread|thisMethod|thisFunction|thisFunctionDef|thisProcess|true|false|inf|nil)\\b",
12
- "name": "keyword.control.supercollider"
6
+ "name": "keyword.control.supercollider",
7
+ "match": "\\b(arg|var|classvar|const|this|thisThread|thisMethod|thisFunction|thisFunctionDef|thisProcess|true|false|inf|nil)\\b"
13
8
  },
14
9
  {
10
+ "name": "string.quoted.double.supercollider",
15
11
  "begin": "\"",
16
12
  "end": "\"",
17
- "name": "string.quoted.double.supercollider",
18
13
  "patterns": [
19
14
  {
20
- "match": "\\\\.",
21
- "name": "constant.character.escape.supercollider"
15
+ "name": "constant.character.escape.supercollider",
16
+ "match": "\\\\."
22
17
  }
23
18
  ]
24
19
  },
25
20
  {
21
+ "name": "entity.name.symbol.supercollider",
26
22
  "begin": "'",
27
23
  "end": "'",
28
- "name": "entity.name.symbol.supercollider",
29
24
  "patterns": [
30
25
  {
31
- "match": "\\\\.",
32
- "name": "constant.character.escape.supercollider"
26
+ "name": "constant.character.escape.supercollider",
27
+ "match": "\\\\."
33
28
  }
34
29
  ]
35
30
  },
36
31
  {
37
- "match": "[a-z][a-zA-Z0-9_]*\\:",
38
- "name": "support.name.tag.supercollider"
32
+ "name": "support.name.tag.supercollider",
33
+ "match": "[a-z][a-zA-Z0-9_]*\\:"
39
34
  },
40
35
  {
36
+ "match": "^\\s*\\+*\\s*([A-Z]{1}[a-zA-Z0-9_]*)\\s*\\:{1}\\s*([A-Z]{1}[a-zA-Z0-9_]*)\\s*\\{",
41
37
  "captures": {
42
38
  "1": {
43
39
  "name": "entity.name.class.supercollider"
44
40
  }
45
- },
46
- "match": "^\\s*\\+*\\s*([A-Z]{1}[a-zA-Z0-9_]*)\\s*\\:{1}\\s*([A-Z]{1}[a-zA-Z0-9_]*)\\s*\\{"
41
+ }
47
42
  },
48
43
  {
44
+ "match": "^([A-Z_]{1}[a-zA-Z0-9_]*)[^a-zA-Z0-9_]",
49
45
  "captures": {
50
46
  "1": {
51
47
  "name": "entity.name.class.supercollider"
52
48
  }
53
- },
54
- "match": "^([A-Z_]{1}[a-zA-Z0-9_]*)[^a-zA-Z0-9_]"
49
+ }
55
50
  },
56
51
  {
57
- "match": "\\|[a-zA-Z0-9\\#\\[\\]\\\"\\_\\=\\.\\(\\)[[:space:]]\\,]+\\|",
58
- "name": "variable.parameter.function.supercollider"
52
+ "name": "variable.parameter.function.supercollider",
53
+ "match": "\\|[a-zA-Z0-9\\#\\[\\]\\\"\\_\\=\\.\\(\\)[[:space:]]\\,]+\\|"
59
54
  },
60
55
  {
56
+ "match": "[^a-zA-Z0-9\\\\]([A-Z_]{1}[a-zA-Z0-9_]*)[^a-zA-Z0-9_]",
61
57
  "captures": {
62
58
  "1": {
63
59
  "name": "entity.name.class.supercollider"
64
60
  }
65
- },
66
- "match": "[^a-zA-Z0-9\\\\]([A-Z_]{1}[a-zA-Z0-9_]*)[^a-zA-Z0-9_]"
61
+ }
67
62
  },
68
63
  {
69
- "match": "\\\\[a-zA-Z0-9\\_]+",
70
- "name": "entity.name.symbol.supercollider"
64
+ "name": "entity.name.symbol.supercollider",
65
+ "match": "\\\\[a-zA-Z0-9\\_]+"
71
66
  },
72
67
  {
68
+ "match": "^\\s*(\\**[a-z]{1}[a-zA-Z0-9_]+)\\s*\\{",
73
69
  "captures": {
74
70
  "1": {
75
71
  "name": "entity.name.function.supercollider"
76
72
  }
77
- },
78
- "match": "^\\s*(\\**[a-z]{1}[a-zA-Z0-9_]+)\\s*\\{"
73
+ }
79
74
  },
80
75
  {
81
- "match": "\\~[a-z][a-zA-Z0-9_]*",
82
- "name": "variable.language.supercollider"
76
+ "name": "variable.language.supercollider",
77
+ "match": "\\~[a-z][a-zA-Z0-9_]*"
83
78
  },
84
79
  {
85
- "match": "\\/\\/.*",
86
- "name": "comment.single.supercollider"
80
+ "name": "comment.single.supercollider",
81
+ "match": "\\/\\/.*"
87
82
  },
88
83
  {
84
+ "name": "comment.multiline.supercollider",
89
85
  "begin": "\\/\\*",
90
- "end": "\\*\\/",
91
- "name": "comment.multiline.supercollider"
86
+ "end": "\\*\\/"
92
87
  },
93
88
  {
94
- "comment": "source: ruby bundle",
95
- "match": "\\b(0[xX][0-9A-Fa-f](?>_?[0-9A-Fa-f])*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0[bB][01]+)\\b",
96
- "name": "constant.numeric.supercollider"
89
+ "name": "constant.numeric.supercollider",
90
+ "match": "\\b(0[xX][0-9A-Fa-f](?\u003e_?[0-9A-Fa-f])*|\\d(?\u003e_?\\d)*(\\.(?![^[:space:][:digit:]])(?\u003e_?\\d)*)?([eE][-+]?\\d(?\u003e_?\\d)*)?|0[bB][01]+)\\b"
97
91
  }
98
- ],
99
- "scopeName": "source.supercollider"
100
- }
92
+ ]
93
+ }
@@ -1,11 +1,6 @@
1
1
  {
2
- "comment": "See swift.tmbundle/grammar-test.swift for test cases.",
3
- "fileTypes": [
4
- "swift"
5
- ],
6
- "firstLineMatch": "^#!/.*\\bswift",
7
- "keyEquivalent": "^~S",
8
2
  "name": "Swift",
3
+ "scopeName": "source.swift",
9
4
  "patterns": [
10
5
  {
11
6
  "include": "#root"
@@ -15,27 +10,12 @@
15
10
  "attributes": {
16
11
  "patterns": [
17
12
  {
13
+ "name": "meta.attribute.available.swift",
18
14
  "begin": "((@)available)(\\()",
19
- "beginCaptures": {
20
- "1": {
21
- "name": "storage.modifier.attribute.swift"
22
- },
23
- "2": {
24
- "name": "punctuation.definition.attribute.swift"
25
- },
26
- "3": {
27
- "name": "punctuation.definition.arguments.begin.swift"
28
- }
29
- },
30
15
  "end": "\\)",
31
- "endCaptures": {
32
- "0": {
33
- "name": "punctuation.definition.arguments.end.swift"
34
- }
35
- },
36
- "name": "meta.attribute.available.swift",
37
16
  "patterns": [
38
17
  {
18
+ "match": "\\b((?:iOS|macOS|OSX|watchOS|tvOS)(?:ApplicationExtension)?)\\b(?:\\s+([0-9]+(?:\\.[0-9]+)*\\b))?",
39
19
  "captures": {
40
20
  "1": {
41
21
  "name": "keyword.other.platform.os.swift"
@@ -43,11 +23,17 @@
43
23
  "2": {
44
24
  "name": "constant.numeric.swift"
45
25
  }
46
- },
47
- "match": "\\b((?:iOS|macOS|OSX|watchOS|tvOS)(?:ApplicationExtension)?)\\b(?:\\s+([0-9]+(?:\\.[0-9]+)*\\b))?"
26
+ }
48
27
  },
49
28
  {
50
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
+ ],
51
37
  "beginCaptures": {
52
38
  "1": {
53
39
  "name": "keyword.other.swift"
@@ -55,17 +41,16 @@
55
41
  "2": {
56
42
  "name": "punctuation.separator.key-value.swift"
57
43
  }
58
- },
44
+ }
45
+ },
46
+ {
47
+ "begin": "\\b(message|renamed)\\s*(:)\\s*(?=\")",
59
48
  "end": "(?!\\G)",
60
49
  "patterns": [
61
50
  {
62
- "match": "\\b[0-9]+(?:\\.[0-9]+)*\\b",
63
- "name": "constant.numeric.swift"
51
+ "include": "#literals"
64
52
  }
65
- ]
66
- },
67
- {
68
- "begin": "\\b(message|renamed)\\s*(:)\\s*(?=\")",
53
+ ],
69
54
  "beginCaptures": {
70
55
  "1": {
71
56
  "name": "keyword.other.swift"
@@ -73,15 +58,10 @@
73
58
  "2": {
74
59
  "name": "punctuation.separator.key-value.swift"
75
60
  }
76
- },
77
- "end": "(?!\\G)",
78
- "patterns": [
79
- {
80
- "include": "#literals"
81
- }
82
- ]
61
+ }
83
62
  },
84
63
  {
64
+ "match": "(?:(\\*)|\\b(deprecated|unavailable)\\b)\\s*(.*?)(?=[,)])",
85
65
  "captures": {
86
66
  "1": {
87
67
  "name": "keyword.other.platform.all.swift"
@@ -92,13 +72,9 @@
92
72
  "3": {
93
73
  "name": "invalid.illegal.character-not-allowed-here.swift"
94
74
  }
95
- },
96
- "match": "(?:(\\*)|\\b(deprecated|unavailable)\\b)\\s*(.*?)(?=[,)])"
75
+ }
97
76
  }
98
- ]
99
- },
100
- {
101
- "begin": "((@)objc)(\\()",
77
+ ],
102
78
  "beginCaptures": {
103
79
  "1": {
104
80
  "name": "storage.modifier.attribute.swift"
@@ -110,85 +86,100 @@
110
86
  "name": "punctuation.definition.arguments.begin.swift"
111
87
  }
112
88
  },
113
- "end": "\\)",
114
89
  "endCaptures": {
115
90
  "0": {
116
91
  "name": "punctuation.definition.arguments.end.swift"
117
92
  }
118
- },
93
+ }
94
+ },
95
+ {
119
96
  "name": "meta.attribute.objc.swift",
97
+ "begin": "((@)objc)(\\()",
98
+ "end": "\\)",
120
99
  "patterns": [
121
100
  {
101
+ "name": "entity.name.function.swift",
102
+ "match": "\\w*(?::(?:\\w*:)*(\\w*))?",
122
103
  "captures": {
123
104
  "1": {
124
105
  "name": "invalid.illegal.missing-colon-after-selector-piece.swift"
125
106
  }
126
- },
127
- "match": "\\w*(?::(?:\\w*:)*(\\w*))?",
128
- "name": "entity.name.function.swift"
107
+ }
129
108
  }
130
- ]
131
- },
132
- {
133
- "begin": "(@)(?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>)",
109
+ ],
134
110
  "beginCaptures": {
135
- "0": {
136
- "name": "storage.modifier.attribute.swift"
137
- },
138
111
  "1": {
139
- "name": "punctuation.definition.attribute.swift"
112
+ "name": "storage.modifier.attribute.swift"
140
113
  },
141
114
  "2": {
142
- "name": "punctuation.definition.identifier.swift"
115
+ "name": "punctuation.definition.attribute.swift"
143
116
  },
144
117
  "3": {
145
- "name": "punctuation.definition.identifier.swift"
118
+ "name": "punctuation.definition.arguments.begin.swift"
146
119
  }
147
120
  },
148
- "comment": "any other attribute",
149
- "end": "(?!\\G\\()",
121
+ "endCaptures": {
122
+ "0": {
123
+ "name": "punctuation.definition.arguments.end.swift"
124
+ }
125
+ }
126
+ },
127
+ {
150
128
  "name": "meta.attribute.swift",
129
+ "begin": "(@)(?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e)",
130
+ "end": "(?!\\G\\()",
151
131
  "patterns": [
152
132
  {
133
+ "name": "meta.arguments.attribute.swift",
153
134
  "begin": "\\(",
135
+ "end": "\\)",
136
+ "patterns": [
137
+ {
138
+ "include": "#expressions"
139
+ }
140
+ ],
154
141
  "beginCaptures": {
155
142
  "0": {
156
143
  "name": "punctuation.definition.arguments.begin.swift"
157
144
  }
158
145
  },
159
- "end": "\\)",
160
146
  "endCaptures": {
161
147
  "0": {
162
148
  "name": "punctuation.definition.arguments.end.swift"
163
149
  }
164
- },
165
- "name": "meta.arguments.attribute.swift",
166
- "patterns": [
167
- {
168
- "include": "#expressions"
169
- }
170
- ]
150
+ }
171
151
  }
172
- ]
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
+ }
173
167
  }
174
168
  ]
175
169
  },
176
170
  "builtin-functions": {
177
171
  "patterns": [
178
172
  {
179
- "comment": "Member functions in the standard library in Swift 3 which may be used with trailing closures and no parentheses",
180
- "match": "(?<=\\.)(?: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",
181
- "name": "support.function.swift"
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"
182
175
  },
183
176
  {
184
- "comment": "Member functions in the standard library in Swift 3",
185
- "match": "(?<=\\.)(?: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*\\()",
186
- "name": "support.function.swift"
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*\\()"
187
179
  },
188
180
  {
189
- "comment": "Member functions in the standard library in Swift 2 only",
190
- "match": "(?<=\\.)(?: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*\\()",
191
- "name": "support.function.swift"
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*\\()"
192
183
  }
193
184
  ]
194
185
  },
@@ -196,6 +187,12 @@
196
187
  "patterns": [
197
188
  {
198
189
  "begin": "\\b(type)(\\()\\s*(of)(:)",
190
+ "end": "\\)",
191
+ "patterns": [
192
+ {
193
+ "include": "#expressions"
194
+ }
195
+ ],
199
196
  "beginCaptures": {
200
197
  "1": {
201
198
  "name": "support.function.dynamic-type.swift"
@@ -210,60 +207,47 @@
210
207
  "name": "punctuation.separator.argument-label.begin.swift"
211
208
  }
212
209
  },
213
- "end": "\\)",
214
210
  "endCaptures": {
215
211
  "0": {
216
212
  "name": "punctuation.definition.arguments.end.swift"
217
213
  }
218
- },
219
- "patterns": [
220
- {
221
- "include": "#expressions"
222
- }
223
- ]
214
+ }
224
215
  },
225
216
  {
226
- "comment": "Global functions available in Swift 3 which may be used with trailing closures and no parentheses",
227
- "match": "\\b(?:anyGenerator|autoreleasepool)(?=\\s*[({])\\b",
228
- "name": "support.function.swift"
217
+ "name": "support.function.swift",
218
+ "match": "\\b(?:anyGenerator|autoreleasepool)(?=\\s*[({])\\b"
229
219
  },
230
220
  {
231
- "comment": "Global functions available in Swift 3",
232
- "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*\\()",
233
- "name": "support.function.swift"
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*\\()"
234
223
  },
235
224
  {
236
- "comment": "Global functions available in Swift 2 only",
237
- "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*\\()",
238
- "name": "support.function.swift"
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*\\()"
239
227
  }
240
228
  ]
241
229
  },
242
230
  "builtin-properties": {
243
231
  "patterns": [
244
232
  {
245
- "match": "(?<=\\bProcess\\.|\\bCommandLine\\.)(arguments|argc|unsafeArgv)",
246
- "name": "support.variable.swift"
233
+ "name": "support.variable.swift",
234
+ "match": "(?\u003c=\\bProcess\\.|\\bCommandLine\\.)(arguments|argc|unsafeArgv)"
247
235
  },
248
236
  {
249
- "comment": "Properties in the standard library in Swift 3",
250
- "match": "(?<=\\.)(?: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",
251
- "name": "support.variable.swift"
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"
252
239
  },
253
240
  {
254
- "comment": "Properties in the standard library in Swift 2 only",
255
- "match": "(?<=\\.)(?:boolValue|disposition|end|objectIdentifier|quickLookObject|start|valueType)\\b",
256
- "name": "support.variable.swift"
241
+ "name": "support.variable.swift",
242
+ "match": "(?\u003c=\\.)(?:boolValue|disposition|end|objectIdentifier|quickLookObject|start|valueType)\\b"
257
243
  },
258
244
  {
259
- "comment": "Enum cases in the standard library - note that there is some overlap between these and the properties",
260
- "match": "(?<=\\.)(?: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",
261
- "name": "support.variable.swift"
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"
262
247
  }
263
248
  ]
264
249
  },
265
250
  "builtin-types": {
266
- "comment": "Types provided in the standard library",
267
251
  "patterns": [
268
252
  {
269
253
  "include": "#builtin-class-type"
@@ -281,79 +265,68 @@
281
265
  "include": "#builtin-typealias"
282
266
  },
283
267
  {
284
- "match": "\\bAny\\b",
285
- "name": "support.type.any.swift"
268
+ "name": "support.type.any.swift",
269
+ "match": "\\bAny\\b"
286
270
  }
287
271
  ],
288
272
  "repository": {
289
273
  "builtin-class-type": {
290
- "comment": "Builtin class types",
291
- "match": "\\b(Managed(Buffer|ProtoBuffer)|NonObjectiveCBase|AnyGenerator)\\b",
292
- "name": "support.class.swift"
274
+ "name": "support.class.swift",
275
+ "match": "\\b(Managed(Buffer|ProtoBuffer)|NonObjectiveCBase|AnyGenerator)\\b"
293
276
  },
294
277
  "builtin-enum-type": {
295
278
  "patterns": [
296
279
  {
297
- "comment": "CommandLine is an enum, but it acts like a constant",
298
- "match": "\\b(?:CommandLine|Process(?=\\.))\\b",
299
- "name": "support.constant.swift"
280
+ "name": "support.constant.swift",
281
+ "match": "\\b(?:CommandLine|Process(?=\\.))\\b"
300
282
  },
301
283
  {
302
- "comment": "The return type of a function that never returns",
303
- "match": "\\bNever\\b",
304
- "name": "support.constant.never.swift"
284
+ "name": "support.constant.never.swift",
285
+ "match": "\\bNever\\b"
305
286
  },
306
287
  {
307
- "comment": "Enum types in the standard library in Swift 3",
308
- "match": "\\b(?:ImplicitlyUnwrappedOptional|Representation|MemoryLayout|FloatingPointClassification|SetIndexRepresentation|SetIteratorRepresentation|FloatingPointRoundingRule|UnicodeDecodingResult|Optional|DictionaryIndexRepresentation|AncestorRepresentation|DisplayStyle|PlaygroundQuickLook|Never|FloatingPointSign|Bit|DictionaryIteratorRepresentation)\\b",
309
- "name": "support.type.swift"
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"
310
290
  },
311
291
  {
312
- "comment": "Enum types in the standard library in Swift 2 only",
313
- "match": "\\b(?:MirrorDisposition|QuickLookObject)\\b",
314
- "name": "support.type.swift"
292
+ "name": "support.type.swift",
293
+ "match": "\\b(?:MirrorDisposition|QuickLookObject)\\b"
315
294
  }
316
295
  ]
317
296
  },
318
297
  "builtin-protocol-type": {
319
298
  "patterns": [
320
299
  {
321
- "comment": "Protocols in the standard library in Swift 3",
322
- "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",
323
- "name": "support.type.swift"
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"
324
302
  },
325
303
  {
326
- "comment": "Protocols in the standard library in Swift 2 only",
327
- "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",
328
- "name": "support.type.swift"
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"
329
306
  }
330
307
  ]
331
308
  },
332
309
  "builtin-struct-type": {
333
310
  "patterns": [
334
311
  {
335
- "comment": "Structs in the standard library in Swift 3",
336
- "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",
337
- "name": "support.type.swift"
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"
338
314
  },
339
315
  {
340
- "comment": "Structs in the standard library in Swift 2 only",
341
- "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",
342
- "name": "support.type.swift"
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"
343
318
  }
344
319
  ]
345
320
  },
346
321
  "builtin-typealias": {
347
322
  "patterns": [
348
323
  {
349
- "comment": "Typealiases in the standard library in Swift 3",
350
- "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",
351
- "name": "support.type.swift"
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"
352
326
  },
353
327
  {
354
- "comment": "Typealiases in the standard library in Swift 2 only",
355
- "match": "\\b(?:Generator|PlaygroundQuickLook|UWord|Word)\\b",
356
- "name": "support.type.swift"
328
+ "name": "support.type.swift",
329
+ "match": "\\b(?:Generator|PlaygroundQuickLook|UWord|Word)\\b"
357
330
  }
358
331
  ]
359
332
  }
@@ -361,138 +334,138 @@
361
334
  },
362
335
  "code-block": {
363
336
  "begin": "\\{",
337
+ "end": "\\}",
338
+ "patterns": [
339
+ {
340
+ "include": "$self"
341
+ }
342
+ ],
364
343
  "beginCaptures": {
365
344
  "0": {
366
345
  "name": "punctuation.section.scope.begin.swift"
367
346
  }
368
347
  },
369
- "end": "\\}",
370
348
  "endCaptures": {
371
349
  "0": {
372
350
  "name": "punctuation.section.scope.end.swift"
373
351
  }
374
- },
375
- "patterns": [
376
- {
377
- "include": "$self"
378
- }
379
- ]
352
+ }
380
353
  },
381
354
  "comments": {
382
355
  "patterns": [
383
356
  {
357
+ "name": "comment.line.number-sign.swift",
358
+ "match": "\\A^(#!).*$\\n?",
384
359
  "captures": {
385
360
  "1": {
386
361
  "name": "punctuation.definition.comment.swift"
387
362
  }
388
- },
389
- "match": "\\A^(#!).*$\\n?",
390
- "name": "comment.line.number-sign.swift"
363
+ }
391
364
  },
392
365
  {
366
+ "name": "comment.block.documentation.swift",
393
367
  "begin": "/\\*\\*(?!/)",
368
+ "end": "\\*/",
369
+ "patterns": [
370
+ {
371
+ "include": "#nested"
372
+ }
373
+ ],
394
374
  "beginCaptures": {
395
375
  "0": {
396
376
  "name": "punctuation.definition.comment.begin.swift"
397
377
  }
398
378
  },
399
- "end": "\\*/",
400
379
  "endCaptures": {
401
380
  "0": {
402
381
  "name": "punctuation.definition.comment.end.swift"
403
382
  }
404
- },
405
- "name": "comment.block.documentation.swift",
383
+ }
384
+ },
385
+ {
386
+ "name": "comment.block.documentation.playground.swift",
387
+ "begin": "/\\*:",
388
+ "end": "\\*/",
406
389
  "patterns": [
407
390
  {
408
391
  "include": "#nested"
409
392
  }
410
- ]
411
- },
412
- {
413
- "begin": "/\\*:",
393
+ ],
414
394
  "beginCaptures": {
415
395
  "0": {
416
396
  "name": "punctuation.definition.comment.begin.swift"
417
397
  }
418
398
  },
419
- "end": "\\*/",
420
399
  "endCaptures": {
421
400
  "0": {
422
401
  "name": "punctuation.definition.comment.end.swift"
423
402
  }
424
- },
425
- "name": "comment.block.documentation.playground.swift",
403
+ }
404
+ },
405
+ {
406
+ "name": "comment.block.swift",
407
+ "begin": "/\\*",
408
+ "end": "\\*/",
426
409
  "patterns": [
427
410
  {
428
411
  "include": "#nested"
429
412
  }
430
- ]
431
- },
432
- {
433
- "begin": "/\\*",
413
+ ],
434
414
  "beginCaptures": {
435
415
  "0": {
436
416
  "name": "punctuation.definition.comment.begin.swift"
437
417
  }
438
418
  },
439
- "end": "\\*/",
440
419
  "endCaptures": {
441
420
  "0": {
442
421
  "name": "punctuation.definition.comment.end.swift"
443
422
  }
444
- },
445
- "name": "comment.block.swift",
446
- "patterns": [
447
- {
448
- "include": "#nested"
449
- }
450
- ]
423
+ }
451
424
  },
452
425
  {
453
- "match": "\\*/",
454
- "name": "invalid.illegal.unexpected-end-of-block-comment.swift"
426
+ "name": "invalid.illegal.unexpected-end-of-block-comment.swift",
427
+ "match": "\\*/"
455
428
  },
456
429
  {
457
430
  "begin": "(^[ \\t]+)?(?=//)",
458
- "beginCaptures": {
459
- "1": {
460
- "name": "punctuation.whitespace.comment.leading.swift"
461
- }
462
- },
463
431
  "end": "(?!\\G)",
464
432
  "patterns": [
465
433
  {
434
+ "name": "comment.line.triple-slash.documentation.swift",
466
435
  "begin": "///",
436
+ "end": "^",
467
437
  "beginCaptures": {
468
438
  "0": {
469
439
  "name": "punctuation.definition.comment.swift"
470
440
  }
471
- },
472
- "end": "^",
473
- "name": "comment.line.triple-slash.documentation.swift"
441
+ }
474
442
  },
475
443
  {
444
+ "name": "comment.line.double-slash.documentation.swift",
476
445
  "begin": "//:",
446
+ "end": "^",
477
447
  "beginCaptures": {
478
448
  "0": {
479
449
  "name": "punctuation.definition.comment.swift"
480
450
  }
481
- },
482
- "end": "^",
483
- "name": "comment.line.double-slash.documentation.swift"
451
+ }
484
452
  },
485
453
  {
454
+ "name": "comment.line.double-slash.swift",
486
455
  "begin": "//",
456
+ "end": "^",
487
457
  "beginCaptures": {
488
458
  "0": {
489
459
  "name": "punctuation.definition.comment.swift"
490
460
  }
491
- },
492
- "end": "^",
493
- "name": "comment.line.double-slash.swift"
461
+ }
494
462
  }
495
- ]
463
+ ],
464
+ "beginCaptures": {
465
+ "1": {
466
+ "name": "punctuation.whitespace.comment.leading.swift"
467
+ }
468
+ }
496
469
  }
497
470
  ],
498
471
  "repository": {
@@ -510,7 +483,9 @@
510
483
  "compiler-control": {
511
484
  "patterns": [
512
485
  {
486
+ "contentName": "comment.block.preprocessor.swift",
513
487
  "begin": "^\\s*(#)(if|elseif)\\s+(false)\\b.*?(?=$|//|/\\*)",
488
+ "end": "(?=^\\s*(#(elseif|else|endif)\\b))",
514
489
  "beginCaptures": {
515
490
  "0": {
516
491
  "name": "meta.preprocessor.conditional.swift"
@@ -524,32 +499,23 @@
524
499
  "3": {
525
500
  "name": "constant.language.boolean.swift"
526
501
  }
527
- },
528
- "contentName": "comment.block.preprocessor.swift",
529
- "end": "(?=^\\s*(#(elseif|else|endif)\\b))"
502
+ }
530
503
  },
531
504
  {
505
+ "name": "meta.preprocessor.conditional.swift",
532
506
  "begin": "^\\s*(#)(if|elseif)\\s+",
533
- "captures": {
534
- "1": {
535
- "name": "punctuation.definition.preprocessor.swift"
536
- },
537
- "2": {
538
- "name": "keyword.control.preprocessor.conditional.swift"
539
- }
540
- },
541
507
  "end": "(?=\\s*(?://|/\\*))|$",
542
- "name": "meta.preprocessor.conditional.swift",
543
508
  "patterns": [
544
509
  {
545
- "match": "(&&|\\|\\|)",
546
- "name": "keyword.operator.logical.swift"
510
+ "name": "keyword.operator.logical.swift",
511
+ "match": "(\u0026\u0026|\\|\\|)"
547
512
  },
548
513
  {
549
- "match": "\\b(true|false)\\b",
550
- "name": "constant.language.boolean.swift"
514
+ "name": "constant.language.boolean.swift",
515
+ "match": "\\b(true|false)\\b"
551
516
  },
552
517
  {
518
+ "match": "\\b(arch)\\s*(\\()\\s*(?:(arm|arm64|powerpc64|powerpc64le|i386|x86_64|s390x)|\\w+)\\s*(\\))",
553
519
  "captures": {
554
520
  "1": {
555
521
  "name": "keyword.other.condition.swift"
@@ -563,10 +529,10 @@
563
529
  "4": {
564
530
  "name": "punctuation.definition.parameters.end.swift"
565
531
  }
566
- },
567
- "match": "\\b(arch)\\s*(\\()\\s*(?:(arm|arm64|powerpc64|powerpc64le|i386|x86_64|s390x)|\\w+)\\s*(\\))"
532
+ }
568
533
  },
569
534
  {
535
+ "match": "\\b(os)\\s*(\\()\\s*(?:(macOS|OSX|iOS|tvOS|watchOS|Android|Linux|FreeBSD|Windows|PS4)|\\w+)\\s*(\\))",
570
536
  "captures": {
571
537
  "1": {
572
538
  "name": "keyword.other.condition.swift"
@@ -580,11 +546,21 @@
580
546
  "4": {
581
547
  "name": "punctuation.definition.parameters.end.swift"
582
548
  }
583
- },
584
- "match": "\\b(os)\\s*(\\()\\s*(?:(macOS|OSX|iOS|tvOS|watchOS|Android|Linux|FreeBSD|Windows|PS4)|\\w+)\\s*(\\))"
549
+ }
585
550
  },
586
551
  {
587
552
  "begin": "\\b(swift)\\s*(\\()",
553
+ "end": "(\\))|$",
554
+ "patterns": [
555
+ {
556
+ "name": "keyword.operator.comparison.swift",
557
+ "match": "\u003e="
558
+ },
559
+ {
560
+ "name": "constant.numeric.swift",
561
+ "match": "\\b[0-9]+(?:\\.[0-9]+)*\\b"
562
+ }
563
+ ],
588
564
  "beginCaptures": {
589
565
  "1": {
590
566
  "name": "keyword.other.condition.swift"
@@ -593,26 +569,25 @@
593
569
  "name": "punctuation.definition.parameters.begin.swift"
594
570
  }
595
571
  },
596
- "end": "(\\))|$",
597
572
  "endCaptures": {
598
573
  "1": {
599
574
  "name": "punctuation.definition.parameters.end.swift"
600
575
  }
601
- },
602
- "patterns": [
603
- {
604
- "match": ">=",
605
- "name": "keyword.operator.comparison.swift"
606
- },
607
- {
608
- "match": "\\b[0-9]+(?:\\.[0-9]+)*\\b",
609
- "name": "constant.numeric.swift"
610
- }
611
- ]
576
+ }
612
577
  }
613
- ]
578
+ ],
579
+ "captures": {
580
+ "1": {
581
+ "name": "punctuation.definition.preprocessor.swift"
582
+ },
583
+ "2": {
584
+ "name": "keyword.control.preprocessor.conditional.swift"
585
+ }
586
+ }
614
587
  },
615
588
  {
589
+ "name": "meta.preprocessor.conditional.swift",
590
+ "match": "^\\s*(#)(else|endif)(.*?)(?=$|//|/\\*)",
616
591
  "captures": {
617
592
  "1": {
618
593
  "name": "punctuation.definition.preprocessor.swift"
@@ -623,16 +598,16 @@
623
598
  "3": {
624
599
  "patterns": [
625
600
  {
626
- "match": "\\S+",
627
- "name": "invalid.illegal.character-not-allowed-here.swift"
601
+ "name": "invalid.illegal.character-not-allowed-here.swift",
602
+ "match": "\\S+"
628
603
  }
629
604
  ]
630
605
  }
631
- },
632
- "match": "^\\s*(#)(else|endif)(.*?)(?=$|//|/\\*)",
633
- "name": "meta.preprocessor.conditional.swift"
606
+ }
634
607
  },
635
608
  {
609
+ "name": "meta.preprocessor.sourcelocation.swift",
610
+ "match": "^\\s*(#)(sourceLocation)((\\()([^)]*)(\\)))(.*?)(?=$|//|/\\*)",
636
611
  "captures": {
637
612
  "1": {
638
613
  "name": "punctuation.definition.preprocessor.swift"
@@ -647,6 +622,12 @@
647
622
  "patterns": [
648
623
  {
649
624
  "begin": "(file)\\s*(:)\\s*(?=\")",
625
+ "end": "(?!\\G)",
626
+ "patterns": [
627
+ {
628
+ "include": "#literals"
629
+ }
630
+ ],
650
631
  "beginCaptures": {
651
632
  "1": {
652
633
  "name": "support.variable.parameter.swift"
@@ -654,15 +635,10 @@
654
635
  "2": {
655
636
  "name": "punctuation.separator.key-value.swift"
656
637
  }
657
- },
658
- "end": "(?!\\G)",
659
- "patterns": [
660
- {
661
- "include": "#literals"
662
- }
663
- ]
638
+ }
664
639
  },
665
640
  {
641
+ "match": "(line)\\s*(:)\\s*([0-9]+)",
666
642
  "captures": {
667
643
  "1": {
668
644
  "name": "support.variable.parameter.swift"
@@ -673,16 +649,15 @@
673
649
  "3": {
674
650
  "name": "constant.numeric.integer.swift"
675
651
  }
676
- },
677
- "match": "(line)\\s*(:)\\s*([0-9]+)"
652
+ }
678
653
  },
679
654
  {
680
- "match": ",",
681
- "name": "punctuation.separator.parameters.swift"
655
+ "name": "punctuation.separator.parameters.swift",
656
+ "match": ","
682
657
  },
683
658
  {
684
- "match": "\\S+",
685
- "name": "invalid.illegal.character-not-allowed-here.swift"
659
+ "name": "invalid.illegal.character-not-allowed-here.swift",
660
+ "match": "\\S+"
686
661
  }
687
662
  ]
688
663
  },
@@ -692,14 +667,12 @@
692
667
  "7": {
693
668
  "patterns": [
694
669
  {
695
- "match": "\\S+",
696
- "name": "invalid.illegal.character-not-allowed-here.swift"
670
+ "name": "invalid.illegal.character-not-allowed-here.swift",
671
+ "match": "\\S+"
697
672
  }
698
673
  ]
699
674
  }
700
- },
701
- "match": "^\\s*(#)(sourceLocation)((\\()([^)]*)(\\)))(.*?)(?=$|//|/\\*)",
702
- "name": "meta.preprocessor.sourcelocation.swift"
675
+ }
703
676
  }
704
677
  ]
705
678
  },
@@ -746,50 +719,48 @@
746
719
  "include": "#attributes"
747
720
  },
748
721
  {
749
- "match": "\\b(?:throws|rethrows)\\b",
750
- "name": "keyword.control.exception.swift"
722
+ "name": "keyword.control.exception.swift",
723
+ "match": "\\b(?:throws|rethrows)\\b"
751
724
  },
752
725
  {
753
- "match": "\\binout\\b",
754
- "name": "storage.modifier.swift"
726
+ "name": "storage.modifier.swift",
727
+ "match": "\\binout\\b"
755
728
  },
756
729
  {
757
- "match": "\\bSelf\\b",
758
- "name": "variable.language.swift"
730
+ "name": "variable.language.swift",
731
+ "match": "\\bSelf\\b"
759
732
  },
760
733
  {
734
+ "match": "(?\u003c![/=\\-+!*%\u003c\u003e\u0026|\\^~.])(-\u003e)(?![/=\\-+!*%\u003c\u003e\u0026|\\^~.])",
761
735
  "captures": {
762
736
  "1": {
763
737
  "name": "keyword.operator.type.function.swift"
764
738
  }
765
- },
766
- "match": "(?<![/=\\-+!*%<>&|\\^~.])(->)(?![/=\\-+!*%<>&|\\^~.])"
739
+ }
767
740
  },
768
741
  {
742
+ "match": "(?\u003c![/=\\-+!*%\u003c\u003e\u0026|\\^~.])(\u0026)(?![/=\\-+!*%\u003c\u003e\u0026|\\^~.])",
769
743
  "captures": {
770
744
  "1": {
771
745
  "name": "keyword.operator.type.composition.swift"
772
746
  }
773
- },
774
- "comment": "Swift 3: A & B",
775
- "match": "(?<![/=\\-+!*%<>&|\\^~.])(&)(?![/=\\-+!*%<>&|\\^~.])"
747
+ }
776
748
  },
777
749
  {
778
- "match": "[?!]",
779
- "name": "keyword.operator.type.optional.swift"
750
+ "name": "keyword.operator.type.optional.swift",
751
+ "match": "[?!]"
780
752
  },
781
753
  {
782
- "match": "\\.\\.\\.",
783
- "name": "keyword.operator.function.variadic-parameter.swift"
754
+ "name": "keyword.operator.function.variadic-parameter.swift",
755
+ "match": "\\.\\.\\."
784
756
  },
785
757
  {
786
- "comment": "Swift 2: protocol<A, B>",
787
- "match": "\\bprotocol\\b",
788
- "name": "keyword.operator.type.composition.swift"
758
+ "name": "keyword.operator.type.composition.swift",
759
+ "match": "\\bprotocol\\b"
789
760
  },
790
761
  {
791
- "match": "(?<=\\.)(?:Protocol|Type)\\b",
792
- "name": "keyword.operator.type.metatype.swift"
762
+ "name": "keyword.operator.type.metatype.swift",
763
+ "match": "(?\u003c=\\.)(?:Protocol|Type)\\b"
793
764
  },
794
765
  {
795
766
  "include": "#tuple-type"
@@ -804,127 +775,108 @@
804
775
  "repository": {
805
776
  "collection-type": {
806
777
  "begin": "\\[",
807
- "beginCaptures": {
808
- "0": {
809
- "name": "punctuation.section.collection-type.begin.swift"
810
- }
811
- },
812
- "comment": "array and dictionary types [Value] and [Key: Value]",
813
- "end": "\\]|(?=[>){}])",
814
- "endCaptures": {
815
- "0": {
816
- "name": "punctuation.section.collection-type.end.swift"
817
- }
818
- },
778
+ "end": "\\]|(?=[\u003e){}])",
819
779
  "patterns": [
820
780
  {
821
781
  "include": "#available-types"
822
782
  },
823
783
  {
824
784
  "begin": ":",
825
- "beginCaptures": {
826
- "0": {
827
- "name": "punctuation.separator.key-value.swift"
828
- }
829
- },
830
- "end": "(?=\\]|[>){}])",
785
+ "end": "(?=\\]|[\u003e){}])",
831
786
  "patterns": [
832
787
  {
833
- "match": ":",
834
- "name": "invalid.illegal.extra-colon-in-dictionary-type.swift"
788
+ "name": "invalid.illegal.extra-colon-in-dictionary-type.swift",
789
+ "match": ":"
835
790
  },
836
791
  {
837
792
  "include": "#available-types"
838
793
  }
839
- ]
794
+ ],
795
+ "beginCaptures": {
796
+ "0": {
797
+ "name": "punctuation.separator.key-value.swift"
798
+ }
799
+ }
840
800
  }
841
- ]
801
+ ],
802
+ "beginCaptures": {
803
+ "0": {
804
+ "name": "punctuation.section.collection-type.begin.swift"
805
+ }
806
+ },
807
+ "endCaptures": {
808
+ "0": {
809
+ "name": "punctuation.section.collection-type.end.swift"
810
+ }
811
+ }
842
812
  },
843
813
  "tuple-type": {
844
814
  "begin": "\\(",
815
+ "end": "\\)|(?=[\u003e\\]{}])",
816
+ "patterns": [
817
+ {
818
+ "include": "#available-types"
819
+ }
820
+ ],
845
821
  "beginCaptures": {
846
822
  "0": {
847
823
  "name": "punctuation.section.tuple-type.begin.swift"
848
824
  }
849
825
  },
850
- "end": "\\)|(?=[>\\]{}])",
851
826
  "endCaptures": {
852
827
  "0": {
853
828
  "name": "punctuation.section.tuple-type.end.swift"
854
829
  }
855
- },
856
- "patterns": [
857
- {
858
- "include": "#available-types"
859
- }
860
- ]
830
+ }
861
831
  }
862
832
  }
863
833
  },
864
834
  "extension": {
865
- "begin": "\\b(extension)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))",
866
- "beginCaptures": {
867
- "1": {
868
- "name": "storage.type.$1.swift"
869
- },
870
- "2": {
871
- "name": "entity.name.type.swift",
872
- "patterns": [
873
- {
874
- "include": "#available-types"
875
- }
876
- ]
877
- },
878
- "3": {
879
- "name": "punctuation.definition.identifier.swift"
880
- },
881
- "4": {
882
- "name": "punctuation.definition.identifier.swift"
883
- }
884
- },
885
- "end": "(?<=\\})",
886
835
  "name": "meta.definition.type.$1.swift",
836
+ "begin": "\\b(extension)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))",
837
+ "end": "(?\u003c=\\})",
887
838
  "patterns": [
888
839
  {
889
840
  "include": "#comments"
890
841
  },
891
842
  {
892
- "comment": "SE-0143: Conditional Conformances",
893
843
  "include": "#generic-where-clause"
894
844
  },
895
845
  {
896
846
  "include": "#inheritance-clause"
897
847
  },
898
848
  {
849
+ "name": "meta.definition.type.body.swift",
899
850
  "begin": "\\{",
851
+ "end": "\\}",
852
+ "patterns": [
853
+ {
854
+ "include": "$self"
855
+ }
856
+ ],
900
857
  "beginCaptures": {
901
858
  "0": {
902
859
  "name": "punctuation.definition.type.begin.swift"
903
860
  }
904
861
  },
905
- "end": "\\}",
906
862
  "endCaptures": {
907
863
  "0": {
908
864
  "name": "punctuation.definition.type.end.swift"
909
865
  }
910
- },
911
- "name": "meta.definition.type.body.swift",
912
- "patterns": [
913
- {
914
- "include": "$self"
915
- }
916
- ]
866
+ }
917
867
  }
918
- ]
919
- },
920
- "function": {
921
- "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(?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>)\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(?<oph>\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%<>&|^~?]\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<oph>\n\t\t\t\t\t\t\t\t\t | (?<opc>\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<oph> | \\g<opc> | \\. )+ )\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(?=\\(|<)\n\t\t\t\t\t",
868
+ ],
922
869
  "beginCaptures": {
923
870
  "1": {
924
- "name": "storage.type.function.swift"
871
+ "name": "storage.type.$1.swift"
925
872
  },
926
873
  "2": {
927
- "name": "entity.name.function.swift"
874
+ "name": "entity.name.type.swift",
875
+ "patterns": [
876
+ {
877
+ "include": "#available-types"
878
+ }
879
+ ]
928
880
  },
929
881
  "3": {
930
882
  "name": "punctuation.definition.identifier.swift"
@@ -932,9 +884,12 @@
932
884
  "4": {
933
885
  "name": "punctuation.definition.identifier.swift"
934
886
  }
935
- },
936
- "end": "(?<=\\})|$(?# functions in protocol declarations or generated interfaces have no body)",
887
+ }
888
+ },
889
+ "function": {
937
890
  "name": "meta.definition.function.swift",
891
+ "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",
892
+ "end": "(?\u003c=\\})|$(?# functions in protocol declarations or generated interfaces have no body)",
938
893
  "patterns": [
939
894
  {
940
895
  "include": "#comments"
@@ -949,50 +904,52 @@
949
904
  "include": "#function-result"
950
905
  },
951
906
  {
952
- "match": "\\b(?:throws|rethrows)\\b",
953
- "name": "keyword.control.exception.swift"
907
+ "name": "keyword.control.exception.swift",
908
+ "match": "\\b(?:throws|rethrows)\\b"
954
909
  },
955
910
  {
956
- "comment": "Swift 3: generic constraints after the parameters and return type",
957
911
  "include": "#generic-where-clause"
958
912
  },
959
913
  {
914
+ "name": "meta.definition.function.body.swift",
960
915
  "begin": "(\\{)",
916
+ "end": "(\\})",
917
+ "patterns": [
918
+ {
919
+ "include": "$self"
920
+ }
921
+ ],
961
922
  "beginCaptures": {
962
923
  "1": {
963
924
  "name": "punctuation.section.function.begin.swift"
964
925
  }
965
926
  },
966
- "end": "(\\})",
967
927
  "endCaptures": {
968
928
  "1": {
969
929
  "name": "punctuation.section.function.end.swift"
970
930
  }
971
- },
972
- "name": "meta.definition.function.body.swift",
973
- "patterns": [
974
- {
975
- "include": "$self"
976
- }
977
- ]
931
+ }
978
932
  }
979
- ]
980
- },
981
- "function-initializer": {
982
- "begin": "(?<!\\.)\\b(init[?!]*(?# only one is valid, but we want the in⇥ snippet to produce something that looks good))\\s*(?=\\(|<)",
933
+ ],
983
934
  "beginCaptures": {
984
935
  "1": {
985
- "name": "storage.type.function.swift",
986
- "patterns": [
987
- {
988
- "match": "(?<=[?!])[?!]+",
989
- "name": "invalid.illegal.character-not-allowed-here.swift"
990
- }
991
- ]
936
+ "name": "storage.type.function.swift"
937
+ },
938
+ "2": {
939
+ "name": "entity.name.function.swift"
940
+ },
941
+ "3": {
942
+ "name": "punctuation.definition.identifier.swift"
943
+ },
944
+ "4": {
945
+ "name": "punctuation.definition.identifier.swift"
992
946
  }
993
- },
994
- "end": "(?<=\\})|$",
947
+ }
948
+ },
949
+ "function-initializer": {
995
950
  "name": "meta.definition.function.initializer.swift",
951
+ "begin": "(?\u003c!\\.)\\b(init[?!]*(?# only one is valid, but we want the in⇥ snippet to produce something that looks good))\\s*(?=\\(|\u003c)",
952
+ "end": "(?\u003c=\\})|$",
996
953
  "patterns": [
997
954
  {
998
955
  "include": "#comments"
@@ -1004,137 +961,141 @@
1004
961
  "include": "#parameter-clause"
1005
962
  },
1006
963
  {
1007
- "match": "\\b(?:throws|rethrows)\\b",
1008
- "name": "keyword.control.exception.swift"
964
+ "name": "keyword.control.exception.swift",
965
+ "match": "\\b(?:throws|rethrows)\\b"
1009
966
  },
1010
967
  {
1011
- "comment": "Swift 3: generic constraints after the parameters and return type",
1012
968
  "include": "#generic-where-clause"
1013
969
  },
1014
970
  {
971
+ "name": "meta.definition.function.body.swift",
1015
972
  "begin": "(\\{)",
973
+ "end": "(\\})",
974
+ "patterns": [
975
+ {
976
+ "include": "$self"
977
+ }
978
+ ],
1016
979
  "beginCaptures": {
1017
980
  "1": {
1018
981
  "name": "punctuation.section.function.begin.swift"
1019
982
  }
1020
983
  },
1021
- "end": "(\\})",
1022
984
  "endCaptures": {
1023
985
  "1": {
1024
986
  "name": "punctuation.section.function.end.swift"
1025
987
  }
1026
- },
1027
- "name": "meta.definition.function.body.swift",
988
+ }
989
+ }
990
+ ],
991
+ "beginCaptures": {
992
+ "1": {
993
+ "name": "storage.type.function.swift",
1028
994
  "patterns": [
1029
995
  {
1030
- "include": "$self"
996
+ "name": "invalid.illegal.character-not-allowed-here.swift",
997
+ "match": "(?\u003c=[?!])[?!]+"
1031
998
  }
1032
999
  ]
1033
1000
  }
1034
- ]
1001
+ }
1035
1002
  },
1036
1003
  "function-result": {
1037
- "begin": "(?<![/=\\-+!*%<>&|\\^~.])(->)(?![/=\\-+!*%<>&|\\^~.])\\s*",
1038
- "beginCaptures": {
1039
- "1": {
1040
- "name": "keyword.operator.function-result.swift"
1041
- }
1042
- },
1043
- "end": "(?!\\G)(?=\\{|\\bwhere\\b|;)|$",
1044
1004
  "name": "meta.function-result.swift",
1005
+ "begin": "(?\u003c![/=\\-+!*%\u003c\u003e\u0026|\\^~.])(-\u003e)(?![/=\\-+!*%\u003c\u003e\u0026|\\^~.])\\s*",
1006
+ "end": "(?!\\G)(?=\\{|\\bwhere\\b|;)|$",
1045
1007
  "patterns": [
1046
1008
  {
1047
1009
  "include": "#available-types"
1048
1010
  }
1049
- ]
1050
- },
1051
- "generic-argument-clause": {
1052
- "begin": "<",
1011
+ ],
1053
1012
  "beginCaptures": {
1054
- "0": {
1055
- "name": "punctuation.separator.generic-argument-clause.begin.swift"
1056
- }
1057
- },
1058
- "end": ">|(?=[)\\]{}])",
1059
- "endCaptures": {
1060
- "0": {
1061
- "name": "punctuation.separator.generic-argument-clause.end.swift"
1013
+ "1": {
1014
+ "name": "keyword.operator.function-result.swift"
1062
1015
  }
1063
- },
1016
+ }
1017
+ },
1018
+ "generic-argument-clause": {
1064
1019
  "name": "meta.generic-argument-clause.swift",
1020
+ "begin": "\u003c",
1021
+ "end": "\u003e|(?=[)\\]{}])",
1065
1022
  "patterns": [
1066
1023
  {
1067
1024
  "include": "#available-types"
1068
1025
  }
1069
- ]
1070
- },
1071
- "generic-parameter-clause": {
1072
- "begin": "<",
1026
+ ],
1073
1027
  "beginCaptures": {
1074
1028
  "0": {
1075
- "name": "punctuation.separator.generic-parameter-clause.begin.swift"
1029
+ "name": "punctuation.separator.generic-argument-clause.begin.swift"
1076
1030
  }
1077
1031
  },
1078
- "end": ">|(?=[^\\w\\d:<>\\s,=&`])(?# 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.)",
1079
1032
  "endCaptures": {
1080
1033
  "0": {
1081
- "name": "punctuation.separator.generic-parameter-clause.end.swift"
1034
+ "name": "punctuation.separator.generic-argument-clause.end.swift"
1082
1035
  }
1083
- },
1036
+ }
1037
+ },
1038
+ "generic-parameter-clause": {
1084
1039
  "name": "meta.generic-parameter-clause.swift",
1040
+ "begin": "\u003c",
1041
+ "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.)",
1085
1042
  "patterns": [
1086
1043
  {
1087
1044
  "include": "#comments"
1088
1045
  },
1089
1046
  {
1090
- "comment": "Swift 2: constraints inside the generic param list",
1091
1047
  "include": "#generic-where-clause"
1092
1048
  },
1093
1049
  {
1050
+ "match": "\\b((?!\\d)\\w[\\w\\d]*)\\b",
1094
1051
  "captures": {
1095
1052
  "1": {
1096
1053
  "name": "variable.language.generic-parameter.swift"
1097
1054
  }
1098
- },
1099
- "match": "\\b((?!\\d)\\w[\\w\\d]*)\\b"
1055
+ }
1100
1056
  },
1101
1057
  {
1102
- "match": ",",
1103
- "name": "punctuation.separator.generic-parameters.swift"
1058
+ "name": "punctuation.separator.generic-parameters.swift",
1059
+ "match": ","
1104
1060
  },
1105
1061
  {
1106
- "begin": "(:)\\s*",
1107
- "beginCaptures": {
1108
- "1": {
1109
- "name": "punctuation.separator.generic-parameter-constraint.swift"
1110
- }
1111
- },
1112
- "end": "(?=[,>]|(?!\\G)\\bwhere\\b)",
1113
1062
  "name": "meta.generic-parameter-constraint.swift",
1063
+ "begin": "(:)\\s*",
1064
+ "end": "(?=[,\u003e]|(?!\\G)\\bwhere\\b)",
1114
1065
  "patterns": [
1115
1066
  {
1116
- "begin": "\\G",
1117
- "end": "(?=[,>]|(?!\\G)\\bwhere\\b)",
1118
1067
  "name": "entity.other.inherited-class.swift",
1068
+ "begin": "\\G",
1069
+ "end": "(?=[,\u003e]|(?!\\G)\\bwhere\\b)",
1119
1070
  "patterns": [
1120
1071
  {
1121
1072
  "include": "#type-identifier"
1122
1073
  }
1123
1074
  ]
1124
1075
  }
1125
- ]
1076
+ ],
1077
+ "beginCaptures": {
1078
+ "1": {
1079
+ "name": "punctuation.separator.generic-parameter-constraint.swift"
1080
+ }
1081
+ }
1126
1082
  }
1127
- ]
1128
- },
1129
- "generic-where-clause": {
1130
- "begin": "\\b(where)\\b\\s*",
1083
+ ],
1131
1084
  "beginCaptures": {
1132
- "1": {
1133
- "name": "keyword.other.generic-constraint-introducer.swift"
1085
+ "0": {
1086
+ "name": "punctuation.separator.generic-parameter-clause.begin.swift"
1134
1087
  }
1135
1088
  },
1136
- "end": "(?!\\G)$|(?=[>{};\\n]|//|/\\*)",
1089
+ "endCaptures": {
1090
+ "0": {
1091
+ "name": "punctuation.separator.generic-parameter-clause.end.swift"
1092
+ }
1093
+ }
1094
+ },
1095
+ "generic-where-clause": {
1137
1096
  "name": "meta.generic-where-clause.swift",
1097
+ "begin": "\\b(where)\\b\\s*",
1098
+ "end": "(?!\\G)$|(?=[\u003e{};\\n]|//|/\\*)",
1138
1099
  "patterns": [
1139
1100
  {
1140
1101
  "include": "#comments"
@@ -1143,10 +1104,15 @@
1143
1104
  "include": "#requirement-list"
1144
1105
  }
1145
1106
  ],
1107
+ "beginCaptures": {
1108
+ "1": {
1109
+ "name": "keyword.other.generic-constraint-introducer.swift"
1110
+ }
1111
+ },
1146
1112
  "repository": {
1147
1113
  "requirement-list": {
1148
1114
  "begin": "\\G|,\\s*",
1149
- "end": "(?=[,>{};\\n]|//|/\\*)",
1115
+ "end": "(?=[,\u003e{};\\n]|//|/\\*)",
1150
1116
  "patterns": [
1151
1117
  {
1152
1118
  "include": "#comments"
@@ -1158,71 +1124,58 @@
1158
1124
  "include": "#available-types"
1159
1125
  },
1160
1126
  {
1161
- "begin": "(?<![/=\\-+!*%<>&|\\^~.])(==)(?![/=\\-+!*%<>&|\\^~.])",
1162
- "beginCaptures": {
1163
- "1": {
1164
- "name": "keyword.operator.generic-constraint.same-type.swift"
1165
- }
1166
- },
1167
- "end": "(?=\\s*[,>{};\\n]|//|/\\*)",
1168
1127
  "name": "meta.generic-where-clause.same-type-requirement.swift",
1128
+ "begin": "(?\u003c![/=\\-+!*%\u003c\u003e\u0026|\\^~.])(==)(?![/=\\-+!*%\u003c\u003e\u0026|\\^~.])",
1129
+ "end": "(?=\\s*[,\u003e{};\\n]|//|/\\*)",
1169
1130
  "patterns": [
1170
1131
  {
1171
1132
  "include": "#available-types"
1172
1133
  }
1173
- ]
1174
- },
1175
- {
1176
- "begin": "(?<![/=\\-+!*%<>&|\\^~.])(:)(?![/=\\-+!*%<>&|\\^~.])",
1134
+ ],
1177
1135
  "beginCaptures": {
1178
1136
  "1": {
1179
- "name": "keyword.operator.generic-constraint.conforms-to.swift"
1137
+ "name": "keyword.operator.generic-constraint.same-type.swift"
1180
1138
  }
1181
- },
1182
- "end": "(?=\\s*[,>{};\\n]|//|/\\*)",
1183
- "name": "meta.generic-where-clause.conformance-requirement.swift",
1139
+ }
1140
+ },
1141
+ {
1142
+ "name": "meta.generic-where-clause.conformance-requirement.swift",
1143
+ "begin": "(?\u003c![/=\\-+!*%\u003c\u003e\u0026|\\^~.])(:)(?![/=\\-+!*%\u003c\u003e\u0026|\\^~.])",
1144
+ "end": "(?=\\s*[,\u003e{};\\n]|//|/\\*)",
1184
1145
  "patterns": [
1185
1146
  {
1186
- "begin": "\\G\\s*",
1187
1147
  "contentName": "entity.other.inherited-class.swift",
1188
- "end": "(?=\\s*[,>{};\\n]|//|/\\*)",
1148
+ "begin": "\\G\\s*",
1149
+ "end": "(?=\\s*[,\u003e{};\\n]|//|/\\*)",
1189
1150
  "patterns": [
1190
1151
  {
1191
1152
  "include": "#available-types"
1192
1153
  }
1193
1154
  ]
1194
1155
  }
1195
- ]
1156
+ ],
1157
+ "beginCaptures": {
1158
+ "1": {
1159
+ "name": "keyword.operator.generic-constraint.conforms-to.swift"
1160
+ }
1161
+ }
1196
1162
  }
1197
1163
  ]
1198
1164
  }
1199
1165
  }
1200
1166
  },
1201
1167
  "import": {
1202
- "begin": "(?<!\\.)\\b(import)\\s+",
1203
- "beginCaptures": {
1204
- "1": {
1205
- "name": "keyword.control.import.swift"
1206
- }
1207
- },
1208
- "end": "(;)|$\\n?|(?=//|/\\*)",
1209
- "endCaptures": {
1210
- "1": {
1211
- "name": "punctuation.terminator.statement.swift"
1212
- }
1213
- },
1214
1168
  "name": "meta.import.swift",
1169
+ "begin": "(?\u003c!\\.)\\b(import)\\s+",
1170
+ "end": "(;)|$\\n?|(?=//|/\\*)",
1215
1171
  "patterns": [
1216
1172
  {
1217
1173
  "begin": "\\G(?!;|$|//|/\\*)(?:(typealias|struct|class|enum|protocol|var|func)\\s+)?",
1218
- "beginCaptures": {
1219
- "1": {
1220
- "name": "storage.modifier.swift"
1221
- }
1222
- },
1223
1174
  "end": "(?=;|$|//|/\\*)",
1224
1175
  "patterns": [
1225
1176
  {
1177
+ "name": "entity.name.type.swift",
1178
+ "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",
1226
1179
  "captures": {
1227
1180
  "1": {
1228
1181
  "name": "punctuation.definition.identifier.swift"
@@ -1230,61 +1183,61 @@
1230
1183
  "2": {
1231
1184
  "name": "punctuation.definition.identifier.swift"
1232
1185
  }
1233
- },
1234
- "match": "(?x)\n\t\t\t\t\t\t\t\t\t\t(?<=\\G|\\.)\n\t\t\t\t\t\t\t\t\t\t(?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>)\n\t\t\t\t\t\t\t\t\t",
1235
- "name": "entity.name.type.swift"
1186
+ }
1236
1187
  },
1237
1188
  {
1238
- "match": "(?x)\n\t\t\t\t\t\t\t\t\t\t(?<=\\G|\\.)\n\t\t\t\t\t\t\t\t\t\t\\$[0-9]+\n\t\t\t\t\t\t\t\t\t",
1239
- "name": "entity.name.type.swift"
1189
+ "name": "entity.name.type.swift",
1190
+ "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"
1240
1191
  },
1241
1192
  {
1193
+ "name": "entity.name.type.swift",
1194
+ "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",
1242
1195
  "captures": {
1243
1196
  "1": {
1244
1197
  "patterns": [
1245
1198
  {
1246
- "match": "\\.",
1247
- "name": "invalid.illegal.dot-not-allowed-here.swift"
1199
+ "name": "invalid.illegal.dot-not-allowed-here.swift",
1200
+ "match": "\\."
1248
1201
  }
1249
1202
  ]
1250
1203
  }
1251
- },
1252
- "match": "(?x)\n\t\t\t\t\t\t\t\t\t\t(?<=\\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(?<oph>\t\t\t\t\t\t\t\t# operator-head\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 | [\\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<oph>\n\t\t\t\t\t\t\t\t\t\t\t\t | (?<opc>\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<oph> | \\g<opc> | \\. )+ )\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",
1253
- "name": "entity.name.type.swift"
1204
+ }
1254
1205
  },
1255
1206
  {
1256
- "match": "\\.",
1257
- "name": "punctuation.separator.import.swift"
1207
+ "name": "punctuation.separator.import.swift",
1208
+ "match": "\\."
1258
1209
  },
1259
1210
  {
1211
+ "name": "invalid.illegal.character-not-allowed-here.swift",
1260
1212
  "begin": "(?!\\s*(;|$|//|/\\*))",
1261
- "end": "(?=\\s*(;|$|//|/\\*))",
1262
- "name": "invalid.illegal.character-not-allowed-here.swift"
1213
+ "end": "(?=\\s*(;|$|//|/\\*))"
1263
1214
  }
1264
- ]
1215
+ ],
1216
+ "beginCaptures": {
1217
+ "1": {
1218
+ "name": "storage.modifier.swift"
1219
+ }
1220
+ }
1265
1221
  }
1266
- ]
1267
- },
1268
- "inheritance-clause": {
1269
- "begin": "(:)(?=\\s*\\{)|(:)\\s*",
1222
+ ],
1270
1223
  "beginCaptures": {
1271
1224
  "1": {
1272
- "name": "invalid.illegal.empty-inheritance-clause.swift"
1273
- },
1274
- "2": {
1275
- "name": "punctuation.separator.inheritance-clause.swift"
1225
+ "name": "keyword.control.import.swift"
1276
1226
  }
1277
1227
  },
1278
- "end": "(?!\\G)$|(?=[={}]|(?!\\G)\\bwhere\\b)",
1228
+ "endCaptures": {
1229
+ "1": {
1230
+ "name": "punctuation.terminator.statement.swift"
1231
+ }
1232
+ }
1233
+ },
1234
+ "inheritance-clause": {
1279
1235
  "name": "meta.inheritance-clause.swift",
1236
+ "begin": "(:)(?=\\s*\\{)|(:)\\s*",
1237
+ "end": "(?!\\G)$|(?=[={}]|(?!\\G)\\bwhere\\b)",
1280
1238
  "patterns": [
1281
1239
  {
1282
1240
  "begin": "\\bclass\\b",
1283
- "beginCaptures": {
1284
- "0": {
1285
- "name": "storage.type.class.swift"
1286
- }
1287
- },
1288
1241
  "end": "(?=[={}]|(?!\\G)\\bwhere\\b)",
1289
1242
  "patterns": [
1290
1243
  {
@@ -1293,7 +1246,12 @@
1293
1246
  {
1294
1247
  "include": "#more-types"
1295
1248
  }
1296
- ]
1249
+ ],
1250
+ "beginCaptures": {
1251
+ "0": {
1252
+ "name": "storage.type.class.swift"
1253
+ }
1254
+ }
1297
1255
  },
1298
1256
  {
1299
1257
  "begin": "\\G",
@@ -1311,11 +1269,19 @@
1311
1269
  ]
1312
1270
  }
1313
1271
  ],
1272
+ "beginCaptures": {
1273
+ "1": {
1274
+ "name": "invalid.illegal.empty-inheritance-clause.swift"
1275
+ },
1276
+ "2": {
1277
+ "name": "punctuation.separator.inheritance-clause.swift"
1278
+ }
1279
+ },
1314
1280
  "repository": {
1315
1281
  "inherited-type": {
1282
+ "name": "entity.other.inherited-class.swift",
1316
1283
  "begin": "(?=[`\\p{L}_])",
1317
1284
  "end": "(?!\\G)",
1318
- "name": "entity.other.inherited-class.swift",
1319
1285
  "patterns": [
1320
1286
  {
1321
1287
  "include": "#type-identifier"
@@ -1323,9 +1289,9 @@
1323
1289
  ]
1324
1290
  },
1325
1291
  "more-types": {
1292
+ "name": "meta.inheritance-list.more-types",
1326
1293
  "begin": ",\\s*",
1327
1294
  "end": "(?!\\G)(?!//|/\\*)|(?=[,={}]|(?!\\G)\\bwhere\\b)",
1328
- "name": "meta.inheritance-list.more-types",
1329
1295
  "patterns": [
1330
1296
  {
1331
1297
  "include": "#comments"
@@ -1341,7 +1307,21 @@
1341
1307
  }
1342
1308
  },
1343
1309
  "operator": {
1344
- "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(?<oph>\t\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t[/=\\-+!*%<>&|^~?]\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<oph>\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 | (?<opc>\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<oph> | \\g<opc> | \\. )++ )\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",
1310
+ "name": "meta.definition.operator.swift",
1311
+ "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",
1312
+ "end": "(;)|$\\n?|(?=//|/\\*)",
1313
+ "patterns": [
1314
+ {
1315
+ "include": "#swift2"
1316
+ },
1317
+ {
1318
+ "include": "#swift3"
1319
+ },
1320
+ {
1321
+ "name": "invalid.illegal.character-not-allowed-here.swift",
1322
+ "match": "((?!$|;|//|/\\*)\\S)+"
1323
+ }
1324
+ ],
1345
1325
  "beginCaptures": {
1346
1326
  "1": {
1347
1327
  "name": "storage.modifier.swift"
@@ -1355,50 +1335,27 @@
1355
1335
  "4": {
1356
1336
  "patterns": [
1357
1337
  {
1358
- "match": "\\.",
1359
- "name": "invalid.illegal.dot-not-allowed-here.swift"
1338
+ "name": "invalid.illegal.dot-not-allowed-here.swift",
1339
+ "match": "\\."
1360
1340
  }
1361
1341
  ]
1362
1342
  }
1363
1343
  },
1364
- "end": "(;)|$\\n?|(?=//|/\\*)",
1365
1344
  "endCaptures": {
1366
1345
  "1": {
1367
1346
  "name": "punctuation.terminator.statement.swift"
1368
1347
  }
1369
1348
  },
1370
- "name": "meta.definition.operator.swift",
1371
- "patterns": [
1372
- {
1373
- "include": "#swift2"
1374
- },
1375
- {
1376
- "include": "#swift3"
1377
- },
1378
- {
1379
- "match": "((?!$|;|//|/\\*)\\S)+",
1380
- "name": "invalid.illegal.character-not-allowed-here.swift"
1381
- }
1382
- ],
1383
1349
  "repository": {
1384
1350
  "swift2": {
1385
1351
  "begin": "\\G(\\{)",
1386
- "beginCaptures": {
1387
- "1": {
1388
- "name": "punctuation.definition.operator.begin.swift"
1389
- }
1390
- },
1391
1352
  "end": "(\\})",
1392
- "endCaptures": {
1393
- "1": {
1394
- "name": "punctuation.definition.operator.end.swift"
1395
- }
1396
- },
1397
1353
  "patterns": [
1398
1354
  {
1399
1355
  "include": "#comments"
1400
1356
  },
1401
1357
  {
1358
+ "match": "\\b(associativity)\\s+(left|right)\\b",
1402
1359
  "captures": {
1403
1360
  "1": {
1404
1361
  "name": "storage.modifier.swift"
@@ -1406,10 +1363,10 @@
1406
1363
  "2": {
1407
1364
  "name": "keyword.other.operator.associativity.swift"
1408
1365
  }
1409
- },
1410
- "match": "\\b(associativity)\\s+(left|right)\\b"
1366
+ }
1411
1367
  },
1412
1368
  {
1369
+ "match": "\\b(precedence)\\s+([0-9]+)\\b",
1413
1370
  "captures": {
1414
1371
  "1": {
1415
1372
  "name": "storage.modifier.swift"
@@ -1417,20 +1374,30 @@
1417
1374
  "2": {
1418
1375
  "name": "constant.numeric.integer.swift"
1419
1376
  }
1420
- },
1421
- "match": "\\b(precedence)\\s+([0-9]+)\\b"
1377
+ }
1422
1378
  },
1423
1379
  {
1380
+ "match": "\\b(assignment)\\b",
1424
1381
  "captures": {
1425
1382
  "1": {
1426
1383
  "name": "storage.modifier.swift"
1427
1384
  }
1428
- },
1429
- "match": "\\b(assignment)\\b"
1385
+ }
1430
1386
  }
1431
- ]
1387
+ ],
1388
+ "beginCaptures": {
1389
+ "1": {
1390
+ "name": "punctuation.definition.operator.begin.swift"
1391
+ }
1392
+ },
1393
+ "endCaptures": {
1394
+ "1": {
1395
+ "name": "punctuation.definition.operator.end.swift"
1396
+ }
1397
+ }
1432
1398
  },
1433
1399
  "swift3": {
1400
+ "match": "\\G(:)\\s*((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))",
1434
1401
  "captures": {
1435
1402
  "2": {
1436
1403
  "name": "entity.other.inherited-class.swift",
@@ -1446,34 +1413,34 @@
1446
1413
  "4": {
1447
1414
  "name": "punctuation.definition.identifier.swift"
1448
1415
  }
1449
- },
1450
- "match": "\\G(:)\\s*((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))"
1416
+ }
1451
1417
  }
1452
1418
  }
1453
1419
  },
1454
1420
  "parameter-clause": {
1421
+ "name": "meta.parameter-clause.swift",
1455
1422
  "begin": "(\\()",
1423
+ "end": "(\\))",
1424
+ "patterns": [
1425
+ {
1426
+ "include": "#parameter-list"
1427
+ }
1428
+ ],
1456
1429
  "beginCaptures": {
1457
1430
  "1": {
1458
1431
  "name": "punctuation.definition.parameters.begin.swift"
1459
1432
  }
1460
1433
  },
1461
- "end": "(\\))",
1462
1434
  "endCaptures": {
1463
1435
  "1": {
1464
1436
  "name": "punctuation.definition.parameters.end.swift"
1465
1437
  }
1466
- },
1467
- "name": "meta.parameter-clause.swift",
1468
- "patterns": [
1469
- {
1470
- "include": "#parameter-list"
1471
- }
1472
- ]
1438
+ }
1473
1439
  },
1474
1440
  "parameter-list": {
1475
1441
  "patterns": [
1476
1442
  {
1443
+ "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*:)",
1477
1444
  "captures": {
1478
1445
  "1": {
1479
1446
  "name": "entity.name.function.swift"
@@ -1493,11 +1460,10 @@
1493
1460
  "6": {
1494
1461
  "name": "punctuation.definition.identifier.swift"
1495
1462
  }
1496
- },
1497
- "comment": "External parameter labels are considered part of the function name",
1498
- "match": "((?<q1>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q1>))\\s+((?<q2>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q2>))(?=\\s*:)"
1463
+ }
1499
1464
  },
1500
1465
  {
1466
+ "match": "(((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e)))(?=\\s*:)",
1501
1467
  "captures": {
1502
1468
  "1": {
1503
1469
  "name": "variable.parameter.function.swift"
@@ -1511,9 +1477,7 @@
1511
1477
  "4": {
1512
1478
  "name": "punctuation.definition.identifier.swift"
1513
1479
  }
1514
- },
1515
- "comment": "If no external label is given, the name is both the external label and the internal variable name",
1516
- "match": "(((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>)))(?=\\s*:)"
1480
+ }
1517
1481
  },
1518
1482
  {
1519
1483
  "begin": ":\\s*(?!\\s)",
@@ -1523,65 +1487,41 @@
1523
1487
  "include": "#available-types"
1524
1488
  },
1525
1489
  {
1526
- "match": ":",
1527
- "name": "invalid.illegal.extra-colon-in-parameter-list.swift"
1490
+ "name": "invalid.illegal.extra-colon-in-parameter-list.swift",
1491
+ "match": ":"
1528
1492
  },
1529
1493
  {
1530
1494
  "begin": "=",
1531
- "beginCaptures": {
1532
- "0": {
1533
- "name": "keyword.operator.assignment.swift"
1534
- }
1535
- },
1536
- "comment": "a parameter's default value",
1537
1495
  "end": "(?=[,)])",
1538
1496
  "patterns": [
1539
1497
  {
1540
1498
  "include": "#expressions"
1541
1499
  }
1542
- ]
1500
+ ],
1501
+ "beginCaptures": {
1502
+ "0": {
1503
+ "name": "keyword.operator.assignment.swift"
1504
+ }
1505
+ }
1543
1506
  }
1544
1507
  ]
1545
1508
  }
1546
1509
  ]
1547
1510
  },
1548
1511
  "precedencegroup": {
1549
- "begin": "\\b(precedencegroup)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*(?=\\{)",
1550
- "beginCaptures": {
1551
- "1": {
1552
- "name": "storage.type.precedencegroup.swift"
1553
- },
1554
- "2": {
1555
- "name": "entity.name.type.precedencegroup.swift"
1556
- },
1557
- "3": {
1558
- "name": "punctuation.definition.identifier.swift"
1559
- },
1560
- "4": {
1561
- "name": "punctuation.definition.identifier.swift"
1562
- }
1563
- },
1564
- "end": "(?!\\G)",
1565
1512
  "name": "meta.definition.precedencegroup.swift",
1513
+ "begin": "\\b(precedencegroup)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*(?=\\{)",
1514
+ "end": "(?!\\G)",
1566
1515
  "patterns": [
1567
1516
  {
1568
1517
  "begin": "\\{",
1569
- "beginCaptures": {
1570
- "0": {
1571
- "name": "punctuation.definition.precedencegroup.begin.swift"
1572
- }
1573
- },
1574
1518
  "end": "\\}",
1575
- "endCaptures": {
1576
- "0": {
1577
- "name": "punctuation.definition.precedencegroup.end.swift"
1578
- }
1579
- },
1580
1519
  "patterns": [
1581
1520
  {
1582
1521
  "include": "#comments"
1583
1522
  },
1584
1523
  {
1524
+ "match": "\\b(higherThan|lowerThan)\\s*:\\s*((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))",
1585
1525
  "captures": {
1586
1526
  "1": {
1587
1527
  "name": "storage.modifier.swift"
@@ -1600,10 +1540,10 @@
1600
1540
  "4": {
1601
1541
  "name": "punctuation.definition.identifier.swift"
1602
1542
  }
1603
- },
1604
- "match": "\\b(higherThan|lowerThan)\\s*:\\s*((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))"
1543
+ }
1605
1544
  },
1606
1545
  {
1546
+ "match": "\\b(associativity)\\b(?:\\s*:\\s*(right|left|none)\\b)?",
1607
1547
  "captures": {
1608
1548
  "1": {
1609
1549
  "name": "storage.modifier.swift"
@@ -1611,10 +1551,10 @@
1611
1551
  "2": {
1612
1552
  "name": "keyword.other.operator.associativity.swift"
1613
1553
  }
1614
- },
1615
- "match": "\\b(associativity)\\b(?:\\s*:\\s*(right|left|none)\\b)?"
1554
+ }
1616
1555
  },
1617
1556
  {
1557
+ "match": "\\b(assignment)\\b(?:\\s*:\\s*(true|false)\\b)?",
1618
1558
  "captures": {
1619
1559
  "1": {
1620
1560
  "name": "storage.modifier.swift"
@@ -1622,21 +1562,27 @@
1622
1562
  "2": {
1623
1563
  "name": "constant.language.boolean.swift"
1624
1564
  }
1625
- },
1626
- "match": "\\b(assignment)\\b(?:\\s*:\\s*(true|false)\\b)?"
1565
+ }
1627
1566
  }
1628
- ]
1567
+ ],
1568
+ "beginCaptures": {
1569
+ "0": {
1570
+ "name": "punctuation.definition.precedencegroup.begin.swift"
1571
+ }
1572
+ },
1573
+ "endCaptures": {
1574
+ "0": {
1575
+ "name": "punctuation.definition.precedencegroup.end.swift"
1576
+ }
1577
+ }
1629
1578
  }
1630
- ]
1631
- },
1632
- "protocol": {
1633
- "begin": "\\b(protocol)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))",
1579
+ ],
1634
1580
  "beginCaptures": {
1635
1581
  "1": {
1636
- "name": "storage.type.$1.swift"
1582
+ "name": "storage.type.precedencegroup.swift"
1637
1583
  },
1638
1584
  "2": {
1639
- "name": "entity.name.type.$1.swift"
1585
+ "name": "entity.name.type.precedencegroup.swift"
1640
1586
  },
1641
1587
  "3": {
1642
1588
  "name": "punctuation.definition.identifier.swift"
@@ -1644,9 +1590,12 @@
1644
1590
  "4": {
1645
1591
  "name": "punctuation.definition.identifier.swift"
1646
1592
  }
1647
- },
1648
- "end": "(?<=\\})",
1593
+ }
1594
+ },
1595
+ "protocol": {
1649
1596
  "name": "meta.definition.type.protocol.swift",
1597
+ "begin": "\\b(protocol)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))",
1598
+ "end": "(?\u003c=\\})",
1650
1599
  "patterns": [
1651
1600
  {
1652
1601
  "include": "#comments"
@@ -1655,23 +1604,12 @@
1655
1604
  "include": "#inheritance-clause"
1656
1605
  },
1657
1606
  {
1658
- "comment": "SE-0142: Permit where clauses to constrain associated types",
1659
1607
  "include": "#generic-where-clause"
1660
1608
  },
1661
1609
  {
1610
+ "name": "meta.definition.type.body.swift",
1662
1611
  "begin": "\\{",
1663
- "beginCaptures": {
1664
- "0": {
1665
- "name": "punctuation.definition.type.begin.swift"
1666
- }
1667
- },
1668
1612
  "end": "\\}",
1669
- "endCaptures": {
1670
- "0": {
1671
- "name": "punctuation.definition.type.end.swift"
1672
- }
1673
- },
1674
- "name": "meta.definition.type.body.swift",
1675
1613
  "patterns": [
1676
1614
  {
1677
1615
  "include": "#protocol-method"
@@ -1685,12 +1623,49 @@
1685
1623
  {
1686
1624
  "include": "$self"
1687
1625
  }
1688
- ]
1626
+ ],
1627
+ "beginCaptures": {
1628
+ "0": {
1629
+ "name": "punctuation.definition.type.begin.swift"
1630
+ }
1631
+ },
1632
+ "endCaptures": {
1633
+ "0": {
1634
+ "name": "punctuation.definition.type.end.swift"
1635
+ }
1636
+ }
1689
1637
  }
1690
1638
  ],
1639
+ "beginCaptures": {
1640
+ "1": {
1641
+ "name": "storage.type.$1.swift"
1642
+ },
1643
+ "2": {
1644
+ "name": "entity.name.type.$1.swift"
1645
+ },
1646
+ "3": {
1647
+ "name": "punctuation.definition.identifier.swift"
1648
+ },
1649
+ "4": {
1650
+ "name": "punctuation.definition.identifier.swift"
1651
+ }
1652
+ },
1691
1653
  "repository": {
1692
1654
  "associated-type": {
1693
- "begin": "\\b(associatedtype)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*",
1655
+ "name": "meta.definition.associatedtype.swift",
1656
+ "begin": "\\b(associatedtype)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*",
1657
+ "end": "(?!\\G)$|(?=[;}]|$)",
1658
+ "patterns": [
1659
+ {
1660
+ "include": "#inheritance-clause"
1661
+ },
1662
+ {
1663
+ "include": "#generic-where-clause"
1664
+ },
1665
+ {
1666
+ "include": "#typealias-assignment"
1667
+ }
1668
+ ],
1694
1669
  "beginCaptures": {
1695
1670
  "1": {
1696
1671
  "name": "keyword.other.declaration-specifier.swift"
@@ -1704,37 +1679,12 @@
1704
1679
  "4": {
1705
1680
  "name": "punctuation.definition.identifier.swift"
1706
1681
  }
1707
- },
1708
- "end": "(?!\\G)$|(?=[;}]|$)",
1709
- "name": "meta.definition.associatedtype.swift",
1710
- "patterns": [
1711
- {
1712
- "include": "#inheritance-clause"
1713
- },
1714
- {
1715
- "comment": "SE-0142: Permit where clauses to constrain associated types",
1716
- "include": "#generic-where-clause"
1717
- },
1718
- {
1719
- "include": "#typealias-assignment"
1720
- }
1721
- ]
1682
+ }
1722
1683
  },
1723
1684
  "protocol-initializer": {
1724
- "begin": "(?<!\\.)\\b(init[?!]*(?# only one is valid, but we want the in⇥ snippet to produce something that looks good))\\s*(?=\\(|<)",
1725
- "beginCaptures": {
1726
- "1": {
1727
- "name": "storage.type.function.swift",
1728
- "patterns": [
1729
- {
1730
- "match": "(?<=[?!])[?!]+",
1731
- "name": "invalid.illegal.character-not-allowed-here.swift"
1732
- }
1733
- ]
1734
- }
1735
- },
1736
- "end": "$|(?=;|//|/\\*|\\})",
1737
1685
  "name": "meta.definition.function.initializer.swift",
1686
+ "begin": "(?\u003c!\\.)\\b(init[?!]*(?# only one is valid, but we want the in⇥ snippet to produce something that looks good))\\s*(?=\\(|\u003c)",
1687
+ "end": "$|(?=;|//|/\\*|\\})",
1738
1688
  "patterns": [
1739
1689
  {
1740
1690
  "include": "#comments"
@@ -1746,53 +1696,49 @@
1746
1696
  "include": "#parameter-clause"
1747
1697
  },
1748
1698
  {
1749
- "match": "\\b(?:throws|rethrows)\\b",
1750
- "name": "keyword.control.exception.swift"
1699
+ "name": "keyword.control.exception.swift",
1700
+ "match": "\\b(?:throws|rethrows)\\b"
1751
1701
  },
1752
1702
  {
1753
- "comment": "Swift 3: generic constraints after the parameters and return type",
1754
1703
  "include": "#generic-where-clause"
1755
1704
  },
1756
1705
  {
1706
+ "name": "invalid.illegal.function-body-not-allowed-in-protocol.swift",
1757
1707
  "begin": "\\{",
1708
+ "end": "\\}",
1709
+ "patterns": [
1710
+ {
1711
+ "include": "$self"
1712
+ }
1713
+ ],
1758
1714
  "beginCaptures": {
1759
1715
  "0": {
1760
1716
  "name": "punctuation.section.function.begin.swift"
1761
1717
  }
1762
1718
  },
1763
- "end": "\\}",
1764
1719
  "endCaptures": {
1765
1720
  "0": {
1766
1721
  "name": "punctuation.section.function.end.swift"
1767
1722
  }
1768
- },
1769
- "name": "invalid.illegal.function-body-not-allowed-in-protocol.swift",
1723
+ }
1724
+ }
1725
+ ],
1726
+ "beginCaptures": {
1727
+ "1": {
1728
+ "name": "storage.type.function.swift",
1770
1729
  "patterns": [
1771
1730
  {
1772
- "include": "$self"
1731
+ "name": "invalid.illegal.character-not-allowed-here.swift",
1732
+ "match": "(?\u003c=[?!])[?!]+"
1773
1733
  }
1774
1734
  ]
1775
1735
  }
1776
- ]
1736
+ }
1777
1737
  },
1778
1738
  "protocol-method": {
1779
- "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(?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>)\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(?<oph>\t\t\t\t\t\t\t\t# operator-head\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 | [\\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<oph>\n\t\t \t\t\t\t\t\t\t\t\t | (?<opc>\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<oph> | \\g<opc> | \\. )+ )\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(?=\\(|<)\n\t\t\t\t\t\t\t",
1780
- "beginCaptures": {
1781
- "1": {
1782
- "name": "storage.type.function.swift"
1783
- },
1784
- "2": {
1785
- "name": "entity.name.function.swift"
1786
- },
1787
- "3": {
1788
- "name": "punctuation.definition.identifier.swift"
1789
- },
1790
- "4": {
1791
- "name": "punctuation.definition.identifier.swift"
1792
- }
1793
- },
1794
- "end": "$|(?=;|//|/\\*|\\})",
1795
1739
  "name": "meta.definition.function.swift",
1740
+ "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",
1741
+ "end": "$|(?=;|//|/\\*|\\})",
1796
1742
  "patterns": [
1797
1743
  {
1798
1744
  "include": "#comments"
@@ -1807,47 +1753,39 @@
1807
1753
  "include": "#function-result"
1808
1754
  },
1809
1755
  {
1810
- "match": "\\b(?:throws|rethrows)\\b",
1811
- "name": "keyword.control.exception.swift"
1756
+ "name": "keyword.control.exception.swift",
1757
+ "match": "\\b(?:throws|rethrows)\\b"
1812
1758
  },
1813
1759
  {
1814
- "comment": "Swift 3: generic constraints after the parameters and return type",
1815
1760
  "include": "#generic-where-clause"
1816
1761
  },
1817
1762
  {
1763
+ "name": "invalid.illegal.function-body-not-allowed-in-protocol.swift",
1818
1764
  "begin": "\\{",
1765
+ "end": "\\}",
1766
+ "patterns": [
1767
+ {
1768
+ "include": "$self"
1769
+ }
1770
+ ],
1819
1771
  "beginCaptures": {
1820
1772
  "0": {
1821
1773
  "name": "punctuation.section.function.begin.swift"
1822
1774
  }
1823
1775
  },
1824
- "end": "\\}",
1825
1776
  "endCaptures": {
1826
1777
  "0": {
1827
1778
  "name": "punctuation.section.function.end.swift"
1828
1779
  }
1829
- },
1830
- "name": "invalid.illegal.function-body-not-allowed-in-protocol.swift",
1831
- "patterns": [
1832
- {
1833
- "include": "$self"
1834
- }
1835
- ]
1780
+ }
1836
1781
  }
1837
- ]
1838
- }
1839
- }
1840
- },
1841
- "type": {
1842
- "patterns": [
1843
- {
1844
- "begin": "\\b(class(?!\\s+(?:func|var|let)\\b)|struct)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))",
1782
+ ],
1845
1783
  "beginCaptures": {
1846
1784
  "1": {
1847
- "name": "storage.type.$1.swift"
1785
+ "name": "storage.type.function.swift"
1848
1786
  },
1849
1787
  "2": {
1850
- "name": "entity.name.type.$1.swift"
1788
+ "name": "entity.name.function.swift"
1851
1789
  },
1852
1790
  "3": {
1853
1791
  "name": "punctuation.definition.identifier.swift"
@@ -1855,9 +1793,16 @@
1855
1793
  "4": {
1856
1794
  "name": "punctuation.definition.identifier.swift"
1857
1795
  }
1858
- },
1859
- "end": "(?<=\\})",
1796
+ }
1797
+ }
1798
+ }
1799
+ },
1800
+ "type": {
1801
+ "patterns": [
1802
+ {
1860
1803
  "name": "meta.definition.type.$1.swift",
1804
+ "begin": "\\b(class(?!\\s+(?:func|var|let)\\b)|struct)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))",
1805
+ "end": "(?\u003c=\\})",
1861
1806
  "patterns": [
1862
1807
  {
1863
1808
  "include": "#comments"
@@ -1866,33 +1811,46 @@
1866
1811
  "include": "#generic-parameter-clause"
1867
1812
  },
1868
1813
  {
1869
- "comment": "Swift 3: generic constraints after the generic param list",
1870
1814
  "include": "#generic-where-clause"
1871
1815
  },
1872
1816
  {
1873
1817
  "include": "#inheritance-clause"
1874
1818
  },
1875
1819
  {
1820
+ "name": "meta.definition.type.body.swift",
1876
1821
  "begin": "\\{",
1822
+ "end": "\\}",
1823
+ "patterns": [
1824
+ {
1825
+ "include": "$self"
1826
+ }
1827
+ ],
1877
1828
  "beginCaptures": {
1878
1829
  "0": {
1879
1830
  "name": "punctuation.definition.type.begin.swift"
1880
1831
  }
1881
1832
  },
1882
- "end": "\\}",
1883
1833
  "endCaptures": {
1884
1834
  "0": {
1885
1835
  "name": "punctuation.definition.type.end.swift"
1886
1836
  }
1887
- },
1888
- "name": "meta.definition.type.body.swift",
1889
- "patterns": [
1890
- {
1891
- "include": "$self"
1892
- }
1893
- ]
1837
+ }
1894
1838
  }
1895
- ]
1839
+ ],
1840
+ "beginCaptures": {
1841
+ "1": {
1842
+ "name": "storage.type.$1.swift"
1843
+ },
1844
+ "2": {
1845
+ "name": "entity.name.type.$1.swift"
1846
+ },
1847
+ "3": {
1848
+ "name": "punctuation.definition.identifier.swift"
1849
+ },
1850
+ "4": {
1851
+ "name": "punctuation.definition.identifier.swift"
1852
+ }
1853
+ }
1896
1854
  },
1897
1855
  {
1898
1856
  "include": "#type-enum"
@@ -1900,23 +1858,9 @@
1900
1858
  ]
1901
1859
  },
1902
1860
  "type-enum": {
1903
- "begin": "\\b(enum)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))",
1904
- "beginCaptures": {
1905
- "1": {
1906
- "name": "storage.type.$1.swift"
1907
- },
1908
- "2": {
1909
- "name": "entity.name.type.$1.swift"
1910
- },
1911
- "3": {
1912
- "name": "punctuation.definition.identifier.swift"
1913
- },
1914
- "4": {
1915
- "name": "punctuation.definition.identifier.swift"
1916
- }
1917
- },
1918
- "end": "(?<=\\})",
1919
1861
  "name": "meta.definition.type.$1.swift",
1862
+ "begin": "\\b(enum)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))",
1863
+ "end": "(?\u003c=\\})",
1920
1864
  "patterns": [
1921
1865
  {
1922
1866
  "include": "#comments"
@@ -1925,26 +1869,15 @@
1925
1869
  "include": "#generic-parameter-clause"
1926
1870
  },
1927
1871
  {
1928
- "comment": "Swift 3: generic constraints after the generic param list",
1929
1872
  "include": "#generic-where-clause"
1930
1873
  },
1931
1874
  {
1932
1875
  "include": "#inheritance-clause"
1933
1876
  },
1934
1877
  {
1878
+ "name": "meta.definition.type.body.swift",
1935
1879
  "begin": "\\{",
1936
- "beginCaptures": {
1937
- "0": {
1938
- "name": "punctuation.definition.type.begin.swift"
1939
- }
1940
- },
1941
1880
  "end": "\\}",
1942
- "endCaptures": {
1943
- "0": {
1944
- "name": "punctuation.definition.type.end.swift"
1945
- }
1946
- },
1947
- "name": "meta.definition.type.body.swift",
1948
1881
  "patterns": [
1949
1882
  {
1950
1883
  "include": "#enum-case-clause"
@@ -1952,28 +1885,44 @@
1952
1885
  {
1953
1886
  "include": "$self"
1954
1887
  }
1955
- ]
1956
- }
1957
- ],
1958
- "repository": {
1959
- "associated-values": {
1960
- "begin": "\\G\\(",
1888
+ ],
1961
1889
  "beginCaptures": {
1962
1890
  "0": {
1963
- "name": "punctuation.definition.parameters.begin.swift"
1891
+ "name": "punctuation.definition.type.begin.swift"
1964
1892
  }
1965
1893
  },
1966
- "end": "\\)",
1967
1894
  "endCaptures": {
1968
1895
  "0": {
1969
- "name": "punctuation.definition.parameters.end.swift"
1896
+ "name": "punctuation.definition.type.end.swift"
1970
1897
  }
1971
- },
1898
+ }
1899
+ }
1900
+ ],
1901
+ "beginCaptures": {
1902
+ "1": {
1903
+ "name": "storage.type.$1.swift"
1904
+ },
1905
+ "2": {
1906
+ "name": "entity.name.type.$1.swift"
1907
+ },
1908
+ "3": {
1909
+ "name": "punctuation.definition.identifier.swift"
1910
+ },
1911
+ "4": {
1912
+ "name": "punctuation.definition.identifier.swift"
1913
+ }
1914
+ },
1915
+ "repository": {
1916
+ "associated-values": {
1917
+ "begin": "\\G\\(",
1918
+ "end": "\\)",
1972
1919
  "patterns": [
1973
1920
  {
1974
1921
  "include": "#comments"
1975
1922
  },
1976
1923
  {
1924
+ "match": "(?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*(:)",
1925
+ "end": "(?=[,)\\]])",
1977
1926
  "captures": {
1978
1927
  "1": {
1979
1928
  "name": "invalid.illegal.distinct-labels-not-allowed.swift"
@@ -1987,12 +1936,16 @@
1987
1936
  "6": {
1988
1937
  "name": "punctuation.separator.argument-label.swift"
1989
1938
  }
1990
- },
1991
- "end": "(?=[,)\\]])",
1992
- "match": "(?x)\n\t\t\t\t\t\t\t\t\t\t((?<q1>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*\\k<q1>)\n\t\t\t\t\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t\t\t\t\t(((?<q2>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*\\k<q2>))\n\t\t\t\t\t\t\t\t\t\t\\s*(:)"
1939
+ }
1993
1940
  },
1994
1941
  {
1995
- "begin": "(((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*\\k<q>))\\s*(:)",
1942
+ "begin": "(((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*\\k\u003cq\u003e))\\s*(:)",
1943
+ "end": "(?=[,)\\]])",
1944
+ "patterns": [
1945
+ {
1946
+ "include": "#available-types"
1947
+ }
1948
+ ],
1996
1949
  "beginCaptures": {
1997
1950
  "1": {
1998
1951
  "name": "entity.name.function.swift"
@@ -2003,38 +1956,36 @@
2003
1956
  "4": {
2004
1957
  "name": "punctuation.separator.argument-label.swift"
2005
1958
  }
2006
- },
2007
- "end": "(?=[,)\\]])",
2008
- "patterns": [
2009
- {
2010
- "include": "#available-types"
2011
- }
2012
- ]
1959
+ }
2013
1960
  },
2014
1961
  {
2015
1962
  "begin": "(?![,)\\]])(?=\\S)",
2016
- "comment": "an element without a label (i.e. anything else)",
2017
1963
  "end": "(?=[,)\\]])",
2018
1964
  "patterns": [
2019
1965
  {
2020
1966
  "include": "#available-types"
2021
1967
  },
2022
1968
  {
2023
- "match": ":",
2024
- "name": "invalid.illegal.extra-colon-in-parameter-list.swift"
1969
+ "name": "invalid.illegal.extra-colon-in-parameter-list.swift",
1970
+ "match": ":"
2025
1971
  }
2026
1972
  ]
2027
1973
  }
2028
- ]
2029
- },
2030
- "enum-case": {
2031
- "begin": "(?x)((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*",
1974
+ ],
2032
1975
  "beginCaptures": {
2033
- "1": {
2034
- "name": "constant.other.swift"
1976
+ "0": {
1977
+ "name": "punctuation.definition.parameters.begin.swift"
2035
1978
  }
2036
1979
  },
2037
- "end": "(?<=\\))|(?![=(])",
1980
+ "endCaptures": {
1981
+ "0": {
1982
+ "name": "punctuation.definition.parameters.end.swift"
1983
+ }
1984
+ }
1985
+ },
1986
+ "enum-case": {
1987
+ "begin": "(?x)((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*",
1988
+ "end": "(?\u003c=\\))|(?![=(])",
2038
1989
  "patterns": [
2039
1990
  {
2040
1991
  "include": "#comments"
@@ -2045,15 +1996,15 @@
2045
1996
  {
2046
1997
  "include": "#raw-value-assignment"
2047
1998
  }
2048
- ]
1999
+ ],
2000
+ "beginCaptures": {
2001
+ "1": {
2002
+ "name": "constant.other.swift"
2003
+ }
2004
+ }
2049
2005
  },
2050
2006
  "enum-case-clause": {
2051
2007
  "begin": "\\b(case)\\b\\s*",
2052
- "beginCaptures": {
2053
- "1": {
2054
- "name": "storage.type.enum.case.swift"
2055
- }
2056
- },
2057
2008
  "end": "(?=[;}])|(?!\\G)(?!//|/\\*)(?=[^\\s,])",
2058
2009
  "patterns": [
2059
2010
  {
@@ -2065,12 +2016,17 @@
2065
2016
  {
2066
2017
  "include": "#more-cases"
2067
2018
  }
2068
- ]
2019
+ ],
2020
+ "beginCaptures": {
2021
+ "1": {
2022
+ "name": "storage.type.enum.case.swift"
2023
+ }
2024
+ }
2069
2025
  },
2070
2026
  "more-cases": {
2027
+ "name": "meta.enum-case.more-cases",
2071
2028
  "begin": ",\\s*",
2072
2029
  "end": "(?!\\G)(?!//|/\\*)(?=[;}]|[^\\s,])",
2073
- "name": "meta.enum-case.more-cases",
2074
2030
  "patterns": [
2075
2031
  {
2076
2032
  "include": "#comments"
@@ -2085,11 +2041,6 @@
2085
2041
  },
2086
2042
  "raw-value-assignment": {
2087
2043
  "begin": "(=)\\s*",
2088
- "beginCaptures": {
2089
- "1": {
2090
- "name": "keyword.operator.assignment.swift"
2091
- }
2092
- },
2093
2044
  "end": "(?!\\G)",
2094
2045
  "patterns": [
2095
2046
  {
@@ -2098,12 +2049,29 @@
2098
2049
  {
2099
2050
  "include": "#literals"
2100
2051
  }
2101
- ]
2052
+ ],
2053
+ "beginCaptures": {
2054
+ "1": {
2055
+ "name": "keyword.operator.assignment.swift"
2056
+ }
2057
+ }
2102
2058
  }
2103
2059
  }
2104
2060
  },
2105
2061
  "type-identifier": {
2106
- "begin": "((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*",
2062
+ "begin": "((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*",
2063
+ "end": "(?!\u003c)",
2064
+ "patterns": [
2065
+ {
2066
+ "begin": "(?=\u003c)",
2067
+ "end": "(?!\\G)",
2068
+ "patterns": [
2069
+ {
2070
+ "include": "#generic-argument-clause"
2071
+ }
2072
+ ]
2073
+ }
2074
+ ],
2107
2075
  "beginCaptures": {
2108
2076
  "1": {
2109
2077
  "name": "meta.type-name.swift",
@@ -2119,22 +2087,26 @@
2119
2087
  "3": {
2120
2088
  "name": "punctuation.definition.identifier.swift"
2121
2089
  }
2122
- },
2123
- "end": "(?!<)",
2090
+ }
2091
+ },
2092
+ "typealias": {
2093
+ "name": "meta.definition.typealias.swift",
2094
+ "begin": "\\b(typealias)\\s+((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*",
2095
+ "end": "(?!\\G)$|(?=;|//|/\\*|$)",
2124
2096
  "patterns": [
2125
2097
  {
2126
- "begin": "(?=<)",
2098
+ "begin": "\\G(?=\u003c)",
2127
2099
  "end": "(?!\\G)",
2128
2100
  "patterns": [
2129
2101
  {
2130
- "include": "#generic-argument-clause"
2102
+ "include": "#generic-parameter-clause"
2131
2103
  }
2132
2104
  ]
2105
+ },
2106
+ {
2107
+ "include": "#typealias-assignment"
2133
2108
  }
2134
- ]
2135
- },
2136
- "typealias": {
2137
- "begin": "\\b(typealias)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*",
2109
+ ],
2138
2110
  "beginCaptures": {
2139
2111
  "1": {
2140
2112
  "name": "keyword.other.declaration-specifier.swift"
@@ -2148,44 +2120,27 @@
2148
2120
  "4": {
2149
2121
  "name": "punctuation.definition.identifier.swift"
2150
2122
  }
2151
- },
2152
- "end": "(?!\\G)$|(?=;|//|/\\*|$)",
2153
- "name": "meta.definition.typealias.swift",
2154
- "patterns": [
2155
- {
2156
- "begin": "\\G(?=<)",
2157
- "end": "(?!\\G)",
2158
- "patterns": [
2159
- {
2160
- "include": "#generic-parameter-clause"
2161
- }
2162
- ]
2163
- },
2164
- {
2165
- "include": "#typealias-assignment"
2166
- }
2167
- ]
2123
+ }
2168
2124
  },
2169
2125
  "typealias-assignment": {
2170
2126
  "begin": "(=)\\s*",
2171
- "beginCaptures": {
2172
- "1": {
2173
- "name": "keyword.operator.assignment.swift"
2174
- }
2175
- },
2176
2127
  "end": "(?!\\G)$|(?=;|//|/\\*|$)",
2177
2128
  "patterns": [
2178
2129
  {
2179
2130
  "include": "#available-types"
2180
2131
  }
2181
- ]
2132
+ ],
2133
+ "beginCaptures": {
2134
+ "1": {
2135
+ "name": "keyword.operator.assignment.swift"
2136
+ }
2137
+ }
2182
2138
  },
2183
2139
  "types-precedencegroup": {
2184
2140
  "patterns": [
2185
2141
  {
2186
- "comment": "Precedence groups in the standard library",
2187
- "match": "\\b(?:BitwiseShift|Assignment|RangeFormation|Casting|Addition|NilCoalescing|Comparison|LogicalConjunction|LogicalDisjunction|Default|Ternary|Multiplication|FunctionArrow)Precedence\\b",
2188
- "name": "support.type.swift"
2142
+ "name": "support.type.swift",
2143
+ "match": "\\b(?:BitwiseShift|Assignment|RangeFormation|Casting|Addition|NilCoalescing|Comparison|LogicalConjunction|LogicalDisjunction|Default|Ternary|Multiplication|FunctionArrow)Precedence\\b"
2189
2144
  }
2190
2145
  ]
2191
2146
  }
@@ -2245,29 +2200,17 @@
2245
2200
  "include": "#availability-condition"
2246
2201
  },
2247
2202
  {
2248
- "match": "\\b_\\b",
2249
- "name": "support.variable.discard-value.swift"
2203
+ "name": "support.variable.discard-value.swift",
2204
+ "match": "\\b_\\b"
2250
2205
  }
2251
2206
  ],
2252
2207
  "repository": {
2253
2208
  "availability-condition": {
2254
2209
  "begin": "\\B(#available)(\\()",
2255
- "beginCaptures": {
2256
- "1": {
2257
- "name": "support.function.availability-condition.swift"
2258
- },
2259
- "2": {
2260
- "name": "punctuation.definition.arguments.begin.swift"
2261
- }
2262
- },
2263
2210
  "end": "\\)",
2264
- "endCaptures": {
2265
- "0": {
2266
- "name": "punctuation.definition.arguments.end.swift"
2267
- }
2268
- },
2269
2211
  "patterns": [
2270
2212
  {
2213
+ "match": "\\s*\\b((?:iOS|macOS|OSX|watchOS|tvOS)(?:ApplicationExtension)?)\\b(?:\\s+([0-9]+(?:\\.[0-9]+)*\\b))",
2271
2214
  "captures": {
2272
2215
  "1": {
2273
2216
  "name": "keyword.other.platform.os.swift"
@@ -2275,10 +2218,10 @@
2275
2218
  "2": {
2276
2219
  "name": "constant.numeric.swift"
2277
2220
  }
2278
- },
2279
- "match": "\\s*\\b((?:iOS|macOS|OSX|watchOS|tvOS)(?:ApplicationExtension)?)\\b(?:\\s+([0-9]+(?:\\.[0-9]+)*\\b))"
2221
+ }
2280
2222
  },
2281
2223
  {
2224
+ "match": "(\\*)\\s*(.*?)(?=[,)])",
2282
2225
  "captures": {
2283
2226
  "1": {
2284
2227
  "name": "keyword.other.platform.all.swift"
@@ -2286,20 +2229,33 @@
2286
2229
  "2": {
2287
2230
  "name": "invalid.illegal.character-not-allowed-here.swift"
2288
2231
  }
2289
- },
2290
- "match": "(\\*)\\s*(.*?)(?=[,)])"
2232
+ }
2291
2233
  },
2292
2234
  {
2293
- "match": "[^\\s,)]+",
2294
- "name": "invalid.illegal.character-not-allowed-here.swift"
2235
+ "name": "invalid.illegal.character-not-allowed-here.swift",
2236
+ "match": "[^\\s,)]+"
2295
2237
  }
2296
- ]
2238
+ ],
2239
+ "beginCaptures": {
2240
+ "1": {
2241
+ "name": "support.function.availability-condition.swift"
2242
+ },
2243
+ "2": {
2244
+ "name": "punctuation.definition.arguments.begin.swift"
2245
+ }
2246
+ },
2247
+ "endCaptures": {
2248
+ "0": {
2249
+ "name": "punctuation.definition.arguments.end.swift"
2250
+ }
2251
+ }
2297
2252
  },
2298
2253
  "closure-parameter": {
2299
- "match": "\\$[0-9]+",
2300
- "name": "variable.language.closure-parameter.swift"
2254
+ "name": "variable.language.closure-parameter.swift",
2255
+ "match": "\\$[0-9]+"
2301
2256
  },
2302
2257
  "compound-name": {
2258
+ "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",
2303
2259
  "captures": {
2304
2260
  "1": {
2305
2261
  "name": "entity.name.function.compound-name.swift"
@@ -2313,6 +2269,8 @@
2313
2269
  "4": {
2314
2270
  "patterns": [
2315
2271
  {
2272
+ "name": "entity.name.function.compound-name.swift",
2273
+ "match": "(?\u003cq\u003e`?)(?!_:)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e):",
2316
2274
  "captures": {
2317
2275
  "1": {
2318
2276
  "name": "punctuation.definition.entity.swift"
@@ -2320,15 +2278,11 @@
2320
2278
  "2": {
2321
2279
  "name": "punctuation.definition.entity.swift"
2322
2280
  }
2323
- },
2324
- "match": "(?<q>`?)(?!_:)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>):",
2325
- "name": "entity.name.function.compound-name.swift"
2281
+ }
2326
2282
  }
2327
2283
  ]
2328
2284
  }
2329
- },
2330
- "comment": "a reference to a function with disambiguating argument labels, such as foo(_:), foo(bar:), etc.",
2331
- "match": "(?x)\n\t\t\t\t\t\t((?<q1>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q1>)) \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((?<q2>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q2>)) \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"
2285
+ }
2332
2286
  },
2333
2287
  "expression-element-list": {
2334
2288
  "patterns": [
@@ -2336,7 +2290,13 @@
2336
2290
  "include": "#comments"
2337
2291
  },
2338
2292
  {
2339
- "begin": "((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*(:)",
2293
+ "begin": "((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*(:)",
2294
+ "end": "(?=[,)\\]])",
2295
+ "patterns": [
2296
+ {
2297
+ "include": "#expressions"
2298
+ }
2299
+ ],
2340
2300
  "beginCaptures": {
2341
2301
  "1": {
2342
2302
  "name": "support.function.any-method.swift"
@@ -2350,18 +2310,10 @@
2350
2310
  "4": {
2351
2311
  "name": "punctuation.separator.argument-label.swift"
2352
2312
  }
2353
- },
2354
- "comment": "an element with a label",
2355
- "end": "(?=[,)\\]])",
2356
- "patterns": [
2357
- {
2358
- "include": "#expressions"
2359
- }
2360
- ]
2313
+ }
2361
2314
  },
2362
2315
  {
2363
2316
  "begin": "(?![,)\\]])(?=\\S)",
2364
- "comment": "an element without a label (i.e. anything else)",
2365
2317
  "end": "(?=[,)\\]])",
2366
2318
  "patterns": [
2367
2319
  {
@@ -2374,7 +2326,14 @@
2374
2326
  "function-call-expression": {
2375
2327
  "patterns": [
2376
2328
  {
2377
- "begin": "((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*(\\()",
2329
+ "name": "meta.function-call.swift",
2330
+ "begin": "((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))\\s*(\\()",
2331
+ "end": "\\)",
2332
+ "patterns": [
2333
+ {
2334
+ "include": "#expression-element-list"
2335
+ }
2336
+ ],
2378
2337
  "beginCaptures": {
2379
2338
  "1": {
2380
2339
  "name": "support.function.any-method.swift"
@@ -2389,46 +2348,38 @@
2389
2348
  "name": "punctuation.definition.arguments.begin.swift"
2390
2349
  }
2391
2350
  },
2392
- "comment": "foo(args) -- a call whose callee is a highlightable name",
2393
- "end": "\\)",
2394
2351
  "endCaptures": {
2395
2352
  "0": {
2396
2353
  "name": "punctuation.definition.arguments.end.swift"
2397
2354
  }
2398
- },
2355
+ }
2356
+ },
2357
+ {
2399
2358
  "name": "meta.function-call.swift",
2359
+ "begin": "(?\u003c=[`\\])}\u003e\\p{L}_\\p{N}\\p{M}])\\s*(\\()",
2360
+ "end": "\\)",
2400
2361
  "patterns": [
2401
2362
  {
2402
2363
  "include": "#expression-element-list"
2403
2364
  }
2404
- ]
2405
- },
2406
- {
2407
- "begin": "(?<=[`\\])}>\\p{L}_\\p{N}\\p{M}])\\s*(\\()",
2365
+ ],
2408
2366
  "beginCaptures": {
2409
2367
  "1": {
2410
2368
  "name": "punctuation.definition.arguments.begin.swift"
2411
2369
  }
2412
2370
  },
2413
- "comment": "[Int](args) -- a call whose callee is a more complicated expression",
2414
- "end": "\\)",
2415
2371
  "endCaptures": {
2416
2372
  "0": {
2417
2373
  "name": "punctuation.definition.arguments.end.swift"
2418
2374
  }
2419
- },
2420
- "name": "meta.function-call.swift",
2421
- "patterns": [
2422
- {
2423
- "include": "#expression-element-list"
2424
- }
2425
- ]
2375
+ }
2426
2376
  }
2427
2377
  ]
2428
2378
  },
2429
2379
  "member-reference": {
2430
2380
  "patterns": [
2431
2381
  {
2382
+ "match": "(?\u003c=\\.)((?\u003cq\u003e`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k\u003cq\u003e))",
2432
2383
  "captures": {
2433
2384
  "1": {
2434
2385
  "name": "variable.other.swift"
@@ -2439,67 +2390,67 @@
2439
2390
  "3": {
2440
2391
  "name": "punctuation.definition.identifier.swift"
2441
2392
  }
2442
- },
2443
- "match": "(?<=\\.)((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))"
2393
+ }
2444
2394
  }
2445
2395
  ]
2446
2396
  },
2447
2397
  "parenthesized-expression": {
2448
2398
  "begin": "\\(",
2399
+ "end": "\\)",
2400
+ "patterns": [
2401
+ {
2402
+ "include": "#expression-element-list"
2403
+ }
2404
+ ],
2449
2405
  "beginCaptures": {
2450
2406
  "0": {
2451
2407
  "name": "punctuation.section.tuple.begin.swift"
2452
2408
  }
2453
2409
  },
2454
- "end": "\\)",
2455
2410
  "endCaptures": {
2456
2411
  "0": {
2457
2412
  "name": "punctuation.section.tuple.end.swift"
2458
2413
  }
2459
- },
2414
+ }
2415
+ },
2416
+ "subscript-expression": {
2417
+ "name": "meta.subscript-expression.swift",
2418
+ "begin": "(?\u003c=[`\\p{L}_\\p{N}\\p{M}])\\s*(\\[)",
2419
+ "end": "\\]",
2460
2420
  "patterns": [
2461
2421
  {
2462
2422
  "include": "#expression-element-list"
2463
2423
  }
2464
- ]
2465
- },
2466
- "subscript-expression": {
2467
- "begin": "(?<=[`\\p{L}_\\p{N}\\p{M}])\\s*(\\[)",
2424
+ ],
2468
2425
  "beginCaptures": {
2469
2426
  "1": {
2470
2427
  "name": "punctuation.definition.arguments.begin.swift"
2471
2428
  }
2472
2429
  },
2473
- "end": "\\]",
2474
2430
  "endCaptures": {
2475
2431
  "0": {
2476
2432
  "name": "punctuation.definition.arguments.end.swift"
2477
2433
  }
2478
- },
2479
- "name": "meta.subscript-expression.swift",
2480
- "patterns": [
2481
- {
2482
- "include": "#expression-element-list"
2483
- }
2484
- ]
2434
+ }
2485
2435
  }
2486
2436
  }
2487
2437
  },
2488
2438
  "keywords": {
2489
2439
  "patterns": [
2490
2440
  {
2491
- "match": "(?<!\\.)\\b(?:if|else|guard|where|switch|case|default|fallthrough)\\b",
2492
- "name": "keyword.control.branch.swift"
2441
+ "name": "keyword.control.branch.swift",
2442
+ "match": "(?\u003c!\\.)\\b(?:if|else|guard|where|switch|case|default|fallthrough)\\b"
2493
2443
  },
2494
2444
  {
2495
- "match": "(?<!\\.)\\b(?:continue|break|fallthrough|return)\\b",
2496
- "name": "keyword.control.transfer.swift"
2445
+ "name": "keyword.control.transfer.swift",
2446
+ "match": "(?\u003c!\\.)\\b(?:continue|break|fallthrough|return)\\b"
2497
2447
  },
2498
2448
  {
2499
- "match": "(?<!\\.)\\b(?:while|for|in)\\b",
2500
- "name": "keyword.control.loop.swift"
2449
+ "name": "keyword.control.loop.swift",
2450
+ "match": "(?\u003c!\\.)\\b(?:while|for|in)\\b"
2501
2451
  },
2502
2452
  {
2453
+ "match": "(?\u003c!\\.)\\b(repeat)\\b(\\s*)",
2503
2454
  "captures": {
2504
2455
  "1": {
2505
2456
  "name": "keyword.control.loop.swift"
@@ -2507,19 +2458,18 @@
2507
2458
  "2": {
2508
2459
  "name": "punctuation.whitespace.trailing.repeat.swift"
2509
2460
  }
2510
- },
2511
- "comment": "extra scopes for repeat-while snippet",
2512
- "match": "(?<!\\.)\\b(repeat)\\b(\\s*)"
2461
+ }
2513
2462
  },
2514
2463
  {
2515
- "match": "(?<!\\.)\\bdefer\\b",
2516
- "name": "keyword.control.defer.swift"
2464
+ "name": "keyword.control.defer.swift",
2465
+ "match": "(?\u003c!\\.)\\bdefer\\b"
2517
2466
  },
2518
2467
  {
2519
- "match": "(?<!\\.)\\b(?:catch|throws?|rethrows|try)\\b|\\btry[?!]\\B",
2520
- "name": "keyword.control.exception.swift"
2468
+ "name": "keyword.control.exception.swift",
2469
+ "match": "(?\u003c!\\.)\\b(?:catch|throws?|rethrows|try)\\b|\\btry[?!]\\B"
2521
2470
  },
2522
2471
  {
2472
+ "match": "(?\u003c!\\.)\\b(do)\\b(\\s*)",
2523
2473
  "captures": {
2524
2474
  "1": {
2525
2475
  "name": "keyword.control.exception.swift"
@@ -2527,36 +2477,34 @@
2527
2477
  "2": {
2528
2478
  "name": "punctuation.whitespace.trailing.do.swift"
2529
2479
  }
2530
- },
2531
- "comment": "extra scopes for do-catch snippet",
2532
- "match": "(?<!\\.)\\b(do)\\b(\\s*)"
2480
+ }
2533
2481
  },
2534
2482
  {
2535
- "match": "(?<!\\.)\\b(?:associatedtype|let|operator|typealias|var)\\b",
2536
- "name": "keyword.other.declaration-specifier.swift"
2483
+ "name": "keyword.other.declaration-specifier.swift",
2484
+ "match": "(?\u003c!\\.)\\b(?:associatedtype|let|operator|typealias|var)\\b"
2537
2485
  },
2538
2486
  {
2539
- "match": "(?<!\\.)\\b(class|enum|extension|precedencegroup|protocol|struct)\\b",
2540
- "name": "storage.type.$1.swift"
2487
+ "name": "storage.type.$1.swift",
2488
+ "match": "(?\u003c!\\.)\\b(class|enum|extension|precedencegroup|protocol|struct)\\b"
2541
2489
  },
2542
2490
  {
2543
- "match": "(?<!\\.)\\b(?:inout|static|final|lazy|mutating|nonmutating|optional|indirect|required|override|dynamic|convenience|infix|prefix|postfix)\\b",
2544
- "name": "storage.modifier.swift"
2491
+ "name": "storage.modifier.swift",
2492
+ "match": "(?\u003c!\\.)\\b(?:inout|static|final|lazy|mutating|nonmutating|optional|indirect|required|override|dynamic|convenience|infix|prefix|postfix)\\b"
2545
2493
  },
2546
2494
  {
2547
- "match": "\\binit[?!]|\\binit\\b|(?<!\\.)\\b(?:func|deinit|subscript|didSet|get|set|willSet)\\b",
2548
- "name": "storage.type.function.swift"
2495
+ "name": "storage.type.function.swift",
2496
+ "match": "\\binit[?!]|\\binit\\b|(?\u003c!\\.)\\b(?:func|deinit|subscript|didSet|get|set|willSet)\\b"
2549
2497
  },
2550
2498
  {
2551
- "match": "(?<!\\.)\\b(?:fileprivate|private|internal|public|open)\\b",
2552
- "name": "keyword.other.declaration-specifier.accessibility.swift"
2499
+ "name": "keyword.other.declaration-specifier.accessibility.swift",
2500
+ "match": "(?\u003c!\\.)\\b(?:fileprivate|private|internal|public|open)\\b"
2553
2501
  },
2554
2502
  {
2555
- "comment": "matches weak, unowned, unowned(safe), unowned(unsafe)",
2556
- "match": "(?<!\\.)\\b(?:weak|unowned)\\b|\\bunowned\\((?:safe|unsafe)\\)",
2557
- "name": "keyword.other.capture-specifier.swift"
2503
+ "name": "keyword.other.capture-specifier.swift",
2504
+ "match": "(?\u003c!\\.)\\b(?:weak|unowned)\\b|\\bunowned\\((?:safe|unsafe)\\)"
2558
2505
  },
2559
2506
  {
2507
+ "match": "(?\u003c=\\.)(?:(dynamicType|self)|(Protocol|Type))\\b",
2560
2508
  "captures": {
2561
2509
  "1": {
2562
2510
  "name": "keyword.operator.type.swift"
@@ -2564,20 +2512,19 @@
2564
2512
  "2": {
2565
2513
  "name": "keyword.operator.type.metatype.swift"
2566
2514
  }
2567
- },
2568
- "match": "(?<=\\.)(?:(dynamicType|self)|(Protocol|Type))\\b"
2515
+ }
2569
2516
  },
2570
2517
  {
2571
- "match": "(?<!\\.)\\b(?:super|self|Self)\\b",
2572
- "name": "variable.language.swift"
2518
+ "name": "variable.language.swift",
2519
+ "match": "(?\u003c!\\.)\\b(?:super|self|Self)\\b"
2573
2520
  },
2574
2521
  {
2575
- "match": "\\B(?:#file|#line|#column|#function|#dsohandle)\\b|\\b(?:__FILE__|__LINE__|__COLUMN__|__FUNCTION__|__DSO_HANDLE__)\\b",
2576
- "name": "support.variable.swift"
2522
+ "name": "support.variable.swift",
2523
+ "match": "\\B(?:#file|#line|#column|#function|#dsohandle)\\b|\\b(?:__FILE__|__LINE__|__COLUMN__|__FUNCTION__|__DSO_HANDLE__)\\b"
2577
2524
  },
2578
2525
  {
2579
- "match": "(?<!\\.)\\bimport\\b",
2580
- "name": "keyword.control.import.swift"
2526
+ "name": "keyword.control.import.swift",
2527
+ "match": "(?\u003c!\\.)\\bimport\\b"
2581
2528
  }
2582
2529
  ]
2583
2530
  },
@@ -2593,20 +2540,25 @@
2593
2540
  "include": "#string"
2594
2541
  },
2595
2542
  {
2596
- "match": "\\bnil\\b",
2597
- "name": "constant.language.nil.swift"
2543
+ "name": "constant.language.nil.swift",
2544
+ "match": "\\bnil\\b"
2598
2545
  },
2599
2546
  {
2600
- "comment": "object \"literals\" used in playgrounds",
2601
- "match": "\\B#(colorLiteral|imageLiteral|fileLiteral)\\b",
2602
- "name": "support.function.object-literal.swift"
2547
+ "name": "support.function.object-literal.swift",
2548
+ "match": "\\B#(colorLiteral|imageLiteral|fileLiteral)\\b"
2603
2549
  },
2604
2550
  {
2605
- "match": "\\B#keyPath\\b",
2606
- "name": "support.function.key-path.swift"
2551
+ "name": "support.function.key-path.swift",
2552
+ "match": "\\B#keyPath\\b"
2607
2553
  },
2608
2554
  {
2609
2555
  "begin": "\\B(#selector)(\\()(?:\\s*(getter|setter)\\s*(:))?",
2556
+ "end": "\\)",
2557
+ "patterns": [
2558
+ {
2559
+ "include": "#expressions"
2560
+ }
2561
+ ],
2610
2562
  "beginCaptures": {
2611
2563
  "1": {
2612
2564
  "name": "support.function.selector-reference.swift"
@@ -2621,167 +2573,158 @@
2621
2573
  "name": "punctuation.separator.argument-label.swift"
2622
2574
  }
2623
2575
  },
2624
- "end": "\\)",
2625
2576
  "endCaptures": {
2626
2577
  "0": {
2627
2578
  "name": "punctuation.definition.arguments.end.swift"
2628
2579
  }
2629
- },
2630
- "patterns": [
2631
- {
2632
- "include": "#expressions"
2633
- }
2634
- ]
2580
+ }
2635
2581
  }
2636
2582
  ],
2637
2583
  "repository": {
2638
2584
  "boolean": {
2639
- "match": "\\b(true|false)\\b",
2640
- "name": "constant.language.boolean.swift"
2585
+ "name": "constant.language.boolean.swift",
2586
+ "match": "\\b(true|false)\\b"
2641
2587
  },
2642
2588
  "numeric": {
2643
2589
  "patterns": [
2644
2590
  {
2645
- "comment": "0.1, -4_2.5, 6.022e23, 10E-5",
2646
- "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\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])",
2647
- "name": "constant.numeric.float.decimal.swift"
2591
+ "name": "constant.numeric.float.decimal.swift",
2592
+ "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])"
2648
2593
  },
2649
2594
  {
2650
- "comment": "-0x1.ap2_3, 0x31p-4",
2651
- "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\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])",
2652
- "name": "constant.numeric.float.hexadecimal.swift"
2595
+ "name": "constant.numeric.float.hexadecimal.swift",
2596
+ "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])"
2653
2597
  },
2654
2598
  {
2655
- "comment": "0x1p, 0x1p_2, 0x1.5pa, 0x1.1p+1f, 0x1pz",
2656
- "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\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])",
2657
- "name": "invalid.illegal.numeric.float.invalid-exponent.swift"
2599
+ "name": "invalid.illegal.numeric.float.invalid-exponent.swift",
2600
+ "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])"
2658
2601
  },
2659
2602
  {
2660
- "comment": "0x1.5w (note that 0x1.f may be a valid expression)",
2661
- "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)\\.[0-9][\\w.]*",
2662
- "name": "invalid.illegal.numeric.float.missing-exponent.swift"
2603
+ "name": "invalid.illegal.numeric.float.missing-exponent.swift",
2604
+ "match": "(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)\\.[0-9][\\w.]*"
2663
2605
  },
2664
2606
  {
2665
- "comment": "-.5, .2f (note that 1.-.5 may be a valid expression)",
2666
- "match": "(?<=\\s|^)\\-?\\.[0-9][\\w.]*",
2667
- "name": "invalid.illegal.numeric.float.missing-leading-zero.swift"
2607
+ "name": "invalid.illegal.numeric.float.missing-leading-zero.swift",
2608
+ "match": "(?\u003c=\\s|^)\\-?\\.[0-9][\\w.]*"
2668
2609
  },
2669
2610
  {
2670
- "comment": "0b_0_1, 0x_1p+3q",
2671
- "match": "(\\B\\-|\\b)0[box]_[0-9a-fA-F_]*(?:[pPeE][+-]?\\w+)?[\\w.]+",
2672
- "name": "invalid.illegal.numeric.leading-underscore.swift"
2611
+ "name": "invalid.illegal.numeric.leading-underscore.swift",
2612
+ "match": "(\\B\\-|\\b)0[box]_[0-9a-fA-F_]*(?:[pPeE][+-]?\\w+)?[\\w.]+"
2673
2613
  },
2674
2614
  {
2675
- "comment": "tuple positional member: not really a numeric literal, but not invalid",
2676
- "match": "(?<=[\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)[0-9]+\\b"
2615
+ "match": "(?\u003c=[\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)[0-9]+\\b"
2677
2616
  },
2678
2617
  {
2679
- "comment": "0b010, 0b1_0",
2680
- "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0b[01][01_]*\\b(?!\\.[0-9])",
2681
- "name": "constant.numeric.integer.binary.swift"
2618
+ "name": "constant.numeric.integer.binary.swift",
2619
+ "match": "(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0b[01][01_]*\\b(?!\\.[0-9])"
2682
2620
  },
2683
2621
  {
2684
- "comment": "0o1, 0o7_3",
2685
- "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0o[0-7][0-7_]*\\b(?!\\.[0-9])",
2686
- "name": "constant.numeric.integer.octal.swift"
2622
+ "name": "constant.numeric.integer.octal.swift",
2623
+ "match": "(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0o[0-7][0-7_]*\\b(?!\\.[0-9])"
2687
2624
  },
2688
2625
  {
2689
- "comment": "02, 3_456",
2690
- "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)[0-9][0-9_]*\\b(?!\\.[0-9])",
2691
- "name": "constant.numeric.integer.decimal.swift"
2626
+ "name": "constant.numeric.integer.decimal.swift",
2627
+ "match": "(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)[0-9][0-9_]*\\b(?!\\.[0-9])"
2692
2628
  },
2693
2629
  {
2694
- "comment": "0x4, 0xF_7",
2695
- "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0x[0-9a-fA-F][0-9a-fA-F_]*\\b(?!\\.[0-9])",
2696
- "name": "constant.numeric.integer.hexadecimal.swift"
2630
+ "name": "constant.numeric.integer.hexadecimal.swift",
2631
+ "match": "(\\B\\-|\\b)(?\u003c![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0x[0-9a-fA-F][0-9a-fA-F_]*\\b(?!\\.[0-9])"
2697
2632
  },
2698
2633
  {
2699
- "match": "(\\B\\-|\\b)[0-9][\\w.]*",
2700
- "name": "invalid.illegal.numeric.other.swift"
2634
+ "name": "invalid.illegal.numeric.other.swift",
2635
+ "match": "(\\B\\-|\\b)[0-9][\\w.]*"
2701
2636
  }
2702
2637
  ]
2703
2638
  },
2704
2639
  "string": {
2705
2640
  "patterns": [
2706
2641
  {
2642
+ "name": "string.quoted.double.block.swift",
2707
2643
  "begin": "\"\"\"",
2708
- "beginCaptures": {
2709
- "0": {
2710
- "name": "punctuation.definition.string.begin.swift"
2711
- }
2712
- },
2713
- "comment": "SE-0168: Multi-Line String Literals",
2714
2644
  "end": "\"\"\"",
2715
- "endCaptures": {
2716
- "0": {
2717
- "name": "punctuation.definition.string.end.swift"
2718
- }
2719
- },
2720
- "name": "string.quoted.double.block.swift",
2721
2645
  "patterns": [
2722
2646
  {
2723
- "match": "\\G.+(?=\"\"\")|\\G.+",
2724
- "name": "invalid.illegal.content-after-opening-delimiter.swift"
2647
+ "name": "invalid.illegal.content-after-opening-delimiter.swift",
2648
+ "match": "\\G.+(?=\"\"\")|\\G.+"
2725
2649
  },
2726
2650
  {
2727
- "match": "\\\\\\s*\\n",
2728
- "name": "constant.character.escape.newline.swift"
2651
+ "name": "constant.character.escape.newline.swift",
2652
+ "match": "\\\\\\s*\\n"
2729
2653
  },
2730
2654
  {
2731
2655
  "include": "#string-guts"
2732
2656
  },
2733
2657
  {
2734
- "comment": "Allow \\(\"\"\"...\"\"\") to appear inside a block string",
2735
- "match": "\\S((?!\\\\\\().)*(?=\"\"\")",
2736
- "name": "invalid.illegal.content-before-closing-delimiter.swift"
2658
+ "name": "invalid.illegal.content-before-closing-delimiter.swift",
2659
+ "match": "\\S((?!\\\\\\().)*(?=\"\"\")"
2737
2660
  }
2738
- ]
2739
- },
2740
- {
2741
- "begin": "\"",
2661
+ ],
2742
2662
  "beginCaptures": {
2743
2663
  "0": {
2744
2664
  "name": "punctuation.definition.string.begin.swift"
2745
2665
  }
2746
2666
  },
2747
- "end": "\"",
2748
2667
  "endCaptures": {
2749
2668
  "0": {
2750
2669
  "name": "punctuation.definition.string.end.swift"
2751
2670
  }
2752
- },
2671
+ }
2672
+ },
2673
+ {
2753
2674
  "name": "string.quoted.double.single-line.swift",
2675
+ "begin": "\"",
2676
+ "end": "\"",
2754
2677
  "patterns": [
2755
2678
  {
2756
- "match": "\\r|\\n",
2757
- "name": "invalid.illegal.returns-not-allowed.swift"
2679
+ "name": "invalid.illegal.returns-not-allowed.swift",
2680
+ "match": "\\r|\\n"
2758
2681
  },
2759
2682
  {
2760
2683
  "include": "#string-guts"
2761
2684
  }
2762
- ]
2685
+ ],
2686
+ "beginCaptures": {
2687
+ "0": {
2688
+ "name": "punctuation.definition.string.begin.swift"
2689
+ }
2690
+ },
2691
+ "endCaptures": {
2692
+ "0": {
2693
+ "name": "punctuation.definition.string.end.swift"
2694
+ }
2695
+ }
2763
2696
  }
2764
2697
  ],
2765
2698
  "repository": {
2766
2699
  "string-guts": {
2767
2700
  "patterns": [
2768
2701
  {
2769
- "match": "\\\\[0\\\\tnr\"']",
2770
- "name": "constant.character.escape.swift"
2702
+ "name": "constant.character.escape.swift",
2703
+ "match": "\\\\[0\\\\tnr\"']"
2771
2704
  },
2772
2705
  {
2773
- "match": "\\\\u\\{[0-9a-fA-F]{1,8}\\}",
2774
- "name": "constant.character.escape.unicode.swift"
2706
+ "name": "constant.character.escape.unicode.swift",
2707
+ "match": "\\\\u\\{[0-9a-fA-F]{1,8}\\}"
2775
2708
  },
2776
2709
  {
2710
+ "name": "meta.embedded.line.swift",
2711
+ "contentName": "source.swift",
2777
2712
  "begin": "\\\\\\(",
2713
+ "end": "(\\))",
2714
+ "patterns": [
2715
+ {
2716
+ "include": "$self"
2717
+ },
2718
+ {
2719
+ "begin": "\\(",
2720
+ "end": "\\)"
2721
+ }
2722
+ ],
2778
2723
  "beginCaptures": {
2779
2724
  "0": {
2780
2725
  "name": "punctuation.section.embedded.begin.swift"
2781
2726
  }
2782
2727
  },
2783
- "contentName": "source.swift",
2784
- "end": "(\\))",
2785
2728
  "endCaptures": {
2786
2729
  "0": {
2787
2730
  "name": "punctuation.section.embedded.end.swift"
@@ -2789,22 +2732,11 @@
2789
2732
  "1": {
2790
2733
  "name": "source.swift"
2791
2734
  }
2792
- },
2793
- "name": "meta.embedded.line.swift",
2794
- "patterns": [
2795
- {
2796
- "include": "$self"
2797
- },
2798
- {
2799
- "begin": "\\(",
2800
- "comment": "Nested parens",
2801
- "end": "\\)"
2802
- }
2803
- ]
2735
+ }
2804
2736
  },
2805
2737
  {
2806
- "match": "\\\\.",
2807
- "name": "invalid.illegal.escape-not-recognized"
2738
+ "name": "invalid.illegal.escape-not-recognized",
2739
+ "match": "\\\\."
2808
2740
  }
2809
2741
  ]
2810
2742
  }
@@ -2815,176 +2747,168 @@
2815
2747
  "operators": {
2816
2748
  "patterns": [
2817
2749
  {
2818
- "comment": "Type casting",
2819
- "match": "\\b(is\\b|as([!?]\\B|\\b))",
2820
- "name": "keyword.operator.type-casting.swift"
2750
+ "name": "keyword.operator.type-casting.swift",
2751
+ "match": "\\b(is\\b|as([!?]\\B|\\b))"
2821
2752
  },
2822
2753
  {
2823
- "begin": "(?x)\n\t\t\t\t\t\t(?=\n\t\t\t\t\t\t\t(?<oph>\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t[/=\\-+!*%<>&|^~?]\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<oph>\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",
2824
- "comment": "This rule helps us speed up the matching.",
2754
+ "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",
2825
2755
  "end": "(?!\\G)",
2826
2756
  "patterns": [
2827
2757
  {
2758
+ "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",
2828
2759
  "captures": {
2829
2760
  "0": {
2830
2761
  "patterns": [
2831
2762
  {
2832
- "match": "\\G(\\+\\+|\\-\\-)$",
2833
- "name": "keyword.operator.increment-or-decrement.swift"
2763
+ "name": "keyword.operator.increment-or-decrement.swift",
2764
+ "match": "\\G(\\+\\+|\\-\\-)$"
2834
2765
  },
2835
2766
  {
2836
- "match": "\\G(\\+|\\-)$",
2837
- "name": "keyword.operator.arithmetic.unary.swift"
2767
+ "name": "keyword.operator.arithmetic.unary.swift",
2768
+ "match": "\\G(\\+|\\-)$"
2838
2769
  },
2839
2770
  {
2840
- "match": "\\G!$",
2841
- "name": "keyword.operator.logical.not.swift"
2771
+ "name": "keyword.operator.logical.not.swift",
2772
+ "match": "\\G!$"
2842
2773
  },
2843
2774
  {
2844
- "match": "\\G~$",
2845
- "name": "keyword.operator.bitwise.not.swift"
2775
+ "name": "keyword.operator.bitwise.not.swift",
2776
+ "match": "\\G~$"
2846
2777
  },
2847
2778
  {
2848
- "match": ".+",
2849
- "name": "keyword.operator.custom.prefix.swift"
2779
+ "name": "keyword.operator.custom.prefix.swift",
2780
+ "match": ".+"
2850
2781
  }
2851
2782
  ]
2852
2783
  }
2853
- },
2854
- "comment": "Prefix unary operator",
2855
- "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(?<=^|[\\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[/=\\-+!*%<>&|^~?]\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"
2784
+ }
2856
2785
  },
2857
2786
  {
2787
+ "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",
2858
2788
  "captures": {
2859
2789
  "0": {
2860
2790
  "patterns": [
2861
2791
  {
2862
- "match": "\\G(\\+\\+|\\-\\-)$",
2863
- "name": "keyword.operator.increment-or-decrement.swift"
2792
+ "name": "keyword.operator.increment-or-decrement.swift",
2793
+ "match": "\\G(\\+\\+|\\-\\-)$"
2864
2794
  },
2865
2795
  {
2866
- "match": "\\G!$",
2867
- "name": "keyword.operator.increment-or-decrement.swift"
2796
+ "name": "keyword.operator.increment-or-decrement.swift",
2797
+ "match": "\\G!$"
2868
2798
  },
2869
2799
  {
2870
- "match": ".+",
2871
- "name": "keyword.operator.custom.postfix.swift"
2800
+ "name": "keyword.operator.custom.postfix.swift",
2801
+ "match": ".+"
2872
2802
  }
2873
2803
  ]
2874
2804
  }
2875
- },
2876
- "comment": "Postfix unary operator",
2877
- "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(?<!^|[\\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[/=\\-+!*%<>&|^~?]\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"
2805
+ }
2878
2806
  },
2879
2807
  {
2808
+ "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",
2880
2809
  "captures": {
2881
2810
  "0": {
2882
2811
  "patterns": [
2883
2812
  {
2884
- "match": "\\G=$",
2885
- "name": "keyword.operator.assignment.swift"
2813
+ "name": "keyword.operator.assignment.swift",
2814
+ "match": "\\G=$"
2886
2815
  },
2887
2816
  {
2888
- "match": "\\G(\\+|\\-|\\*|/|%|<<|>>|&|\\^|\\||&&|\\|\\|)=$",
2889
- "name": "keyword.operator.assignment.compound.swift"
2817
+ "name": "keyword.operator.assignment.compound.swift",
2818
+ "match": "\\G(\\+|\\-|\\*|/|%|\u003c\u003c|\u003e\u003e|\u0026|\\^|\\||\u0026\u0026|\\|\\|)=$"
2890
2819
  },
2891
2820
  {
2892
- "match": "\\G(\\+|\\-|\\*|/)$",
2893
- "name": "keyword.operator.arithmetic.swift"
2821
+ "name": "keyword.operator.arithmetic.swift",
2822
+ "match": "\\G(\\+|\\-|\\*|/)$"
2894
2823
  },
2895
2824
  {
2896
- "match": "\\G&(\\+|\\-|\\*)$",
2897
- "name": "keyword.operator.arithmetic.overflow.swift"
2825
+ "name": "keyword.operator.arithmetic.overflow.swift",
2826
+ "match": "\\G\u0026(\\+|\\-|\\*)$"
2898
2827
  },
2899
2828
  {
2900
- "match": "\\G%$",
2901
- "name": "keyword.operator.arithmetic.remainder.swift"
2829
+ "name": "keyword.operator.arithmetic.remainder.swift",
2830
+ "match": "\\G%$"
2902
2831
  },
2903
2832
  {
2904
- "match": "\\G(==|!=|>|<|>=|<=|~=)$",
2905
- "name": "keyword.operator.comparison.swift"
2833
+ "name": "keyword.operator.comparison.swift",
2834
+ "match": "\\G(==|!=|\u003e|\u003c|\u003e=|\u003c=|~=)$"
2906
2835
  },
2907
2836
  {
2908
- "match": "\\G\\?\\?$",
2909
- "name": "keyword.operator.coalescing.swift"
2837
+ "name": "keyword.operator.coalescing.swift",
2838
+ "match": "\\G\\?\\?$"
2910
2839
  },
2911
2840
  {
2912
- "match": "\\G(&&|\\|\\|)$",
2913
- "name": "keyword.operator.logical.swift"
2841
+ "name": "keyword.operator.logical.swift",
2842
+ "match": "\\G(\u0026\u0026|\\|\\|)$"
2914
2843
  },
2915
2844
  {
2916
- "match": "\\G(&|\\||\\^|<<|>>)$",
2917
- "name": "keyword.operator.bitwise.swift"
2845
+ "name": "keyword.operator.bitwise.swift",
2846
+ "match": "\\G(\u0026|\\||\\^|\u003c\u003c|\u003e\u003e)$"
2918
2847
  },
2919
2848
  {
2920
- "match": "\\G(===|!==)$",
2921
- "name": "keyword.operator.bitwise.swift"
2849
+ "name": "keyword.operator.bitwise.swift",
2850
+ "match": "\\G(===|!==)$"
2922
2851
  },
2923
2852
  {
2924
- "match": "\\G\\?$",
2925
- "name": "keyword.operator.ternary.swift"
2853
+ "name": "keyword.operator.ternary.swift",
2854
+ "match": "\\G\\?$"
2926
2855
  },
2927
2856
  {
2928
- "match": ".+",
2929
- "name": "keyword.operator.custom.infix.swift"
2857
+ "name": "keyword.operator.custom.infix.swift",
2858
+ "match": ".+"
2930
2859
  }
2931
2860
  ]
2932
2861
  }
2933
- },
2934
- "comment": "Infix operator",
2935
- "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[/=\\-+!*%<>&|^~?]\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"
2862
+ }
2936
2863
  },
2937
2864
  {
2865
+ "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",
2938
2866
  "captures": {
2939
2867
  "0": {
2940
2868
  "patterns": [
2941
2869
  {
2942
- "match": ".+",
2943
- "name": "keyword.operator.custom.prefix.dot.swift"
2870
+ "name": "keyword.operator.custom.prefix.dot.swift",
2871
+ "match": ".+"
2944
2872
  }
2945
2873
  ]
2946
2874
  }
2947
- },
2948
- "comment": "Dot prefix unary operator",
2949
- "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(?<=^|[\\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 | [/=\\-+!*%<>&|^~?]\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"
2875
+ }
2950
2876
  },
2951
2877
  {
2878
+ "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",
2952
2879
  "captures": {
2953
2880
  "0": {
2954
2881
  "patterns": [
2955
2882
  {
2956
- "match": ".+",
2957
- "name": "keyword.operator.custom.postfix.dot.swift"
2883
+ "name": "keyword.operator.custom.postfix.dot.swift",
2884
+ "match": ".+"
2958
2885
  }
2959
2886
  ]
2960
2887
  }
2961
- },
2962
- "comment": "Dot postfix unary operator",
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(?<!^|[\\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 | [/=\\-+!*%<>&|^~?]\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"
2888
+ }
2964
2889
  },
2965
2890
  {
2891
+ "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",
2966
2892
  "captures": {
2967
2893
  "0": {
2968
2894
  "patterns": [
2969
2895
  {
2970
- "match": "\\G\\.\\.[.<]$",
2971
- "name": "keyword.operator.range.swift"
2896
+ "name": "keyword.operator.range.swift",
2897
+ "match": "\\G\\.\\.[.\u003c]$"
2972
2898
  },
2973
2899
  {
2974
- "match": ".+",
2975
- "name": "keyword.operator.custom.infix.dot.swift"
2900
+ "name": "keyword.operator.custom.infix.dot.swift",
2901
+ "match": ".+"
2976
2902
  }
2977
2903
  ]
2978
2904
  }
2979
- },
2980
- "comment": "Dot infix operator",
2981
- "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 | [/=\\-+!*%<>&|^~?]\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"
2905
+ }
2982
2906
  }
2983
2907
  ]
2984
2908
  },
2985
2909
  {
2986
- "match": ":",
2987
- "name": "keyword.operator.ternary.swift"
2910
+ "name": "keyword.operator.ternary.swift",
2911
+ "match": ":"
2988
2912
  }
2989
2913
  ]
2990
2914
  },
@@ -3001,7 +2925,5 @@
3001
2925
  }
3002
2926
  ]
3003
2927
  }
3004
- },
3005
- "scopeName": "source.swift",
3006
- "uuid": "8C743E89-9C8D-4833-8149-6500D82AA463"
3007
- }
2928
+ }
2929
+ }