| 792 | } |
| 793 | |
| 794 | static void extract_channels_csharp(CBMExtractCtx *ctx) { |
| 795 | TSNodeStack stack; |
| 796 | ts_nstack_init(&stack, ctx->arena, CHAN_STACK_CAP); |
| 797 | ts_nstack_push(&stack, ctx->arena, ctx->root); |
| 798 | |
| 799 | while (stack.count > 0) { |
| 800 | TSNode node = ts_nstack_pop(&stack); |
| 801 | if (strcmp(ts_node_type(node), "invocation_expression") == 0) { |
| 802 | csharp_process_call(ctx, node); |
| 803 | } |
| 804 | uint32_t count = ts_node_child_count(node); |
| 805 | for (int i = (int)count - SKIP_ONE; i >= 0; i--) { |
| 806 | ts_nstack_push(&stack, ctx->arena, ts_node_child(node, (uint32_t)i)); |
| 807 | } |
| 808 | } |
| 809 | } |
| 810 | |
| 811 | /* ══════════════════════════════════════════════════════════════════ |
| 812 | * Ruby — ActionCable (broadcast / stream_from) |
no test coverage detected