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

Method extract_method

codegraph-kernel/src/csharp.rs:899–930  ·  view source on GitHub ↗

extractMethod (1737) — method_declaration + constructor_declaration. Signature is ALWAYS undefined (no getSignature hook); isAsync is real.

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

Source from the content-addressed store, hash-verified

897 /// extractMethod (1737) — method_declaration + constructor_declaration.
898 /// Signature is ALWAYS undefined (no getSignature hook); isAsync is real.
899 fn extract_method(&mut self, node: Node<'t>) {
900 stack_guard!();
901 if !self.inside_class_like() {
902 // Unreachable on non-erroring C# (top-level `void M(){}` parses as
903 // local_function_statement; erroring files defer) — mirror the TS
904 // treat-as-function tail for shape.
905 self.extract_function(node);
906 return;
907 }
908 let name = self.extract_name(node);
909 let extra = Extra {
910 docstring: preceding_docstring(node, self.src),
911 signature: None,
912 visibility: Some(self.visibility_of(node)),
913 is_async: Some(self.is_async(node)),
914 is_static: Some(self.is_static(node)),
915 return_type: self.return_type_of(node),
916 };
917 let Some(row) = self.create_node("method", &name, node, extra) else { return };
918 // extractTypeAnnotations short-circuits into the csharp path:
919 // `returns`-field refs FIRST, then per-parameter type refs.
920 self.extract_csharp_type_refs(node, row);
921 // decorators: none.
922 self.stack.push(Scope { row, kind: "method", name });
923 // The `body` FIELD only (block or arrow_expression_clause). A
924 // constructor_initializer (`: base(args)`) is NOT the body → its
925 // argument calls are LOST (quirk, preserve).
926 if let Some(body) = node.child_by_field_name("body") {
927 self.visit_function_body(body);
928 }
929 self.stack.pop();
930 }
931
932 /// extractFunction — only reachable for a method outside any class
933 /// (unreachable on non-erroring C#; kept faithful to the generic tail).

Callers 1

visit_nodeMethod · 0.45

Calls 11

preceding_docstringFunction · 0.85
inside_class_likeMethod · 0.45
extract_functionMethod · 0.45
extract_nameMethod · 0.45
visibility_ofMethod · 0.45
is_asyncMethod · 0.45
is_staticMethod · 0.45
return_type_ofMethod · 0.45
create_nodeMethod · 0.45
visit_function_bodyMethod · 0.45

Tested by

no test coverage detected