github-linguist 5.2.0 → 5.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/annotation.liquidhaskell.haskell.json +1445 -0
  3. data/grammars/hint.haskell.json +134 -17
  4. data/grammars/hint.message.haskell.json +134 -17
  5. data/grammars/hint.type.haskell.json +134 -17
  6. data/grammars/source.abl.json +48 -48
  7. data/grammars/source.afm.json +8 -1
  8. data/grammars/source.angelscript.json +195 -0
  9. data/grammars/source.ats.json +128 -58
  10. data/grammars/source.awk.json +138 -138
  11. data/grammars/source.ballerina.json +434 -0
  12. data/grammars/source.chapel.json +1 -1
  13. data/grammars/source.clips.json +20 -20
  14. data/grammars/source.cobol.json +4 -3
  15. data/grammars/source.coffee.json +556 -109
  16. data/grammars/source.cs.json +10 -5
  17. data/grammars/source.csound-document.json +1 -1
  18. data/grammars/source.csound-score.json +9 -9
  19. data/grammars/source.csound.json +23 -28
  20. data/grammars/source.css.json +6 -5
  21. data/grammars/source.data-weave.json +1584 -0
  22. data/grammars/source.elixir.json +3 -61
  23. data/grammars/source.elm.json +88 -88
  24. data/grammars/source.emacs.lisp.json +12 -1
  25. data/grammars/source.haskell.json +134 -17
  26. data/grammars/source.hsig.json +1376 -0
  27. data/grammars/source.httpspec.json +128 -128
  28. data/grammars/source.jison.json +6 -14
  29. data/grammars/source.jisonlex.json +1 -9
  30. data/grammars/source.js.json +1 -0
  31. data/grammars/source.js.regexp.json +0 -4
  32. data/grammars/source.js.regexp.replacement.json +0 -4
  33. data/grammars/source.jsdoc.json +3 -3
  34. data/grammars/source.lsl.json +146 -53
  35. data/grammars/source.mercury.json +166 -166
  36. data/grammars/source.ne.json +108 -0
  37. data/grammars/source.nim_filter.json +51 -51
  38. data/grammars/source.nut.json +266 -0
  39. data/grammars/source.opal.json +112 -112
  40. data/grammars/source.opalsysdefs.json +16 -16
  41. data/grammars/source.pan.json +1 -1
  42. data/grammars/source.papyrus.skyrim.json +720 -720
  43. data/grammars/source.pawn.json +2 -2
  44. data/grammars/source.prolog.eclipse.json +42 -42
  45. data/grammars/source.prolog.json +41 -41
  46. data/grammars/source.purescript.json +41 -25
  47. data/grammars/source.python.json +47 -34
  48. data/grammars/source.racket.json +54 -54
  49. data/grammars/source.reason.json +37 -3
  50. data/grammars/source.regexp.python.json +31 -0
  51. data/grammars/source.ruby.gemfile.json +27 -0
  52. data/grammars/source.ruby.json +1057 -356
  53. data/grammars/source.rust.json +1 -1
  54. data/grammars/source.sbt.json +13 -3
  55. data/grammars/source.scala.json +74 -55
  56. data/grammars/source.shaderlab.json +1 -1
  57. data/grammars/source.shell.json +26 -21
  58. data/grammars/source.shen.json +91 -91
  59. data/grammars/source.sqf.json +1 -1
  60. data/grammars/source.supercollider.json +1 -1
  61. data/grammars/source.swift.json +4 -0
  62. data/grammars/source.terra.json +36 -37
  63. data/grammars/source.terraform.json +98 -98
  64. data/grammars/source.ts.json +2231 -1677
  65. data/grammars/source.tsx.json +142 -3520
  66. data/grammars/source.vbnet.json +201 -263
  67. data/grammars/source.viml.json +2 -2
  68. data/grammars/source.wdl.json +200 -0
  69. data/grammars/source.yaml.json +34 -16
  70. data/grammars/text.find-refs.json +3 -3
  71. data/grammars/text.haml.json +1 -1
  72. data/grammars/text.html.abl.json +6 -6
  73. data/grammars/text.html.erb.json +8 -11
  74. data/grammars/text.html.php.blade.json +256 -220
  75. data/grammars/text.html.vue.json +1 -1
  76. data/grammars/text.slim.json +31 -17
  77. data/grammars/text.tex.latex.haskell.json +150 -33
  78. data/lib/linguist/heuristics.rb +8 -0
  79. data/lib/linguist/languages.json +1 -1
  80. data/lib/linguist/languages.yml +82 -26
  81. data/lib/linguist/samples.json +134512 -132868
  82. data/lib/linguist/vendor.yml +3 -0
  83. data/lib/linguist/version.rb +1 -1
  84. metadata +13 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c61558c7cd259354fbf2f09965a735e466c9edda
