MCPcopy Create free account
hub / github.com/DeusData/codebase-memory-mcp / extract_vars_mainstream

Function extract_vars_mainstream

internal/cbm/extract_defs.c:4679–4753  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4677}
4678
4679static void extract_vars_mainstream(CBMExtractCtx *ctx, TSNode node, CBMArena *a,
4680 const char *kind) {
4681 (void)kind;
4682 switch (ctx->language) {
4683 case CBM_LANG_PYTHON: {
4684 TSNode left = ts_node_child_by_field_name(node, TS_FIELD("left"));
4685 if (ts_node_is_null(left)) {
4686 break;
4687 }
4688 const char *lt = ts_node_type(left);
4689 if (strcmp(lt, "identifier") == 0) {
4690 push_var_def(ctx, cbm_node_text(a, left, ctx->source), node);
4691 } else if (strcmp(lt, "pattern_list") == 0 || strcmp(lt, "tuple_pattern") == 0 ||
4692 strcmp(lt, "list_pattern") == 0) {
4693 /* Tuple/list unpacking: `x, y = f()` — emit a Variable def for each
4694 * unpacked identifier on the LHS (#new_py_tuple_unpack). */
4695 uint32_t ln = ts_node_named_child_count(left);
4696 for (uint32_t li = 0; li < ln; li++) {
4697 TSNode part = ts_node_named_child(left, li);
4698 if (strcmp(ts_node_type(part), "identifier") == 0) {
4699 push_var_def(ctx, cbm_node_text(a, part, ctx->source), node);
4700 }
4701 }
4702 }
4703 break;
4704 }
4705 case CBM_LANG_GO: {
4706 uint32_t n = ts_node_named_child_count(node);
4707 for (uint32_t i = 0; i < n; i++) {
4708 TSNode child = ts_node_named_child(node, i);
4709 const char *ck = ts_node_type(child);
4710 if (strcmp(ck, "var_spec") == 0 || strcmp(ck, "const_spec") == 0) {
4711 TSNode vname = ts_node_child_by_field_name(child, TS_FIELD("name"));
4712 if (!ts_node_is_null(vname)) {
4713 push_var_def(ctx, cbm_node_text(a, vname, ctx->source), child);
4714 }
4715 }
4716 }
4717 break;
4718 }
4719 case CBM_LANG_JAVASCRIPT:
4720 case CBM_LANG_TYPESCRIPT:
4721 case CBM_LANG_TSX:
4722 extract_js_vars(ctx, node, a);
4723 break;
4724 case CBM_LANG_JAVA: {
4725 const char *fname = extract_java_field_name(a, node, ctx->source);
4726 if (fname) {
4727 push_var_def(ctx, fname, node);
4728 }
4729 break;
4730 }
4731 case CBM_LANG_CSHARP:
4732 extract_csharp_vars(ctx, node, a);
4733 break;
4734 case CBM_LANG_CPP:
4735 case CBM_LANG_C:
4736 case CBM_LANG_OBJC: {

Callers 1

extract_var_namesFunction · 0.85

Calls 6

push_var_defFunction · 0.85
cbm_node_textFunction · 0.85
extract_js_varsFunction · 0.85
extract_java_field_nameFunction · 0.85
extract_csharp_varsFunction · 0.85

Tested by

no test coverage detected