@willbooster/tree-sitter-python 2.2.0 → 2.3.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/grammar.js CHANGED
@@ -43,6 +43,12 @@ module.exports = grammar({
43
43
  extras: ($) => [$.comment, /[\s\f\uFEFF\u2060\u200B]|\r?\n/, $.line_continuation],
44
44
 
45
45
  conflicts: ($) => [
46
+ [$.default_type_parameter, $.primary_expression],
47
+ [$.primary_expression, $._default_type_primary],
48
+ [$.primary_expression, $._default_generic_type],
49
+ [$.primary_expression, $._default_member_type],
50
+ [$.list, $._default_type_list],
51
+ [$._type_parameter_expression, $.expression],
46
52
  [$.primary_expression, $.pattern],
47
53
  [$.primary_expression, $.list_splat_pattern],
48
54
  [$.tuple, $.tuple_pattern],
@@ -94,6 +100,8 @@ module.exports = grammar({
94
100
  $._expressions,
95
101
  $._left_hand_side,
96
102
  $.keyword_identifier,
103
+ $._type_parameter_name,
104
+ $._default_member_base,
97
105
  ],
98
106
 
99
107
  reserved: {
@@ -393,7 +401,100 @@ module.exports = grammar({
393
401
  ':',
394
402
  field('body', $._suite)
395
403
  ),
396
- type_parameter: ($) => seq('[', commaSep1(choice($.type, $.splat_type)), optional(','), ']'),
404
+ type_parameter: ($) =>
405
+ seq('[', commaSep1(choice($.type, $.splat_type, $.default_type_parameter)), optional(','), ']'),
406
+
407
+ default_type_parameter: ($) =>
408
+ choice(
409
+ seq(
410
+ choice(
411
+ seq(
412
+ field('name', $._type_parameter_name),
413
+ optional(seq(':', field('bound', alias($._type_parameter_expression, $.type))))
414
+ ),
415
+ seq('**', field('name', $._type_parameter_name))
416
+ ),
417
+ '=',
418
+ field('value', alias($._type_parameter_expression, $.type))
419
+ ),
420
+ seq(
421
+ '*',
422
+ field('name', $._type_parameter_name),
423
+ '=',
424
+ field(
425
+ 'value',
426
+ choice(alias($._type_parameter_expression, $.type), alias($._default_splat_type, $.list_splat))
427
+ )
428
+ )
429
+ ),
430
+
431
+ _type_parameter_name: ($) =>
432
+ choice($.identifier, alias(choice('type', 'match', 'print', 'exec', 'lazy'), $.identifier)),
433
+
434
+ _default_member_base: ($) => choice($._type_parameter_name, alias($._default_member_type, $.member_type)),
435
+
436
+ _type_parameter_expression: ($) => choice($._expression_without_named_expression, prec.dynamic(1, $._default_type)),
437
+
438
+ _default_type: ($) => choice($._default_type_primary, alias($._default_union_type, $.union_type)),
439
+
440
+ _default_type_primary: ($) =>
441
+ choice(
442
+ $.identifier,
443
+ $.keyword_identifier,
444
+ $.none,
445
+ $.string,
446
+ alias($._default_member_type, $.member_type),
447
+ alias($._default_generic_type, $.generic_type),
448
+ alias($._default_type_list, $.list),
449
+ alias($._default_type_tuple, $.tuple),
450
+ alias($._default_parenthesized_type, $.parenthesized_expression)
451
+ ),
452
+
453
+ _default_member_type: ($) => seq($._default_member_base, '.', $.identifier),
454
+
455
+ _default_generic_type: ($) => seq($._default_member_base, alias($._default_type_arguments, $.type_parameter)),
456
+
457
+ _default_union_type: ($) =>
458
+ prec.left(PREC.bitwise_or, seq(alias($._default_type, $.type), '|', alias($._default_type_primary, $.type))),
459
+
460
+ _default_parenthesized_type: ($) => seq('(', alias($._default_type, $.type), ')'),
461
+
462
+ _default_type_arguments: ($) =>
463
+ seq(
464
+ '[',
465
+ commaSep1(
466
+ choice(
467
+ alias($._type_parameter_expression, $.type),
468
+ $.named_expression,
469
+ alias($._default_splat_argument, $.splat_type),
470
+ $.slice
471
+ )
472
+ ),
473
+ optional(','),
474
+ ']'
475
+ ),
476
+
477
+ _default_splat_argument: ($) => seq('*', alias($._type_parameter_expression, $.type)),
478
+
479
+ _default_type_list: ($) =>
480
+ prec.dynamic(
481
+ 1,
482
+ seq('[', optional(seq(commaSep1(alias($._type_parameter_expression, $.type)), optional(','))), ']')
483
+ ),
484
+
485
+ _default_type_tuple: ($) =>
486
+ prec.dynamic(
487
+ 1,
488
+ seq(
489
+ '(',
490
+ alias($._type_parameter_expression, $.type),
491
+ ',',
492
+ optional(seq(commaSep1(alias($._type_parameter_expression, $.type)), optional(','))),
493
+ ')'
494
+ )
495
+ ),
496
+
497
+ _default_splat_type: ($) => seq('*', choice($.primary_expression, prec.dynamic(1, alias($._default_type, $.type)))),
397
498
 
398
499
  _generic_type_arguments: ($) =>
399
500
  seq('[', commaSep1(choice($.type, alias($._list_splat_argument, $.splat_type))), optional(','), ']'),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@willbooster/tree-sitter-python",
3
- "version": "2.2.0",
3
+ "version": "2.3.0",
4
4
  "description": "Python grammar for tree-sitter",
5
5
  "keywords": [
6
6
  "incremental",
@@ -63,6 +63,9 @@
63
63
 
64
64
  (attribute attribute: (identifier) @property)
65
65
  (type (identifier) @type)
66
+ (member_type (identifier) @type)
67
+ (generic_type (identifier) @type)
68
+ (default_type_parameter name: (identifier) @type)
66
69
 
67
70
  ; Literals
68
71
 
@@ -1307,6 +1307,46 @@
1307
1307
  }
1308
1308
  }
1309
1309
  },
1310
+ {
1311
+ "type": "default_type_parameter",
1312
+ "named": true,
1313
+ "fields": {
1314
+ "bound": {
1315
+ "multiple": false,
1316
+ "required": false,
1317
+ "types": [
1318
+ {
1319
+ "type": "type",
1320
+ "named": true
1321
+ }
1322
+ ]
1323
+ },
1324
+ "name": {
1325
+ "multiple": false,
1326
+ "required": true,
1327
+ "types": [
1328
+ {
1329
+ "type": "identifier",
1330
+ "named": true
1331
+ }
1332
+ ]
1333
+ },
1334
+ "value": {
1335
+ "multiple": false,
1336
+ "required": true,
1337
+ "types": [
1338
+ {
1339
+ "type": "list_splat",
1340
+ "named": true
1341
+ },
1342
+ {
1343
+ "type": "type",
1344
+ "named": true
1345
+ }
1346
+ ]
1347
+ }
1348
+ }
1349
+ },
1310
1350
  {
1311
1351
  "type": "delete_statement",
1312
1352
  "named": true,
@@ -1994,6 +2034,10 @@
1994
2034
  "type": "identifier",
1995
2035
  "named": true
1996
2036
  },
2037
+ {
2038
+ "type": "member_type",
2039
+ "named": true
2040
+ },
1997
2041
  {
1998
2042
  "type": "type_parameter",
1999
2043
  "named": true
@@ -2370,6 +2414,10 @@
2370
2414
  {
2371
2415
  "type": "list_splat",
2372
2416
  "named": true
2417
+ },
2418
+ {
2419
+ "type": "type",
2420
+ "named": true
2373
2421
  }
2374
2422
  ]
2375
2423
  }
@@ -2458,6 +2506,10 @@
2458
2506
  {
2459
2507
  "type": "primary_expression",
2460
2508
  "named": true
2509
+ },
2510
+ {
2511
+ "type": "type",
2512
+ "named": true
2461
2513
  }
2462
2514
  ]
2463
2515
  }
@@ -2527,6 +2579,10 @@
2527
2579
  "type": "identifier",
2528
2580
  "named": true
2529
2581
  },
