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

Method extract_method

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

Source from the content-addressed store, hash-verified

722 }
723
724 fn extract_method(&mut self, node: Node<'t>) {
725 // Gate (:1747): not inside class-like (no methodsAreTopLevel, no
726 // receiver, parent never object/object_expression) → extractFunction.
727 if !self.inside_class_like() {
728 self.extract_function(node);
729 return;
730 }
731 let name = self.extract_name(node);
732 // isMisparsedFunction — the unnamed ctor: body-only walk.
733 if self.is_unnamed_ctor(node) {
734 if let Some(body) = self.resolve_body(node) {
735 self.visit_body(body);
736 }
737 return;
738 }
739 let docstring = preceding_docstring(node, self.src);
740 let signature = self.signature_of(node);
741 let visibility = self.visibility_of(node);
742 let is_async = self.is_async_of(node);
743 let is_static = self.is_static_of(node);
744 let return_type = self.return_type_of(node);
745 let body = self.resolve_body(node);
746 let end_line_override = body.map(|b| b.end_position().row as u32 + 1);
747 // Operators mint method "<anonymous>" — extractMethod has NO skip.
748 let row = self.create_node(
749 "method",
750 &name,
751 node,
752 Extra {
753 docstring,
754 signature,
755 visibility,
756 is_async: Some(is_async),
757 is_static: Some(is_static),
758 return_type,
759 end_line_override,
760 },
761 );
762 let Some(row) = row else { return };
763 self.extract_type_annotations(node, row);
764 self.extract_decorators_for(node, row);
765 self.stack.push(Scope { row, kind: "method", name });
766 if let Some(body) = body {
767 self.visit_body(body);
768 }
769 self.stack.pop();
770 }
771
772 // --- extractClass (:1679) — classes, mixins, extensions ---------------
773

Callers 1

visitMethod · 0.45

Calls 15

preceding_docstringFunction · 0.85
is_unnamed_ctorMethod · 0.80
is_async_ofMethod · 0.80
inside_class_likeMethod · 0.45
extract_functionMethod · 0.45
extract_nameMethod · 0.45
resolve_bodyMethod · 0.45
visit_bodyMethod · 0.45
signature_ofMethod · 0.45
visibility_ofMethod · 0.45
is_static_ofMethod · 0.45
return_type_ofMethod · 0.45

Tested by

no test coverage detected