@willbooster/tree-sitter-haskell 12.1.0 → 13.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -22,6 +22,7 @@ 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.
25
26
  - **OrPatterns**: parenthesized alternatives separated by semicolons, such as `(A; B)`, parse as an `or_pattern` node with an `alternative` field for each pattern.
26
27
  - **MultilineStrings**: triple-quoted literals retain their complete source as a single `string` node, including embedded quotes, escapes, and string gaps.
27
28
  - **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
  ),
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
  // ------------------------------------------------------------------------
@@ -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
  {
@@ -2518,6 +2488,20 @@
2518
2488
  }
2519
2489
  ]
2520
2490
  },
2491
+ "constructor": {
2492
+ "multiple": false,
2493
+ "required": false,
2494
+ "types": [
2495
+ {
2496
+ "type": "constructor",
2497
+ "named": true
2498
+ },
2499
+ {
2500
+ "type": "qualified",
2501
+ "named": true
2502
+ }
2503
+ ]
2504
+ },
2521
2505
  "namespace": {
2522
2506
  "multiple": false,
2523
2507
  "required": false,
@@ -2861,6 +2845,16 @@
2861
2845
  }
2862
2846
  ]
2863
2847
  },
2848
+ "namespace": {
2849
+ "multiple": false,
2850
+ "required": false,
2851
+ "types": [
2852
+ {
2853
+ "type": "namespace",
2854
+ "named": true
2855
+ }
2856
+ ]
2857
+ },
2864
2858
  "operator": {
2865
2859
  "multiple": true,
2866
2860
  "required": true,
@@ -3636,6 +3630,20 @@
3636
3630
  }
3637
3631
  ]
3638
3632
  },
3633
+ "constructor": {
3634
+ "multiple": false,
3635
+ "required": false,
3636
+ "types": [
3637
+ {
3638
+ "type": "constructor",
3639
+ "named": true
3640
+ },
3641
+ {
3642
+ "type": "qualified",
3643
+ "named": true
3644
+ }
3645
+ ]
3646
+ },
3639
3647
  "namespace": {
3640
3648
  "multiple": false,
3641
3649
  "required": false,
@@ -4643,6 +4651,74 @@
4643
4651
  "named": true,
4644
4652
  "fields": {}
4645
4653
  },
4654
+ {
4655
+ "type": "namespaced_child",
4656
+ "named": true,
4657
+ "fields": {
4658
+ "constructor": {
4659
+ "multiple": false,
4660
+ "required": false,
4661
+ "types": [
4662
+ {
4663
+ "type": "constructor",
4664
+ "named": true
4665
+ },
4666
+ {
4667
+ "type": "qualified",
4668
+ "named": true
4669
+ }
4670
+ ]
4671
+ },
4672
+ "namespace": {
4673
+ "multiple": false,
4674
+ "required": true,
4675
+ "types": [
4676
+ {
4677
+ "type": "namespace",
4678
+ "named": true
4679
+ }
4680
+ ]
4681
+ },
4682
+ "operator": {
4683
+ "multiple": false,
4684
+ "required": false,
4685
+ "types": [
4686
+ {
4687
+ "type": "prefix_id",
4688
+ "named": true
4689
+ }
4690
+ ]
4691
+ },
4692
+ "type": {
4693
+ "multiple": false,
4694
+ "required": false,
4695
+ "types": [
4696
+ {
4697
+ "type": "name",
4698
+ "named": true
4699
+ },
4700
+ {
4701
+ "type": "qualified",
4702
+ "named": true
4703
+ }
4704
+ ]
4705
+ },
4706
+ "variable": {
4707
+ "multiple": false,
4708
+ "required": false,
4709
+ "types": [
4710
+ {
4711
+ "type": "qualified",
4712
+ "named": true
4713
+ },
4714
+ {
4715
+ "type": "variable",
4716
+ "named": true
4717
+ }
4718
+ ]
4719
+ }
4720
+ }
4721
+ },
4646
4722
  {
4647
4723
  "type": "negation",
4648
4724
  "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.0.0",
4
4
  "description": "Haskell grammar for tree-sitter",
5
5
  "keywords": [
6
6
  "incremental",
@@ -116,6 +116,8 @@
116
116
  "infixr"
117
117
  ] @keyword
118
118
 
119
+ (namespace) @keyword
120
+
119
121
  [
120
122
  (function name: (variable) @function)
121
123
  (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
  {
@@ -2458,6 +2428,20 @@
2458
2428
  }
2459
2429
  ]
2460
2430
  },
2431
+ "constructor": {
2432
+ "multiple": false,
2433
+ "required": false,
2434
+ "types": [
2435
+ {
2436
+ "type": "constructor",
2437
+ "named": true
2438
+ },
2439
+ {
2440
+ "type": "qualified",
2441
+ "named": true
2442
+ }
2443
+ ]
2444
+ },
2461
2445
  "namespace": {
2462
2446
  "multiple": false,
2463
2447
  "required": false,
@@ -2791,6 +2775,16 @@
2791
2775
  }
2792
2776
  ]
