| 1411 | } |
| 1412 | |
| 1413 | static void emit_unresolved(PHPLSPContext *ctx, const char *expr_text, const char *reason) { |
| 1414 | if (!ctx->resolved_calls || !ctx->enclosing_func_qn) |
| 1415 | return; |
| 1416 | CBMResolvedCall rc = {0}; |
| 1417 | rc.caller_qn = ctx->enclosing_func_qn; |
| 1418 | rc.callee_qn = expr_text ? expr_text : "?"; |
| 1419 | rc.strategy = "lsp_unresolved"; |
| 1420 | rc.confidence = 0.0f; |
| 1421 | rc.reason = reason; |
| 1422 | cbm_resolvedcall_push(ctx->resolved_calls, ctx->arena, rc); |
| 1423 | } |
| 1424 | |
| 1425 | /* ── statement-level scope binding ──────────────────────────────── */ |
| 1426 |
nothing calls this directly
no test coverage detected