@jafreck/lore 0.2.3 → 0.2.5
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/README.md +22 -13
- package/dist/cli.js +130 -14
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/indexer/call-graph.d.ts +24 -7
- package/dist/indexer/call-graph.d.ts.map +1 -1
- package/dist/indexer/call-graph.js +154 -22
- package/dist/indexer/call-graph.js.map +1 -1
- package/dist/indexer/config-parser.js +6 -1
- package/dist/indexer/config-parser.js.map +1 -1
- package/dist/indexer/coverage.js +3 -1
- package/dist/indexer/coverage.js.map +1 -1
- package/dist/indexer/db.d.ts.map +1 -1
- package/dist/indexer/db.js +43 -0
- package/dist/indexer/db.js.map +1 -1
- package/dist/indexer/docs.d.ts.map +1 -1
- package/dist/indexer/docs.js +4 -0
- package/dist/indexer/docs.js.map +1 -1
- package/dist/indexer/embedder.d.ts.map +1 -1
- package/dist/indexer/embedder.js +5 -0
- package/dist/indexer/embedder.js.map +1 -1
- package/dist/indexer/extractors/bash.d.ts.map +1 -1
- package/dist/indexer/extractors/bash.js +29 -1
- package/dist/indexer/extractors/bash.js.map +1 -1
- package/dist/indexer/extractors/c.d.ts +5 -2
- package/dist/indexer/extractors/c.d.ts.map +1 -1
- package/dist/indexer/extractors/c.js +277 -8
- package/dist/indexer/extractors/c.js.map +1 -1
- package/dist/indexer/extractors/cpp.d.ts +5 -2
- package/dist/indexer/extractors/cpp.d.ts.map +1 -1
- package/dist/indexer/extractors/cpp.js +349 -3
- package/dist/indexer/extractors/cpp.js.map +1 -1
- package/dist/indexer/extractors/csharp.d.ts.map +1 -1
- package/dist/indexer/extractors/csharp.js +166 -1
- package/dist/indexer/extractors/csharp.js.map +1 -1
- package/dist/indexer/extractors/dart.d.ts.map +1 -1
- package/dist/indexer/extractors/dart.js +134 -1
- package/dist/indexer/extractors/dart.js.map +1 -1
- package/dist/indexer/extractors/elixir.d.ts.map +1 -1
- package/dist/indexer/extractors/elixir.js +45 -0
- package/dist/indexer/extractors/elixir.js.map +1 -1
- package/dist/indexer/extractors/elm.d.ts.map +1 -1
- package/dist/indexer/extractors/elm.js +33 -0
- package/dist/indexer/extractors/elm.js.map +1 -1
- package/dist/indexer/extractors/go.d.ts.map +1 -1
- package/dist/indexer/extractors/go.js +206 -1
- package/dist/indexer/extractors/go.js.map +1 -1
- package/dist/indexer/extractors/haskell.d.ts.map +1 -1
- package/dist/indexer/extractors/haskell.js +29 -0
- package/dist/indexer/extractors/haskell.js.map +1 -1
- package/dist/indexer/extractors/java.d.ts.map +1 -1
- package/dist/indexer/extractors/java.js +170 -1
- package/dist/indexer/extractors/java.js.map +1 -1
- package/dist/indexer/extractors/javascript.d.ts.map +1 -1
- package/dist/indexer/extractors/javascript.js +24 -2
- package/dist/indexer/extractors/javascript.js.map +1 -1
- package/dist/indexer/extractors/julia.d.ts.map +1 -1
- package/dist/indexer/extractors/julia.js +23 -1
- package/dist/indexer/extractors/julia.js.map +1 -1
- package/dist/indexer/extractors/kotlin.d.ts.map +1 -1
- package/dist/indexer/extractors/kotlin.js +122 -1
- package/dist/indexer/extractors/kotlin.js.map +1 -1
- package/dist/indexer/extractors/lua.d.ts.map +1 -1
- package/dist/indexer/extractors/lua.js +19 -1
- package/dist/indexer/extractors/lua.js.map +1 -1
- package/dist/indexer/extractors/objc.d.ts.map +1 -1
- package/dist/indexer/extractors/objc.js +171 -1
- package/dist/indexer/extractors/objc.js.map +1 -1
- package/dist/indexer/extractors/ocaml.d.ts.map +1 -1
- package/dist/indexer/extractors/ocaml.js +29 -0
- package/dist/indexer/extractors/ocaml.js.map +1 -1
- package/dist/indexer/extractors/php.d.ts.map +1 -1
- package/dist/indexer/extractors/php.js +133 -1
- package/dist/indexer/extractors/php.js.map +1 -1
- package/dist/indexer/extractors/python.d.ts.map +1 -1
- package/dist/indexer/extractors/python.js +24 -3
- package/dist/indexer/extractors/python.js.map +1 -1
- package/dist/indexer/extractors/ruby.d.ts.map +1 -1
- package/dist/indexer/extractors/ruby.js +23 -1
- package/dist/indexer/extractors/ruby.js.map +1 -1
- package/dist/indexer/extractors/rust.d.ts.map +1 -1
- package/dist/indexer/extractors/rust.js +139 -2
- package/dist/indexer/extractors/rust.js.map +1 -1
- package/dist/indexer/extractors/scala.d.ts.map +1 -1
- package/dist/indexer/extractors/scala.js +24 -1
- package/dist/indexer/extractors/scala.js.map +1 -1
- package/dist/indexer/extractors/swift.d.ts.map +1 -1
- package/dist/indexer/extractors/swift.js +129 -1
- package/dist/indexer/extractors/swift.js.map +1 -1
- package/dist/indexer/extractors/types.d.ts +78 -2
- package/dist/indexer/extractors/types.d.ts.map +1 -1
- package/dist/indexer/extractors/types.js +167 -8
- package/dist/indexer/extractors/types.js.map +1 -1
- package/dist/indexer/extractors/typescript.d.ts.map +1 -1
- package/dist/indexer/extractors/typescript.js +217 -1
- package/dist/indexer/extractors/typescript.js.map +1 -1
- package/dist/indexer/extractors/zig.d.ts.map +1 -1
- package/dist/indexer/extractors/zig.js +30 -0
- package/dist/indexer/extractors/zig.js.map +1 -1
- package/dist/indexer/git-history.d.ts.map +1 -1
- package/dist/indexer/git-history.js +4 -8
- package/dist/indexer/git-history.js.map +1 -1
- package/dist/indexer/git-hooks.js +1 -1
- package/dist/indexer/git-hooks.js.map +1 -1
- package/dist/indexer/index.d.ts +24 -1
- package/dist/indexer/index.d.ts.map +1 -1
- package/dist/indexer/index.js +245 -66
- package/dist/indexer/index.js.map +1 -1
- package/dist/indexer/lsp/client.d.ts.map +1 -1
- package/dist/indexer/lsp/client.js +40 -15
- package/dist/indexer/lsp/client.js.map +1 -1
- package/dist/indexer/lsp/config.d.ts.map +1 -1
- package/dist/indexer/lsp/config.js +18 -4
- package/dist/indexer/lsp/config.js.map +1 -1
- package/dist/indexer/poller.d.ts +8 -0
- package/dist/indexer/poller.d.ts.map +1 -1
- package/dist/indexer/poller.js +3 -1
- package/dist/indexer/poller.js.map +1 -1
- package/dist/indexer/resolver.d.ts.map +1 -1
- package/dist/indexer/resolver.js +8 -4
- package/dist/indexer/resolver.js.map +1 -1
- package/dist/indexer/watcher.d.ts +8 -0
- package/dist/indexer/watcher.d.ts.map +1 -1
- package/dist/indexer/watcher.js +18 -1
- package/dist/indexer/watcher.js.map +1 -1
- package/dist/logger.d.ts +104 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +170 -0
- package/dist/logger.js.map +1 -0
- package/dist/lore-server/db.d.ts.map +1 -1
- package/dist/lore-server/db.js +28 -24
- package/dist/lore-server/db.js.map +1 -1
- package/dist/lore-server/server.d.ts +3 -0
- package/dist/lore-server/server.d.ts.map +1 -1
- package/dist/lore-server/server.js +62 -102
- package/dist/lore-server/server.js.map +1 -1
- package/dist/lore-server/tools/graph.d.ts +4 -3
- package/dist/lore-server/tools/graph.d.ts.map +1 -1
- package/dist/lore-server/tools/graph.js +48 -10
- package/dist/lore-server/tools/graph.js.map +1 -1
- package/dist/lore-server/tools/notes.d.ts.map +1 -1
- package/dist/lore-server/tools/notes.js +6 -2
- package/dist/lore-server/tools/notes.js.map +1 -1
- package/dist/lore-server/tools/search.d.ts.map +1 -1
- package/dist/lore-server/tools/search.js +46 -14
- package/dist/lore-server/tools/search.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bash.js","sourceRoot":"","sources":["../../../src/indexer/extractors/bash.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"bash.js","sourceRoot":"","sources":["../../../src/indexer/extractors/bash.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module indexer/extractors/c
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* struct/enum/typedef declarations
|
|
4
|
+
* C language extractor. Extracts:
|
|
5
|
+
* - Function definitions, struct/enum/typedef declarations
|
|
6
|
+
* - Preprocessor macro definitions (`preproc_function_def`, `preproc_def`)
|
|
7
|
+
* - `#include` directives
|
|
8
|
+
* - Call-expression references with function-pointer / indirect-call awareness
|
|
6
9
|
*/
|
|
7
10
|
import type Parser from 'tree-sitter';
|
|
8
11
|
import { type ExtractionResult, type SymbolExtractor } from './types.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c.d.ts","sourceRoot":"","sources":["../../../src/indexer/extractors/c.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"c.d.ts","sourceRoot":"","sources":["../../../src/indexer/extractors/c.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAEL,KAAK,gBAAgB,EAMrB,KAAK,eAAe,EAMrB,MAAM,YAAY,CAAC;AAmBpB,qBAAa,UAAW,YAAW,eAAe;IAChD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB;CAiEjF"}
|
|
@@ -1,23 +1,51 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module indexer/extractors/c
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* struct/enum/typedef declarations
|
|
4
|
+
* C language extractor. Extracts:
|
|
5
|
+
* - Function definitions, struct/enum/typedef declarations
|
|
6
|
+
* - Preprocessor macro definitions (`preproc_function_def`, `preproc_def`)
|
|
7
|
+
* - `#include` directives
|
|
8
|
+
* - Call-expression references with function-pointer / indirect-call awareness
|
|
6
9
|
*/
|
|
7
|
-
import { emptyResult, findFirst, nodeSignature, walk, } from './types.js';
|
|
10
|
+
import { emptyResult, findEnclosingSymbolName, findFirst, nodeSignature, walk, } from './types.js';
|
|
11
|
+
const C_SYMBOL_NODE_TYPES = [
|
|
12
|
+
'function_definition',
|
|
13
|
+
];
|
|
14
|
+
/**
|
|
15
|
+
* AST node types on the "function" child of a `call_expression` that indicate
|
|
16
|
+
* the call goes through a level of indirection (pointer deref, field access,
|
|
17
|
+
* subscript, etc.).
|
|
18
|
+
*/
|
|
19
|
+
const INDIRECT_CALL_NODE_TYPES = new Set([
|
|
20
|
+
'pointer_expression',
|
|
21
|
+
'parenthesized_expression',
|
|
22
|
+
'subscript_expression',
|
|
23
|
+
]);
|
|
8
24
|
// ─── CExtractor ───────────────────────────────────────────────────────────────
|
|
9
25
|
export class CExtractor {
|
|
10
26
|
extract(tree, _source, _filePath) {
|
|
11
27
|
const result = emptyResult();
|
|
28
|
+
/** Track macro names so the call-ref pass can classify invocations. */
|
|
29
|
+
const macroNames = new Set();
|
|
30
|
+
// First pass: collect macro names.
|
|
31
|
+
for (const node of walk(tree.rootNode)) {
|
|
32
|
+
if (node.type === 'preproc_function_def' || node.type === 'preproc_def') {
|
|
33
|
+
const sym = extractMacro(node);
|
|
34
|
+
if (sym)
|
|
35
|
+
macroNames.add(sym.name);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// Main pass: symbols, imports, call-refs, type-refs.
|
|
12
39
|
for (const node of walk(tree.rootNode)) {
|
|
13
40
|
switch (node.type) {
|
|
14
41
|
case 'function_definition':
|
|
15
42
|
result.symbols.push(extractFunction(node));
|
|
43
|
+
extractFunctionTypeRefs(node, result.typeRefs);
|
|
16
44
|
break;
|
|
17
45
|
case 'struct_specifier':
|
|
18
|
-
// Only capture named structs at file scope (skip anonymous inner structs)
|
|
19
46
|
if (node.childForFieldName('name')) {
|
|
20
47
|
result.symbols.push(extractNamedSpecifier(node, 'struct'));
|
|
48
|
+
extractStructFieldTypeRefs(node, result.typeRefs);
|
|
21
49
|
}
|
|
22
50
|
break;
|
|
23
51
|
case 'enum_specifier':
|
|
@@ -28,9 +56,34 @@ export class CExtractor {
|
|
|
28
56
|
case 'typedef_declaration':
|
|
29
57
|
result.symbols.push(extractTypedef(node));
|
|
30
58
|
break;
|
|
59
|
+
case 'preproc_function_def':
|
|
60
|
+
case 'preproc_def': {
|
|
61
|
+
const sym = extractMacro(node);
|
|
62
|
+
if (sym)
|
|
63
|
+
result.symbols.push(sym);
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
31
66
|
case 'preproc_include':
|
|
32
67
|
result.imports.push(extractInclude(node));
|
|
33
68
|
break;
|
|
69
|
+
case 'call_expression': {
|
|
70
|
+
const ref = extractCallRef(node, macroNames);
|
|
71
|
+
if (ref)
|
|
72
|
+
result.callRefs.push(ref);
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
case 'declaration': {
|
|
76
|
+
extractVariableTypeRefs(node, result.typeRefs);
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
case 'sizeof_expression': {
|
|
80
|
+
extractSizeofTypeRef(node, result.typeRefs);
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
case 'cast_expression': {
|
|
84
|
+
extractCastTypeRef(node, result.typeRefs);
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
34
87
|
}
|
|
35
88
|
}
|
|
36
89
|
return result;
|
|
@@ -53,7 +106,6 @@ function extractFunction(node) {
|
|
|
53
106
|
* extracts the innermost identifier.
|
|
54
107
|
*/
|
|
55
108
|
function extractDeclaratorName(declarator) {
|
|
56
|
-
// Peel off pointer/array wrappers
|
|
57
109
|
let node = declarator;
|
|
58
110
|
while (node && node.type !== 'function_declarator') {
|
|
59
111
|
const inner = node.childForFieldName('declarator') ??
|
|
@@ -82,7 +134,6 @@ function extractNamedSpecifier(node, kind) {
|
|
|
82
134
|
};
|
|
83
135
|
}
|
|
84
136
|
function extractTypedef(node) {
|
|
85
|
-
// The typedef name is the last named child (the identifier after the type)
|
|
86
137
|
const children = node.namedChildren;
|
|
87
138
|
const nameNode = children[children.length - 1] ?? null;
|
|
88
139
|
return {
|
|
@@ -93,14 +144,232 @@ function extractTypedef(node) {
|
|
|
93
144
|
signature: nodeSignature(node),
|
|
94
145
|
};
|
|
95
146
|
}
|
|
147
|
+
// ─── Macro extraction ─────────────────────────────────────────────────────────
|
|
148
|
+
/**
|
|
149
|
+
* Extracts a `RawSymbol` with `kind: 'macro'` from `preproc_function_def`
|
|
150
|
+
* (function-like macros) and `preproc_def` (object-like macros).
|
|
151
|
+
*/
|
|
152
|
+
function extractMacro(node) {
|
|
153
|
+
const nameNode = node.childForFieldName('name');
|
|
154
|
+
if (!nameNode)
|
|
155
|
+
return null;
|
|
156
|
+
return {
|
|
157
|
+
name: nameNode.text,
|
|
158
|
+
kind: 'macro',
|
|
159
|
+
startLine: node.startPosition.row,
|
|
160
|
+
endLine: node.endPosition.row,
|
|
161
|
+
signature: node.text.split('\n')[0]?.trim() ?? '',
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
// ─── Call-ref extraction with indirection awareness ───────────────────────────
|
|
165
|
+
function extractCallRef(node, macroNames) {
|
|
166
|
+
const fnNode = node.childForFieldName('function');
|
|
167
|
+
if (!fnNode)
|
|
168
|
+
return null;
|
|
169
|
+
const callerSymbol = findEnclosingSymbolName(node, C_SYMBOL_NODE_TYPES);
|
|
170
|
+
const line = node.startPosition.row;
|
|
171
|
+
const character = node.startPosition.column;
|
|
172
|
+
const { calleeName, isIndirect, callKind } = classifyCallee(fnNode, macroNames);
|
|
173
|
+
return {
|
|
174
|
+
callerSymbol,
|
|
175
|
+
calleeRaw: calleeName,
|
|
176
|
+
line,
|
|
177
|
+
character,
|
|
178
|
+
callKind,
|
|
179
|
+
isIndirect,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Walks the function-position subtree of a `call_expression` to extract the
|
|
184
|
+
* callee name and classify the call kind.
|
|
185
|
+
*/
|
|
186
|
+
function classifyCallee(fnNode, macroNames) {
|
|
187
|
+
// Direct identifier: foo(...)
|
|
188
|
+
if (fnNode.type === 'identifier') {
|
|
189
|
+
const name = fnNode.text;
|
|
190
|
+
if (macroNames.has(name)) {
|
|
191
|
+
return { calleeName: name, isIndirect: false, callKind: 'macro' };
|
|
192
|
+
}
|
|
193
|
+
return { calleeName: name, isIndirect: false, callKind: 'direct' };
|
|
194
|
+
}
|
|
195
|
+
// Field expression: obj.method(...) / ptr->method(...)
|
|
196
|
+
if (fnNode.type === 'field_expression') {
|
|
197
|
+
return { calleeName: fnNode.text, isIndirect: false, callKind: 'direct' };
|
|
198
|
+
}
|
|
199
|
+
// Indirect calls through pointer deref, parens, or subscript:
|
|
200
|
+
// (*callback)(...) / (fnTable[i])(...)
|
|
201
|
+
if (INDIRECT_CALL_NODE_TYPES.has(fnNode.type)) {
|
|
202
|
+
const innerName = extractInnermostIdentifier(fnNode);
|
|
203
|
+
return {
|
|
204
|
+
calleeName: innerName ?? fnNode.text,
|
|
205
|
+
isIndirect: true,
|
|
206
|
+
callKind: 'indirect',
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
// Fallback
|
|
210
|
+
return { calleeName: fnNode.text, isIndirect: false, callKind: 'direct' };
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Walks into pointer/parenthesised/subscript wrappers to find the innermost
|
|
214
|
+
* identifier being dereferenced.
|
|
215
|
+
*/
|
|
216
|
+
function extractInnermostIdentifier(node) {
|
|
217
|
+
let current = node;
|
|
218
|
+
while (current) {
|
|
219
|
+
if (current.type === 'identifier')
|
|
220
|
+
return current.text;
|
|
221
|
+
if (current.type === 'field_expression')
|
|
222
|
+
return current.text;
|
|
223
|
+
if (current.type === 'pointer_expression') {
|
|
224
|
+
const arg = current.childForFieldName('argument') ?? current.namedChildren[current.namedChildren.length - 1] ?? null;
|
|
225
|
+
if (arg && arg !== current) {
|
|
226
|
+
current = arg;
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
if (current.type === 'parenthesized_expression') {
|
|
231
|
+
const inner = current.namedChildren[0] ?? null;
|
|
232
|
+
if (inner && inner !== current) {
|
|
233
|
+
current = inner;
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
if (current.type === 'subscript_expression') {
|
|
238
|
+
const arg = current.childForFieldName('argument') ?? current.namedChildren[0] ?? null;
|
|
239
|
+
if (arg && arg !== current) {
|
|
240
|
+
current = arg;
|
|
241
|
+
continue;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
break;
|
|
245
|
+
}
|
|
246
|
+
return null;
|
|
247
|
+
}
|
|
96
248
|
function extractInclude(node) {
|
|
97
|
-
// path child is either string_literal or system_lib_string
|
|
98
249
|
const pathNode = node.childForFieldName('path') ??
|
|
99
250
|
node.namedChildren[0] ??
|
|
100
251
|
null;
|
|
101
252
|
const raw = pathNode?.text ?? '';
|
|
102
|
-
// Strip surrounding quotes or angle brackets
|
|
103
253
|
const source = raw.replace(/^["<]|[">]$/g, '');
|
|
104
254
|
return { source, importedNames: [] };
|
|
105
255
|
}
|
|
256
|
+
// ─── Type-ref extraction ──────────────────────────────────────────────────────
|
|
257
|
+
/**
|
|
258
|
+
* Extracts a type name from a C type node. Returns the text of the first
|
|
259
|
+
* `type_identifier`, `struct_specifier`, `enum_specifier`, or `sized_type_specifier`
|
|
260
|
+
* found within the node.
|
|
261
|
+
*/
|
|
262
|
+
function extractCTypeName(typeNode) {
|
|
263
|
+
if (typeNode.type === 'type_identifier')
|
|
264
|
+
return typeNode.text;
|
|
265
|
+
if (typeNode.type === 'struct_specifier' || typeNode.type === 'enum_specifier') {
|
|
266
|
+
const nameNode = typeNode.childForFieldName('name');
|
|
267
|
+
if (nameNode && !typeNode.childForFieldName('body'))
|
|
268
|
+
return nameNode.text;
|
|
269
|
+
return null; // definition context, not a reference
|
|
270
|
+
}
|
|
271
|
+
if (typeNode.type === 'sized_type_specifier')
|
|
272
|
+
return typeNode.text;
|
|
273
|
+
// Walk children
|
|
274
|
+
for (const child of typeNode.namedChildren) {
|
|
275
|
+
const name = extractCTypeName(child);
|
|
276
|
+
if (name)
|
|
277
|
+
return name;
|
|
278
|
+
}
|
|
279
|
+
return null;
|
|
280
|
+
}
|
|
281
|
+
function emitTypeRef(refs, enclosingSymbol, typeRaw, refKind, line, character) {
|
|
282
|
+
refs.push({ enclosingSymbol, typeRaw, refKind, line, character });
|
|
283
|
+
}
|
|
284
|
+
function extractFunctionTypeRefs(funcNode, refs) {
|
|
285
|
+
const funcName = extractDeclaratorName(funcNode.childForFieldName('declarator') ?? funcNode);
|
|
286
|
+
// Return type
|
|
287
|
+
const typeNode = funcNode.childForFieldName('type');
|
|
288
|
+
if (typeNode) {
|
|
289
|
+
const typeName = extractCTypeName(typeNode);
|
|
290
|
+
if (typeName) {
|
|
291
|
+
emitTypeRef(refs, funcName, typeName, 'return', typeNode.startPosition.row, typeNode.startPosition.column);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
// Parameters
|
|
295
|
+
const declarator = funcNode.childForFieldName('declarator');
|
|
296
|
+
if (declarator) {
|
|
297
|
+
const funcDeclarator = findFunctionDeclarator(declarator);
|
|
298
|
+
if (funcDeclarator) {
|
|
299
|
+
const params = funcDeclarator.childForFieldName('parameters');
|
|
300
|
+
if (params) {
|
|
301
|
+
for (const param of params.namedChildren) {
|
|
302
|
+
if (param.type === 'parameter_declaration') {
|
|
303
|
+
const paramType = param.childForFieldName('type');
|
|
304
|
+
if (paramType) {
|
|
305
|
+
const typeName = extractCTypeName(paramType);
|
|
306
|
+
if (typeName) {
|
|
307
|
+
emitTypeRef(refs, funcName, typeName, 'parameter', paramType.startPosition.row, paramType.startPosition.column);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
function findFunctionDeclarator(node) {
|
|
317
|
+
if (node.type === 'function_declarator')
|
|
318
|
+
return node;
|
|
319
|
+
for (const child of node.namedChildren) {
|
|
320
|
+
const found = findFunctionDeclarator(child);
|
|
321
|
+
if (found)
|
|
322
|
+
return found;
|
|
323
|
+
}
|
|
324
|
+
return null;
|
|
325
|
+
}
|
|
326
|
+
function extractStructFieldTypeRefs(structNode, refs) {
|
|
327
|
+
const structName = structNode.childForFieldName('name')?.text ?? '';
|
|
328
|
+
const body = structNode.childForFieldName('body');
|
|
329
|
+
if (!body)
|
|
330
|
+
return;
|
|
331
|
+
for (const child of body.namedChildren) {
|
|
332
|
+
if (child.type === 'field_declaration') {
|
|
333
|
+
const typeNode = child.childForFieldName('type');
|
|
334
|
+
if (typeNode) {
|
|
335
|
+
const typeName = extractCTypeName(typeNode);
|
|
336
|
+
if (typeName) {
|
|
337
|
+
emitTypeRef(refs, structName, typeName, 'field', typeNode.startPosition.row, typeNode.startPosition.column);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
function extractVariableTypeRefs(declNode, refs) {
|
|
344
|
+
// Skip if inside a function_definition (those are handled by extractFunctionTypeRefs)
|
|
345
|
+
const typeNode = declNode.childForFieldName('type');
|
|
346
|
+
if (!typeNode)
|
|
347
|
+
return;
|
|
348
|
+
const typeName = extractCTypeName(typeNode);
|
|
349
|
+
if (!typeName)
|
|
350
|
+
return;
|
|
351
|
+
const enclosing = findEnclosingSymbolName(declNode, C_SYMBOL_NODE_TYPES);
|
|
352
|
+
emitTypeRef(refs, enclosing, typeName, 'variable', typeNode.startPosition.row, typeNode.startPosition.column);
|
|
353
|
+
}
|
|
354
|
+
function extractSizeofTypeRef(node, refs) {
|
|
355
|
+
// sizeof(Type) — the type argument is typically a type_descriptor or parenthesized type
|
|
356
|
+
const valueNode = node.childForFieldName('value') ?? node.childForFieldName('type');
|
|
357
|
+
if (valueNode) {
|
|
358
|
+
const typeName = extractCTypeName(valueNode);
|
|
359
|
+
if (typeName) {
|
|
360
|
+
const enclosing = findEnclosingSymbolName(node, C_SYMBOL_NODE_TYPES);
|
|
361
|
+
emitTypeRef(refs, enclosing, typeName, 'sizeof', valueNode.startPosition.row, valueNode.startPosition.column);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
function extractCastTypeRef(node, refs) {
|
|
366
|
+
const typeNode = node.childForFieldName('type');
|
|
367
|
+
if (typeNode) {
|
|
368
|
+
const typeName = extractCTypeName(typeNode);
|
|
369
|
+
if (typeName) {
|
|
370
|
+
const enclosing = findEnclosingSymbolName(node, C_SYMBOL_NODE_TYPES);
|
|
371
|
+
emitTypeRef(refs, enclosing, typeName, 'cast', typeNode.startPosition.row, typeNode.startPosition.column);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}
|
|
106
375
|
//# sourceMappingURL=c.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c.js","sourceRoot":"","sources":["../../../src/indexer/extractors/c.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"c.js","sourceRoot":"","sources":["../../../src/indexer/extractors/c.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module indexer/extractors/cpp
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* C++ language extractor. Extracts:
|
|
5
|
+
* - Function definitions, class/struct declarations
|
|
6
|
+
* - Preprocessor macro definitions (`preproc_function_def`, `preproc_def`)
|
|
7
|
+
* - `#include` directives
|
|
8
|
+
* - Call-expression references with function-pointer / indirect-call awareness
|
|
6
9
|
*/
|
|
7
10
|
import type Parser from 'tree-sitter';
|
|
8
11
|
import { type ExtractionResult, type SymbolExtractor } from './types.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cpp.d.ts","sourceRoot":"","sources":["../../../src/indexer/extractors/cpp.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cpp.d.ts","sourceRoot":"","sources":["../../../src/indexer/extractors/cpp.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAEL,KAAK,gBAAgB,EAOrB,KAAK,eAAe,EAOrB,MAAM,YAAY,CAAC;AAmBpB,qBAAa,YAAa,YAAW,eAAe;IAClD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB;CAiFjF"}
|