2793
2777
  },
2778
+ "namespace": {
2779
+ "multiple": false,
2780
+ "required": false,
2781
+ "types": [
2782
+ {
2783
+ "type": "namespace",
2784
+ "named": true
2785
+ }
2786
+ ]
2787
+ },
2794
2788
  "operator": {
2795
2789
  "multiple": true,
2796
2790
  "required": true,
@@ -3520,6 +3514,20 @@
3520
3514
  }
3521
3515
  ]
3522
3516
  },
3517
+ "constructor": {
3518
+ "multiple": false,
3519
+ "required": false,
3520
+ "types": [
3521
+ {
3522
+ "type": "constructor",
3523
+ "named": true
3524
+ },
3525
+ {
3526
+ "type": "qualified",
3527
+ "named": true
3528
+ }
3529
+ ]
3530
+ },
3523
3531
  "namespace": {
3524
3532
  "multiple": false,
3525
3533
  "required": false,
@@ -4488,6 +4496,74 @@
4488
4496
  "named": true,
4489
4497
  "fields": {}
4490
4498
  },
4499
+ {
4500
+ "type": "namespaced_child",
4501
+ "named": true,
4502
+ "fields": {
4503
+ "constructor": {
4504
+ "multiple": false,
4505
+ "required": false,
4506
+ "types": [
4507
+ {
4508
+ "type": "constructor",
4509
+ "named": true
4510
+ },
4511
+ {
4512
+ "type": "qualified",
4513
+ "named": true
4514
+ }
4515
+ ]
4516
+ },
4517
+ "namespace": {
4518
+ "multiple": false,
4519
+ "required": true,
4520
+ "types": [
4521
+ {
4522
+ "type": "namespace",
4523
+ "named": true
4524
+ }
4525
+ ]
4526
+ },
4527
+ "operator": {
4528
+ "multiple": false,
4529
+ "required": false,
4530
+ "types": [
4531
+ {
4532
+ "type": "prefix_id",
4533
+ "named": true
4534
+ }
4535
+ ]
4536
+ },
4537
+ "type": {
4538
+ "multiple": false,
4539
+ "required": false,
4540
+ "types": [
4541
+ {
4542
+ "type": "name",
4543
+ "named": true
4544
+ },
4545
+ {
4546
+ "type": "qualified",
4547
+ "named": true
4548
+ }
4549
+ ]
4550
+ },
4551
+ "variable": {
4552
+ "multiple": false,
4553
+ "required": false,
4554
+ "types": [
4555
+ {
4556
+ "type": "qualified",
4557
+ "named": true
4558
+ },
4559
+ {
4560
+ "type": "variable",
4561
+ "named": true
4562
+ }
4563
+ ]
4564
+ }
4565
+ }
4566
+ },
4491
4567
  {
4492
4568
  "type": "negation",
4493
4569
  "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.0.0",
39
39
  "license": "MIT",
40
40
  "description": "Haskell grammar for tree-sitter",
41
41
  "authors": [