|
22 | 22 | (assignment !type) @assign
|
23 | 23 | { let @assign.node = (ast-node @assign "Assign") }
|
24 | 24 |
|
25 |
| -[ (expression_list) (tuple) (tuple_pattern) (pattern_list) ] @tuple |
| 25 | +[ (expression_list) (tuple) (tuple_pattern) (pattern_list) (index_expression_list) ] @tuple |
26 | 26 | { let @tuple.node = (ast-node @tuple "Tuple") }
|
27 | 27 |
|
28 | 28 | (list_pattern) @list
|
|
2543 | 2543 |
|
2544 | 2544 | (subscript
|
2545 | 2545 | value: (_) @value
|
| 2546 | + subscript: (_) @index |
2546 | 2547 | ) @subscript
|
2547 | 2548 | {
|
2548 | 2549 | attr (@subscript.node) value = @value.node
|
2549 | 2550 | attr (@value.node) ctx = "load"
|
2550 |
| -} |
2551 | 2551 |
|
2552 |
| -; Single subscript |
2553 |
| -(subscript |
2554 |
| - value: (_) |
2555 |
| - . |
2556 |
| - subscript: (_) @index |
2557 |
| - . |
2558 |
| -) @subscript |
2559 |
| -{ |
2560 | 2552 | attr (@subscript.node) index = @index.node
|
2561 | 2553 | attr (@index.node) ctx = "load"
|
2562 | 2554 | }
|
2563 | 2555 |
|
2564 |
| -; For expressions of the form `a[b, c]` we must explicitly synthesize an internal tuple node |
2565 |
| -; We do this and also hook it up: |
2566 |
| -(subscript |
2567 |
| - value: (_) |
2568 |
| - . |
2569 |
| - subscript: (_) @first |
2570 |
| - . |
2571 |
| - subscript: (_) |
2572 |
| -) @subscript |
2573 |
| -{ |
2574 |
| - let @subscript.tuple = (ast-node @first "Tuple") |
2575 |
| - attr (@subscript.tuple) ctx = "load" |
2576 |
| - attr (@subscript.node) index = @subscript.tuple |
2577 |
| - edge @subscript.tuple -> @first.node |
2578 |
| - attr (@subscript.tuple -> @first.node) elts = (named-child-index @first) |
2579 |
| - attr (@first.node) ctx = "load" |
2580 |
| -} |
2581 |
| - |
2582 |
| -(subscript |
2583 |
| - value: (_) |
2584 |
| - . |
2585 |
| - subscript: (_) |
2586 |
| - subscript: (_) @elt |
2587 |
| -) @subscript |
2588 |
| -{ |
2589 |
| - edge @subscript.tuple -> @elt.node |
2590 |
| - attr (@subscript.tuple -> @elt.node) elts = (named-child-index @elt) |
2591 |
| - attr (@elt.node) ctx = "load" |
2592 |
| -} |
2593 |
| - |
2594 |
| - |
2595 |
| -; Set the end position correctly |
2596 |
| -(subscript |
2597 |
| - value: (_) |
2598 |
| - . |
2599 |
| - subscript: (_) |
2600 |
| - subscript: (_) @last |
2601 |
| - . |
2602 |
| -) @subscript |
2603 |
| -{ |
2604 |
| - attr (@subscript.tuple) _location_end = (location-end @last) |
2605 |
| -} |
2606 | 2556 |
|
2607 | 2557 |
|
2608 | 2558 |
|
|
3448 | 3398 | ; Left hand side of an assignment such as `[foo, bar] = ...`
|
3449 | 3399 | (list_pattern element: (_) @elt) @parent
|
3450 | 3400 |
|
3451 |
| - ; An unadorned tuple (such as in `x = y, z`) |
| 3401 | + ; An unadorned tuple such as in `x = y, z` |
3452 | 3402 | (expression_list element: (_) @elt) @parent
|
3453 | 3403 |
|
| 3404 | + ; An index containing multiple indices such as in `x[y, z]` |
| 3405 | + (index_expression_list element: (_) @elt) @parent |
| 3406 | + |
3454 | 3407 | ; A regular tuple such as `(x, y, z)`
|
3455 | 3408 | (tuple element: (_) @elt) @parent
|
3456 | 3409 |
|
|
3486 | 3439 | (pattern_list element: (_) @elt)
|
3487 | 3440 | (list_pattern element: (_) @elt)
|
3488 | 3441 | (expression_list element: (_) @elt)
|
| 3442 | + (index_expression_list element: (_) @elt) |
3489 | 3443 | (parenthesized_expression inner: (_) @elt)
|
3490 | 3444 | (set element: (_) @elt)
|
3491 | 3445 | (match_sequence_pattern (_) @elt)
|
|
0 commit comments