@willbooster/tree-sitter-haskell 12.1.0 → 13.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -22,6 +22,8 @@ the supported language extensions. The fork's node and query contracts are descr
22
22
  The fork's main differences from upstream 0.23.1 are:
23
23
 
24
24
  - **Whitespace**: horizontal tabs separate tokens, are accepted before Haddock markers, and advance layout to the next eight-column tab stop.
25
+ - **ExplicitNamespaces**: import and export items, including subordinate items, accept the `data` namespace, and fixity declarations accept `type` and `data`. A namespaced subordinate item such as `type (#)` or `data P` is a `namespaced_child` node with a `namespace` child; a `data` item puts a constructor name in a `constructor` field and a variable or operator in the `variable` or `operator` field.
26
+ - **NamedDefaults**: `default` declarations accept a class name before the type list, such as `default Monoid ([Int])`, in a `class` field, and export lists accept `default` items such as `default Monoid` as `default_export` nodes.
25
27
  - **OrPatterns**: parenthesized alternatives separated by semicolons, such as `(A; B)`, parse as an `or_pattern` node with an `alternative` field for each pattern.
26
28
  - **MultilineStrings**: triple-quoted literals retain their complete source as a single `string` node, including embedded quotes, escapes, and string gaps.
27
29
  - **Comment scanning**: comments and Haddock nodes expose a named `content` child, preserving body whitespace and excluding outer delimiters. Ordinary comment injection captures this child.
package/grammar/decl.js CHANGED
@@ -33,6 +33,7 @@ module.exports = {
33
33
  seq(
34
34
  field('associativity', choice('infixl', 'infixr', 'infix')),
35
35
  field('precedence', optional($.integer)),
36
+ optional(field('namespace', alias(choice('type', 'data'), $.namespace))),
36
37
  field('operator', sep1(',', choice($._operator_minus, $._varop, $._conop))),
37
38
  ),
38
39
  ),
@@ -186,6 +187,6 @@ module.exports = {
186
187
  field('signature', $._foreign_signature),
187
188
  ),
188
189
 
189
- default_types: $ => seq('default', parens($, optional(sep1(',', field('type', $._ktype))))),
190
+ default_types: $ => seq('default', optional(field('class', $._tyconids)), parens($, optional(sep1(',', field('type', $._ktype))))),
190
191
 
191
192
  }
package/grammar/module.js CHANGED
@@ -49,23 +49,37 @@ module.exports = {
49
49
 
50
50
  namespace: _ => choice('pattern', 'type'),
51
51
 
52
- _child_type: $ => seq(field('namespace', 'type'), field('type', $._tyconids)),
52
+ _ie_value: $ => choice(
53
+ field('variable', $._varids),
54
+ field('operator', choice($._sym_prefix, $._pqsym)),
55
+ ),
56
+
57
+ _ie_name: $ => choice($._ie_value, field('type', $._tyconids)),
58
+
59
+ _ie_data: $ => seq(
60
+ field('namespace', alias('data', $.namespace)),
61
+ choice($._ie_value, field('constructor', choice($._qconid, $._constructor))),
62
+ ),
63
+
64
+ _child_namespaced: $ => choice(
65
+ seq(field('namespace', alias('type', $.namespace)), $._ie_name),
66
+ $._ie_data,
67
+ ),
53
68
 
54
69
  _child: $ => choice(
55
- alias($._child_type, $.associated_type),
70
+ alias($._child_namespaced, $.namespaced_child),
56
71
  $._qname,
57
72
  ),
58
73
 
59
74
  children: $ => parens($, sep(',', field('element', choice(alias('..', $.all_names), $._child)))),
60
75
 
61
- _ie_entity: $ => seq(
62
- optional(field('namespace', $.namespace)),
63
- choice(
64
- field('variable', $._varids),
65
- field('type', $._tyconids),
66
- field('operator', choice($._sym_prefix, $._pqsym)),
76
+ _ie_entity: $ => choice(
77
+ seq(
78
+ optional(field('namespace', $.namespace)),
79
+ $._ie_name,
80
+ optional(field('children', $.children)),
67
81
  ),
68
- optional(field('children', $.children)),
82
+ $._ie_data,
69
83
  ),
70
84
 
71
85
  // ------------------------------------------------------------------------
@@ -97,9 +111,11 @@ module.exports = {
97
111
 
98
112
  module_export: $ => seq('module', field('module', $.module)),
99
113
 
114
+ default_export: $ => seq('default', field('class', $._tyconids)),
115
+
100
116
  exports: $ => parens(
101
117
  $,
102
- optional(sep1(',', choice(field('export', alias($._ie_entity, $.export)), $.module_export))),
118
+ optional(sep1(',', choice(field('export', alias($._ie_entity, $.export)), $.module_export, $.default_export))),
103
119
  optional(','),
104
120
  ),
105
121
 
@@ -1177,36 +1177,6 @@
1177
1177
  }
1178
1178
  }
1179
1179
  },
1180
- {
1181
- "type": "associated_type",
1182
- "named": true,
1183
- "fields": {
1184
- "namespace": {
1185
- "multiple": false,
1186
- "required": true,
1187
- "types": [
1188
- {
1189
- "type": "type",
1190
- "named": false
1191
- }
1192
- ]
1193
- },
1194
- "type": {
1195
- "multiple": false,
1196
- "required": true,
1197
- "types": [
1198
- {
1199
- "type": "name",
1200
- "named": true
1201
- },
1202
- {
1203
- "type": "qualified",
1204
- "named": true
1205
- }
1206
- ]
1207
- }
1208
- }
1209
- },
1210
1180
  {
1211
1181
  "type": "bind",
1212
1182
  "named": true,
@@ -1417,15 +1387,15 @@
1417
1387
  "named": true
1418
1388
  },
1419
1389
  {
1420
- "type": "associated_type",
1390
+ "type": "constructor",
1421
1391
  "named": true
1422
1392
  },
1423
1393
  {
1424
- "type": "constructor",
1394
+ "type": "hsc",
1425
1395
  "named": true
1426
1396
  },
1427
1397
  {
1428
- "type": "hsc",
1398
+ "type": "namespaced_child",
1429
1399
  "named": true
1430
1400
  },
1431
1401
  {
@@ -2058,6 +2028,26 @@
2058
2028
  ]
2059
2029
  }
