Skip to content

Commit ce483b0

Browse files
committed
fix: match JS argument-field fallback order in groovy call extractor (#1101)
1 parent c8bc5f9 commit ce483b0

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

  • crates/codegraph-core/src/extractors

crates/codegraph-core/src/extractors/groovy.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -315,9 +315,15 @@ fn handle_call_expr(node: &Node, source: &[u8], symbols: &mut FileSymbols) {
315315
let field = func_node
316316
.child_by_field_name("field")
317317
.or_else(|| func_node.child_by_field_name("property"));
318+
// Mirrors `handleGroovyCallExpr` in groovy.ts: tries the `argument`
319+
// field first (used by some tree-sitter grammar variants), then
320+
// falls back to `object`. tree-sitter-groovy 0.1.x only emits
321+
// `object`, so `argument` is currently dead — but removing it
322+
// would diverge from the JS engine and silently drop receivers
323+
// on any future grammar variant that uses `argument`.
318324
let obj = func_node
319-
.child_by_field_name("object")
320-
.or_else(|| func_node.child_by_field_name("argument"));
325+
.child_by_field_name("argument")
326+
.or_else(|| func_node.child_by_field_name("object"));
321327
if let Some(field) = field {
322328
symbols.calls.push(Call {
323329
name: node_text(&field, source).to_string(),

0 commit comments

Comments
 (0)