@grafema/core 0.2.8 → 0.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Orchestrator.d.ts +3 -1
- package/dist/Orchestrator.d.ts.map +1 -1
- package/dist/Orchestrator.js +25 -8
- package/dist/Orchestrator.js.map +1 -1
- package/dist/PhaseRunner.d.ts +4 -5
- package/dist/PhaseRunner.d.ts.map +1 -1
- package/dist/PhaseRunner.js +31 -20
- package/dist/PhaseRunner.js.map +1 -1
- package/dist/plugins/analysis/DatabaseAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/DatabaseAnalyzer.js +3 -4
- package/dist/plugins/analysis/DatabaseAnalyzer.js.map +1 -1
- package/dist/plugins/analysis/ExpressAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ExpressAnalyzer.js +1 -0
- package/dist/plugins/analysis/ExpressAnalyzer.js.map +1 -1
- package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ExpressResponseAnalyzer.js +11 -34
- package/dist/plugins/analysis/ExpressResponseAnalyzer.js.map +1 -1
- package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ExpressRouteAnalyzer.js +1 -0
- package/dist/plugins/analysis/ExpressRouteAnalyzer.js.map +1 -1
- package/dist/plugins/analysis/NestJSRouteAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/NestJSRouteAnalyzer.js +1 -0
- package/dist/plugins/analysis/NestJSRouteAnalyzer.js.map +1 -1
- package/dist/plugins/analysis/ReactAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ReactAnalyzer.js +1 -0
- package/dist/plugins/analysis/ReactAnalyzer.js.map +1 -1
- package/dist/plugins/analysis/SQLiteAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SQLiteAnalyzer.js +7 -9
- package/dist/plugins/analysis/SQLiteAnalyzer.js.map +1 -1
- package/dist/plugins/analysis/ServiceLayerAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/ServiceLayerAnalyzer.js +7 -9
- package/dist/plugins/analysis/ServiceLayerAnalyzer.js.map +1 -1
- package/dist/plugins/analysis/SocketIOAnalyzer.d.ts.map +1 -1
- package/dist/plugins/analysis/SocketIOAnalyzer.js +1 -0
- package/dist/plugins/analysis/SocketIOAnalyzer.js.map +1 -1
- package/dist/plugins/analysis/ast/GraphBuilder.d.ts +18 -8
- package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -1
- package/dist/plugins/analysis/ast/GraphBuilder.js +92 -34
- package/dist/plugins/analysis/ast/GraphBuilder.js.map +1 -1
- package/dist/plugins/enrichment/MethodCallResolver.d.ts.map +1 -1
- package/dist/plugins/enrichment/MethodCallResolver.js +8 -3
- package/dist/plugins/enrichment/MethodCallResolver.js.map +1 -1
- package/dist/plugins/enrichment/method-call/MethodCallIndexers.d.ts +22 -0
- package/dist/plugins/enrichment/method-call/MethodCallIndexers.d.ts.map +1 -1
- package/dist/plugins/enrichment/method-call/MethodCallIndexers.js +138 -0
- package/dist/plugins/enrichment/method-call/MethodCallIndexers.js.map +1 -1
- package/dist/plugins/enrichment/method-call/MethodCallResolution.d.ts +11 -1
- package/dist/plugins/enrichment/method-call/MethodCallResolution.d.ts.map +1 -1
- package/dist/plugins/enrichment/method-call/MethodCallResolution.js +39 -1
- package/dist/plugins/enrichment/method-call/MethodCallResolution.js.map +1 -1
- package/dist/storage/backends/RFDBServerBackend.d.ts +9 -0
- package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -1
- package/dist/storage/backends/RFDBServerBackend.js +40 -0
- package/dist/storage/backends/RFDBServerBackend.js.map +1 -1
- package/package.json +3 -3
- package/src/Orchestrator.ts +25 -8
- package/src/PhaseRunner.ts +34 -24
- package/src/plugins/analysis/DatabaseAnalyzer.ts +3 -5
- package/src/plugins/analysis/ExpressAnalyzer.ts +1 -0
- package/src/plugins/analysis/ExpressResponseAnalyzer.ts +11 -36
- package/src/plugins/analysis/ExpressRouteAnalyzer.ts +1 -0
- package/src/plugins/analysis/NestJSRouteAnalyzer.ts +1 -0
- package/src/plugins/analysis/ReactAnalyzer.ts +1 -0
- package/src/plugins/analysis/SQLiteAnalyzer.ts +10 -11
- package/src/plugins/analysis/ServiceLayerAnalyzer.ts +7 -9
- package/src/plugins/analysis/SocketIOAnalyzer.ts +1 -0
- package/src/plugins/analysis/ast/GraphBuilder.ts +96 -35
- package/src/plugins/analysis/ast/builders/types.ts +1 -1
- package/src/plugins/enrichment/MethodCallResolver.ts +17 -3
- package/src/plugins/enrichment/method-call/MethodCallIndexers.ts +159 -0
- package/src/plugins/enrichment/method-call/MethodCallResolution.ts +53 -1
- package/src/storage/backends/RFDBServerBackend.ts +39 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* GraphBuilder - orchestrator that delegates to domain-specific builders
|
|
3
|
-
*
|
|
3
|
+
* Writes nodes/edges directly to graph during RFDBClient batch window.
|
|
4
|
+
* Only FUNCTION nodes are deferred (pending metadata mutation by ModuleRuntimeBuilder).
|
|
4
5
|
*/
|
|
5
6
|
import { brandNodeInternal } from '../../../core/brandNodeInternal.js';
|
|
6
7
|
import { parseSemanticId } from '../../../core/SemanticId.js';
|
|
@@ -8,7 +9,15 @@ import { CoreBuilder, ControlFlowBuilder, AssignmentBuilder, CallFlowBuilder, Mu
|
|
|
8
9
|
export class GraphBuilder {
|
|
9
10
|
// Track singleton nodes to avoid duplicates (net:stdio, net:request, etc.)
|
|
10
11
|
_createdSingletons = new Set();
|
|
11
|
-
//
|
|
12
|
+
// Graph reference for direct writes (set during build(), cleared after)
|
|
13
|
+
_graph = null;
|
|
14
|
+
// Pending function nodes (deferred until domain builders can mutate metadata)
|
|
15
|
+
_pendingFunctions = new Map();
|
|
16
|
+
// Sync batch mode: push directly to RFDBClient batch arrays (no intermediate buffer)
|
|
17
|
+
_useSyncBatch = false;
|
|
18
|
+
_directNodeCount = 0;
|
|
19
|
+
_directEdgeCount = 0;
|
|
20
|
+
// Fallback buffers (when graph.batchNode is not available)
|
|
12
21
|
_nodeBuffer = [];
|
|
13
22
|
_edgeBuffer = [];
|
|
14
23
|
// Domain builders
|
|
@@ -41,7 +50,7 @@ export class GraphBuilder {
|
|
|
41
50
|
bufferEdge: (edge) => this._bufferEdge(edge),
|
|
42
51
|
isCreated: (key) => this._createdSingletons.has(key),
|
|
43
52
|
markCreated: (key) => { this._createdSingletons.add(key); },
|
|
44
|
-
findBufferedNode: (id) => this.
|
|
53
|
+
findBufferedNode: (id) => this._pendingFunctions.get(id),
|
|
45
54
|
findFunctionByName: (functions, name, file, callScopeId) => this.findFunctionByName(functions, name, file, callScopeId),
|
|
46
55
|
resolveVariableInScope: (name, scopePath, file, variables) => this.resolveVariableInScope(name, scopePath, file, variables),
|
|
47
56
|
resolveParameterInScope: (name, scopePath, file, parameters) => this.resolveParameterInScope(name, scopePath, file, parameters),
|
|
@@ -49,43 +58,79 @@ export class GraphBuilder {
|
|
|
49
58
|
};
|
|
50
59
|
}
|
|
51
60
|
/**
|
|
52
|
-
* Buffer a node for batched writing
|
|
61
|
+
* Buffer a node for batched writing.
|
|
62
|
+
* INVARIANT: Only FUNCTION nodes are deferred (stored in _pendingFunctions)
|
|
63
|
+
* because ModuleRuntimeBuilder mutates their metadata (rejectionPatterns)
|
|
64
|
+
* after buffering. All other nodes go to sync batch or fallback buffer.
|
|
53
65
|
*/
|
|
54
66
|
_bufferNode(node) {
|
|
55
|
-
this.
|
|
67
|
+
if (!this._graph)
|
|
68
|
+
throw new Error('_bufferNode called outside build() — _graph is null');
|
|
69
|
+
const branded = brandNodeInternal(node);
|
|
70
|
+
if (node.type === 'FUNCTION') {
|
|
71
|
+
this._pendingFunctions.set(node.id, branded);
|
|
72
|
+
}
|
|
73
|
+
else if (this._useSyncBatch) {
|
|
74
|
+
this._graph.batchNode(branded);
|
|
75
|
+
this._directNodeCount++;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this._nodeBuffer.push(branded);
|
|
79
|
+
}
|
|
56
80
|
}
|
|
57
81
|
/**
|
|
58
|
-
* Buffer an edge for batched writing
|
|
82
|
+
* Buffer an edge for batched writing.
|
|
59
83
|
*/
|
|
60
84
|
_bufferEdge(edge) {
|
|
61
|
-
this.
|
|
85
|
+
if (!this._graph)
|
|
86
|
+
throw new Error('_bufferEdge called outside build() — _graph is null');
|
|
87
|
+
if (this._useSyncBatch) {
|
|
88
|
+
this._graph.batchEdge(edge);
|
|
89
|
+
this._directEdgeCount++;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
this._edgeBuffer.push(edge);
|
|
93
|
+
}
|
|
62
94
|
}
|
|
63
95
|
/**
|
|
64
|
-
* Flush
|
|
96
|
+
* Flush pending function nodes to the graph.
|
|
97
|
+
* In sync batch mode, pushes each to batchNode. In fallback mode, uses addNodes.
|
|
98
|
+
* Returns count of function nodes flushed.
|
|
65
99
|
*/
|
|
66
|
-
async
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
100
|
+
async _flushPendingFunctions(graph) {
|
|
101
|
+
const pendingFunctions = Array.from(this._pendingFunctions.values());
|
|
102
|
+
if (pendingFunctions.length === 0)
|
|
103
|
+
return 0;
|
|
104
|
+
// Nodes already branded in _bufferNode() — no need to brand again
|
|
105
|
+
if (this._useSyncBatch) {
|
|
106
|
+
for (const node of pendingFunctions) {
|
|
107
|
+
graph.batchNode(node);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
await graph.addNodes(pendingFunctions);
|
|
74
112
|
}
|
|
75
|
-
|
|
113
|
+
const count = pendingFunctions.length;
|
|
114
|
+
this._pendingFunctions.clear();
|
|
115
|
+
return count;
|
|
76
116
|
}
|
|
77
117
|
/**
|
|
78
|
-
* Flush
|
|
79
|
-
* Note: skip_validation=true because nodes were just flushed
|
|
118
|
+
* Flush fallback buffers (only used when sync batch is not available).
|
|
80
119
|
*/
|
|
81
|
-
async
|
|
120
|
+
async _flushFallbackBuffers(graph) {
|
|
121
|
+
let nodesCreated = 0;
|
|
122
|
+
if (this._nodeBuffer.length > 0) {
|
|
123
|
+
await graph.addNodes(this._nodeBuffer);
|
|
124
|
+
nodesCreated = this._nodeBuffer.length;
|
|
125
|
+
}
|
|
126
|
+
let edgesCreated = 0;
|
|
82
127
|
if (this._edgeBuffer.length > 0) {
|
|
83
|
-
await graph.addEdges(this._edgeBuffer, true
|
|
84
|
-
|
|
85
|
-
this._edgeBuffer = [];
|
|
86
|
-
return count;
|
|
128
|
+
await graph.addEdges(this._edgeBuffer, true);
|
|
129
|
+
edgesCreated = this._edgeBuffer.length;
|
|
87
130
|
}
|
|
88
|
-
|
|
131
|
+
this._nodeBuffer = [];
|
|
132
|
+
this._edgeBuffer = [];
|
|
133
|
+
return { nodes: nodesCreated, edges: edgesCreated };
|
|
89
134
|
}
|
|
90
135
|
/**
|
|
91
136
|
* Создаёт ноды и рёбра в графе (BATCHED VERSION)
|
|
@@ -95,7 +140,12 @@ export class GraphBuilder {
|
|
|
95
140
|
const { functions, parameters = [], scopes, branches = [], cases = [], loops = [], tryBlocks = [], catchBlocks = [], finallyBlocks = [], variableDeclarations, callSites, constructorCalls = [],
|
|
96
141
|
// Post-flush fields
|
|
97
142
|
variableAssignments = [], propertyAccesses = [], hasTopLevelAwait = false } = data;
|
|
98
|
-
// Reset
|
|
143
|
+
// Reset state for this build
|
|
144
|
+
this._graph = graph;
|
|
145
|
+
this._pendingFunctions.clear();
|
|
146
|
+
this._useSyncBatch = typeof graph.batchNode === 'function' && typeof graph.batchEdge === 'function';
|
|
147
|
+
this._directNodeCount = 0;
|
|
148
|
+
this._directEdgeCount = 0;
|
|
99
149
|
this._nodeBuffer = [];
|
|
100
150
|
this._edgeBuffer = [];
|
|
101
151
|
// 1. Buffer all functions (without edges)
|
|
@@ -201,9 +251,18 @@ export class GraphBuilder {
|
|
|
201
251
|
this._yieldBuilder.buffer(module, data);
|
|
202
252
|
this._typeSystemBuilder.buffer(module, data);
|
|
203
253
|
this._moduleRuntimeBuilder.buffer(module, data);
|
|
204
|
-
// FLUSH: Write
|
|
205
|
-
const
|
|
206
|
-
|
|
254
|
+
// FLUSH: Write pending function nodes (after domain builders mutated metadata)
|
|
255
|
+
const functionsCount = await this._flushPendingFunctions(graph);
|
|
256
|
+
// Flush fallback buffers if not using sync batch
|
|
257
|
+
let fallbackNodes = 0;
|
|
258
|
+
let fallbackEdges = 0;
|
|
259
|
+
if (!this._useSyncBatch) {
|
|
260
|
+
const fallback = await this._flushFallbackBuffers(graph);
|
|
261
|
+
fallbackNodes = fallback.nodes;
|
|
262
|
+
fallbackEdges = fallback.edges;
|
|
263
|
+
}
|
|
264
|
+
const nodesCreated = this._useSyncBatch ? this._directNodeCount + functionsCount : fallbackNodes + functionsCount;
|
|
265
|
+
const edgesCreated = this._useSyncBatch ? this._directEdgeCount : fallbackEdges;
|
|
207
266
|
// Handle async operations for ASSIGNED_FROM with CLASS lookups
|
|
208
267
|
const classAssignmentEdges = await this.createClassAssignmentEdges(variableAssignments, graph);
|
|
209
268
|
// REG-300: Update MODULE node with import.meta metadata
|
|
@@ -211,6 +270,7 @@ export class GraphBuilder {
|
|
|
211
270
|
await this.updateModuleImportMetaMetadata(module, graph, importMetaProps);
|
|
212
271
|
// REG-297: Update MODULE node with hasTopLevelAwait metadata
|
|
213
272
|
await this.updateModuleTopLevelAwaitMetadata(module, graph, hasTopLevelAwait);
|
|
273
|
+
this._graph = null; // release reference
|
|
214
274
|
return { nodes: nodesCreated, edges: edgesCreated + classAssignmentEdges };
|
|
215
275
|
}
|
|
216
276
|
// ============= SHARED UTILITY METHODS =============
|
|
@@ -407,11 +467,9 @@ export class GraphBuilder {
|
|
|
407
467
|
const parts = variableId.split('#');
|
|
408
468
|
const file = parts.length >= 3 ? parts[2] : null;
|
|
409
469
|
let classNode = null;
|
|
410
|
-
for await (const node of graph.queryNodes({ type: 'CLASS' })) {
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
break;
|
|
414
|
-
}
|
|
470
|
+
for await (const node of graph.queryNodes(file ? { type: 'CLASS', name: className, file } : { type: 'CLASS', name: className })) {
|
|
471
|
+
classNode = node;
|
|
472
|
+
break;
|
|
415
473
|
}
|
|
416
474
|
if (classNode) {
|
|
417
475
|
await graph.addEdge({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphBuilder.js","sourceRoot":"","sources":["../../../../src/plugins/analysis/ast/GraphBuilder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GraphBuilder.js","sourceRoot":"","sources":["../../../../src/plugins/analysis/ast/GraphBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MethodCallResolver.d.ts","sourceRoot":"","sources":["../../../src/plugins/enrichment/MethodCallResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,MAAM,EAAuB,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"MethodCallResolver.d.ts","sourceRoot":"","sources":["../../../src/plugins/enrichment/MethodCallResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,MAAM,EAAuB,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAkBhF,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,YAAY,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAExE,qBAAa,kBAAmB,SAAQ,MAAM;IAC5C,IAAI,QAAQ,IAAI,cAAc,CAY7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;CA0N7D"}
|
|
@@ -22,7 +22,7 @@ import { StrictModeError } from '../../errors/GrafemaError.js';
|
|
|
22
22
|
// Import from extracted modules
|
|
23
23
|
import { BUILTIN_PROTOTYPE_METHODS } from './method-call/MethodCallData.js';
|
|
24
24
|
import { isExternalMethod, isBuiltInObject, trackLibraryCall } from './method-call/MethodCallDetectors.js';
|
|
25
|
-
import { buildClassMethodIndex, buildVariableTypeIndex } from './method-call/MethodCallIndexers.js';
|
|
25
|
+
import { buildClassMethodIndex, buildVariableTypeIndex, buildInterfaceMethodIndex, buildInterfaceImplementationIndex } from './method-call/MethodCallIndexers.js';
|
|
26
26
|
import { resolveMethodCall } from './method-call/MethodCallResolution.js';
|
|
27
27
|
import { analyzeResolutionFailure, generateContextualSuggestion } from './method-call/MethodCallErrorAnalysis.js';
|
|
28
28
|
// Re-export for backward compatibility (used by packages/core/src/index.ts)
|
|
@@ -37,7 +37,7 @@ export class MethodCallResolver extends Plugin {
|
|
|
37
37
|
edges: ['CALLS']
|
|
38
38
|
},
|
|
39
39
|
dependencies: ['ImportExportLinker'],
|
|
40
|
-
consumes: ['CONTAINS', 'INSTANCE_OF', 'DERIVES_FROM'],
|
|
40
|
+
consumes: ['CONTAINS', 'INSTANCE_OF', 'DERIVES_FROM', 'IMPLEMENTS', 'EXTENDS'],
|
|
41
41
|
produces: ['CALLS']
|
|
42
42
|
};
|
|
43
43
|
}
|
|
@@ -87,6 +87,11 @@ export class MethodCallResolver extends Plugin {
|
|
|
87
87
|
const classMethodIndex = await buildClassMethodIndex(graph, logger);
|
|
88
88
|
logger.info('Indexed classes', { count: classMethodIndex.size });
|
|
89
89
|
const variableTypes = await buildVariableTypeIndex(graph, logger);
|
|
90
|
+
// Build interface indexes for CHA fallback (REG-485)
|
|
91
|
+
const methodToInterfaces = await buildInterfaceMethodIndex(graph, logger);
|
|
92
|
+
logger.info('Indexed interface methods', { methods: methodToInterfaces.size });
|
|
93
|
+
const interfaceImpls = await buildInterfaceImplementationIndex(graph, logger);
|
|
94
|
+
logger.info('Indexed interface implementations', { interfaces: interfaceImpls.size });
|
|
90
95
|
// Cache for containing class lookups (local to this execution)
|
|
91
96
|
const containingClassCache = new Map();
|
|
92
97
|
const startTime = Date.now();
|
|
@@ -131,7 +136,7 @@ export class MethodCallResolver extends Plugin {
|
|
|
131
136
|
continue; // Already linked
|
|
132
137
|
}
|
|
133
138
|
// Try to find method definition
|
|
134
|
-
const targetMethod = await resolveMethodCall(methodCall, classMethodIndex, variableTypes, graph, containingClassCache);
|
|
139
|
+
const targetMethod = await resolveMethodCall(methodCall, classMethodIndex, variableTypes, graph, containingClassCache, methodToInterfaces, interfaceImpls);
|
|
135
140
|
if (targetMethod) {
|
|
136
141
|
await graph.addEdge({
|
|
137
142
|
src: methodCall.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MethodCallResolver.js","sourceRoot":"","sources":["../../../src/plugins/enrichment/MethodCallResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAG3D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,gCAAgC;AAChC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAE5E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAC3G,OAAO,
|
|
1
|
+
{"version":3,"file":"MethodCallResolver.js","sourceRoot":"","sources":["../../../src/plugins/enrichment/MethodCallResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,28 @@ import type { ClassEntry } from './MethodCallData.js';
|
|
|
12
12
|
* Each class is indexed by name and by file:name for local resolution.
|
|
13
13
|
*/
|
|
14
14
|
export declare function buildClassMethodIndex(graph: PluginContext['graph'], logger: Logger): Promise<Map<string, ClassEntry>>;
|
|
15
|
+
/**
|
|
16
|
+
* Builds an index of interface methods for CHA-based resolution (REG-485).
|
|
17
|
+
* Maps method name to the set of interface names that declare (or inherit) that method.
|
|
18
|
+
*
|
|
19
|
+
* Algorithm:
|
|
20
|
+
* 1. Query all INTERFACE nodes and extract method names from properties
|
|
21
|
+
* 2. Track EXTENDS edges between interfaces
|
|
22
|
+
* 3. Flatten inherited methods (walk EXTENDS chain with cycle protection, max depth 10)
|
|
23
|
+
* 4. Build final map: method name -> set of interface names
|
|
24
|
+
*/
|
|
25
|
+
export declare function buildInterfaceMethodIndex(graph: PluginContext['graph'], logger: Logger): Promise<Map<string, Set<string>>>;
|
|
26
|
+
/**
|
|
27
|
+
* Builds an index of interface implementations for CHA-based resolution (REG-485).
|
|
28
|
+
* Maps interface name to the set of class names that implement it.
|
|
29
|
+
*
|
|
30
|
+
* Algorithm:
|
|
31
|
+
* 1. Query all CLASS nodes
|
|
32
|
+
* 2. For each class, get outgoing IMPLEMENTS edges
|
|
33
|
+
* 3. For each IMPLEMENTS edge, get the target INTERFACE node name
|
|
34
|
+
* 4. Accumulate: interface name -> Set of class names
|
|
35
|
+
*/
|
|
36
|
+
export declare function buildInterfaceImplementationIndex(graph: PluginContext['graph'], logger: Logger): Promise<Map<string, Set<string>>>;
|
|
15
37
|
/**
|
|
16
38
|
* Builds an index of variables and their types (from INSTANCE_OF edges).
|
|
17
39
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MethodCallIndexers.d.ts","sourceRoot":"","sources":["../../../../src/plugins/enrichment/method-call/MethodCallIndexers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAwClC;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAgB9B"}
|
|
1
|
+
{"version":3,"file":"MethodCallIndexers.d.ts","sourceRoot":"","sources":["../../../../src/plugins/enrichment/method-call/MethodCallIndexers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAwClC;AAED;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAmGnC;AAED;;;;;;;;;GASG;AACH,wBAAsB,iCAAiC,CACrD,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CA8BnC;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAgB9B"}
|
|
@@ -42,6 +42,144 @@ export async function buildClassMethodIndex(graph, logger) {
|
|
|
42
42
|
logger.debug('Indexed class entries', { count: index.size, time: `${totalTime}s` });
|
|
43
43
|
return index;
|
|
44
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Builds an index of interface methods for CHA-based resolution (REG-485).
|
|
47
|
+
* Maps method name to the set of interface names that declare (or inherit) that method.
|
|
48
|
+
*
|
|
49
|
+
* Algorithm:
|
|
50
|
+
* 1. Query all INTERFACE nodes and extract method names from properties
|
|
51
|
+
* 2. Track EXTENDS edges between interfaces
|
|
52
|
+
* 3. Flatten inherited methods (walk EXTENDS chain with cycle protection, max depth 10)
|
|
53
|
+
* 4. Build final map: method name -> set of interface names
|
|
54
|
+
*/
|
|
55
|
+
export async function buildInterfaceMethodIndex(graph, logger) {
|
|
56
|
+
const startTime = Date.now();
|
|
57
|
+
const index = new Map();
|
|
58
|
+
// Collect direct methods per interface and EXTENDS relationships
|
|
59
|
+
const interfaceMethods = new Map();
|
|
60
|
+
const interfaceExtends = new Map();
|
|
61
|
+
for await (const node of graph.queryNodes({ nodeType: 'INTERFACE' })) {
|
|
62
|
+
const interfaceName = node.name;
|
|
63
|
+
if (!interfaceName)
|
|
64
|
+
continue;
|
|
65
|
+
// Parse properties field (may be JSON string or already parsed array)
|
|
66
|
+
let properties = [];
|
|
67
|
+
if (node.properties) {
|
|
68
|
+
try {
|
|
69
|
+
properties = typeof node.properties === 'string'
|
|
70
|
+
? JSON.parse(node.properties)
|
|
71
|
+
: node.properties;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
// Skip unparseable properties
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const methods = new Set();
|
|
78
|
+
if (Array.isArray(properties)) {
|
|
79
|
+
for (const prop of properties) {
|
|
80
|
+
if (prop && typeof prop.name === 'string' && prop.name) {
|
|
81
|
+
methods.add(prop.name);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
interfaceMethods.set(interfaceName, methods);
|
|
86
|
+
// Track EXTENDS edges for inheritance flattening
|
|
87
|
+
const extendsEdges = await graph.getOutgoingEdges(node.id, ['EXTENDS']);
|
|
88
|
+
if (extendsEdges.length > 0) {
|
|
89
|
+
const parentNames = [];
|
|
90
|
+
for (const edge of extendsEdges) {
|
|
91
|
+
const parentNode = await graph.getNode(edge.dst);
|
|
92
|
+
if (parentNode && parentNode.name) {
|
|
93
|
+
parentNames.push(parentNode.name);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (parentNames.length > 0) {
|
|
97
|
+
interfaceExtends.set(interfaceName, parentNames);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// Flatten inherited methods with cycle protection
|
|
102
|
+
const resolvedMethods = new Map();
|
|
103
|
+
function collectMethods(name, visited, depth) {
|
|
104
|
+
if (depth > 10 || visited.has(name))
|
|
105
|
+
return new Set();
|
|
106
|
+
if (resolvedMethods.has(name))
|
|
107
|
+
return resolvedMethods.get(name);
|
|
108
|
+
visited.add(name);
|
|
109
|
+
const ownMethods = interfaceMethods.get(name) || new Set();
|
|
110
|
+
const allMethods = new Set(ownMethods);
|
|
111
|
+
const parents = interfaceExtends.get(name);
|
|
112
|
+
if (parents) {
|
|
113
|
+
for (const parent of parents) {
|
|
114
|
+
const parentMethods = collectMethods(parent, visited, depth + 1);
|
|
115
|
+
for (const m of parentMethods) {
|
|
116
|
+
allMethods.add(m);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
resolvedMethods.set(name, allMethods);
|
|
121
|
+
return allMethods;
|
|
122
|
+
}
|
|
123
|
+
for (const name of interfaceMethods.keys()) {
|
|
124
|
+
collectMethods(name, new Set(), 0);
|
|
125
|
+
}
|
|
126
|
+
// Build final index: method name -> set of interface names
|
|
127
|
+
for (const [interfaceName, methods] of resolvedMethods) {
|
|
128
|
+
for (const methodName of methods) {
|
|
129
|
+
let interfaces = index.get(methodName);
|
|
130
|
+
if (!interfaces) {
|
|
131
|
+
interfaces = new Set();
|
|
132
|
+
index.set(methodName, interfaces);
|
|
133
|
+
}
|
|
134
|
+
interfaces.add(interfaceName);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
138
|
+
logger.debug('Built interface method index', {
|
|
139
|
+
interfaces: interfaceMethods.size,
|
|
140
|
+
methods: index.size,
|
|
141
|
+
time: `${elapsed}s`
|
|
142
|
+
});
|
|
143
|
+
return index;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Builds an index of interface implementations for CHA-based resolution (REG-485).
|
|
147
|
+
* Maps interface name to the set of class names that implement it.
|
|
148
|
+
*
|
|
149
|
+
* Algorithm:
|
|
150
|
+
* 1. Query all CLASS nodes
|
|
151
|
+
* 2. For each class, get outgoing IMPLEMENTS edges
|
|
152
|
+
* 3. For each IMPLEMENTS edge, get the target INTERFACE node name
|
|
153
|
+
* 4. Accumulate: interface name -> Set of class names
|
|
154
|
+
*/
|
|
155
|
+
export async function buildInterfaceImplementationIndex(graph, logger) {
|
|
156
|
+
const startTime = Date.now();
|
|
157
|
+
const index = new Map();
|
|
158
|
+
for await (const classNode of graph.queryNodes({ nodeType: 'CLASS' })) {
|
|
159
|
+
const className = classNode.name;
|
|
160
|
+
if (!className)
|
|
161
|
+
continue;
|
|
162
|
+
const implementsEdges = await graph.getOutgoingEdges(classNode.id, ['IMPLEMENTS']);
|
|
163
|
+
for (const edge of implementsEdges) {
|
|
164
|
+
const interfaceNode = await graph.getNode(edge.dst);
|
|
165
|
+
if (!interfaceNode || !interfaceNode.name)
|
|
166
|
+
continue;
|
|
167
|
+
const interfaceName = interfaceNode.name;
|
|
168
|
+
let classes = index.get(interfaceName);
|
|
169
|
+
if (!classes) {
|
|
170
|
+
classes = new Set();
|
|
171
|
+
index.set(interfaceName, classes);
|
|
172
|
+
}
|
|
173
|
+
classes.add(className);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
177
|
+
logger.debug('Built interface implementation index', {
|
|
178
|
+
interfaces: index.size,
|
|
179
|
+
time: `${elapsed}s`
|
|
180
|
+
});
|
|
181
|
+
return index;
|
|
182
|
+
}
|
|
45
183
|
/**
|
|
46
184
|
* Builds an index of variables and their types (from INSTANCE_OF edges).
|
|
47
185
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MethodCallIndexers.js","sourceRoot":"","sources":["../../../../src/plugins/enrichment/method-call/MethodCallIndexers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAA6B,EAC7B,MAAc;IAEd,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,IAAI,KAAK,EAAE,MAAM,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QACtE,UAAU,EAAE,CAAC;QACb,IAAI,UAAU,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,SAAS,GAAG,SAAS,CAAC,IAAc,CAAC;QAC3C,IAAI,CAAC,SAAS;YAAE,SAAS;QAEzB,MAAM,UAAU,GAAe;YAC7B,SAAS;YACT,OAAO,EAAE,IAAI,GAAG,EAAE;SACnB,CAAC;QAEF,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/E,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;gBAChF,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;oBACnB,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAc,EAAE,SAAS,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAEjC,0CAA0C;QAC1C,MAAM,OAAO,GAAG,GAAG,SAAS,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;QACjD,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,SAAS,GAAG,EAAE,CAAC,CAAC;IAEpF,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,KAA6B,EAC7B,MAAc;IAEd,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAExC,IAAI,KAAK,EAAE,MAAM,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QACtE,IAAI,CAAC,SAAS,CAAC,IAAI;YAAE,SAAS;QAE9B,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;QAClF,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,IAAc,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;IACxF,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"MethodCallIndexers.js","sourceRoot":"","sources":["../../../../src/plugins/enrichment/method-call/MethodCallIndexers.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,8 +16,18 @@ import type { MethodCallNode, ClassEntry } from './MethodCallData.js';
|
|
|
16
16
|
* 2. Local class in same file
|
|
17
17
|
* 3. "this" reference to containing class
|
|
18
18
|
* 4. Variable type index (INSTANCE_OF)
|
|
19
|
+
* 5. Interface-aware CHA fallback (REG-485)
|
|
19
20
|
*/
|
|
20
|
-
export declare function resolveMethodCall(methodCall: MethodCallNode, classMethodIndex: Map<string, ClassEntry>, variableTypes: Map<string, string>, graph: PluginContext['graph'], containingClassCache: Map<string, BaseNodeRecord | null
|
|
21
|
+
export declare function resolveMethodCall(methodCall: MethodCallNode, classMethodIndex: Map<string, ClassEntry>, variableTypes: Map<string, string>, graph: PluginContext['graph'], containingClassCache: Map<string, BaseNodeRecord | null>, methodToInterfaces?: Map<string, Set<string>>, interfaceImpls?: Map<string, Set<string>>): Promise<BaseNodeRecord | null>;
|
|
22
|
+
/**
|
|
23
|
+
* Step 5: Interface-aware CHA fallback (REG-485).
|
|
24
|
+
*
|
|
25
|
+
* When steps 1-4 fail, look up method name in interface method index,
|
|
26
|
+
* find implementing classes, and resolve to their method definition.
|
|
27
|
+
* Also checks parent classes via DERIVES_FROM for inherited methods.
|
|
28
|
+
* This enables resolution for calls on variables typed as interfaces.
|
|
29
|
+
*/
|
|
30
|
+
export declare function resolveViaInterfaceCHA(methodName: string, classMethodIndex: Map<string, ClassEntry>, methodToInterfaces: Map<string, Set<string>>, interfaceImpls: Map<string, Set<string>>, graph: PluginContext['graph']): Promise<BaseNodeRecord | null>;
|
|
21
31
|
/**
|
|
22
32
|
* REG-400: Walk DERIVES_FROM inheritance chain to find inherited methods.
|
|
23
33
|
* Used when method is not found on the direct class.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MethodCallResolution.d.ts","sourceRoot":"","sources":["../../../../src/plugins/enrichment/method-call/MethodCallResolution.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtE
|
|
1
|
+
{"version":3,"file":"MethodCallResolution.d.ts","sourceRoot":"","sources":["../../../../src/plugins/enrichment/method-call/MethodCallResolution.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtE;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,cAAc,EAC1B,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACzC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC,EACxD,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAC7C,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GACxC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAwEhC;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACzC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAC5C,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EACxC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,GAC5B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAyBhC;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,cAAc,EACzB,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACzC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,QAAQ,GAAE,MAAU,EACpB,OAAO,GAAE,GAAG,CAAC,MAAM,CAAa,GAC/B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAwBhC;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,cAAc,EAC1B,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,GAC5B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAgBhC"}
|
|
@@ -13,8 +13,9 @@
|
|
|
13
13
|
* 2. Local class in same file
|
|
14
14
|
* 3. "this" reference to containing class
|
|
15
15
|
* 4. Variable type index (INSTANCE_OF)
|
|
16
|
+
* 5. Interface-aware CHA fallback (REG-485)
|
|
16
17
|
*/
|
|
17
|
-
export async function resolveMethodCall(methodCall, classMethodIndex, variableTypes, graph, containingClassCache) {
|
|
18
|
+
export async function resolveMethodCall(methodCall, classMethodIndex, variableTypes, graph, containingClassCache, methodToInterfaces, interfaceImpls) {
|
|
18
19
|
const { object, method, file } = methodCall;
|
|
19
20
|
if (!object || !method)
|
|
20
21
|
return null;
|
|
@@ -68,6 +69,43 @@ export async function resolveMethodCall(methodCall, classMethodIndex, variableTy
|
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
71
|
}
|
|
72
|
+
// 5. Interface-aware CHA fallback (REG-485)
|
|
73
|
+
if (methodToInterfaces && interfaceImpls) {
|
|
74
|
+
const chaResult = await resolveViaInterfaceCHA(method, classMethodIndex, methodToInterfaces, interfaceImpls, graph);
|
|
75
|
+
if (chaResult)
|
|
76
|
+
return chaResult;
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Step 5: Interface-aware CHA fallback (REG-485).
|
|
82
|
+
*
|
|
83
|
+
* When steps 1-4 fail, look up method name in interface method index,
|
|
84
|
+
* find implementing classes, and resolve to their method definition.
|
|
85
|
+
* Also checks parent classes via DERIVES_FROM for inherited methods.
|
|
86
|
+
* This enables resolution for calls on variables typed as interfaces.
|
|
87
|
+
*/
|
|
88
|
+
export async function resolveViaInterfaceCHA(methodName, classMethodIndex, methodToInterfaces, interfaceImpls, graph) {
|
|
89
|
+
const candidateInterfaces = methodToInterfaces.get(methodName);
|
|
90
|
+
if (!candidateInterfaces || candidateInterfaces.size === 0)
|
|
91
|
+
return null;
|
|
92
|
+
for (const interfaceName of candidateInterfaces) {
|
|
93
|
+
const implementingClasses = interfaceImpls.get(interfaceName);
|
|
94
|
+
if (!implementingClasses)
|
|
95
|
+
continue;
|
|
96
|
+
for (const className of implementingClasses) {
|
|
97
|
+
const classEntry = classMethodIndex.get(className);
|
|
98
|
+
if (!classEntry)
|
|
99
|
+
continue;
|
|
100
|
+
if (classEntry.methods.has(methodName)) {
|
|
101
|
+
return classEntry.methods.get(methodName);
|
|
102
|
+
}
|
|
103
|
+
// Check parent classes via DERIVES_FROM chain
|
|
104
|
+
const inherited = await findMethodInParentClasses(classEntry.classNode, methodName, classMethodIndex, graph);
|
|
105
|
+
if (inherited)
|
|
106
|
+
return inherited;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
71
109
|
return null;
|
|
72
110
|
}
|
|
73
111
|
/**
|