| 1740 | } exact_noncallable_reference_probe_t; |
| 1741 | |
| 1742 | static void inject_exact_noncallable_reference(CBMFileResult **result_cache, int file_count, |
| 1743 | void *ud) { |
| 1744 | exact_noncallable_reference_probe_t *probe = (exact_noncallable_reference_probe_t *)ud; |
| 1745 | if (!probe || !result_cache) { |
| 1746 | return; |
| 1747 | } |
| 1748 | for (int file = 0; file < file_count; file++) { |
| 1749 | CBMFileResult *result = result_cache[file]; |
| 1750 | if (!result) { |
| 1751 | continue; |
| 1752 | } |
| 1753 | const char *caller_qn = NULL; |
| 1754 | const char *target_qn = NULL; |
| 1755 | for (int i = 0; i < result->defs.count; i++) { |
| 1756 | const CBMDefinition *definition = &result->defs.items[i]; |
| 1757 | if (definition->name && definition->qualified_name && |
| 1758 | strcmp(definition->name, "carrier") == 0) { |
| 1759 | caller_qn = definition->qualified_name; |
| 1760 | } |
| 1761 | if (definition->name && definition->qualified_name && definition->label && |
| 1762 | strcmp(definition->name, "semanticValue") == 0 && |
| 1763 | strcmp(definition->label, "Variable") == 0) { |
| 1764 | target_qn = definition->qualified_name; |
| 1765 | } |
| 1766 | } |
| 1767 | if (!caller_qn || !target_qn) { |
| 1768 | continue; |
| 1769 | } |
| 1770 | |
| 1771 | result->usages.count = 0; |
| 1772 | result->resolved_calls.count = 0; |
| 1773 | CBMUsage usage = {0}; |
| 1774 | usage.ref_name = "semanticAlias"; |
| 1775 | usage.enclosing_func_qn = caller_qn; |
| 1776 | usage.kind = CBM_USAGE_VALUE; |
| 1777 | usage.may_be_call_reference = true; |
| 1778 | /* The raw-name path is deliberately unavailable. A resulting USAGE |
| 1779 | * therefore proves that the exact semantic row was joined and then |
| 1780 | * classified by the materialized target's non-callable label. */ |
| 1781 | usage.semantic_reference_blocked = true; |
| 1782 | usage.site_start_byte = 40000U; |
| 1783 | usage.site_end_byte = 40000U + (uint32_t)strlen(usage.ref_name); |
| 1784 | cbm_usages_push(&result->usages, &result->arena, usage); |
| 1785 | |
| 1786 | CBMResolvedCall resolved = {0}; |
| 1787 | resolved.caller_qn = caller_qn; |
| 1788 | resolved.callee_qn = target_qn; |
| 1789 | resolved.strategy = "lsp_callable_value_reference"; |
| 1790 | resolved.reason = usage.ref_name; |
| 1791 | resolved.confidence = 0.99f; |
| 1792 | resolved.kind = CBM_RESOLVED_CALL_REFERENCE; |
| 1793 | resolved.site_start_byte = usage.site_start_byte; |
| 1794 | resolved.site_end_byte = usage.site_end_byte; |
| 1795 | cbm_resolvedcall_push(&result->resolved_calls, &result->arena, resolved); |
| 1796 | probe->injected = true; |
| 1797 | return; |
| 1798 | } |
| 1799 | } |
nothing calls this directly
no test coverage detected