Kotlin convention-desugared calls that the call walk never sees as call_expressions: `val (a,b) = e` -> e.component1()/e.component2(); and `for (x in e)` -> e.iterator()/hasNext()/next(). Record textual calls to those operator-convention method names so the LSP's lsp_kt_destructure / lsp_kt_iterator resolutions have a call site to join (names match the LSP's).
| 2335 | // operator-convention method names so the LSP's lsp_kt_destructure / |
| 2336 | // lsp_kt_iterator resolutions have a call site to join (names match the LSP's). |
| 2337 | static void kt_push_implicit_call(CBMExtractCtx *ctx, TSNode node, const char *callee, |
| 2338 | const char *enclosing_func_qn) { |
| 2339 | CBMCall call = {0}; |
| 2340 | call.callee_name = callee; |
| 2341 | call.enclosing_func_qn = enclosing_func_qn; |
| 2342 | call.start_line = (int)ts_node_start_point(node).row + TS_LINE_OFFSET; |
| 2343 | call.site_start_byte = ts_node_start_byte(node); |
| 2344 | call.site_end_byte = ts_node_end_byte(node); |
| 2345 | call.requires_lsp_resolution = true; |
| 2346 | cbm_calls_push(&ctx->result->calls, ctx->arena, call); |
| 2347 | } |
| 2348 | |
| 2349 | static void push_cpp_semantic_call_candidate(CBMExtractCtx *ctx, TSNode node, |
| 2350 | const char *callee_name, |
no test coverage detected