2060
2030
  },
2031
+ {
2032
+ "type": "default_export",
2033
+ "named": true,
2034
+ "fields": {
2035
+ "class": {
2036
+ "multiple": false,
2037
+ "required": true,
2038
+ "types": [
2039
+ {
2040
+ "type": "name",
2041
+ "named": true
2042
+ },
2043
+ {
2044
+ "type": "qualified",
2045
+ "named": true
2046
+ }
2047
+ ]
2048
+ }
2049
+ }
2050
+ },
2061
2051
  {
2062
2052
  "type": "default_signature",
2063
2053
  "named": true,
@@ -2078,6 +2068,20 @@
2078
2068
  "type": "default_types",
2079
2069
  "named": true,
2080
2070
  "fields": {
2071
+ "class": {
2072
+ "multiple": false,
2073
+ "required": false,
2074
+ "types": [
2075
+ {
2076
+ "type": "name",
2077
+ "named": true
2078
+ },
2079
+ {
2080
+ "type": "qualified",
2081
+ "named": true
2082
+ }
2083
+ ]
2084
+ },
2081
2085
  "type": {
2082
2086
  "multiple": true,
2083
2087
  "required": false,
@@ -2518,6 +2522,20 @@
2518
2522
  }
2519
2523
  ]
2520
2524
  },
2525
+ "constructor": {
2526
+ "multiple": false,
2527
+ "required": false,
2528
+ "types": [
2529
+ {
2530
+ "type": "constructor",
2531
+ "named": true
2532
+ },
2533
+ {
2534
+ "type": "qualified",
2535
+ "named": true
2536
+ }
2537
+ ]
2538
+ },
2521
2539
  "namespace": {
2522
2540
  "multiple": false,
2523
2541
  "required": false,
@@ -2597,6 +2615,10 @@
2597
2615
  "multiple": true,
2598
2616
  "required": false,
2599
2617
  "types": [
2618
+ {
2619
+ "type": "default_export",
2620
+ "named": true
2621
+ },
2600
2622
  {
2601
2623
  "type": "module_export",
2602
2624
  "named": true
@@ -2861,6 +2883,16 @@
2861
2883
  }
2862
2884
  ]
2863
2885
  },
2886
+ "namespace": {
2887
+ "multiple": false,
2888
+ "required": false,
2889
+ "types": [
2890
+ {
2891
+ "type": "namespace",
2892
+ "named": true
2893
+ }
2894
+ ]
2895
+ },
2864
2896
  "operator": {
2865
2897
  "multiple": true,
2866
2898
  "required": true,
@@ -3636,6 +3668,20 @@
3636
3668
  }
3637
3669
  ]
3638
3670
  },
3671
+ "constructor": {
3672
+ "multiple": false,
3673
+ "required": false,
3674
+ "types": [
3675
+ {
3676
+ "type": "constructor",
3677
+ "named": true
3678
+ },
3679
+ {
3680
+ "type": "qualified",
3681
+ "named": true
3682
+ }
3683
+ ]
3684
+ },
3639
3685
  "namespace": {
3640
3686
  "multiple": false,
3641
3687
  "required": false,
@@ -4643,6 +4689,74 @@
4643
4689
  "named": true,
4644
4690
  "fields": {}
4645
4691
  },
