github-linguist 5.3.3 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d1de9a70dcfac92fc574e43f6dbd0f5bc7043639
4
- data.tar.gz: cb4a74d96a47c1a3c6d5a536682a414e27b4cfd9
3
+ metadata.gz: db6d9aa8a004c4508d9a250b5681363780a404a0
4
+ data.tar.gz: 233c71f2eff076a7cd43cc853e5d260db364bf7c
5
5
  SHA512:
6
- metadata.gz: abee467159bffa6ea2391f39445730f0bbbd95d9389a2a52862445f8af84f17dd4c979ce25b3af1beb80615a84177aed3886e06e330606af3498656434a04a1c
7
- data.tar.gz: 90a9bdc3ab5470a10494bab3827c872b14ad2eccd7c2ea8c70d7b80342275baab777bfa3755429f4756fadaf4382270640077f08c37aa9ce470b406582446bc6
6
+ metadata.gz: 844e27beff910a740a6c0a3ae20472d4634f120680603b83083597a3aefe543741d2bddcb1f779f892d1b10b00612d84425c323fdb06cb411f81e6d755d7166c
7
+ data.tar.gz: 03ed08ceac11aa9de771163ac3125a144199db3eba6875a5912573a7a24c90ada47180ad6df817708c9814ad413c59c2ed4f1821b721ebccc2bb361638cd785e
@@ -117,9 +117,8 @@ def git_linguist(args)
117
117
  end
118
118
 
119
119
  parser.parse!(args)
120
-
121
120
  git_dir = `git rev-parse --git-dir`.strip
122
- raise "git-linguist must be run in a Git repository (#{Dir.pwd})" unless $?.success?
121
+ raise "git-linguist must be run in a Git repository" unless $?.success?
123
122
  wrapper = GitLinguist.new(git_dir, commit, incremental)
124
123
 
125
124
  case args.pop
@@ -141,6 +140,10 @@ def git_linguist(args)
141
140
  $stderr.print(parser.help)
142
141
  exit 1
143
142
  end
143
+ rescue Exception => e
144
+ $stderr.puts e.message
145
+ $stderr.puts e.backtrace
146
+ exit 1
144
147
  end
145
148
 
146
149
  git_linguist(ARGV)
@@ -2,6 +2,9 @@
2
2
  #include "linguist.h"
3
3
  #include "lex.linguist_yy.h"
4
4
 
5
+ // Anything longer is unlikely to be useful.
6
+ #define MAX_TOKEN_LEN 32
7
+
5
8
  int linguist_yywrap(yyscan_t yyscanner) {
6
9
  return 1;
7
10
  }
@@ -32,19 +35,27 @@ static VALUE rb_tokenizer_extract_tokens(VALUE self, VALUE rb_data) {
32
35
  case NO_ACTION:
33
36
  break;
34
37
  case REGULAR_TOKEN:
35
- rb_ary_push(ary, rb_str_new2(extra.token));
38
+ len = strlen(extra.token);
39
+ if (len <= MAX_TOKEN_LEN)
40
+ rb_ary_push(ary, rb_str_new(extra.token, len));
36
41
  free(extra.token);
37
42
  break;
38
43
  case SHEBANG_TOKEN:
39
- s = rb_str_new2("SHEBANG#!");
40
- rb_str_cat2(s, extra.token);
41
- rb_ary_push(ary, s);
44
+ len = strlen(extra.token);
45
+ if (len <= MAX_TOKEN_LEN) {
46
+ s = rb_str_new2("SHEBANG#!");
47
+ rb_str_cat(s, extra.token, len);
48
+ rb_ary_push(ary, s);
49
+ }
42
50
  free(extra.token);
43
51
  break;
44
52
  case SGML_TOKEN:
45
- s = rb_str_new2(extra.token);
46
- rb_str_cat2(s, ">");
47
- rb_ary_push(ary, s);
53
+ len = strlen(extra.token);
54
+ if (len <= MAX_TOKEN_LEN) {
55
+ s = rb_str_new(extra.token, len);
56
+ rb_str_cat2(s, ">");
57
+ rb_ary_push(ary, s);
58
+ }
48
59
  free(extra.token);
49
60
  break;
50
61
  }
@@ -1,41 +1,5 @@
1
1
  {
2
- "fileTypes": [
3
-
4
- ],
5
2
  "scopeName": "annotation.liquidhaskell.haskell",
6
- "macros": {
7
- "identStartCharClass": "[\\p{Ll}_\\p{Lu}\\p{Lt}]",
8
- "identContCharClass": "[\\p{Ll}_\\p{Lu}\\p{Lt}']",
9
- "identCharClass": "[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']",
10
- "functionNameOne": "[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
11
- "classNameOne": "[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
12
- "functionName": "(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
13
- "className": "[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*",
14
- "operatorChar": "(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))",
15
- "operator": "(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+",
16
- "operatorFun": "(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))",
17
- "basicChar": "[\\ -\\[\\]-~]",
18
- "escapeChar": "\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])",
19
- "octalChar": "(?:\\\\o[0-7]+)",
20
- "hexChar": "(?:\\\\x[0-9A-Fa-f]+)",
21
- "controlChar": "(?:\\\\\\^[A-Z@\\[\\]\\\\^_])",
22
- "character": "(?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))",
23
- "functionList": "((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*)",
24
- "functionTypeDeclaration": "(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))",
25
- "doubleColonOperator": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))",
26
- "ctorTypeDeclaration": "(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))",
27
- "ctorArgs": "(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+)",
28
- "ctor": "(?:(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s*)(?:((?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+))(?:(?:\\s+)(?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+)))*)?))",
29
- "typeDeclOne": "(?:(?!(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))",
30
- "typeDecl": "(?>(?:(?:(?!(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)))(?:\\s+(?:(?!(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)))*)",
31
- "indentChar": "[ \\t]",
32
- "indentBlockStart": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)",
33
- "indentBlockEnd": "(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
34
- "maybeBirdTrack": "(?:\\G(?:\\s*\\w+\\s)?|^)",
35
- "lb": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))",
36
- "rb": "(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
37
- "b": "(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))|(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))"
38
- },
39
3
  "patterns": [
40
4
  {
41
5
  "include": "#class_decl"
@@ -54,16 +18,46 @@
54
18
  },
55
19
  {
56
20
  "include": "#lazy_function_type_signature"
21
+ },
22
+ {
23
+ "include": "#haskell_expr"
24
+ },
25
+ {
26
+ "include": "#comments"
57
27
  }
58
28
  ],
