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

Method hook

codegraph-kernel/src/scala.rs:596–693  ·  view source on GitHub ↗

The visitNode hook (scala.ts:131-198). Returns true when consumed.

(&mut self, node: Node<'t>)

Source from the content-addressed store, hash-verified

594
595 /// The visitNode hook (scala.ts:131-198). Returns true when consumed.
596 fn hook(&mut self, node: Node<'t>) -> bool {
597 stack_guard!();
598 match node.kind() {
599 "val_definition" | "var_definition" => {
600 let is_val = node.kind() == "val_definition";
601 let name = match self.val_var_name(node) {
602 Some(n) => n.to_string(),
603 None => return false,
604 };
605 // Enclosing-definition NODE-TYPE walk (scala.ts:146-156).
606 let mut enclosing: Option<&'static str> = None;
607 let mut p = node.parent();
608 while let Some(parent) = p {
609 match parent.kind() {
610 "class_definition" => {
611 enclosing = Some("class_definition");
612 break;
613 }
614 "trait_definition" => {
615 enclosing = Some("trait_definition");
616 break;
617 }
618 "enum_definition" => {
619 enclosing = Some("enum_definition");
620 break;
621 }
622 "given_definition" => {
623 enclosing = Some("given_definition");
624 break;
625 }
626 "object_definition" => {
627 enclosing = Some("object_definition");
628 break;
629 }
630 _ => p = parent.parent(),
631 }
632 }
633 let is_instance_field = matches!(
634 enclosing,
635 Some("class_definition") | Some("trait_definition") | Some("enum_definition")
636 | Some("given_definition")
637 );
638 let kind: &'static str = if is_instance_field {
639 "field"
640 } else if is_val {
641 "constant"
642 } else {
643 "variable"
644 };
645 let type_node = node.child_by_field_name("type");
646 let signature = type_node.map(|t| {
647 format!("{} {}: {}", if is_val { "val" } else { "var" }, name, self.text(t))
648 });
649 let visibility = self.visibility_of(node);
650 let created = self.create_node(
651 kind,
652 &name,
653 node,

Callers 1

visitMethod · 0.45

Calls 7

val_var_nameMethod · 0.80
emit_scala_type_refsMethod · 0.80
textMethod · 0.65
visibility_ofMethod · 0.45
create_nodeMethod · 0.45
collectMethod · 0.45
visitMethod · 0.45

Tested by

no test coverage detected