4
- data.tar.gz: 498dac3af4d916ecdcc8eb577763cdac9410406e
3
+ metadata.gz: 6f9eebe37d649695aeebda7dbf31cab27744d1b0
4
+ data.tar.gz: e9abbc38e95881db9ecbaaac3e7cf46909fc263d
5
5
  SHA512:
6
- metadata.gz: 7d5ec375099a61965dd526607dbf992b3dbd197ebc31119dcad3fc4e4960ceb6b1d2bba2f4902f10ca105bdd9328c7b7b9307d4744464db9544d3a393e470597
7
- data.tar.gz: c73c65a2770baa1b5ac0b99f37ada2f5bdc6182c2d173b3b8c181daf0fefceb62e8c447bb3934a5e7d93b83f42e6318f293b5a22a95ae1a7ca3cf723d618cec6
6
+ metadata.gz: 66fa84027fc7ff9b91c13eea542cc797af96f047c842fc040a2830a8ed35c4d4fdc21e39a571810ea676ec91239f145dfc659864b06159f20d8cda6085e447ee
7
+ data.tar.gz: 2b10ab814e9658338680bccf4faa9f1045bfd38698e74bed2634f8d38a1986c69da11489ffbd248a40027561287eb4598a28085101816fd50f792dc74d65b0f6
@@ -0,0 +1,1445 @@
1
+ {
2
+ "fileTypes": [
3
+
4
+ ],
5
+ "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
+ "patterns": [
40
+ {
41
+ "include": "#class_decl"
42
+ },
43
+ {
44
+ "include": "#instance_decl"
45
+ },
46
+ {
47
+ "include": "#data_decl"
48
+ },
49
+ {
50
+ "include": "#type_alias"
51
+ },
52
+ {
53
+ "include": "#function_type_declaration"
54
+ },
55
+ {
56
+ "include": "#lazy_function_type_signature"
57
+ }
58
+ ],
59
+ "repository": {
60
+ "block_comment": {
61
+ "patterns": [
62
+ {
63
+ "name": "comment.block.haddock.haskell",
64
+ "begin": "\\{-\\s*[|^]",
65
+ "end": "-\\}",
66
+ "applyEndPatternLast": 1,
67
+ "beginCaptures": {
68
+ "0": {
69
+ "name": "punctuation.definition.comment.haddock.haskell"
70
+ }
71
+ },
72
+ "endCaptures": {
73
+ "0": {
74
+ "name": "punctuation.definition.comment.haddock.haskell"
75
+ }
76
+ },
77
+ "patterns": [
78
+ {
79
+ "include": "#block_comment"
80
+ }
81
+ ]
82
+ },
83
+ {
84
+ "name": "comment.block.haskell",
85
+ "begin": "\\{-",
86
+ "end": "-\\}",
87
+ "applyEndPatternLast": 1,
88
+ "beginCaptures": {
89
+ "0": {
90
+ "name": "punctuation.definition.comment.block.start.haskell"
91
+ }
92
+ },
93
+ "endCaptures": {
94
+ "0": {
95
+ "name": "punctuation.definition.comment.block.end.haskell"
96
+ }
97
+ },
98
+ "patterns": [
99
+ {
100
+ "include": "#block_comment"
101
+ }
102
+ ]
103
+ }
104
+ ]
105
+ },
106
+ "comments": {
107
+ "patterns": [
108
+ {
109
+ "begin": "((?:\\G(?:\\s*\\w+\\s)?|^)[ \\t]+)?(?=--+\\s+[|^])",
110
+ "end": "(?!\\G)",
111
+ "patterns": [
112
+ {
113
+ "name": "comment.line.double-dash.haddock.haskell",
114
+ "begin": "(--+)\\s+([|^])",
115
+ "end": "$",
116
+ "beginCaptures": {
117
+ "1": {
118
+ "name": "punctuation.definition.comment.haskell"
119
+ },
120
+ "2": {
121
+ "name": "punctuation.definition.comment.haddock.haskell"
122
+ }
123
+ }
124
+ }
125
+ ]
126
+ },
127
+ {
128
+ "begin": "((?:\\G(?:\\s*\\w+\\s)?|^)[ \\t]+)?(?=--+(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))",
129
+ "end": "(?!\\G)",
130
+ "patterns": [
131
+ {
132
+ "name": "comment.line.double-dash.haskell",
133
+ "begin": "--",
134
+ "end": "$",
135
+ "beginCaptures": {
136
+ "0": {
137
+ "name": "punctuation.definition.comment.haskell"
138
+ }
139
+ }
140
+ }
141
+ ]
142
+ },
143
+ {
144
+ "include": "#block_comment"
145
+ }
146
+ ]
147
+ },
148
+ "characters": {
149
+ "patterns": [
150
+ {
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"
153
+ },
154
+ {
155
+ "match": "(?:\\\\o[0-7]+)",
156
+ "name": "constant.character.escape.octal.haskell"
157
+ },
158
+ {
159
+ "match": "(?:\\\\x[0-9A-Fa-f]+)",
160
+ "name": "constant.character.escape.hexadecimal.haskell"
161
+ },
162
+ {
163
+ "match": "(?:\\\\\\^[A-Z@\\[\\]\\\\^_])",
164
+ "name": "constant.character.escape.control.haskell"
165
+ }
166
+ ]
167
+ },
168
+ "infix_op": {
169
+ "patterns": [
170
+ {
171
+ "name": "entity.name.function.infix.haskell",
172
+ "match": "(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))"
173
+ }
174
+ ]
175
+ },
176
+ "module_exports": {
177
+ "patterns": [
178
+ {
179
+ "name": "meta.declaration.exports.haskell",
180
+ "begin": "\\(",
181
+ "end": "\\)",
182
+ "applyEndPatternLast": 1,
183
+ "patterns": [
184
+ {
185
+ "include": "#comments"
186
+ },
187
+ {
188
+ "include": "#function_name"
189
+ },
190
+ {
191
+ "include": "#type_name"
192
+ },
193
+ {
194
+ "include": "#comma"
195
+ },
196
+ {
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"
203
+ },
204
+ {
205
+ "include": "#attribute_name"
206
+ },
207
+ {
208
+ "include": "#comma"
209
+ },
210
+ {
211
+ "match": "\\.\\.",
212
+ "name": "keyword.operator.wildcard.haskell"
213
+ }
214
+ ]
215
+ },
216
+ {
217
+ "include": "#infix_op"
218
+ }
219
+ ]
220
+ }
221
+ ]
222
+ },
223
+ "module_name": {
224
+ "patterns": [
225
+ {
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}']))"
228
+ }
229
+ ]
230
+ },
231
+ "module_name_prefix": {
232
+ "patterns": [
233
+ {
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}']*)*\\."
236
+ }
237
+ ]
238
+ },
239
+ "pragma": {
240
+ "patterns": [
241
+ {
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"
249
+ }
250
+ ]
251
+ }
252
+ ]
253
+ },
254
+ "function_type_declaration": {
255
+ "patterns": [
256
+ {
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
+ },
276
+ "patterns": [
277
+ {
278
+ "include": "#type_signature"
279
+ }
280
+ ]
281
+ }
282
+ ]
283
+ },
284
+ "lazy_function_type_signature": {
285
+ "patterns": [
286
+ {
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"
306
+ },
307
+ {
308
+ "include": "#type_signature"
309
+ }
310
+ ]
311
+ }
312
+ ]
313
+ },
314
+ "double_colon_operator": {
315
+ "patterns": [
316
+ {
317
+ "name": "keyword.other.double-colon.haskell",
318
+ "match": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))"
319
+ }
320
+ ]
321
+ },
322
+ "ctor_type_declaration": {
323
+ "patterns": [
324
+ {
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}](?<![(),;\\[\\]`{}_\"']))))))",
327
+ "end": "(?:^(?!\\1[ \\t]|[ \\t]*$)|(?=@-}))",
328
+ "contentName": "meta.type-signature.haskell",
329
+ "beginCaptures": {
330
+ "2": {
331
+ "patterns": [
332
+ {
333
+ "include": "#type_ctor"
334
+ },
335
+ {
336
+ "include": "#infix_op"
337
+ }
338
+ ]
339
+ },
340
+ "3": {
341
+ "name": "keyword.other.double-colon.haskell"
342
+ }
343
+ },
344
+ "patterns": [
345
+ {
346
+ "include": "#type_signature"
347
+ }
348
+ ]
349
+ }
350
+ ]
351
+ },
352
+ "record_field_declaration": {
353
+ "patterns": [
354
+ {
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}](?<![(),;\\[\\]`{}_\"']))))))|})",
358
+ "contentName": "meta.type-signature.haskell",
359
+ "beginCaptures": {
360
+ "1": {
361
+ "patterns": [
362
+ {
363
+ "include": "#attribute_name"
364
+ },
365
+ {
366
+ "include": "#infix_op"
367
+ }
368
+ ]
369
+ },
370
+ "2": {
371
+ "name": "keyword.other.double-colon.haskell"
372
+ }
373
+ },
374
+ "patterns": [
375
+ {
376
+ "include": "#type_signature"
377
+ }
378
+ ]
379
+ }
380
+ ]
381
+ },
382
+ "type_signature": {
383
+ "patterns": [
384
+ {
385
+ "include": "#liquid_id"
386
+ },
387
+ {
388
+ "include": "#liquid_type"
389
+ },
390
+ {
391
+ "include": "#type_signature_hs"
392
+ }
393
+ ]
394
+ },
395
+ "unit": {
396
+ "patterns": [
397
+ {
398
+ "name": "constant.language.unit.haskell",
399
+ "match": "\\(\\)"
400
+ }
401
+ ]
402
+ },
403
+ "empty_list": {
404
+ "patterns": [
405
+ {
406
+ "name": "constant.language.empty-list.haskell",
407
+ "match": "\\[\\]"
408
+ }
409
+ ]
410
+ },
411
+ "deriving": {
412
+ "patterns": [
413
+ {
414
+ "include": "#deriving_list"
415
+ },
416
+ {
417
+ "include": "#deriving_simple"
418
+ },
419
+ {
420
+ "include": "#deriving_keyword"
421
+ }
422
+ ]
423
+ },
424
+ "deriving_keyword": {
425
+ "patterns": [
426
+ {
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": {
430
+ "1": {
431
+ "name": "keyword.other.haskell"
432
+ }
433
+ }
434
+ }
435
+ ]
436
+ },
437
+ "deriving_list": {
438
+ "patterns": [
439
+ {
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
+ ]
458
+ }
459
+ ]
460
+ },
461
+ "deriving_simple": {
462
+ "patterns": [
463
+ {
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}']))",
466
+ "captures": {
467
+ "1": {
468
+ "name": "keyword.other.haskell"
469
+ },
470
+ "2": {
471
+ "name": "entity.other.inherited-class.haskell"
472
+ }
473
+ }
474
+ }
475
+ ]
476
+ },
477
+ "infix_function": {
478
+ "patterns": [
479
+ {
480
+ "name": "keyword.operator.function.infix.haskell",
481
+ "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}']*(`)",
482
+ "captures": {
483
+ "1": {
484
+ "name": "punctuation.definition.entity.haskell"
485
+ },
486
+ "2": {
487
+ "name": "punctuation.definition.entity.haskell"
488
+ }
489
+ }
490
+ }
491
+ ]
492
+ },
493
+ "quasi_quotes": {
494
+ "patterns": [
495
+ {
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",
504
+ "patterns": [
505
+ {
506
+ "include": "#module_name_prefix"
507
+ }
508
+ ]
509
+ }
510
+ },
511
+ "endCaptures": {
512
+ "2": {
513
+ "name": "punctuation.definition.quasiquotes.end.haskell"
514
+ }
515
+ },
516
+ "contentName": "string.quoted.quasiquotes.haskell"
517
+ }
518
+ ]
519
+ },
520
+ "module_decl": {
521
+ "patterns": [
522
+ {
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
+ },
536
+ "patterns": [
537
+ {
538
+ "include": "#comments"
539
+ },
540
+ {
541
+ "include": "#module_name"
542
+ },
543
+ {
544
+ "include": "#module_exports"
545
+ },
546
+ {
547
+ "include": "#invalid"
548
+ }
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]*$)|(?=@-}))",
559
+ "beginCaptures": {
560
+ "2": {
561
+ "name": "keyword.other.haskell"
562
+ }
563
+ },
564
+ "endCaptures": {
565
+ "1": {
566
+ "name": "keyword.other.haskell"
567
+ }
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
+ ]
583
+ }
584
+ ]
585
+ },
586
+ "class_decl": {
587
+ "patterns": [
588
+ {
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
+ ]
607
+ }
608
+ ]
609
+ },
610
+ "instance_decl": {
611
+ "patterns": [
612
+ {
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
+ ]
635
+ }
636
+ ]
637
+ },
638
+ "deriving_instance_decl": {
639
+ "patterns": [
640
+ {
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]*$)|(?=@-}))",
644
+ "contentName": "meta.type-signature.haskell",
645
+ "beginCaptures": {
646
+ "2": {
647
+ "name": "keyword.other.haskell"
648
+ }
649
+ },
650
+ "patterns": [
651
+ {
652
+ "include": "#pragma"
653
+ },
654
+ {
655
+ "include": "#type_signature"
656
+ }
657
+ ]
658
+ }
659
+ ]
660
+ },
661
+ "foreign_import": {
662
+ "patterns": [
663
+ {
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"
681
+ }
682
+ }
683
+ },
684
+ {
685
+ "include": "#function_type_declaration"
686
+ },
687
+ {
688
+ "include": "#haskell_expr"
689
+ },
690
+ {
691
+ "include": "#comments"
692
+ }
693
+ ]
694
+ }
695
+ ]
696
+ },
697
+ "regular_import": {
698
+ "patterns": [
699
+ {
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
+ },
708
+ "patterns": [
709
+ {
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}']))",
717
+ "captures": {
718
+ "1": {
719
+ "name": "keyword.other.haskell"
720
+ }
721
+ }
722
+ },
723
+ {
724
+ "include": "#comments"
725
+ }
726
+ ]
727
+ }
728
+ ]
729
+ },
730
+ "data_decl": {
731
+ "patterns": [
732
+ {
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
+ ]
750
+ }
751
+ },
752
+ "patterns": [
753
+ {
754
+ "include": "#comments"
755
+ },
756
+ {
757
+ "include": "#where"
758
+ },
759
+ {
760
+ "include": "#deriving"
761
+ },
762
+ {
763
+ "include": "#assignment_op"
764
+ },
765
+ {
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
+ }
784
+ },
785
+ {
786
+ "match": "\\|",
787
+ "captures": {
788
+ "0": {
789
+ "name": "punctuation.separator.pipe.haskell"
790
+ }
791
+ }
792
+ },
793
+ {
794
+ "name": "meta.declaration.type.data.record.block.haskell",
795
+ "begin": "\\{",
796
+ "beginCaptures": {
797
+ "0": {
798
+ "name": "keyword.operator.record.begin.haskell"
799
+ }
800
+ },
801
+ "end": "\\}",
802
+ "endCaptures": {
803
+ "0": {
804
+ "name": "keyword.operator.record.end.haskell"
805
+ }
806
+ },
807
+ "patterns": [
808
+ {
809
+ "include": "#comments"
810
+ },
811
+ {
812
+ "include": "#comma"
813
+ },
814
+ {
815
+ "include": "#record_field_declaration"
816
+ }
817
+ ]
818
+ },
819
+ {
820
+ "include": "#ctor_type_declaration"
821
+ }
822
+ ]
823
+ }
824
+ ]
825
+ },
826
+ "type_alias": {
827
+ "patterns": [
828
+ {
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
+ ]
855
+ }
856
+ ]
857
+ },
858
+ "keywords": {
859
+ "patterns": [
860
+ {
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}']))"
875
+ }
876
+ ]
877
+ },
878
+ "c_preprocessor": {
879
+ "patterns": [
880
+ {
881
+ "name": "meta.preprocessor.c.haskell",
882
+ "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)(?=#)",
883
+ "end": "(?<!\\\\)(?=$)",
884
+ "patterns": [
885
+ {
886
+ "include": "source.c"
887
+ }
888
+ ]
889
+ }
890
+ ]
891
+ },
892
+ "string": {
893
+ "patterns": [
894
+ {
895
+ "name": "string.quoted.double.haskell",
896
+ "begin": "\"",
897
+ "end": "\"",
898
+ "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
+ ]
930
+ }
931
+ ]
932
+ }
933
+ ]
934
+ },
935
+ "newline_escape": {
936
+ "patterns": [
937
+ {
938
+ "name": "markup.other.escape.newline.haskell",
939
+ "match": "\\\\$"
940
+ }
941
+ ]
942
+ },
943
+ "quoted_character": {
944
+ "patterns": [
945
+ {
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}](?<![(),;\\[\\]`{}_\"']))))(')",
948
+ "captures": {
949
+ "1": {
950
+ "name": "punctuation.definition.string.begin.haskell"
951
+ },
952
+ "2": {
953
+ "patterns": [
954
+ {
955
+ "include": "#characters"
956
+ }
957
+ ]
958
+ },
959
+ "3": {
960
+ "name": "punctuation.definition.string.end.haskell"
961
+ }
962
+ }
963
+ }
964
+ ]
965
+ },
966
+ "scoped_type": {
967
+ "patterns": [
968
+ {
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
+ ]
977
+ }
978
+ }
979
+ },
980
+ {
981
+ "match": "((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))(.*?)(?=(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(<-|=)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))|$)",
982
+ "captures": {
983
+ "1": {
984
+ "name": "keyword.other.double-colon.haskell"
985
+ },
986
+ "2": {
987
+ "name": "meta.type-signature.haskell",
988
+ "patterns": [
989
+ {
990
+ "include": "#type_signature"
991
+ }
992
+ ]
993
+ }
994
+ }
995
+ }
996
+ ]
997
+ },
998
+ "scoped_type_override": {
999
+ "patterns": [
1000
+ {
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}](?<![(),;\\[\\]`{}_\"'])))",
1002
+ "captures": {
1003
+ "2": {
1004
+ "patterns": [
1005
+ {
1006
+ "include": "#identifier"
1007
+ }
1008
+ ]
1009
+ },
1010
+ "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
+ ]
1030
+ }
1031
+ }
1032
+ }
1033
+ ]
1034
+ },
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": {
1072
+ "patterns": [
1073
+ {
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": {
1078
+ "patterns": [
1079
+ {
1080
+ "include": "#module_name_prefix"
1081
+ },
1082
+ {
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}']))"
1085
+ }
1086
+ ]
1087
+ }
1088
+ }
1089
+ }
1090
+ ]
1091
+ },
1092
+ "type_name": {
1093
+ "patterns": [
1094
+ {
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}']))"
1110
+ }
1111
+ ]
1112
+ }
1113
+ }
1114
+ }
1115
+ ]
1116
+ },
1117
+ "type_ctor": {
1118
+ "patterns": [
1119
+ {
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}']))",
1122
+ "captures": {
1123
+ "0": {
1124
+ "patterns": [
1125
+ {
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}']))"
1131
+ }
1132
+ ]
1133
+ }
1134
+ }
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": [
1172
+ {
1173
+ "match": "=",
1174
+ "captures": {
1175
+ "0": {
1176
+ "name": "keyword.operator.assignment.haskell"
1177
+ }
1178
+ }
1179
+ }
1180
+ ]
1181
+ },
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": {
1214
+ "patterns": [
1215
+ {
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"
1265
+ }
1266
+ ]
1267
+ },
1268
+ "common_toplevel": {
1269
+ "patterns": [
1270
+ {
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"
1293
+ }
1294
+ ]
1295
+ },
1296
+ "function_type_declaration_with_scoped_type": {
1297
+ "patterns": [
1298
+ {
1299
+ "include": "#scoped_type_override"
1300
+ },
1301
+ {
1302
+ "include": "#function_type_declaration"
1303
+ }
1304
+ ]
1305
+ },
1306
+ "haskell_toplevel": {
1307
+ "patterns": [
1308
+ {
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"
1319
+ }
1320
+ ]
1321
+ },
1322
+ "hsig_toplevel": {
1323
+ "patterns": [
1324
+ {
1325
+ "include": "#common_toplevel"
1326
+ },
1327
+ {
1328
+ "include": "#function_type_declaration"
1329
+ },
1330
+ {
1331
+ "include": "#lazy_function_type_signature"
1332
+ },
1333
+ {
1334
+ "include": "#comments"
1335
+ }
1336
+ ]
1337
+ },
1338
+ "haskell_source": {
1339
+ "patterns": [
1340
+ {
1341
+ "include": "#shebang"
1342
+ },
1343
+ {
1344
+ "include": "#module_decl"
1345
+ },
1346
+ {
1347
+ "include": "#haskell_toplevel"
1348
+ }
1349
+ ]
1350
+ },
1351
+ "hsig_source": {
1352
+ "patterns": [
1353
+ {
1354
+ "include": "#hsig_decl"
1355
+ },
1356
+ {
1357
+ "include": "#hsig_toplevel"
1358
+ }
1359
+ ]
1360
+ },
1361
+ "type_signature_hs": {
1362
+ "patterns": [
1363
+ {
1364
+ "include": "#pragma"
1365
+ },
1366
+ {
1367
+ "include": "#comments"
1368
+ },
1369
+ {
1370
+ "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}']))"
1372
+ },
1373
+ {
1374
+ "include": "#unit"
1375
+ },
1376
+ {
1377
+ "include": "#empty_list"
1378
+ },
1379
+ {
1380
+ "include": "#string"
1381
+ },
1382
+ {
1383
+ "name": "keyword.other.arrow.haskell",
1384
+ "match": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(->|→)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))"
1385
+ },
1386
+ {
1387
+ "name": "keyword.other.big-arrow.haskell",
1388
+ "match": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(=>|⇒)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))"
1389
+ },
1390
+ {
1391
+ "include": "#operator"
1392
+ },
1393
+ {
1394
+ "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}']))"
1396
+ },
1397
+ {
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*:",
1406
+ "captures": {
1407
+ "0": {
1408
+ "patterns": [
1409
+ {
1410
+ "include": "#identifier"
1411
+ }
1412
+ ]
1413
+ }
1414
+ }
1415
+ }
1416
+ ]
1417
+ },
1418
+ "liquid_type": {
1419
+ "patterns": [
1420
+ {
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
+ ]
1441
+ }
1442
+ ]
1443
+ }
1444
+ }
1445
+ }