2582
+ {
2583
+ "type": "member_type",
2584
+ "named": true
2585
+ },
2530
2586
  {
2531
2587
  "type": "type",
2532
2588
  "named": true
@@ -2785,6 +2841,10 @@
2785
2841
  "type": "expression",
2786
2842
  "named": true
2787
2843
  },
2844
+ {
2845
+ "type": "type",
2846
+ "named": true
2847
+ },
2788
2848
  {
2789
2849
  "type": "yield",
2790
2850
  "named": true
@@ -3029,6 +3089,10 @@
3029
3089
  {
3030
3090
  "type": "primary_expression",
3031
3091
  "named": true
3092
+ },
3093
+ {
3094
+ "type": "type",
3095
+ "named": true
3032
3096
  }
3033
3097
  ]
3034
3098
  }
@@ -3162,6 +3226,10 @@
3162
3226
  {
3163
3227
  "type": "list_splat",
3164
3228
  "named": true
3229
+ },
3230
+ {
3231
+ "type": "type",
3232
+ "named": true
3165
3233
  }
3166
3234
  ]
3167
3235
  }
@@ -3205,10 +3273,6 @@
3205
3273
  "type": "generic_type",
3206
3274
  "named": true
3207
3275
  },
3208
- {
3209
- "type": "identifier",
3210
- "named": true
3211
- },
3212
3276
  {
3213
3277
  "type": "member_type",
3214
3278
  "named": true
@@ -3254,6 +3318,18 @@
3254
3318
  "multiple": true,
3255
3319
  "required": true,
3256
3320
  "types": [
3321
+ {
3322
+ "type": "default_type_parameter",
3323
+ "named": true
3324
+ },
3325
+ {
3326
+ "type": "named_expression",
3327
+ "named": true
3328
+ },
3329
+ {
3330
+ "type": "slice",
3331
+ "named": true
3332
+ },
3257
3333
  {
3258
3334
  "type": "splat_type",
3259
3335
  "named": true
Binary file
package/tree-sitter.json CHANGED
@@ -19,7 +19,7 @@
19
19
  }
20
20
  ],
21
21
  "metadata": {
22
- "version": "2.2.0",
22
+ "version": "2.3.0",
23
23
  "license": "MIT",
24
24
  "description": "Python grammar for tree-sitter",
25
25
  "authors": [