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

Function resolve

src/resolution/frameworks/rust.ts:31–90  ·  view source on GitHub ↗
(ref: UnresolvedRef, context: ResolutionContext)

Source from the content-addressed store, hash-verified

29 },
30
31 resolve(ref: UnresolvedRef, context: ResolutionContext): ResolvedRef | null {
32 // Pattern 1: Handler references
33 if (ref.referenceName.endsWith('_handler') || ref.referenceName.startsWith('handle_')) {
34 const result = resolveByNameAndKind(ref.referenceName, FUNCTION_KINDS, HANDLER_DIRS, context);
35 if (result) {
36 return {
37 original: ref,
38 targetNodeId: result,
39 confidence: 0.8,
40 resolvedBy: 'framework',
41 };
42 }
43 }
44
45 // Pattern 2: Service/Repository trait implementations
46 if (ref.referenceName.endsWith('Service') || ref.referenceName.endsWith('Repository')) {
47 const result = resolveByNameAndKind(ref.referenceName, SERVICE_KINDS, SERVICE_DIRS, context);
48 if (result) {
49 return {
50 original: ref,
51 targetNodeId: result,
52 confidence: 0.8,
53 resolvedBy: 'framework',
54 };
55 }
56 }
57
58 // Pattern 3: Struct references (PascalCase)
59 if (/^[A-Z][a-zA-Z]+$/.test(ref.referenceName)) {
60 const result = resolveByNameAndKind(ref.referenceName, STRUCT_KINDS, MODEL_DIRS, context);
61 if (result) {
62 return {
63 original: ref,
64 targetNodeId: result,
65 confidence: 0.7,
66 resolvedBy: 'framework',
67 };
68 }
69 }
70
71 // Pattern 4: Module references
72 if (/^[a-z_]+$/.test(ref.referenceName)) {
73 const result = resolveModule(ref.referenceName, context);
74 if (result) {
75 // Workspace-manifest hits are an exact crate-name -> crate-root
76 // mapping straight from Cargo.toml, so we trust them above
77 // name-matcher self-file matches (which otherwise win at 0.7
78 // because every file containing `use foo::...` has its own
79 // import node named `foo`).
80 return {
81 original: ref,
82 targetNodeId: result.targetId,
83 confidence: result.fromWorkspace ? 0.95 : 0.6,
84 resolvedBy: 'framework',
85 };
86 }
87 }
88

Callers

nothing calls this directly

Calls 2

resolveModuleFunction · 0.85
resolveByNameAndKindFunction · 0.70

Tested by

no test coverage detected