4692
+ {
4693
+ "type": "namespaced_child",
4694
+ "named": true,
4695
+ "fields": {
4696
+ "constructor": {
4697
+ "multiple": false,
4698
+ "required": false,
4699
+ "types": [
4700
+ {
4701
+ "type": "constructor",
4702
+ "named": true
4703
+ },
4704
+ {
4705
+ "type": "qualified",
4706
+ "named": true
4707
+ }
4708
+ ]
4709
+ },
4710
+ "namespace": {
4711
+ "multiple": false,
4712
+ "required": true,
4713
+ "types": [
4714
+ {
4715
+ "type": "namespace",
4716
+ "named": true
4717
+ }
4718
+ ]
4719
+ },
4720
+ "operator": {
4721
+ "multiple": false,
4722
+ "required": false,
4723
+ "types": [
4724
+ {
4725
+ "type": "prefix_id",
4726
+ "named": true
4727
+ }
4728
+ ]
4729
+ },
4730
+ "type": {
4731
+ "multiple": false,
4732
+ "required": false,
4733
+ "types": [
4734
+ {
4735
+ "type": "name",
4736
+ "named": true
4737
+ },
4738
+ {
4739
+ "type": "qualified",
4740
+ "named": true
4741
+ }
4742
+ ]
4743
+ },
4744
+ "variable": {
4745
+ "multiple": false,
4746
+ "required": false,
4747
+ "types": [
4748
+ {
4749
+ "type": "qualified",
4750
+ "named": true
4751
+ },
4752
+ {
4753
+ "type": "variable",
4754
+ "named": true
4755
+ }
4756
+ ]
4757
+ }
4758
+ }
4759
+ },
4646
4760
  {
4647
4761
  "type": "negation",
4648
4762
  "named": true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@willbooster/tree-sitter-haskell",
3
- "version": "12.1.0",
3
+ "version": "13.1.0",
4
4
  "description": "Haskell grammar for tree-sitter",
5
5
  "keywords": [
6
6
  "incremental",
@@ -105,6 +105,7 @@
105
105
  "as"
106
106
  "hiding"
107
107
  "deriving"
108
+ "default"
108
109
  "via"
109
110
  "stock"
110
111
  "anyclass"
@@ -116,6 +117,8 @@
116
117
  "infixr"
117
118
  ] @keyword
118
119
 
120
+ (namespace) @keyword
121
+
119
122
  [
120
123
  (function name: (variable) @function)
121
124
  (bind name: (variable) @function)
@@ -1157,36 +1157,6 @@
1157
1157
  }
1158
1158
  }
1159
1159
  },
1160
- {
1161
- "type": "associated_type",
1162
- "named": true,
1163
- "fields": {
1164
- "namespace": {
1165
- "multiple": false,
1166
- "required": true,
1167
- "types": [
1168
- {
1169
- "type": "type",
1170
- "named": false
1171
- }
1172
- ]
1173
- },
1174
- "type": {
1175
- "multiple": false,
1176
- "required": true,
1177
- "types": [
1178
- {
1179
- "type": "name",
1180
- "named": true
1181
- },
1182
- {
1183
- "type": "qualified",
1184
- "named": true
1185
- }
1186
- ]
1187
- }
1188
- }
1189
- },
1190
1160
  {
1191
1161
  "type": "bind",
1192
1162
  "named": true,
@@ -1389,11 +1359,11 @@
1389
1359
  "named": true
1390
1360
  },
1391
1361
  {
1392
- "type": "associated_type",
1362
+ "type": "constructor",
1393
1363
  "named": true
1394
1364
  },
1395
1365
  {
1396
- "type": "constructor",
1366
+ "type": "namespaced_child",
1397
1367
  "named": true
1398
1368
  },
1399
1369
  {
@@ -2010,6 +1980,26 @@
2010
1980
  ]
2011
1981
  }
2012
1982
  },
1983
+ {
1984
+ "type": "default_export",
1985
+ "named": true,
1986
+ "fields": {
1987
+ "class": {
1988
+ "multiple": false,
1989
+ "required": true,
1990
+ "types": [
1991
+ {
1992
+ "type": "name",
1993
+ "named": true
1994
+ },
1995
+ {
1996
+ "type": "qualified",
1997
+ "named": true
1998
+ }
1999
+ ]
2000
+ }
2001
+ }
2002
+ },
2013
2003
  {
2014
2004
  "type": "default_signature",
2015
2005
  "named": true,
@@ -2030,6 +2020,20 @@
2030
2020
  "type": "default_types",
2031
2021
  "named": true,
2032
2022
  "fields": {
2023
+ "class": {
2024
+ "multiple": false,
2025
+ "required": false,
2026
+ "types": [
2027
+ {
2028
+ "type": "name",
2029
+ "named": true
2030
+ },
2031
+ {
2032
+ "type": "qualified",
2033
+ "named": true
2034
+ }
2035
+ ]
2036
+ },
2033
2037
  "type": {
2034
2038
  "multiple": true,
2035
2039
  "required": false,
@@ -2458,6 +2462,20 @@
2458
2462
  }
2459
2463
  ]
2460
2464
  },
