gitnexus 1.6.6-rc.1 → 1.6.6-rc.2
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/_shared/index.d.ts +1 -1
- package/dist/_shared/index.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/symbol-definition.d.ts +13 -0
- package/dist/_shared/scope-resolution/symbol-definition.d.ts.map +1 -1
- package/dist/core/ingestion/languages/cpp/arity-metadata.d.ts +9 -0
- package/dist/core/ingestion/languages/cpp/arity-metadata.js +50 -1
- package/dist/core/ingestion/languages/cpp/captures.js +3 -0
- package/dist/core/ingestion/model/symbol-table.d.ts +2 -1
- package/dist/core/ingestion/model/symbol-table.js +3 -0
- package/dist/core/ingestion/parsing-processor.js +2 -0
- package/dist/core/ingestion/scope-extractor.js +46 -0
- package/dist/core/ingestion/workers/parse-worker.d.ts +2 -1
- package/dist/core/ingestion/workers/parse-worker.js +1 -0
- package/package.json +1 -1
package/dist/_shared/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export { SupportedLanguages } from './languages.js';
|
|
|
5
5
|
export { getLanguageFromFilename, getSyntaxLanguageFromFilename } from './language-detection.js';
|
|
6
6
|
export type { MroStrategy } from './mro-strategy.js';
|
|
7
7
|
export type { PipelinePhase, PipelineProgress } from './pipeline.js';
|
|
8
|
-
export type { SymbolDefinition } from './scope-resolution/symbol-definition.js';
|
|
8
|
+
export type { ParameterTypeClass, SymbolDefinition } from './scope-resolution/symbol-definition.js';
|
|
9
9
|
export type { ScopeId, DefId, ScopeKind, Range, Capture, CaptureMatch, BindingRef, ImportEdge, TypeRef, Scope, ResolutionEvidence, Resolution, Reference, ReferenceIndex, LookupParams, RegistryContributor, ParsedImport, ParsedTypeBinding, WorkspaceIndex, Callsite, ScopeLookup, } from './scope-resolution/types.js';
|
|
10
10
|
export { EvidenceWeights, typeBindingWeightAtDepth } from './scope-resolution/evidence-weights.js';
|
|
11
11
|
export { ORIGIN_PRIORITY } from './scope-resolution/origin-priority.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,WAAW,EACX,cAAc,EACd,SAAS,EACT,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAGzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACjG,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAIrE,YAAY,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,16 @@
|
|
|
9
9
|
* Shape is unchanged from the prior local definition.
|
|
10
10
|
*/
|
|
11
11
|
import type { NodeLabel } from '../graph/types.js';
|
|
12
|
+
export interface ParameterTypeClass {
|
|
13
|
+
/** Normalized base type, matching the coarse `parameterTypes` vocabulary when known. */
|
|
14
|
+
base: string;
|
|
15
|
+
/** Top-level cv signal preserved from the original C++ parameter spelling. */
|
|
16
|
+
cv: 'none' | 'const' | 'volatile' | 'const volatile' | 'unknown';
|
|
17
|
+
/** Coarse value/reference/pointer shape. */
|
|
18
|
+
indirection: 'value' | 'lvalue-ref' | 'rvalue-ref' | 'pointer' | 'unknown';
|
|
19
|
+
/** Number of pointer markers when indirection is `pointer`; otherwise 0. */
|
|
20
|
+
pointerDepth: number;
|
|
21
|
+
}
|
|
12
22
|
export interface SymbolDefinition {
|
|
13
23
|
nodeId: string;
|
|
14
24
|
filePath: string;
|
|
@@ -24,6 +34,9 @@ export interface SymbolDefinition {
|
|
|
24
34
|
/** Per-parameter type names for overload disambiguation (e.g. ['int', 'String']).
|
|
25
35
|
* Populated when parameter types are resolvable from AST (any typed language). */
|
|
26
36
|
parameterTypes?: string[];
|
|
37
|
+
/** Additive per-parameter type shape sidecar for languages that need cv/ref/pointer distinctions.
|
|
38
|
+
* Does not participate in graph node identity unless a resolver explicitly opts in. */
|
|
39
|
+
parameterTypeClasses?: ParameterTypeClass[];
|
|
27
40
|
/** Raw return type text extracted from AST (e.g. 'User', 'Promise<User>') */
|
|
28
41
|
returnType?: string;
|
|
29
42
|
/** Declared type for non-callable symbols — fields/properties (e.g. 'Address', 'List<User>') */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbol-definition.d.ts","sourceRoot":"","sources":["../../src/scope-resolution/symbol-definition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB;;+FAE2F;IAC3F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;iHAC6G;IAC7G,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;uFACmF;IACnF,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gGAAgG;IAChG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gGAAgG;IAChG,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;;;;;yEAKqE;IACrE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
|
1
|
+
{"version":3,"file":"symbol-definition.d.ts","sourceRoot":"","sources":["../../src/scope-resolution/symbol-definition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,WAAW,kBAAkB;IACjC,wFAAwF;IACxF,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,gBAAgB,GAAG,SAAS,CAAC;IACjE,4CAA4C;IAC5C,WAAW,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;IAC3E,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB;;+FAE2F;IAC3F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;iHAC6G;IAC7G,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;uFACmF;IACnF,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B;4FACwF;IACxF,oBAAoB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC5C,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gGAAgG;IAChG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gGAAgG;IAChG,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;;;;;yEAKqE;IACrE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { SyntaxNode } from '../../utils/ast-helpers.js';
|
|
2
|
+
import type { ParameterTypeClass } from '../../../../_shared/index.js';
|
|
2
3
|
export interface CppArityInfo {
|
|
3
4
|
parameterCount?: number;
|
|
4
5
|
requiredParameterCount?: number;
|
|
5
6
|
parameterTypes?: string[];
|
|
7
|
+
parameterTypeClasses?: ParameterTypeClass[];
|
|
6
8
|
}
|
|
7
9
|
/**
|
|
8
10
|
* Compute declaration arity from a C++ function definition or declaration node.
|
|
@@ -22,5 +24,12 @@ export declare function computeCppCallArity(node: SyntaxNode): number;
|
|
|
22
24
|
* so that `narrowOverloadCandidates` can match against literal-inferred
|
|
23
25
|
* argument types (e.g. `inferCppLiteralType` returns `'string'` for
|
|
24
26
|
* string literals, not `'std::string'`).
|
|
27
|
+
*
|
|
28
|
+
* This intentionally remains coarse and graph-ID-stable: cv-qualifiers,
|
|
29
|
+
* reference markers, and pointer markers are stripped here. C++ callers
|
|
30
|
+
* that need those distinctions should read `parameterTypeClasses`, which
|
|
31
|
+
* is an additive sidecar and does not participate in overload node ID
|
|
32
|
+
* hashing.
|
|
25
33
|
*/
|
|
26
34
|
export declare function normalizeCppParamType(raw: string): string;
|
|
35
|
+
export declare function classifyCppParameterType(rawType: string, declaratorText?: string, fullParameterText?: string): ParameterTypeClass;
|
|
@@ -55,27 +55,34 @@ export function computeCppDeclarationArity(node) {
|
|
|
55
55
|
p.type === 'variadic_parameter_declaration').length;
|
|
56
56
|
const totalNonVariadic = requiredCount + optionalCount;
|
|
57
57
|
const types = [];
|
|
58
|
+
const typeClasses = [];
|
|
58
59
|
for (const p of params) {
|
|
59
60
|
if (p.type === 'variadic_parameter') {
|
|
60
61
|
types.push('...');
|
|
62
|
+
typeClasses.push(unknownTypeClass('...'));
|
|
61
63
|
}
|
|
62
64
|
else if (p.type === 'variadic_parameter_declaration') {
|
|
63
65
|
// Parameter pack: treated as variadic
|
|
64
66
|
types.push('...');
|
|
67
|
+
typeClasses.push(unknownTypeClass('...'));
|
|
65
68
|
}
|
|
66
69
|
else {
|
|
67
70
|
const typeNode = p.childForFieldName('type');
|
|
68
|
-
|
|
71
|
+
const rawType = typeNode?.text ?? 'unknown';
|
|
72
|
+
types.push(normalizeCppParamType(rawType));
|
|
73
|
+
typeClasses.push(classifyCppParameterType(rawType, p.childForFieldName('declarator')?.text, p.text));
|
|
69
74
|
}
|
|
70
75
|
}
|
|
71
76
|
// Append '...' for C-style variadic if not already in types
|
|
72
77
|
if (hasEllipsis && !types.includes('...')) {
|
|
73
78
|
types.push('...');
|
|
79
|
+
typeClasses.push(unknownTypeClass('...'));
|
|
74
80
|
}
|
|
75
81
|
return {
|
|
76
82
|
parameterCount: isVariadic ? undefined : totalNonVariadic,
|
|
77
83
|
requiredParameterCount: requiredCount,
|
|
78
84
|
parameterTypes: types,
|
|
85
|
+
parameterTypeClasses: typeClasses,
|
|
79
86
|
};
|
|
80
87
|
}
|
|
81
88
|
/**
|
|
@@ -102,6 +109,12 @@ export function computeCppCallArity(node) {
|
|
|
102
109
|
* so that `narrowOverloadCandidates` can match against literal-inferred
|
|
103
110
|
* argument types (e.g. `inferCppLiteralType` returns `'string'` for
|
|
104
111
|
* string literals, not `'std::string'`).
|
|
112
|
+
*
|
|
113
|
+
* This intentionally remains coarse and graph-ID-stable: cv-qualifiers,
|
|
114
|
+
* reference markers, and pointer markers are stripped here. C++ callers
|
|
115
|
+
* that need those distinctions should read `parameterTypeClasses`, which
|
|
116
|
+
* is an additive sidecar and does not participate in overload node ID
|
|
117
|
+
* hashing.
|
|
105
118
|
*/
|
|
106
119
|
export function normalizeCppParamType(raw) {
|
|
107
120
|
let t = raw.trim();
|
|
@@ -140,6 +153,42 @@ export function normalizeCppParamType(raw) {
|
|
|
140
153
|
};
|
|
141
154
|
return STD_MAP[t] ?? t;
|
|
142
155
|
}
|
|
156
|
+
export function classifyCppParameterType(rawType, declaratorText, fullParameterText) {
|
|
157
|
+
const source = fullParameterText ?? `${rawType} ${declaratorText ?? ''}`.trim();
|
|
158
|
+
if (rawType === 'unknown')
|
|
159
|
+
return unknownTypeClass('unknown');
|
|
160
|
+
const hasConst = /\bconst\b/.test(source);
|
|
161
|
+
const hasVolatile = /\bvolatile\b/.test(source);
|
|
162
|
+
const cv = hasConst && hasVolatile
|
|
163
|
+
? 'const volatile'
|
|
164
|
+
: hasConst
|
|
165
|
+
? 'const'
|
|
166
|
+
: hasVolatile
|
|
167
|
+
? 'volatile'
|
|
168
|
+
: 'none';
|
|
169
|
+
const pointerDepth = (source.match(/\*/g) ?? []).length;
|
|
170
|
+
const indirection = pointerDepth > 0
|
|
171
|
+
? 'pointer'
|
|
172
|
+
: /&&/.test(source)
|
|
173
|
+
? 'rvalue-ref'
|
|
174
|
+
: /&/.test(source)
|
|
175
|
+
? 'lvalue-ref'
|
|
176
|
+
: 'value';
|
|
177
|
+
return {
|
|
178
|
+
base: normalizeCppParamType(rawType),
|
|
179
|
+
cv,
|
|
180
|
+
indirection,
|
|
181
|
+
pointerDepth,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
function unknownTypeClass(base) {
|
|
185
|
+
return {
|
|
186
|
+
base,
|
|
187
|
+
cv: 'unknown',
|
|
188
|
+
indirection: 'unknown',
|
|
189
|
+
pointerDepth: 0,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
143
192
|
function findFuncDeclarator(node) {
|
|
144
193
|
let decl = node.childForFieldName('declarator');
|
|
145
194
|
if (decl === null) {
|
|
@@ -86,6 +86,9 @@ export function emitCppScopeCaptures(sourceText, filePath, cachedTree) {
|
|
|
86
86
|
if (arity.parameterTypes !== undefined) {
|
|
87
87
|
grouped['@declaration.parameter-types'] = syntheticCapture('@declaration.parameter-types', fnNode, JSON.stringify(arity.parameterTypes));
|
|
88
88
|
}
|
|
89
|
+
if (arity.parameterTypeClasses !== undefined) {
|
|
90
|
+
grouped['@declaration.parameter-type-classes'] = syntheticCapture('@declaration.parameter-type-classes', fnNode, JSON.stringify(arity.parameterTypeClasses));
|
|
91
|
+
}
|
|
89
92
|
// Detect static storage class (file-local linkage)
|
|
90
93
|
if (hasStaticStorageClass(fnNode)) {
|
|
91
94
|
const nameText = grouped['@declaration.name']?.text;
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
* import from `./model/` here, you are going the wrong way — move the
|
|
34
34
|
* logic up the dependency chain instead.
|
|
35
35
|
*/
|
|
36
|
-
import type { NodeLabel, SymbolDefinition } from '../../../_shared/index.js';
|
|
36
|
+
import type { NodeLabel, ParameterTypeClass, SymbolDefinition } from '../../../_shared/index.js';
|
|
37
37
|
/**
|
|
38
38
|
* Class-like NodeLabels — used for qualifiedName fallback inside
|
|
39
39
|
* `SymbolTable.add()` and (via import into `model/registration-table.ts`)
|
|
@@ -97,6 +97,7 @@ export interface AddMetadata {
|
|
|
97
97
|
parameterCount?: number;
|
|
98
98
|
requiredParameterCount?: number;
|
|
99
99
|
parameterTypes?: string[];
|
|
100
|
+
parameterTypeClasses?: ParameterTypeClass[];
|
|
100
101
|
returnType?: string;
|
|
101
102
|
declaredType?: string;
|
|
102
103
|
templateArguments?: string[];
|
|
@@ -128,6 +128,9 @@ export const createSymbolTable = () => {
|
|
|
128
128
|
...(metadata?.parameterTypes !== undefined
|
|
129
129
|
? { parameterTypes: metadata.parameterTypes }
|
|
130
130
|
: {}),
|
|
131
|
+
...(metadata?.parameterTypeClasses !== undefined
|
|
132
|
+
? { parameterTypeClasses: metadata.parameterTypeClasses }
|
|
133
|
+
: {}),
|
|
131
134
|
...(metadata?.returnType !== undefined ? { returnType: metadata.returnType } : {}),
|
|
132
135
|
...(metadata?.declaredType !== undefined ? { declaredType: metadata.declaredType } : {}),
|
|
133
136
|
...(metadata?.templateArguments !== undefined
|
|
@@ -57,6 +57,7 @@ export const mergeChunkResults = (graph, symbolTable, chunkResults) => {
|
|
|
57
57
|
parameterCount: sym.parameterCount,
|
|
58
58
|
requiredParameterCount: sym.requiredParameterCount,
|
|
59
59
|
parameterTypes: sym.parameterTypes,
|
|
60
|
+
parameterTypeClasses: sym.parameterTypeClasses,
|
|
60
61
|
returnType: sym.returnType,
|
|
61
62
|
declaredType: sym.declaredType,
|
|
62
63
|
templateArguments: sym.templateArguments,
|
|
@@ -610,6 +611,7 @@ const processParsingSequential = async (graph, files, symbolTable, astCache, sco
|
|
|
610
611
|
parameterCount: methodProps.parameterCount,
|
|
611
612
|
requiredParameterCount: methodProps.requiredParameterCount,
|
|
612
613
|
parameterTypes: methodProps.parameterTypes,
|
|
614
|
+
parameterTypeClasses: methodProps.parameterTypeClasses,
|
|
613
615
|
returnType: methodProps.returnType,
|
|
614
616
|
declaredType,
|
|
615
617
|
templateArguments: classTemplateArguments,
|
|
@@ -372,6 +372,7 @@ function buildDefFromDeclarationMatch(match, anchor, filePath) {
|
|
|
372
372
|
const parameterCount = parseIntCapture(match['@declaration.parameter-count']);
|
|
373
373
|
const requiredParameterCount = parseIntCapture(match['@declaration.required-parameter-count']);
|
|
374
374
|
const parameterTypes = parseJsonStringArrayCapture(match['@declaration.parameter-types']);
|
|
375
|
+
const parameterTypeClasses = parseJsonParameterTypeClassesCapture(match['@declaration.parameter-type-classes']);
|
|
375
376
|
const declaredType = match['@declaration.field-type']?.text;
|
|
376
377
|
const returnType = match['@declaration.return-type']?.text;
|
|
377
378
|
const templateConstraints = parseJsonCapture(match['@declaration.template-constraints']);
|
|
@@ -383,6 +384,7 @@ function buildDefFromDeclarationMatch(match, anchor, filePath) {
|
|
|
383
384
|
...(parameterCount !== undefined ? { parameterCount } : {}),
|
|
384
385
|
...(requiredParameterCount !== undefined ? { requiredParameterCount } : {}),
|
|
385
386
|
...(parameterTypes !== undefined ? { parameterTypes } : {}),
|
|
387
|
+
...(parameterTypeClasses !== undefined ? { parameterTypeClasses } : {}),
|
|
386
388
|
...(declaredType !== undefined ? { declaredType } : {}),
|
|
387
389
|
...(returnType !== undefined ? { returnType } : {}),
|
|
388
390
|
...(templateArguments !== undefined ? { templateArguments } : {}),
|
|
@@ -409,6 +411,50 @@ function parseIntCapture(cap) {
|
|
|
409
411
|
const n = Number.parseInt(cap.text, 10);
|
|
410
412
|
return Number.isFinite(n) ? n : undefined;
|
|
411
413
|
}
|
|
414
|
+
function parseJsonParameterTypeClassesCapture(cap) {
|
|
415
|
+
if (cap === undefined)
|
|
416
|
+
return undefined;
|
|
417
|
+
try {
|
|
418
|
+
const parsed = JSON.parse(cap.text);
|
|
419
|
+
if (!Array.isArray(parsed))
|
|
420
|
+
return undefined;
|
|
421
|
+
const out = [];
|
|
422
|
+
for (const item of parsed) {
|
|
423
|
+
if (item === null || typeof item !== 'object')
|
|
424
|
+
return undefined;
|
|
425
|
+
const o = item;
|
|
426
|
+
if (typeof o.base !== 'string')
|
|
427
|
+
return undefined;
|
|
428
|
+
if (o.cv !== 'none' &&
|
|
429
|
+
o.cv !== 'const' &&
|
|
430
|
+
o.cv !== 'volatile' &&
|
|
431
|
+
o.cv !== 'const volatile' &&
|
|
432
|
+
o.cv !== 'unknown') {
|
|
433
|
+
return undefined;
|
|
434
|
+
}
|
|
435
|
+
if (o.indirection !== 'value' &&
|
|
436
|
+
o.indirection !== 'lvalue-ref' &&
|
|
437
|
+
o.indirection !== 'rvalue-ref' &&
|
|
438
|
+
o.indirection !== 'pointer' &&
|
|
439
|
+
o.indirection !== 'unknown') {
|
|
440
|
+
return undefined;
|
|
441
|
+
}
|
|
442
|
+
if (typeof o.pointerDepth !== 'number' || !Number.isFinite(o.pointerDepth)) {
|
|
443
|
+
return undefined;
|
|
444
|
+
}
|
|
445
|
+
out.push({
|
|
446
|
+
base: o.base,
|
|
447
|
+
cv: o.cv,
|
|
448
|
+
indirection: o.indirection,
|
|
449
|
+
pointerDepth: o.pointerDepth,
|
|
450
|
+
});
|
|
451
|
+
}
|
|
452
|
+
return out;
|
|
453
|
+
}
|
|
454
|
+
catch {
|
|
455
|
+
return undefined;
|
|
456
|
+
}
|
|
457
|
+
}
|
|
412
458
|
function parseJsonStringArrayCapture(cap) {
|
|
413
459
|
if (cap === undefined)
|
|
414
460
|
return undefined;
|
|
@@ -3,7 +3,7 @@ import type { ExtractedHeritage } from '../model/heritage-map.js';
|
|
|
3
3
|
import { type MixedChainStep } from '../utils/call-analysis.js';
|
|
4
4
|
import type { ConstructorBinding } from '../type-env.js';
|
|
5
5
|
import type { NamedBinding } from '../named-bindings/types.js';
|
|
6
|
-
import type { NodeLabel } from '../../../_shared/index.js';
|
|
6
|
+
import type { NodeLabel, ParameterTypeClass } from '../../../_shared/index.js';
|
|
7
7
|
import type { ParsedFile } from '../../../_shared/index.js';
|
|
8
8
|
interface ParsedNode {
|
|
9
9
|
id: string;
|
|
@@ -38,6 +38,7 @@ interface ParsedSymbol {
|
|
|
38
38
|
parameterCount?: number;
|
|
39
39
|
requiredParameterCount?: number;
|
|
40
40
|
parameterTypes?: string[];
|
|
41
|
+
parameterTypeClasses?: ParameterTypeClass[];
|
|
41
42
|
returnType?: string;
|
|
42
43
|
declaredType?: string;
|
|
43
44
|
templateArguments?: string[];
|
|
@@ -1801,6 +1801,7 @@ const processFileGroup = (files, language, queryString, result, onFileProcessed)
|
|
|
1801
1801
|
parameterCount: methodProps.parameterCount,
|
|
1802
1802
|
requiredParameterCount: methodProps.requiredParameterCount,
|
|
1803
1803
|
parameterTypes: methodProps.parameterTypes,
|
|
1804
|
+
parameterTypeClasses: methodProps.parameterTypeClasses,
|
|
1804
1805
|
returnType: methodProps.returnType,
|
|
1805
1806
|
...(declaredType !== undefined ? { declaredType } : {}),
|
|
1806
1807
|
...(classTemplateArguments !== undefined && classTemplateArguments.length > 0
|
package/package.json
CHANGED