MCPcopy Create free account
hub / github.com/colbymchenry/codegraph / visit_node

Method visit_node

codegraph-kernel/src/kotlin.rs:650–718  ·  view source on GitHub ↗
(&mut self, node: Node<'t>)

Source from the content-addressed store, hash-verified

648 // --- the dispatcher (visitNode, Kotlin-relevant branches) -----------------------
649
650 fn visit_node(&mut self, node: Node<'t>) {
651 stack_guard!();
652 if self.try_visit_hook(node) {
653 self.scan_fn_ref_subtree(node, 0);
654 return;
655 }
656
657 let kind = node.kind();
658 let mut skip_children = false;
659
660 self.maybe_capture_fn_refs(node);
661
662 if kind == "function_declaration" {
663 if self.inside_class_like() {
664 self.extract_method(node);
665 } else {
666 self.extract_function(node);
667 }
668 skip_children = true;
669 } else if kind == "class_declaration" {
670 // classifyClassNode: `interface`/`enum` keyword children.
671 let mut classified = "class";
672 for i in 0..node.child_count() {
673 if let Some(c) = node.child(i) {
674 if c.kind() == "interface" {
675 classified = "interface";
676 break;
677 }
678 if c.kind() == "enum" {
679 classified = "enum";
680 break;
681 }
682 }
683 }
684 match classified {
685 "interface" => self.extract_interface(node),
686 "enum" => self.extract_enum(node),
687 _ => self.extract_class(node),
688 }
689 skip_children = true;
690 } else if kind == "object_declaration" {
691 // extraClassNodeTypes → extractClass → kind `class`.
692 self.extract_class(node);
693 skip_children = true;
694 } else if kind == "type_alias" {
695 skip_children = self.extract_type_alias(node);
696 } else if kind == "property_declaration" {
697 // Hook-declined destructuring: extractField/extractVariable both
698 // find no matching children for kotlin — NOTHING minted, RHS
699 // invisible; candidates-only scan.
700 self.scan_fn_ref_subtree(node, 0);
701 skip_children = true;
702 } else if kind == "import_header" {
703 self.extract_import(node);
704 } else if kind == "call_expression" {
705 self.extract_call(node);
706 }
707 // companion_object, anonymous_initializer, secondary_constructor,

Callers 4

extractFunction · 0.45
extract_classMethod · 0.45
extract_interfaceMethod · 0.45
extract_enumMethod · 0.45

Calls 12

try_visit_hookMethod · 0.45
scan_fn_ref_subtreeMethod · 0.45
maybe_capture_fn_refsMethod · 0.45
inside_class_likeMethod · 0.45
extract_methodMethod · 0.45
extract_functionMethod · 0.45
extract_interfaceMethod · 0.45
extract_enumMethod · 0.45
extract_classMethod · 0.45
extract_type_aliasMethod · 0.45
extract_importMethod · 0.45
extract_callMethod · 0.45

Tested by

no test coverage detected