59
29
  "repository": {
30
+ "assignment_op": {
31
+ "patterns": [
32
+ {
33
+ "match": "=",
34
+ "captures": {
35
+ "0": {
36
+ "name": "keyword.operator.assignment.haskell"
37
+ }
38
+ }
39
+ }
40
+ ]
41
+ },
42
+ "attribute_name": {
43
+ "patterns": [
44
+ {
45
+ "name": "entity.other.attribute-name.haskell",
46
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
47
+ }
48
+ ]
49
+ },
60
50
  "block_comment": {
61
51
  "patterns": [
62
52
  {
63
53
  "name": "comment.block.haddock.haskell",
64
54
  "begin": "\\{-\\s*[|^]",
65
55
  "end": "-\\}",
66
- "applyEndPatternLast": 1,
56
+ "patterns": [
57
+ {
58
+ "include": "#block_comment"
59
+ }
60
+ ],
67
61
  "beginCaptures": {
68
62
  "0": {
69
63
  "name": "punctuation.definition.comment.haddock.haskell"
@@ -74,17 +68,17 @@
74
68
  "name": "punctuation.definition.comment.haddock.haskell"
75
69
  }
76
70
  },
77
- "patterns": [
78
- {
79
- "include": "#block_comment"
80
- }
81
- ]
71
+ "applyEndPatternLast": true
82
72
  },
83
73
  {
84
74
  "name": "comment.block.haskell",
85
75
  "begin": "\\{-",
86
76
  "end": "-\\}",
87
- "applyEndPatternLast": 1,
77
+ "patterns": [
78
+ {
79
+ "include": "#block_comment"
80
+ }
81
+ ],
88
82
  "beginCaptures": {
89
83
  "0": {
90
84
  "name": "punctuation.definition.comment.block.start.haskell"
@@ -95,14 +89,77 @@
95
89
  "name": "punctuation.definition.comment.block.end.haskell"
96
90
  }
97
91
  },
92
+ "applyEndPatternLast": true
93
+ }
94
+ ]
95
+ },
96
+ "c_preprocessor": {
97
+ "patterns": [
98
+ {
99
+ "name": "meta.preprocessor.c.haskell",
100
+ "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)(?=#)",
101
+ "end": "(?\u003c!\\\\)(?=$)",
98
102
  "patterns": [
99
103
  {
100
- "include": "#block_comment"
104
+ "name": "keyword.control.c.haskell",
105
+ "match": "^#\\S+"
101
106
  }
102
107
  ]
103
108
  }
104
109
  ]
105
110
  },
111
+ "characters": {
112
+ "patterns": [
113
+ {
114
+ "name": "constant.character.escape.haskell",
115
+ "match": "\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\\u0026])"
116
+ },
117
+ {
118
+ "name": "constant.character.escape.octal.haskell",
119
+ "match": "(?:\\\\o[0-7]+)"
120
+ },
121
+ {
122
+ "name": "constant.character.escape.hexadecimal.haskell",
123
+ "match": "(?:\\\\x[0-9A-Fa-f]+)"
124
+ },
125
+ {
126
+ "name": "constant.character.escape.control.haskell",
127
+ "match": "(?:\\\\\\^[A-Z@\\[\\]\\\\^_])"
128
+ }
129
+ ]
130
+ },
131
+ "class_decl": {
132
+ "patterns": [
133
+ {
134
+ "name": "meta.declaration.class.haskell",
135
+ "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(class)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
136
+ "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
137
+ "patterns": [
138
+ {
139
+ "include": "#type_signature"
140
+ }
141
+ ],
142
+ "beginCaptures": {
143
+ "2": {
144
+ "name": "keyword.other.class.haskell"
145
+ }
146
+ },
147
+ "endCaptures": {
148
+ "1": {
149
+ "name": "keyword.other.haskell"
150
+ }
151
+ }
152
+ }
153
+ ]
154
+ },
155
+ "comma": {
156
+ "patterns": [
157
+ {
158
+ "name": "punctuation.separator.comma.haskell",
159
+ "match": ","
160
+ }
161
+ ]
162
+ },
106
163
  "comments": {
107
164
  "patterns": [
108
165
  {
@@ -125,7 +182,7 @@
125
182
  ]
126
183
  },
127
184
  {
128
- "begin": "((?:\\G(?:\\s*\\w+\\s)?|^)[ \\t]+)?(?=--+(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))",
185
+ "begin": "((?:\\G(?:\\s*\\w+\\s)?|^)[ \\t]+)?(?=--+(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))",
129
186
  "end": "(?!\\G)",
130
187
  "patterns": [
131
188
  {
@@ -145,169 +202,246 @@
145
202
  }
146
203
  ]
147
204
  },
148
- "characters": {
205
+ "common_toplevel": {
149
206
  "patterns": [
150
207
  {
151
- "match": "\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])",
152
- "name": "constant.character.escape.haskell"
208
+ "include": "#class_decl"
209
+ },
210
+ {
211
+ "include": "#instance_decl"
212
+ },
213
+ {
214
+ "include": "#deriving_instance_decl"
215
+ },
216
+ {
217
+ "include": "#foreign_import"
218
+ },
219
+ {
220
+ "include": "#regular_import"
153
221
  },
154
222
  {
155
- "match": "(?:\\\\o[0-7]+)",
156
- "name": "constant.character.escape.octal.haskell"
223
+ "include": "#data_decl"
157
224
  },
158
225
  {
159
- "match": "(?:\\\\x[0-9A-Fa-f]+)",
160
- "name": "constant.character.escape.hexadecimal.haskell"
226
+ "include": "#type_alias"
161
227
  },
162
228
  {
163
- "match": "(?:\\\\\\^[A-Z@\\[\\]\\\\^_])",
164
- "name": "constant.character.escape.control.haskell"
229
+ "include": "#c_preprocessor"
165
230
  }
166
231
  ]
167
232
  },
168
- "infix_op": {
233
+ "ctor_type_declaration": {
169
234
  "patterns": [
170
235
  {
171
- "name": "entity.name.function.infix.haskell",
172
- "match": "(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))"
236
+ "name": "meta.ctor.type-declaration.haskell",
237
+ "contentName": "meta.type-signature.haskell",
238
+ "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))))",
239
+ "end": "(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
240
+ "patterns": [
241
+ {
242
+ "include": "#type_signature"
243
+ }
244
+ ],
245
+ "beginCaptures": {
246
+ "2": {
247
+ "patterns": [
248
+ {
249
+ "include": "#type_ctor"
250
+ },
251
+ {
252
+ "include": "#infix_op"
253
+ }
254
+ ]
255
+ },
256
+ "3": {
257
+ "name": "keyword.other.double-colon.haskell"
258
+ }
259
+ }
173
260
  }
174
261
  ]
175
262
  },
176
- "module_exports": {
263
+ "data_decl": {
177
264
  "patterns": [
178
265
  {
179
- "name": "meta.declaration.exports.haskell",
180
- "begin": "\\(",
181
- "end": "\\)",
182
- "applyEndPatternLast": 1,
266
+ "name": "meta.declaration.type.data.haskell",
267
+ "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(data|newtype)\\s+((?:(?!=|where).)*)",
268
+ "end": "(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
183
269
  "patterns": [
184
270
  {
185
271
  "include": "#comments"
186
272
  },
187
273
  {
188
- "include": "#function_name"
274
+ "include": "#where"
189
275
  },
190
276
  {
191
- "include": "#type_name"
277
+ "include": "#deriving"
192
278
  },
193
279
  {
194
- "include": "#comma"
280
+ "include": "#assignment_op"
195
281
  },
196
282
  {
197
- "name": "meta.other.constructor-list.haskell",
198
- "begin": "(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))\\s*\\(",
199
- "end": "\\)",
200
- "patterns": [
201
- {
202
- "include": "#type_ctor"
283
+ "match": "(?:(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s*)(?:((?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|-\u003e|=\u003e)+\\s*)+))(?:(?:\\s+)(?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|-\u003e|=\u003e)+\\s*)+)))*)?))",
284
+ "captures": {
285
+ "1": {
286
+ "patterns": [
287
+ {
288
+ "include": "#type_ctor"
289
+ }
290
+ ]
203
291
  },
292
+ "2": {
293
+ "name": "meta.type-signature.haskell",
294
+ "patterns": [
295
+ {
296
+ "include": "#type_signature"
297
+ }
298
+ ]
299
+ }
300
+ }
301
+ },
302
+ {
303
+ "match": "\\|",
304
+ "captures": {
305
+ "0": {
306
+ "name": "punctuation.separator.pipe.haskell"
307
+ }
308
+ }
309
+ },
310
+ {
311
+ "name": "meta.declaration.type.data.record.block.haskell",
312
+ "begin": "\\{",
313
+ "end": "\\}",
314
+ "patterns": [
204
315
  {
205
- "include": "#attribute_name"
316
+ "include": "#comments"
206
317
  },
207
318
  {
208
319
  "include": "#comma"
209
320
  },
210
321
  {
211
- "match": "\\.\\.",
212
- "name": "keyword.operator.wildcard.haskell"
322
+ "include": "#record_field_declaration"
213
323
  }
214
- ]
324
+ ],
325
+ "beginCaptures": {
326
+ "0": {
327
+ "name": "keyword.operator.record.begin.haskell"
328
+ }
329
+ },
330
+ "endCaptures": {
331
+ "0": {
332
+ "name": "keyword.operator.record.end.haskell"
333
+ }
334
+ }
215
335
  },
216
336
  {
217
- "include": "#infix_op"
337
+ "include": "#ctor_type_declaration"
218
338
  }
219
- ]
339
+ ],
340
+ "beginCaptures": {
341
+ "2": {
342
+ "name": "keyword.other.data.haskell"
343
+ },
344
+ "3": {
345
+ "name": "meta.type-signature.haskell",
346
+ "patterns": [
347
+ {
348
+ "include": "#family_and_instance"
349
+ },
350
+ {
351
+ "include": "#type_signature"
352
+ }
353
+ ]
354
+ }
355
+ }
220
356
  }
221
357
  ]
222
358
  },
223
- "module_name": {
359
+ "deriving": {
224
360
  "patterns": [
225
361
  {
226
- "name": "support.other.module.haskell",
227
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
362
+ "include": "#deriving_list"
363
+ },
364
+ {
365
+ "include": "#deriving_simple"
366
+ },
367
+ {
368
+ "include": "#deriving_keyword"
228
369
  }
229
370
  ]
230
371
  },
231
- "module_name_prefix": {
372
+ "deriving_instance_decl": {
232
373
  "patterns": [
233
374
  {
234
- "name": "support.other.module.haskell",
235
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\."
375
+ "name": "meta.declaration.instance.deriving.haskell",
376
+ "contentName": "meta.type-signature.haskell",
377
+ "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(deriving\\s+instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
378
+ "end": "(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
379
+ "patterns": [
380
+ {
381
+ "include": "#pragma"
382
+ },
383
+ {
384
+ "include": "#type_signature"
385
+ }
386
+ ],
387
+ "beginCaptures": {
388
+ "2": {
389
+ "name": "keyword.other.haskell"
390
+ }
391
+ }
236
392
  }
237
393
  ]
238
394
  },
239
- "pragma": {
395
+ "deriving_keyword": {
240
396
  "patterns": [
241
397
  {
242
- "name": "meta.preprocessor.haskell",
243
- "begin": "\\{-#",
244
- "end": "#-\\}",
245
- "patterns": [
246
- {
247
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))((?i:NOTINLINE CONSTRUCTORLIKE|NOINLINE CONSTRUCTORLIKE|INLINE CONSTRUCTORLIKE|SPECIALISE NOTINLINE|SPECIALIZE NOTINLINE|SPECIALISE NOINLINE|SPECIALIZE NOINLINE|NOTINLINE CONLIKE|SPECIALISE INLINE|SPECIALIZE INLINE|NOINLINE CONLIKE|VECTORISE SCALAR|VECTORIZE SCALAR|OPTIONS_HADDOCK|INLINE CONLIKE|OPTIONS_DERIVE|OPTIONS_CATCH|OPTIONS_NHC98|OPTIONS_HUGS|OVERLAPPABLE|NOVECTORISE|NOVECTORIZE|OPTIONS_GHC|OPTIONS_JHC|OPTIONS_YHC|OVERLAPPING|DEPRECATED|INCOHERENT|INLINEABLE|SPECIALISE|SPECIALIZE|GENERATED|INLINABLE|NOTINLINE|VECTORISE|VECTORIZE|CONTRACT|LANGUAGE|NOINLINE|NOUNPACK|OVERLAPS|INCLUDE|MINIMAL|OPTIONS|WARNING|CFILES|INLINE|SOURCE|UNPACK|CTYPE|RULES|CORE|LINE|ANN|SCC))(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
248
- "name": "keyword.other.preprocessor.haskell"
398
+ "name": "meta.deriving.haskell",
399
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
400
+ "captures": {
401
+ "1": {
402
+ "name": "keyword.other.haskell"
249
403
  }
250
- ]
404
+ }
251
405
  }
252
406
  ]
253
407
  },
254
- "function_type_declaration": {
408
+ "deriving_list": {
255
409
  "patterns": [
256
410
  {
257
- "name": "meta.function.type-declaration.haskell",
258
- "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))",
259
- "end": "(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
260
- "contentName": "meta.type-signature.haskell",
261
- "beginCaptures": {
262
- "2": {
263
- "patterns": [
264
- {
265
- "include": "#function_name"
266
- },
267
- {
268
- "include": "#infix_op"
269
- }
270
- ]
271
- },
272
- "3": {
273
- "name": "keyword.other.double-colon.haskell"
274
- }
275
- },
411
+ "name": "meta.deriving.haskell",
412
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)\\s*\\(",
413
+ "end": "\\)",
276
414
  "patterns": [
277
415
  {
278
- "include": "#type_signature"
416
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
417
+ "captures": {
418
+ "1": {
419
+ "name": "entity.other.inherited-class.haskell"
420
+ }
421
+ }
279
422
  }
280
- ]
423
+ ],
424
+ "beginCaptures": {
425
+ "1": {
426
+ "name": "keyword.other.haskell"
427
+ }
428
+ }
281
429
  }
282
430
  ]
283
431
  },
284
- "lazy_function_type_signature": {
432
+ "deriving_simple": {
285
433
  "patterns": [
286
434
  {
287
- "name": "meta.function.type-declaration.haskell",
288
- "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*))\\s*$",
289
- "end": "(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
290
- "contentName": "meta.type-signature.haskell",
291
- "beginCaptures": {
292
- "2": {
293
- "patterns": [
294
- {
295
- "include": "#function_name"
296
- },
297
- {
298
- "include": "#infix_op"
299
- }
300
- ]
301
- }
302
- },
303
- "patterns": [
304
- {
305
- "include": "#double_colon_operator"
435
+ "name": "meta.deriving.haskell",
436
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
437
+ "captures": {
438
+ "1": {
439
+ "name": "keyword.other.haskell"
306
440
  },
307
- {
308
- "include": "#type_signature"
441
+ "2": {
442
+ "name": "entity.other.inherited-class.haskell"
309
443
  }
310
- ]
444
+ }
311
445
  }
312
446
  ]
313
447
  },
@@ -315,118 +449,223 @@
315
449
  "patterns": [
316
450
  {
317
451
  "name": "keyword.other.double-colon.haskell",
318
- "match": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))"
452
+ "match": "(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))"
319
453
  }
320
454
  ]
321
455
  },
322
- "ctor_type_declaration": {
456
+ "empty_list": {
323
457
  "patterns": [
324
458
  {
325
- "name": "meta.ctor.type-declaration.haskell",
326
- "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))",
459
+ "name": "constant.language.empty-list.haskell",
460
+ "match": "\\[\\]"
461
+ }
462
+ ]
463
+ },
464
+ "family_and_instance": {
465
+ "patterns": [
466
+ {
467
+ "name": "keyword.other.haskell",
468
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(family|instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
469
+ }
470
+ ]
471
+ },
472
+ "foreign_import": {
473
+ "patterns": [
474
+ {
475
+ "name": "meta.foreign.haskell",
476
+ "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(foreign)\\s+(import|export)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
327
477
  "end": "(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
328
- "contentName": "meta.type-signature.haskell",
478
+ "patterns": [
479
+ {
480
+ "match": "(?:un)?safe",
481
+ "captures": {
482
+ "0": {
483
+ "name": "keyword.other.haskell"
484
+ }
485
+ }
486
+ },
487
+ {
488
+ "include": "#function_type_declaration"
489
+ },
490
+ {
491
+ "include": "#haskell_expr"
492
+ },
493
+ {
494
+ "include": "#comments"
495
+ }
496
+ ],
329
497
  "beginCaptures": {
330
498
  "2": {
331
- "patterns": [
332
- {
333
- "include": "#type_ctor"
334
- },
335
- {
336
- "include": "#infix_op"
337
- }
338
- ]
499
+ "name": "keyword.other.haskell"
339
500
  },
340
501
  "3": {
341
- "name": "keyword.other.double-colon.haskell"
342
- }
343
- },
344
- "patterns": [
345
- {
346
- "include": "#type_signature"
502
+ "name": "keyword.other.haskell"
347
503
  }
348
- ]
504
+ }
349
505
  }
350
506
  ]
351
507
  },
352
- "record_field_declaration": {
508
+ "function_name": {
353
509
  "patterns": [
354
510
  {
355
- "name": "meta.record-field.type-declaration.haskell",
356
- "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))",
357
- "end": "(?=(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))|})",
511
+ "name": "entity.name.function.haskell",
512
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
513
+ }
514
+ ]
515
+ },
516
+ "function_type_declaration": {
517
+ "patterns": [
518
+ {
519
+ "name": "meta.function.type-declaration.haskell",
358
520
  "contentName": "meta.type-signature.haskell",
521
+ "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))))",
522
+ "end": "(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))|(?=(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))",
523
+ "patterns": [
524
+ {
525
+ "include": "#type_signature"
526
+ }
527
+ ],
359
528
  "beginCaptures": {
360
- "1": {
529
+ "2": {
361
530
  "patterns": [
362
531
  {
363
- "include": "#attribute_name"
532
+ "include": "#function_name"
364
533
  },
365
534
  {
366
535
  "include": "#infix_op"
367
536
  }
368
537
  ]
369
538
  },
370
- "2": {
539
+ "3": {
371
540
  "name": "keyword.other.double-colon.haskell"
372
541
  }
373
- },
374
- "patterns": [
375
- {
376
- "include": "#type_signature"
377
- }
378
- ]
542
+ }
379
543
  }
380
544
  ]
381
545
  },
382
- "type_signature": {
546
+ "function_type_declaration_with_scoped_type": {
383
547
  "patterns": [
384
548
  {
385
- "include": "#liquid_id"
549
+ "include": "#scoped_type_override"
386
550
  },
387
551
  {
388
- "include": "#liquid_type"
552
+ "include": "#function_type_declaration"
389
553
  },
390
554
  {
391
- "include": "#type_signature_hs"
555
+ "include": "#multiline_type_declaration"
392
556
  }
393
557
  ]
394
558
  },
395
- "unit": {
559
+ "haskell_expr": {
396
560
  "patterns": [
397
561
  {
398
- "name": "constant.language.unit.haskell",
399
- "match": "\\(\\)"
562
+ "include": "#infix_function"
563
+ },
564
+ {
565
+ "include": "#unit"
566
+ },
567
+ {
568
+ "include": "#empty_list"
569
+ },
570
+ {
571
+ "include": "#quasi_quotes"
572
+ },
573
+ {
574
+ "include": "#keywords"
575
+ },
576
+ {
577
+ "include": "#pragma"
578
+ },
579
+ {
580
+ "include": "#string"
581
+ },
582
+ {
583
+ "include": "#newline_escape"
584
+ },
585
+ {
586
+ "include": "#quoted_character"
587
+ },
588
+ {
589
+ "include": "#comments"
590
+ },
591
+ {
592
+ "include": "#infix_op"
593
+ },
594
+ {
595
+ "include": "#comma"
596
+ },
597
+ {
598
+ "include": "#lit_num"
599
+ },
600
+ {
601
+ "include": "#scoped_type"
602
+ },
603
+ {
604
+ "include": "#operator"
605
+ },
606
+ {
607
+ "include": "#identifier"
608
+ },
609
+ {
610
+ "include": "#type_ctor"
400
611
  }
401
612
  ]
402
613
  },
403
- "empty_list": {
614
+ "haskell_source": {
404
615
  "patterns": [
405
616
  {
406
- "name": "constant.language.empty-list.haskell",
407
- "match": "\\[\\]"
617
+ "include": "#shebang"
618
+ },
619
+ {
620
+ "include": "#module_decl"
621
+ },
622
+ {
623
+ "include": "#haskell_toplevel"
408
624
  }
409
625
  ]
410
626
  },
411
- "deriving": {
627
+ "haskell_toplevel": {
412
628
  "patterns": [
413
629
  {
414
- "include": "#deriving_list"
630
+ "include": "#liquidhaskell_annotation"
415
631
  },
416
632
  {
417
- "include": "#deriving_simple"
633
+ "include": "#common_toplevel"
418
634
  },
419
635
  {
420
- "include": "#deriving_keyword"
636
+ "include": "#function_type_declaration_with_scoped_type"
637
+ },
638
+ {
639
+ "include": "#haskell_expr"
421
640
  }
422
641
  ]
423
642
  },
424
- "deriving_keyword": {
643
+ "hsig_decl": {
425
644
  "patterns": [
426
645
  {
427
- "name": "meta.deriving.haskell",
428
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
429
- "captures": {
646
+ "name": "meta.declaration.module.haskell",
647
+ "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(signature)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
648
+ "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
649
+ "patterns": [
650
+ {
651
+ "include": "#comments"
652
+ },
653
+ {
654
+ "include": "#module_name"
655
+ },
656
+ {
657
+ "include": "#module_exports"
658
+ },
659
+ {
660
+ "include": "#invalid"
661
+ }
662
+ ],
663
+ "beginCaptures": {
664
+ "2": {
665
+ "name": "keyword.other.haskell"
666
+ }
667
+ },
668
+ "endCaptures": {
430
669
  "1": {
431
670
  "name": "keyword.other.haskell"
432
671
  }
@@ -434,41 +673,48 @@
434
673
  }
435
674
  ]
436
675
  },
437
- "deriving_list": {
676
+ "hsig_source": {
438
677
  "patterns": [
439
678
  {
440
- "name": "meta.deriving.haskell",
441
- "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)\\s*\\(",
442
- "end": "\\)",
443
- "beginCaptures": {
444
- "1": {
445
- "name": "keyword.other.haskell"
446
- }
447
- },
448
- "patterns": [
449
- {
450
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
451
- "captures": {
452
- "1": {
453
- "name": "entity.other.inherited-class.haskell"
454
- }
455
- }
456
- }
457
- ]
679
+ "include": "#hsig_decl"
680
+ },
681
+ {
682
+ "include": "#hsig_toplevel"
458
683
  }
459
684
  ]
460
685
  },
461
- "deriving_simple": {
686
+ "hsig_toplevel": {
462
687
  "patterns": [
463
688
  {
464
- "name": "meta.deriving.haskell",
465
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
689
+ "include": "#common_toplevel"
690
+ },
691
+ {
692
+ "include": "#function_type_declaration"
693
+ },
694
+ {
695
+ "include": "#lazy_function_type_signature"
696
+ },
697
+ {
698
+ "include": "#comments"
699
+ }
700
+ ]
701
+ },
702
+ "identifier": {
703
+ "patterns": [
704
+ {
705
+ "name": "identifier.haskell",
706
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
466
707
  "captures": {
467
- "1": {
468
- "name": "keyword.other.haskell"
469
- },
470
- "2": {
471
- "name": "entity.other.inherited-class.haskell"
708
+ "0": {
709
+ "patterns": [
710
+ {
711
+ "include": "#module_name_prefix"
712
+ },
713
+ {
714
+ "name": "support.function.prelude.$1.haskell",
715
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(abs|acos|acosh|all|and|any|appendFile|asTypeOf|asin|asinh|atan|atan2|atanh|break|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|errorWithoutStackTrace|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldMap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|mappend|max|maxBound|maximum|maybe|mconcat|mempty|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|pure|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequenceA|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|traverse|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
716
+ }
717
+ ]
472
718
  }
473
719
  }
474
720
  }
@@ -490,72 +736,42 @@
490
736
  }
491
737
  ]
492
738
  },
493
- "quasi_quotes": {
739
+ "infix_op": {
494
740
  "patterns": [
495
741
  {
496
- "begin": "(\\[)((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(\\|)",
497
- "end": "(\\|)(\\])",
498
- "beginCaptures": {
499
- "1": {
500
- "name": "punctuation.definition.quasiquotes.begin.haskell"
501
- },
502
- "2": {
503
- "name": "entity.name.tag.haskell",
742
+ "name": "entity.name.function.operator.haskell",
743
+ "match": "(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))",
744
+ "captures": {
745
+ "0": {
504
746
  "patterns": [
505
747
  {
506
748
  "include": "#module_name_prefix"
749
+ },
750
+ {
751
+ "name": "support.operator.prelude.haskell",
752
+ "match": "^\\((\\!\\!|\\$\\!|\\$|\\\u0026\\\u0026|\\*|\\*\\*|\\*\\\u003e|\\+|\\+\\+|\\-|\\.|\\/|\\/\\=|\\\u003c\\$|\\\u003c\\$\\\u003e|\\\u003c|\\\u003c\\*|\\\u003c\\*\\\u003e|\\\u003c\\=|\\=\\\u003c\\\u003c|\\=\\=|\\\u003e|\\\u003e\\=|\\\u003e\\\u003e|\\\u003e\\\u003e\\=|\\^|\\^\\^|\\|\\|)\\)$"
507
753
  }
508
754
  ]
509
755
  }
510
- },
511
- "endCaptures": {
512
- "2": {
513
- "name": "punctuation.definition.quasiquotes.end.haskell"
514
- }
515
- },
516
- "contentName": "string.quoted.quasiquotes.haskell"
756
+ }
517
757
  }
518
758
  ]
519
759
  },
520
- "module_decl": {
760
+ "instance_decl": {
521
761
  "patterns": [
522
762
  {
523
- "name": "meta.declaration.module.haskell",
524
- "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(module)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
525
- "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
526
- "beginCaptures": {
527
- "2": {
528
- "name": "keyword.other.haskell"
529
- }
530
- },
531
- "endCaptures": {
532
- "1": {
533
- "name": "keyword.other.haskell"
534
- }
535
- },
763
+ "name": "meta.declaration.instance.haskell",
764
+ "contentName": "meta.type-signature.haskell",
765
+ "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
766
+ "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
536
767
  "patterns": [
537
768
  {
538
- "include": "#comments"
539
- },
540
- {
541
- "include": "#module_name"
542
- },
543
- {
544
- "include": "#module_exports"
769
+ "include": "#pragma"
545
770
  },
546
771
  {
547
- "include": "#invalid"
772
+ "include": "#type_signature"
548
773
  }
549
- ]
550
- }
551
- ]
552
- },
553
- "hsig_decl": {
554
- "patterns": [
555
- {
556
- "name": "meta.declaration.module.haskell",
557
- "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(signature)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
558
- "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
774
+ ],
559
775
  "beginCaptures": {
560
776
  "2": {
561
777
  "name": "keyword.other.haskell"
@@ -565,370 +781,290 @@
565
781
  "1": {
566
782
  "name": "keyword.other.haskell"
567
783
  }
568
- },
569
- "patterns": [
570
- {
571
- "include": "#comments"
572
- },
573
- {
574
- "include": "#module_name"
575
- },
576
- {
577
- "include": "#module_exports"
578
- },
579
- {
580
- "include": "#invalid"
581
- }
582
- ]
784
+ }
583
785
  }
584
786
  ]
585
787
  },
586
- "class_decl": {
788
+ "invalid": {
587
789
  "patterns": [
588
790
  {
589
- "name": "meta.declaration.class.haskell",
590
- "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(class)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
591
- "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
592
- "beginCaptures": {
593
- "2": {
594
- "name": "keyword.other.class.haskell"
595
- }
596
- },
597
- "endCaptures": {
598
- "1": {
599
- "name": "keyword.other.haskell"
600
- }
601
- },
602
- "patterns": [
603
- {
604
- "include": "#type_signature"
605
- }
606
- ]
791
+ "name": "invalid.illegal.character-not-allowed-here.haskell",
792
+ "match": "\\S+"
607
793
  }
608
794
  ]
609
795
  },
610
- "instance_decl": {
796
+ "keywords": {
611
797
  "patterns": [
612
798
  {
613
- "name": "meta.declaration.instance.haskell",
614
- "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(instance)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
615
- "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
616
- "contentName": "meta.type-signature.haskell",
617
- "beginCaptures": {
618
- "2": {
619
- "name": "keyword.other.haskell"
620
- }
621
- },
622
- "endCaptures": {
623
- "1": {
624
- "name": "keyword.other.haskell"
625
- }
626
- },
627
- "patterns": [
628
- {
629
- "include": "#pragma"
630
- },
631
- {
632
- "include": "#type_signature"
633
- }
634
- ]
799
+ "name": "keyword.other.$1.haskell",
800
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving|where|data|type|newtype)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
801
+ },
802
+ {
803
+ "name": "keyword.operator.$1.haskell",
804
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(infix[lr]?)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
805
+ },
806
+ {
807
+ "name": "keyword.control.$1.haskell",
808
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(do|if|then|else|case|of|let|in|default|mdo|rec|proc)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
635
809
  }
636
810
  ]
637
811
  },
638
- "deriving_instance_decl": {
812
+ "lazy_function_type_signature": {
639
813
  "patterns": [
640
814
  {
641
- "name": "meta.declaration.instance.deriving.haskell",
642
- "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(deriving\\s+instance)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
643
- "end": "(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
815
+ "name": "meta.function.type-declaration.haskell",
644
816
  "contentName": "meta.type-signature.haskell",
645
- "beginCaptures": {
646
- "2": {
647
- "name": "keyword.other.haskell"
648
- }
649
- },
817
+ "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*))\\s*$",
818
+ "end": "(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
650
819
  "patterns": [
651
820
  {
652
- "include": "#pragma"
821
+ "include": "#double_colon_operator"
653
822
  },
654
823
  {
655
824
  "include": "#type_signature"
656
825
  }
657
- ]
826
+ ],
827
+ "beginCaptures": {
828
+ "2": {
829
+ "patterns": [
830
+ {
831
+ "include": "#function_name"
832
+ },
833
+ {
834
+ "include": "#infix_op"
835
+ }
836
+ ]
837
+ }
838
+ }
658
839
  }
659
840
  ]
660
841
  },
661
- "foreign_import": {
842
+ "liquid_id": {
662
843
  "patterns": [
663
844
  {
664
- "name": "meta.foreign.haskell",
665
- "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(foreign)\\s+(import|export)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
666
- "end": "(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
667
- "beginCaptures": {
668
- "2": {
669
- "name": "keyword.other.haskell"
670
- },
671
- "3": {
672
- "name": "keyword.other.haskell"
673
- }
674
- },
675
- "patterns": [
676
- {
677
- "match": "(?:un)?safe",
678
- "captures": {
679
- "0": {
680
- "name": "keyword.other.haskell"
845
+ "match": "(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\s*:",
846
+ "captures": {
847
+ "0": {
848
+ "patterns": [
849
+ {
850
+ "include": "#identifier"
681
851
  }
682
- }
683
- },
684
- {
685
- "include": "#function_type_declaration"
686
- },
687
- {
688
- "include": "#haskell_expr"
689
- },
690
- {
691
- "include": "#comments"
852
+ ]
692
853
  }
693
- ]
854
+ }
694
855
  }
695
856
  ]
696
857
  },
697
- "regular_import": {
858
+ "liquid_type": {
698
859
  "patterns": [
699
860
  {
700
- "name": "meta.import.haskell",
701
- "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(import)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
702
- "end": "(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
703
- "beginCaptures": {
704
- "2": {
705
- "name": "keyword.other.haskell"
706
- }
707
- },
861
+ "name": "liquid.type.haskell",
862
+ "begin": "\\{",
863
+ "end": "\\}",
708
864
  "patterns": [
709
865
  {
710
- "include": "#module_name"
711
- },
712
- {
713
- "include": "#module_exports"
714
- },
715
- {
716
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(qualified|as|hiding)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
866
+ "match": "\\G(.*?)\\|",
717
867
  "captures": {
718
868
  "1": {
719
- "name": "keyword.other.haskell"
869
+ "patterns": [
870
+ {
871
+ "include": "#type_signature"
872
+ }
873
+ ]
720
874
  }
721
875
  }
722
876
  },
723
877
  {
724
- "include": "#comments"
878
+ "include": "#haskell_expr"
725
879
  }
726
880
  ]
727
881
  }
728
882
  ]
729
883
  },
730
- "data_decl": {
884
+ "liquidhaskell_annotation": {
731
885
  "patterns": [
732
886
  {
733
- "name": "meta.declaration.type.data.haskell",
734
- "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(data|newtype)\\s+((?:(?!=|where).)*)",
735
- "end": "(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
736
- "beginCaptures": {
737
- "2": {
738
- "name": "keyword.other.data.haskell"
739
- },
740
- "3": {
741
- "name": "meta.type-signature.haskell",
742
- "patterns": [
743
- {
744
- "include": "#family_and_instance"
745
- },
746
- {
747
- "include": "#type_signature"
748
- }
749
- ]
887
+ "name": "block.liquidhaskell.haskell",
888
+ "contentName": "block.liquidhaskell.annotation.haskell",
889
+ "begin": "\\{-@(?!#)",
890
+ "end": "@-\\}",
891
+ "patterns": [
892
+ {
893
+ "include": "annotation.liquidhaskell.haskell"
750
894
  }
751
- },
895
+ ]
896
+ }
897
+ ]
898
+ },
899
+ "lit_num": {
900
+ "patterns": [
901
+ {
902
+ "name": "constant.numeric.hexfloat.haskell",
903
+ "match": "0[xX][0-9a-fA-F_]*(?:\\.[0-9a-fA-F_]+(?:[pP][+-]?[0-9_]+)?|[pP][+-]?[0-9_]+)"
904
+ },
905
+ {
906
+ "name": "constant.numeric.hexadecimal.haskell",
907
+ "match": "0[xX][_0-9a-fA-F]+"
908
+ },
909
+ {
910
+ "name": "constant.numeric.octal.haskell",
911
+ "match": "0[oO][_0-7]+"
912
+ },
913
+ {
914
+ "name": "constant.numeric.binary.haskell",
915
+ "match": "0[bB][_01]+"
916
+ },
917
+ {
918
+ "name": "constant.numeric.float.haskell",
919
+ "match": "[0-9][0-9_]*(?:\\.[0-9_]+(?:[eE][+-]?[0-9_]+)?|[eE][+-]?[0-9_]+)"
920
+ },
921
+ {
922
+ "name": "constant.numeric.decimal.haskell",
923
+ "match": "[0-9][_0-9]*"
924
+ }
925
+ ]
926
+ },
927
+ "module_decl": {
928
+ "patterns": [
929
+ {
930
+ "name": "meta.declaration.module.haskell",
931
+ "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(module)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
932
+ "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
752
933
  "patterns": [
753
934
  {
754
935
  "include": "#comments"
755
936
  },
756
937
  {
757
- "include": "#where"
938
+ "include": "#module_name"
758
939
  },
759
940
  {
760
- "include": "#deriving"
941
+ "include": "#module_exports"
761
942
  },
762
943
  {
763
- "include": "#assignment_op"
764
- },
944
+ "include": "#invalid"
945
+ }
946
+ ],
947
+ "beginCaptures": {
948
+ "2": {
949
+ "name": "keyword.other.haskell"
950
+ }
951
+ },
952
+ "endCaptures": {
953
+ "1": {
954
+ "name": "keyword.other.haskell"
955
+ }
956
+ }
957
+ }
958
+ ]
959
+ },
960
+ "module_exports": {
961
+ "patterns": [
962
+ {
963
+ "name": "meta.declaration.exports.haskell",
964
+ "begin": "\\(",
965
+ "end": "\\)",
966
+ "patterns": [
765
967
  {
766
- "match": "(?:(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s*)(?:((?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+))(?:(?:\\s+)(?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+)))*)?))",
767
- "captures": {
768
- "1": {
769
- "patterns": [
770
- {
771
- "include": "#type_ctor"
772
- }
773
- ]
774
- },
775
- "2": {
776
- "name": "meta.type-signature.haskell",
777
- "patterns": [
778
- {
779
- "include": "#type_signature"
780
- }
781
- ]
782
- }
783
- }
968
+ "include": "#comments"
784
969
  },
785
970
  {
786
- "match": "\\|",
787
- "captures": {
788
- "0": {
789
- "name": "punctuation.separator.pipe.haskell"
790
- }
791
- }
971
+ "include": "#c_preprocessor"
792
972
  },
793
973
  {
794
- "name": "meta.declaration.type.data.record.block.haskell",
795
- "begin": "\\{",
974
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(module)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
975
+ "end": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
976
+ "patterns": [
977
+ {
978
+ "include": "#invalid"
979
+ }
980
+ ],
796
981
  "beginCaptures": {
797
- "0": {
798
- "name": "keyword.operator.record.begin.haskell"
982
+ "1": {
983
+ "name": "keyword.other.haskell"
799
984
  }
800
985
  },
801
- "end": "\\}",
802
986
  "endCaptures": {
803
- "0": {
804
- "name": "keyword.operator.record.end.haskell"
987
+ "1": {
988
+ "name": "support.other.module.haskell"
805
989
  }
806
- },
990
+ }
991
+ },
992
+ {
993
+ "include": "#function_name"
994
+ },
995
+ {
996
+ "include": "#type_name"
997
+ },
998
+ {
999
+ "include": "#comma"
1000
+ },
1001
+ {
1002
+ "name": "meta.other.constructor-list.haskell",
1003
+ "begin": "(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))\\s*\\(",
1004
+ "end": "\\)",
807
1005
  "patterns": [
808
1006
  {
809
1007
  "include": "#comments"
810
1008
  },
1009
+ {
1010
+ "include": "#c_preprocessor"
1011
+ },
1012
+ {
1013
+ "include": "#type_ctor"
1014
+ },
1015
+ {
1016
+ "include": "#attribute_name"
1017
+ },
811
1018
  {
812
1019
  "include": "#comma"
813
1020
  },
814
1021
  {
815
- "include": "#record_field_declaration"
1022
+ "name": "keyword.operator.wildcard.haskell",
1023
+ "match": "\\.\\."
816
1024
  }
817
1025
  ]
818
1026
  },
819
1027
  {
820
- "include": "#ctor_type_declaration"
1028
+ "include": "#infix_op"
821
1029
  }
822
- ]
1030
+ ],
1031
+ "applyEndPatternLast": true
823
1032
  }
824
1033
  ]
825
1034
  },
826
- "type_alias": {
1035
+ "module_name": {
827
1036
  "patterns": [
828
1037
  {
829
- "name": "meta.declaration.type.type.haskell",
830
- "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(type)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
831
- "end": "(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
832
- "contentName": "meta.type-signature.haskell",
833
- "beginCaptures": {
834
- "2": {
835
- "name": "keyword.other.type.haskell"
836
- }
837
- },
838
- "patterns": [
839
- {
840
- "include": "#comments"
841
- },
842
- {
843
- "include": "#family_and_instance"
844
- },
845
- {
846
- "include": "#where"
847
- },
848
- {
849
- "include": "#assignment_op"
850
- },
851
- {
852
- "include": "#type_signature"
853
- }
854
- ]
1038
+ "name": "support.other.module.haskell",
1039
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
855
1040
  }
856
1041
  ]
857
1042
  },
858
- "keywords": {
1043
+ "module_name_prefix": {
859
1044
  "patterns": [
860
1045
  {
861
- "name": "keyword.other.haskell",
862
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving|where|data|type|newtype)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
863
- },
864
- {
865
- "name": "keyword.other.haskell",
866
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(data|type|newtype)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
867
- },
868
- {
869
- "name": "keyword.operator.haskell",
870
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))infix[lr]?(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
871
- },
872
- {
873
- "name": "keyword.control.haskell",
874
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(do|if|then|else|case|of|let|in|default|mdo|rec|proc)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1046
+ "name": "support.other.module.haskell",
1047
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\."
875
1048
  }
876
1049
  ]
877
1050
  },
878
- "c_preprocessor": {
1051
+ "multiline_type_declaration": {
879
1052
  "patterns": [
880
1053
  {
881
- "name": "meta.preprocessor.c.haskell",
882
- "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)(?=#)",
883
- "end": "(?<!\\\\)(?=$)",
1054
+ "name": "meta.multiline.type-declaration.haskell",
1055
+ "contentName": "meta.type-signature.haskell",
1056
+ "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)((?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))",
1057
+ "end": "(?:^(?!\\1|[ \\t]*$)|(?=@-}))|(?=(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))",
884
1058
  "patterns": [
885
1059
  {
886
- "include": "source.c"
1060
+ "include": "#type_signature"
887
1061
  }
888
- ]
889
- }
890
- ]
891
- },
892
- "string": {
893
- "patterns": [
894
- {
895
- "name": "string.quoted.double.haskell",
896
- "begin": "\"",
897
- "end": "\"",
1062
+ ],
898
1063
  "beginCaptures": {
899
- "0": {
900
- "name": "punctuation.definition.string.begin.haskell"
901
- }
902
- },
903
- "endCaptures": {
904
- "0": {
905
- "name": "punctuation.definition.string.end.haskell"
906
- }
907
- },
908
- "patterns": [
909
- {
910
- "include": "#characters"
911
- },
912
- {
913
- "begin": "\\\\\\s",
914
- "end": "\\\\",
915
- "beginCaptures": {
916
- "0": {
917
- "name": "markup.other.escape.newline.begin.haskell"
918
- }
919
- },
920
- "endCaptures": {
921
- "0": {
922
- "name": "markup.other.escape.newline.end.haskell"
923
- }
924
- },
925
- "patterns": [
926
- {
927
- "include": "#invalid"
928
- }
929
- ]
1064
+ "2": {
1065
+ "name": "keyword.other.double-colon.haskell"
930
1066
  }
931
- ]
1067
+ }
932
1068
  }
933
1069
  ]
934
1070
  },
@@ -940,421 +1076,363 @@
940
1076
  }
941
1077
  ]
942
1078
  },
943
- "quoted_character": {
1079
+ "operator": {
944
1080
  "patterns": [
945
1081
  {
946
- "name": "string.quoted.single.haskell",
947
- "match": "(')((?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))(')",
1082
+ "name": "keyword.operator.haskell",
1083
+ "match": "(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+",
948
1084
  "captures": {
949
- "1": {
950
- "name": "punctuation.definition.string.begin.haskell"
951
- },
952
- "2": {
1085
+ "0": {
953
1086
  "patterns": [
954
1087
  {
955
- "include": "#characters"
1088
+ "include": "#module_name_prefix"
1089
+ },
1090
+ {
1091
+ "name": "support.operator.prelude.haskell",
1092
+ "match": "^(\\!\\!|\\$\\!|\\$|\\\u0026\\\u0026|\\*|\\*\\*|\\*\\\u003e|\\+|\\+\\+|\\-|\\.|\\/|\\/\\=|\\\u003c\\$|\\\u003c\\$\\\u003e|\\\u003c|\\\u003c\\*|\\\u003c\\*\\\u003e|\\\u003c\\=|\\=\\\u003c\\\u003c|\\=\\=|\\\u003e|\\\u003e\\=|\\\u003e\\\u003e|\\\u003e\\\u003e\\=|\\^|\\^\\^|\\|\\|)$"
956
1093
  }
957
1094
  ]
958
- },
959
- "3": {
960
- "name": "punctuation.definition.string.end.haskell"
961
1095
  }
962
1096
  }
963
1097
  }
964
1098
  ]
965
1099
  },
966
- "scoped_type": {
1100
+ "pragma": {
967
1101
  "patterns": [
968
1102
  {
969
- "match": "\\(((?<paren>(?:[^\\(\\)]|\\(\\g<paren>\\))*)(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?<paren2>(?:[^\\(\\)]|\\(\\g<paren2>\\))*))\\)",
970
- "captures": {
971
- "1": {
972
- "patterns": [
973
- {
974
- "include": "#haskell_expr"
975
- }
976
- ]
1103
+ "name": "meta.preprocessor.haskell",
1104
+ "begin": "\\{-#",
1105
+ "end": "#-\\}",
1106
+ "patterns": [
1107
+ {
1108
+ "name": "keyword.other.preprocessor.haskell",
1109
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))((?i:NOTINLINE CONSTRUCTORLIKE|NOINLINE CONSTRUCTORLIKE|INLINE CONSTRUCTORLIKE|SPECIALISE NOTINLINE|SPECIALIZE NOTINLINE|SPECIALISE NOINLINE|SPECIALIZE NOINLINE|NOTINLINE CONLIKE|SPECIALISE INLINE|SPECIALIZE INLINE|NOINLINE CONLIKE|VECTORISE SCALAR|VECTORIZE SCALAR|OPTIONS_HADDOCK|INLINE CONLIKE|OPTIONS_DERIVE|OPTIONS_CATCH|OPTIONS_NHC98|OPTIONS_HUGS|OVERLAPPABLE|NOVECTORISE|NOVECTORIZE|OPTIONS_GHC|OPTIONS_JHC|OPTIONS_YHC|OVERLAPPING|DEPRECATED|INCOHERENT|INLINEABLE|SPECIALISE|SPECIALIZE|GENERATED|INLINABLE|NOTINLINE|VECTORISE|VECTORIZE|CONTRACT|LANGUAGE|NOINLINE|NOUNPACK|OVERLAPS|INCLUDE|MINIMAL|OPTIONS|WARNING|CFILES|INLINE|SOURCE|UNPACK|CTYPE|RULES|CORE|LINE|ANN|SCC))(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
977
1110
  }
978
- }
979
- },
1111
+ ]
1112
+ }
1113
+ ]
1114
+ },
1115
+ "quasi_quotes": {
1116
+ "patterns": [
980
1117
  {
981
- "match": "((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))(.*?)(?=(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(<-|=)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))|$)",
982
- "captures": {
1118
+ "contentName": "string.quoted.quasiquotes.haskell",
1119
+ "begin": "(\\[)((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(\\|)",
1120
+ "end": "(\\|)(\\])",
1121
+ "beginCaptures": {
983
1122
  "1": {
984
- "name": "keyword.other.double-colon.haskell"
1123
+ "name": "punctuation.definition.quasiquotes.begin.haskell"
985
1124
  },
986
1125
  "2": {
987
- "name": "meta.type-signature.haskell",
1126
+ "name": "entity.name.tag.haskell",
988
1127
  "patterns": [
989
1128
  {
990
- "include": "#type_signature"
1129
+ "include": "#module_name_prefix"
991
1130
  }
992
1131
  ]
993
1132
  }
1133
+ },
1134
+ "endCaptures": {
1135
+ "2": {
1136
+ "name": "punctuation.definition.quasiquotes.end.haskell"
1137
+ }
994
1138
  }
995
1139
  }
996
1140
  ]
997
1141
  },
998
- "scoped_type_override": {
1142
+ "quoted_character": {
999
1143
  "patterns": [
1000
1144
  {
1001
- "match": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))(.*)(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(<-|=)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))",
1145
+ "name": "string.quoted.single.haskell",
1146
+ "match": "(')((?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\\u0026])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))(')",
1002
1147
  "captures": {
1148
+ "1": {
1149
+ "name": "punctuation.definition.string.begin.haskell"
1150
+ },
1003
1151
  "2": {
1004
1152
  "patterns": [
1005
1153
  {
1006
- "include": "#identifier"
1154
+ "include": "#characters"
1007
1155
  }
1008
1156
  ]
1009
1157
  },
1010
1158
  "3": {
1011
- "name": "keyword.other.double-colon.haskell"
1012
- },
1013
- "4": {
1014
- "name": "meta.type-signature.haskell",
1015
- "patterns": [
1016
- {
1017
- "include": "#type_signature"
1018
- }
1019
- ]
1020
- },
1021
- "5": {
1022
- "patterns": [
1023
- {
1024
- "include": "#assignment_op"
1025
- },
1026
- {
1027
- "include": "#operator"
1028
- }
1029
- ]
1159
+ "name": "punctuation.definition.string.end.haskell"
1030
1160
  }
1031
1161
  }
1032
1162
  }
1033
1163
  ]
1034
1164
  },
1035
- "comma": {
1036
- "patterns": [
1037
- {
1038
- "name": "punctuation.separator.comma.haskell",
1039
- "match": ","
1040
- }
1041
- ]
1042
- },
1043
- "lit_num": {
1044
- "patterns": [
1045
- {
1046
- "name": "constant.numeric.hexadecimal.haskell",
1047
- "match": "0[xX][0-9a-fA-F]+"
1048
- },
1049
- {
1050
- "name": "constant.numeric.octal.haskell",
1051
- "match": "0[oO][0-7]+"
1052
- },
1053
- {
1054
- "name": "constant.numeric.float.haskell",
1055
- "match": "[0-9]+(\\.[0-9]+[eE][+-]?|\\.|[eE][+-]?)[0-9]+"
1056
- },
1057
- {
1058
- "name": "constant.numeric.decimal.haskell",
1059
- "match": "[0-9]+"
1060
- }
1061
- ]
1062
- },
1063
- "operator": {
1064
- "patterns": [
1065
- {
1066
- "name": "keyword.operator.haskell",
1067
- "match": "(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+"
1068
- }
1069
- ]
1070
- },
1071
- "identifier": {
1165
+ "record_field_declaration": {
1072
1166
  "patterns": [
1073
1167
  {
1074
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1075
- "name": "identifier.haskell",
1076
- "captures": {
1077
- "0": {
1168
+ "name": "meta.record-field.type-declaration.haskell",
1169
+ "contentName": "meta.type-signature.haskell",
1170
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))))",
1171
+ "end": "(?=(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))))|})",
1172
+ "patterns": [
1173
+ {
1174
+ "include": "#type_signature"
1175
+ }
1176
+ ],
1177
+ "beginCaptures": {
1178
+ "1": {
1078
1179
  "patterns": [
1079
1180
  {
1080
- "include": "#module_name_prefix"
1181
+ "include": "#attribute_name"
1081
1182
  },
1082
1183
  {
1083
- "name": "support.function.prelude.$1.haskell",
1084
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(abs|acos|acosh|all|and|any|appendFile|asTypeOf|asin|asinh|atan|atan2|atanh|break|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldMap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|mappend|max|maxBound|maximum|maybe|mconcat|mempty|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|pure|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequenceA|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|traverse|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1184
+ "include": "#infix_op"
1085
1185
  }
1086
1186
  ]
1187
+ },
1188
+ "2": {
1189
+ "name": "keyword.other.double-colon.haskell"
1087
1190
  }
1088
1191
  }
1089
1192
  }
1090
1193
  ]
1091
1194
  },
1092
- "type_name": {
1195
+ "regular_import": {
1093
1196
  "patterns": [
1094
1197
  {
1095
- "name": "entity.name.type.haskell",
1096
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1097
- "captures": {
1098
- "0": {
1099
- "patterns": [
1100
- {
1101
- "include": "#module_name_prefix"
1102
- },
1103
- {
1104
- "name": "entity.other.inherited-class.prelude.$1.haskell",
1105
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(Applicative|Bounded|Enum|Eq|Floating|Foldable|Fractional|Functor|Integral|Monad|Monoid|Num|Ord|Read|Real|RealFloat|RealFrac|Show|Traversable)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1106
- },
1107
- {
1108
- "name": "support.class.prelude.$1.haskell",
1109
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(Either|FilePath|IO|IOError|Integer|Maybe|Ordering|Rational|ReadS|ShowS|String|Bool|Char|Double|Float|Int|Word)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1198
+ "name": "meta.import.haskell",
1199
+ "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(import)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1200
+ "end": "(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
1201
+ "patterns": [
1202
+ {
1203
+ "include": "#module_name"
1204
+ },
1205
+ {
1206
+ "include": "#module_exports"
1207
+ },
1208
+ {
1209
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(qualified|as|hiding)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1210
+ "captures": {
1211
+ "1": {
1212
+ "name": "keyword.other.haskell"
1110
1213
  }
1111
- ]
1214
+ }
1215
+ },
1216
+ {
1217
+ "include": "#comments"
1218
+ }
1219
+ ],
1220
+ "beginCaptures": {
1221
+ "2": {
1222
+ "name": "keyword.other.haskell"
1112
1223
  }
1113
1224
  }
1114
1225
  }
1115
1226
  ]
1116
1227
  },
1117
- "type_ctor": {
1228
+ "scoped_type": {
1118
1229
  "patterns": [
1119
1230
  {
1120
- "name": "entity.name.tag.haskell",
1121
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1231
+ "match": "\\(((?\u003cparen\u003e(?:[^\\(\\)]|\\(\\g\u003cparen\u003e\\))*)(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?\u003cparen2\u003e(?:[^\\(\\)]|\\(\\g\u003cparen2\u003e\\))*))\\)",
1122
1232
  "captures": {
1123
- "0": {
1233
+ "1": {
1124
1234
  "patterns": [
1125
1235
  {
1126
- "include": "#module_name_prefix"
1127
- },
1128
- {
1129
- "name": "support.tag.prelude.$1.haskell",
1130
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(EQ|GT|Just|LT|Left|Nothing|Right|True|False)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1236
+ "include": "#haskell_expr"
1131
1237
  }
1132
1238
  ]
1133
1239
  }
1134
1240
  }
1135
- }
1136
- ]
1137
- },
1138
- "where": {
1139
- "patterns": [
1140
- {
1141
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1142
- "name": "keyword.other.haskell"
1143
- }
1144
- ]
1145
- },
1146
- "family_and_instance": {
1147
- "patterns": [
1148
- {
1149
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(family|instance)(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1150
- "name": "keyword.other.haskell"
1151
- }
1152
- ]
1153
- },
1154
- "invalid": {
1155
- "patterns": [
1156
- {
1157
- "match": "\\S+",
1158
- "name": "invalid.illegal.character-not-allowed-here.haskell"
1159
- }
1160
- ]
1161
- },
1162
- "function_name": {
1163
- "patterns": [
1164
- {
1165
- "name": "entity.name.function.haskell",
1166
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1167
- }
1168
- ]
1169
- },
1170
- "assignment_op": {
1171
- "patterns": [
1241
+ },
1172
1242
  {
1173
- "match": "=",
1243
+ "match": "((?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))(.*?)(?=(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))|$)",
1174
1244
  "captures": {
1175
- "0": {
1176
- "name": "keyword.operator.assignment.haskell"
1245
+ "1": {
1246
+ "name": "keyword.other.double-colon.haskell"
1247
+ },
1248
+ "2": {
1249
+ "name": "meta.type-signature.haskell",
1250
+ "patterns": [
1251
+ {
1252
+ "include": "#type_signature"
1253
+ }
1254
+ ]
1177
1255
  }
1178
1256
  }
1179
1257
  }
1180
1258
  ]
1181
1259
  },
1182
- "attribute_name": {
1183
- "patterns": [
1184
- {
1185
- "name": "entity.other.attribute-name.haskell",
1186
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1187
- }
1188
- ]
1189
- },
1190
- "liquidhaskell_annotation": {
1191
- "patterns": [
1192
- {
1193
- "name": "block.liquidhaskell.haskell",
1194
- "contentName": "block.liquidhaskell.annotation.haskell",
1195
- "begin": "\\{-@(?!#)",
1196
- "end": "@-\\}",
1197
- "patterns": [
1198
- {
1199
- "include": "annotation.liquidhaskell.haskell"
1200
- }
1201
- ]
1202
- }
1203
- ]
1204
- },
1205
- "shebang": {
1206
- "patterns": [
1207
- {
1208
- "name": "comment.line.shebang.haskell",
1209
- "match": "^\\#\\!.*\\brunhaskell\\b.*$"
1210
- }
1211
- ]
1212
- },
1213
- "haskell_expr": {
1260
+ "scoped_type_override": {
1214
1261
  "patterns": [
1215
1262
  {
1216
- "include": "#infix_function"
1217
- },
1218
- {
1219
- "include": "#unit"
1220
- },
1221
- {
1222
- "include": "#empty_list"
1223
- },
1224
- {
1225
- "include": "#quasi_quotes"
1226
- },
1227
- {
1228
- "include": "#keywords"
1229
- },
1230
- {
1231
- "include": "#pragma"
1232
- },
1233
- {
1234
- "include": "#string"
1235
- },
1236
- {
1237
- "include": "#newline_escape"
1238
- },
1239
- {
1240
- "include": "#quoted_character"
1241
- },
1242
- {
1243
- "include": "#comments"
1244
- },
1245
- {
1246
- "include": "#infix_op"
1247
- },
1248
- {
1249
- "include": "#comma"
1250
- },
1251
- {
1252
- "include": "#lit_num"
1253
- },
1254
- {
1255
- "include": "#scoped_type"
1256
- },
1257
- {
1258
- "include": "#operator"
1259
- },
1260
- {
1261
- "include": "#identifier"
1262
- },
1263
- {
1264
- "include": "#type_ctor"
1263
+ "match": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))))(.*)(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))",
1264
+ "captures": {
1265
+ "2": {
1266
+ "patterns": [
1267
+ {
1268
+ "include": "#identifier"
1269
+ }
1270
+ ]
1271
+ },
1272
+ "3": {
1273
+ "name": "keyword.other.double-colon.haskell"
1274
+ },
1275
+ "4": {
1276
+ "name": "meta.type-signature.haskell",
1277
+ "patterns": [
1278
+ {
1279
+ "include": "#type_signature"
1280
+ }
1281
+ ]
1282
+ },
1283
+ "5": {
1284
+ "patterns": [
1285
+ {
1286
+ "include": "#assignment_op"
1287
+ },
1288
+ {
1289
+ "include": "#operator"
1290
+ }
1291
+ ]
1292
+ }
1293
+ }
1265
1294
  }
1266
1295
  ]
1267
1296
  },
1268
- "common_toplevel": {
1297
+ "shebang": {
1269
1298
  "patterns": [
1270
1299
  {
1271
- "include": "#class_decl"
1272
- },
1273
- {
1274
- "include": "#instance_decl"
1275
- },
1276
- {
1277
- "include": "#deriving_instance_decl"
1278
- },
1279
- {
1280
- "include": "#foreign_import"
1281
- },
1282
- {
1283
- "include": "#regular_import"
1284
- },
1285
- {
1286
- "include": "#data_decl"
1287
- },
1288
- {
1289
- "include": "#type_alias"
1290
- },
1291
- {
1292
- "include": "#c_preprocessor"
1300
+ "name": "comment.line.shebang.haskell",
1301
+ "match": "^\\#\\!.*\\brunhaskell\\b.*$"
1293
1302
  }
1294
1303
  ]
1295
1304
  },
1296
- "function_type_declaration_with_scoped_type": {
1305
+ "string": {
1297
1306
  "patterns": [
1298
1307
  {
1299
- "include": "#scoped_type_override"
1300
- },
1301
- {
1302
- "include": "#function_type_declaration"
1308
+ "name": "string.quoted.double.haskell",
1309
+ "begin": "\"",
1310
+ "end": "\"",
1311
+ "patterns": [
1312
+ {
1313
+ "include": "#characters"
1314
+ },
1315
+ {
1316
+ "begin": "\\\\\\s",
1317
+ "end": "\\\\",
1318
+ "patterns": [
1319
+ {
1320
+ "include": "#invalid"
1321
+ }
1322
+ ],
1323
+ "beginCaptures": {
1324
+ "0": {
1325
+ "name": "markup.other.escape.newline.begin.haskell"
1326
+ }
1327
+ },
1328
+ "endCaptures": {
1329
+ "0": {
1330
+ "name": "markup.other.escape.newline.end.haskell"
1331
+ }
1332
+ }
1333
+ }
1334
+ ],
1335
+ "beginCaptures": {
1336
+ "0": {
1337
+ "name": "punctuation.definition.string.begin.haskell"
1338
+ }
1339
+ },
1340
+ "endCaptures": {
1341
+ "0": {
1342
+ "name": "punctuation.definition.string.end.haskell"
1343
+ }
1344
+ }
1303
1345
  }
1304
1346
  ]
1305
1347
  },
1306
- "haskell_toplevel": {
1348
+ "type_alias": {
1307
1349
  "patterns": [
1308
1350
  {
1309
- "include": "#liquidhaskell_annotation"
1310
- },
1311
- {
1312
- "include": "#common_toplevel"
1313
- },
1314
- {
1315
- "include": "#function_type_declaration_with_scoped_type"
1316
- },
1317
- {
1318
- "include": "#haskell_expr"
1351
+ "name": "meta.declaration.type.type.haskell",
1352
+ "contentName": "meta.type-signature.haskell",
1353
+ "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(type)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1354
+ "end": "(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
1355
+ "patterns": [
1356
+ {
1357
+ "include": "#comments"
1358
+ },
1359
+ {
1360
+ "include": "#family_and_instance"
1361
+ },
1362
+ {
1363
+ "include": "#where"
1364
+ },
1365
+ {
1366
+ "include": "#assignment_op"
1367
+ },
1368
+ {
1369
+ "include": "#type_signature"
1370
+ }
1371
+ ],
1372
+ "beginCaptures": {
1373
+ "2": {
1374
+ "name": "keyword.other.type.haskell"
1375
+ }
1376
+ }
1319
1377
  }
1320
1378
  ]
1321
1379
  },
1322
- "hsig_toplevel": {
1380
+ "type_ctor": {
1323
1381
  "patterns": [
1324
1382
  {
1325
- "include": "#common_toplevel"
1326
- },
1327
- {
1328
- "include": "#function_type_declaration"
1329
- },
1330
- {
1331
- "include": "#lazy_function_type_signature"
1332
- },
1333
- {
1334
- "include": "#comments"
1383
+ "name": "entity.name.tag.haskell",
1384
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1385
+ "captures": {
1386
+ "0": {
1387
+ "patterns": [
1388
+ {
1389
+ "include": "#module_name_prefix"
1390
+ },
1391
+ {
1392
+ "name": "support.tag.prelude.$1.haskell",
1393
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(EQ|GT|LT|Left|Right|True|False)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1394
+ }
1395
+ ]
1396
+ }
1397
+ }
1335
1398
  }
1336
1399
  ]
1337
1400
  },
1338
- "haskell_source": {
1401
+ "type_name": {
1339
1402
  "patterns": [
1340
1403
  {
1341
- "include": "#shebang"
1342
- },
1343
- {
1344
- "include": "#module_decl"
1345
- },
1346
- {
1347
- "include": "#haskell_toplevel"
1404
+ "name": "entity.name.type.haskell",
1405
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1406
+ "captures": {
1407
+ "0": {
1408
+ "patterns": [
1409
+ {
1410
+ "include": "#module_name_prefix"
1411
+ },
1412
+ {
1413
+ "name": "entity.other.inherited-class.prelude.$1.haskell",
1414
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(Applicative|Bounded|Enum|Eq|Floating|Foldable|Fractional|Functor|Integral|Monad|Monoid|Num|Ord|Read|Real|RealFloat|RealFrac|Show|Traversable)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1415
+ },
1416
+ {
1417
+ "name": "support.class.prelude.$1.haskell",
1418
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(Either|FilePath|IO|IOError|Integer|Ordering|Rational|ReadS|ShowS|String|Bool|Char|Double|Float|Int|Just|Maybe|Nothing|Word)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1419
+ }
1420
+ ]
1421
+ }
1422
+ }
1348
1423
  }
1349
1424
  ]
1350
1425
  },
1351
- "hsig_source": {
1426
+ "type_signature": {
1352
1427
  "patterns": [
1353
1428
  {
1354
- "include": "#hsig_decl"
1429
+ "include": "#liquid_id"
1355
1430
  },
1356
1431
  {
1357
- "include": "#hsig_toplevel"
1432
+ "include": "#liquid_type"
1433
+ },
1434
+ {
1435
+ "include": "#type_signature_hs"
1358
1436
  }
1359
1437
  ]
1360
1438
  },
@@ -1368,11 +1446,37 @@
1368
1446
  },
1369
1447
  {
1370
1448
  "name": "keyword.other.forall.haskell",
1371
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))forall(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1449
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))forall(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1450
+ },
1451
+ {
1452
+ "name": "constant.language.unit.promoted.haskell",
1453
+ "match": "'(\\(\\))",
1454
+ "captures": {
1455
+ "1": {
1456
+ "patterns": [
1457
+ {
1458
+ "include": "#unit"
1459
+ }
1460
+ ]
1461
+ }
1462
+ }
1372
1463
  },
1373
1464
  {
1374
1465
  "include": "#unit"
1375
1466
  },
1467
+ {
1468
+ "name": "constant.language.empty-list.promoted.haskell",
1469
+ "match": "'(\\[\\])",
1470
+ "captures": {
1471
+ "1": {
1472
+ "patterns": [
1473
+ {
1474
+ "include": "#empty_list"
1475
+ }
1476
+ ]
1477
+ }
1478
+ }
1479
+ },
1376
1480
  {
1377
1481
  "include": "#empty_list"
1378
1482
  },
@@ -1381,65 +1485,68 @@
1381
1485
  },
1382
1486
  {
1383
1487
  "name": "keyword.other.arrow.haskell",
1384
- "match": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(->|→)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))"
1488
+ "match": "(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(-\u003e|→)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))"
1385
1489
  },
1386
1490
  {
1387
1491
  "name": "keyword.other.big-arrow.haskell",
1388
- "match": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(=>|⇒)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))"
1492
+ "match": "(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(=\u003e|⇒)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))"
1493
+ },
1494
+ {
1495
+ "name": "keyword.operator.promoted.haskell",
1496
+ "match": "'((?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+)",
1497
+ "captures": {
1498
+ "1": {
1499
+ "patterns": [
1500
+ {
1501
+ "include": "#operator"
1502
+ }
1503
+ ]
1504
+ }
1505
+ }
1389
1506
  },
1390
1507
  {
1391
1508
  "include": "#operator"
1392
1509
  },
1393
1510
  {
1394
1511
  "name": "variable.other.generic-type.haskell",
1395
- "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1512
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1396
1513
  },
1397
1514
  {
1398
- "include": "#type_name"
1399
- }
1400
- ]
1401
- },
1402
- "liquid_id": {
1403
- "patterns": [
1404
- {
1405
- "match": "(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\s*:",
1515
+ "name": "entity.name.type.promoted.haskell",
1516
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}'])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))'([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))",
1406
1517
  "captures": {
1407
- "0": {
1518
+ "1": {
1408
1519
  "patterns": [
1409
1520
  {
1410
- "include": "#identifier"
1521
+ "include": "#type_name"
1411
1522
  }
1412
1523
  ]
1413
1524
  }
1414
1525
  }
1526
+ },
1527
+ {
1528
+ "include": "#type_name"
1529
+ },
1530
+ {
1531
+ "include": "#lit_num"
1415
1532
  }
1416
1533
  ]
1417
1534
  },
1418
- "liquid_type": {
1535
+ "unit": {
1419
1536
  "patterns": [
1420
1537
  {
1421
- "begin": "\\{",
1422
- "end": "\\}",
1423
- "name": "liquid.type.haskell",
1424
- "patterns": [
1425
- {
1426
- "match": "\\G(.*?)\\|",
1427
- "captures": {
1428
- "1": {
1429
- "patterns": [
1430
- {
1431
- "include": "#type_signature"
1432
- }
1433
- ]
1434
- }
1435
- }
1436
- },
1437
- {
1438
- "include": "#haskell_expr"
1439
- }
1440
- ]
1538
+ "name": "constant.language.unit.haskell",
1539
+ "match": "\\(\\)"
1540
+ }
1541
+ ]
1542
+ },
1543
+ "where": {
1544
+ "patterns": [
1545
+ {
1546
+ "name": "keyword.other.haskell",
1547
+ "match": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"
1441
1548
  }
1442
1549
  ]
1443
1550
  }
1444
1551
  }
1445
- }
1552
+ }