2465
+ "constructor": {
2466
+ "multiple": false,
2467
+ "required": false,
2468
+ "types": [
2469
+ {
2470
+ "type": "constructor",
2471
+ "named": true
2472
+ },
2473
+ {
2474
+ "type": "qualified",
2475
+ "named": true
2476
+ }
2477
+ ]
2478
+ },
2461
2479
  "namespace": {
2462
2480
  "multiple": false,
2463
2481
  "required": false,
@@ -2527,6 +2545,10 @@
2527
2545
  "multiple": true,
2528
2546
  "required": false,
2529
2547
  "types": [
2548
+ {
2549
+ "type": "default_export",
2550
+ "named": true
2551
+ },
2530
2552
  {
2531
2553
  "type": "module_export",
2532
2554
  "named": true
@@ -2791,6 +2813,16 @@
2791
2813
  }
2792
2814
  ]
2793
2815
  },
2816
+ "namespace": {
2817
+ "multiple": false,
2818
+ "required": false,
2819
+ "types": [
2820
+ {
2821
+ "type": "namespace",
2822
+ "named": true
2823
+ }
2824
+ ]
2825
+ },
2794
2826
  "operator": {
2795
2827
  "multiple": true,
2796
2828
  "required": true,
@@ -3520,6 +3552,20 @@
3520
3552
  }
3521
3553
  ]
3522
3554
  },
3555
+ "constructor": {
3556
+ "multiple": false,
3557
+ "required": false,
3558
+ "types": [
3559
+ {
3560
+ "type": "constructor",
3561
+ "named": true
3562
+ },
3563
+ {
3564
+ "type": "qualified",
3565
+ "named": true
3566
+ }
3567
+ ]
3568
+ },
3523
3569
  "namespace": {
3524
3570
  "multiple": false,
3525
3571
  "required": false,
@@ -4488,6 +4534,74 @@
4488
4534
  "named": true,
4489
4535
  "fields": {}
4490
4536
  },
4537
+ {
4538
+ "type": "namespaced_child",
4539
+ "named": true,
4540
+ "fields": {
4541
+ "constructor": {
4542
+ "multiple": false,
4543
+ "required": false,
4544
+ "types": [
4545
+ {
4546
+ "type": "constructor",
4547
+ "named": true
4548
+ },
4549
+ {
4550
+ "type": "qualified",
4551
+ "named": true
4552
+ }
4553
+ ]
4554
+ },
4555
+ "namespace": {
4556
+ "multiple": false,
4557
+ "required": true,
4558
+ "types": [
4559
+ {
4560
+ "type": "namespace",
4561
+ "named": true
4562
+ }
4563
+ ]
4564
+ },
4565
+ "operator": {
4566
+ "multiple": false,
4567
+ "required": false,
4568
+ "types": [
4569
+ {
4570
+ "type": "prefix_id",
4571
+ "named": true
4572
+ }
4573
+ ]
4574
+ },
4575
+ "type": {
4576
+ "multiple": false,
4577
+ "required": false,
4578
+ "types": [
4579
+ {
4580
+ "type": "name",
4581
+ "named": true
4582
+ },
4583
+ {
4584
+ "type": "qualified",
4585
+ "named": true
4586
+ }
4587
+ ]
4588
+ },
4589
+ "variable": {
4590
+ "multiple": false,
4591
+ "required": false,
4592
+ "types": [
4593
+ {
4594
+ "type": "qualified",
4595
+ "named": true
4596
+ },
4597
+ {
4598
+ "type": "variable",
4599
+ "named": true
4600
+ }
4601
+ ]
4602
+ }
4603
+ }
4604
+ },
4491
4605
  {
4492
4606
  "type": "negation",
4493
4607
  "named": true,
Binary file
Binary file
package/tree-sitter.json CHANGED
@@ -35,7 +35,7 @@
35
35
  }
36
36
  ],
37
37
  "metadata": {
38
- "version": "12.1.0",
38
+ "version": "13.1.0",
39
39
  "license": "MIT",
40
40
  "description": "Haskell grammar for tree-sitter",
41
41
  "authors": [