| 1843 | } exact_noncallable_reference_probe_t; |
| 1844 | |
| 1845 | static void inject_exact_noncallable_reference(CBMFileResult **result_cache, int file_count, |
| 1846 | void *ud) { |
| 1847 | exact_noncallable_reference_probe_t *probe = (exact_noncallable_reference_probe_t *)ud; |
| 1848 | if (!probe || !result_cache) { |
| 1849 | return; |
| 1850 | } |
| 1851 | for (int file = 0; file < file_count; file++) { |
| 1852 | CBMFileResult *result = result_cache[file]; |
| 1853 | if (!result) { |
| 1854 | continue; |
| 1855 | } |
| 1856 | const char *caller_qn = NULL; |
| 1857 | const char *target_qn = NULL; |
| 1858 | for (int i = 0; i < result->defs.count; i++) { |
| 1859 | const CBMDefinition *definition = &result->defs.items[i]; |
| 1860 | if (definition->name && definition->qualified_name && |
| 1861 | strcmp(definition->name, "carrier") == 0) { |
| 1862 | caller_qn = definition->qualified_name; |
| 1863 | } |
| 1864 | if (definition->name && definition->qualified_name && definition->label && |
| 1865 | strcmp(definition->name, "semanticValue") == 0 && |
| 1866 | strcmp(definition->label, "Variable") == 0) { |
| 1867 | target_qn = definition->qualified_name; |
| 1868 | } |
| 1869 | } |
| 1870 | if (!caller_qn || !target_qn) { |
| 1871 | continue; |
| 1872 | } |
| 1873 | |
| 1874 | result->usages.count = 0; |
| 1875 | result->resolved_calls.count = 0; |
| 1876 | CBMUsage usage = {0}; |
| 1877 | usage.ref_name = "semanticAlias"; |
| 1878 | usage.enclosing_func_qn = caller_qn; |
| 1879 | usage.kind = CBM_USAGE_VALUE; |
| 1880 | usage.may_be_call_reference = true; |
| 1881 | /* The raw-name path is deliberately unavailable. A resulting USAGE |
| 1882 | * therefore proves that the exact semantic row was joined and then |
| 1883 | * classified by the materialized target's non-callable label. */ |
| 1884 | usage.semantic_reference_blocked = true; |
| 1885 | usage.site_start_byte = 40000U; |
| 1886 | usage.site_end_byte = 40000U + (uint32_t)strlen(usage.ref_name); |
| 1887 | cbm_usages_push(&result->usages, &result->arena, usage); |
| 1888 | |
| 1889 | CBMResolvedCall resolved = {0}; |
| 1890 | resolved.caller_qn = caller_qn; |
| 1891 | resolved.callee_qn = target_qn; |
| 1892 | resolved.strategy = "lsp_callable_value_reference"; |
| 1893 | resolved.reason = usage.ref_name; |
| 1894 | resolved.confidence = 0.99f; |
| 1895 | resolved.kind = CBM_RESOLVED_CALL_REFERENCE; |
| 1896 | resolved.site_start_byte = usage.site_start_byte; |
| 1897 | resolved.site_end_byte = usage.site_end_byte; |
| 1898 | cbm_resolvedcall_push(&result->resolved_calls, &result->arena, resolved); |
| 1899 | probe->injected = true; |
| 1900 | return; |
| 1901 | } |
| 1902 | } |
nothing calls this directly
no test coverage detected