| 957 | } |
| 958 | |
| 959 | static void extract_channels_elixir(CBMExtractCtx *ctx) { |
| 960 | TSNodeStack stack; |
| 961 | ts_nstack_init(&stack, ctx->arena, CHAN_STACK_CAP); |
| 962 | ts_nstack_push(&stack, ctx->arena, ctx->root); |
| 963 | |
| 964 | while (stack.count > 0) { |
| 965 | TSNode node = ts_nstack_pop(&stack); |
| 966 | const char *kind = ts_node_type(node); |
| 967 | if (strcmp(kind, "call") == 0) { |
| 968 | elixir_process_call(ctx, node); |
| 969 | } else if (strcmp(kind, "def") == 0) { |
| 970 | elixir_process_function_def(ctx, node); |
| 971 | } |
| 972 | uint32_t count = ts_node_child_count(node); |
| 973 | for (int i = (int)count - SKIP_ONE; i >= 0; i--) { |
| 974 | ts_nstack_push(&stack, ctx->arena, ts_node_child(node, (uint32_t)i)); |
| 975 | } |
| 976 | } |
| 977 | } |
| 978 | |
| 979 | /* ══════════════════════════════════════════════════════════════════ |
| 980 | * Rust — tokio-tungstenite (sink.send / stream.next) |
no test coverage detected