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

Method hook

codegraph-kernel/src/scala.rs:593–689  ·  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

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

Callers 1

visitMethod · 0.45

Calls 7

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

Tested by

no test coverage detected