| 289 | } |
| 290 | |
| 291 | void java_lsp_add_import(JavaLSPContext *ctx, const char *local_name, const char *target_qn, |
| 292 | int kind) { |
| 293 | if (!ctx || !local_name || !target_qn) |
| 294 | return; |
| 295 | if (ctx->import_count >= ctx->import_cap) { |
| 296 | int new_cap = ctx->import_cap == 0 ? 16 : ctx->import_cap * 2; |
| 297 | const char **new_names = |
| 298 | (const char **)cbm_arena_alloc(ctx->arena, (size_t)new_cap * sizeof(*new_names)); |
| 299 | const char **new_qns = |
| 300 | (const char **)cbm_arena_alloc(ctx->arena, (size_t)new_cap * sizeof(*new_qns)); |
| 301 | int *new_kinds = (int *)cbm_arena_alloc(ctx->arena, (size_t)new_cap * sizeof(*new_kinds)); |
| 302 | if (!new_names || !new_qns || !new_kinds) |
| 303 | return; |
| 304 | if (ctx->import_count > 0) { |
| 305 | memcpy(new_names, ctx->import_local_names, |
| 306 | (size_t)ctx->import_count * sizeof(*new_names)); |
| 307 | memcpy(new_qns, ctx->import_target_qns, (size_t)ctx->import_count * sizeof(*new_qns)); |
| 308 | memcpy(new_kinds, ctx->import_kinds, (size_t)ctx->import_count * sizeof(*new_kinds)); |
| 309 | } |
| 310 | ctx->import_local_names = new_names; |
| 311 | ctx->import_target_qns = new_qns; |
| 312 | ctx->import_kinds = new_kinds; |
| 313 | ctx->import_cap = new_cap; |
| 314 | } |
| 315 | ctx->import_local_names[ctx->import_count] = cbm_arena_strdup(ctx->arena, local_name); |
| 316 | ctx->import_target_qns[ctx->import_count] = cbm_arena_strdup(ctx->arena, target_qn); |
| 317 | ctx->import_kinds[ctx->import_count] = kind; |
| 318 | ctx->import_count++; |
| 319 | } |
| 320 | |
| 321 | static void push_enclosing_class(JavaLSPContext *ctx, const char *class_qn) { |
| 322 | if (ctx->enclosing_class_depth >= ctx->enclosing_class_cap) { |
no test coverage detected