| 281 | } |
| 282 | |
| 283 | static void cr_walk(cr_ctx_t *c, CBMFileResult *r) { |
| 284 | cr_array(c, (void **)&r->defs.items, r->defs.count, sizeof(CBMDefinition)); |
| 285 | for (int i = 0; i < r->defs.count && r->defs.items; i++) { |
| 286 | cr_walk_def(c, &r->defs.items[i]); |
| 287 | } |
| 288 | cr_array(c, (void **)&r->calls.items, r->calls.count, sizeof(CBMCall)); |
| 289 | for (int i = 0; i < r->calls.count && r->calls.items; i++) { |
| 290 | cr_walk_call(c, &r->calls.items[i]); |
| 291 | } |
| 292 | cr_array(c, (void **)&r->imports.items, r->imports.count, sizeof(CBMImport)); |
| 293 | for (int i = 0; i < r->imports.count && r->imports.items; i++) { |
| 294 | cr_str(c, &r->imports.items[i].local_name); |
| 295 | cr_str(c, &r->imports.items[i].module_path); |
| 296 | } |
| 297 | cr_array(c, (void **)&r->usages.items, r->usages.count, sizeof(CBMUsage)); |
| 298 | for (int i = 0; i < r->usages.count && r->usages.items; i++) { |
| 299 | cr_str(c, &r->usages.items[i].ref_name); |
| 300 | cr_str(c, &r->usages.items[i].enclosing_func_qn); |
| 301 | } |
| 302 | cr_array(c, (void **)&r->throws.items, r->throws.count, sizeof(CBMThrow)); |
| 303 | for (int i = 0; i < r->throws.count && r->throws.items; i++) { |
| 304 | cr_str(c, &r->throws.items[i].exception_name); |
| 305 | cr_str(c, &r->throws.items[i].enclosing_func_qn); |
| 306 | } |
| 307 | cr_array(c, (void **)&r->rw.items, r->rw.count, sizeof(CBMReadWrite)); |
| 308 | for (int i = 0; i < r->rw.count && r->rw.items; i++) { |
| 309 | cr_str(c, &r->rw.items[i].var_name); |
| 310 | cr_str(c, &r->rw.items[i].enclosing_func_qn); |
| 311 | } |
| 312 | cr_array(c, (void **)&r->type_refs.items, r->type_refs.count, sizeof(CBMTypeRef)); |
| 313 | for (int i = 0; i < r->type_refs.count && r->type_refs.items; i++) { |
| 314 | cr_str(c, &r->type_refs.items[i].type_name); |
| 315 | cr_str(c, &r->type_refs.items[i].enclosing_func_qn); |
| 316 | } |
| 317 | cr_array(c, (void **)&r->env_accesses.items, r->env_accesses.count, sizeof(CBMEnvAccess)); |
| 318 | for (int i = 0; i < r->env_accesses.count && r->env_accesses.items; i++) { |
| 319 | cr_str(c, &r->env_accesses.items[i].env_key); |
| 320 | cr_str(c, &r->env_accesses.items[i].enclosing_func_qn); |
| 321 | } |
| 322 | cr_array(c, (void **)&r->type_assigns.items, r->type_assigns.count, sizeof(CBMTypeAssign)); |
| 323 | for (int i = 0; i < r->type_assigns.count && r->type_assigns.items; i++) { |
| 324 | cr_str(c, &r->type_assigns.items[i].var_name); |
| 325 | cr_str(c, &r->type_assigns.items[i].type_name); |
| 326 | cr_str(c, &r->type_assigns.items[i].enclosing_func_qn); |
| 327 | } |
| 328 | cr_array(c, (void **)&r->impl_traits.items, r->impl_traits.count, sizeof(CBMImplTrait)); |
| 329 | for (int i = 0; i < r->impl_traits.count && r->impl_traits.items; i++) { |
| 330 | cr_str(c, &r->impl_traits.items[i].trait_name); |
| 331 | cr_str(c, &r->impl_traits.items[i].struct_name); |
| 332 | cr_str(c, &r->impl_traits.items[i].struct_qn); |
| 333 | } |
| 334 | cr_array(c, (void **)&r->resolved_calls.items, r->resolved_calls.count, |
| 335 | sizeof(CBMResolvedCall)); |
| 336 | for (int i = 0; i < r->resolved_calls.count && r->resolved_calls.items; i++) { |
| 337 | cr_str(c, &r->resolved_calls.items[i].caller_qn); |
| 338 | cr_str(c, &r->resolved_calls.items[i].callee_qn); |
| 339 | cr_str(c, &r->resolved_calls.items[i].strategy); |
| 340 | cr_str(c, &r->resolved_calls.items[i].reason); |
no test coverage detected