gitnexus 1.6.5-rc.16 → 1.6.5-rc.18
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/scope-resolution/method-dispatch-index.d.ts +26 -0
- package/dist/_shared/scope-resolution/method-dispatch-index.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/method-dispatch-index.js +22 -3
- package/dist/_shared/scope-resolution/method-dispatch-index.js.map +1 -1
- package/dist/_shared/scope-resolution/registries/lookup-core.js +18 -1
- package/dist/_shared/scope-resolution/registries/lookup-core.js.map +1 -1
- package/dist/core/ingestion/import-resolvers/standard.d.ts +5 -0
- package/dist/core/ingestion/import-resolvers/standard.js +27 -1
- package/dist/core/ingestion/import-resolvers/utils.js +4 -0
- package/dist/core/ingestion/languages/php/arity-metadata.d.ts +28 -0
- package/dist/core/ingestion/languages/php/arity-metadata.js +63 -0
- package/dist/core/ingestion/languages/php/arity.d.ts +25 -0
- package/dist/core/ingestion/languages/php/arity.js +40 -0
- package/dist/core/ingestion/languages/php/cache-stats.d.ts +15 -0
- package/dist/core/ingestion/languages/php/cache-stats.js +26 -0
- package/dist/core/ingestion/languages/php/captures.d.ts +34 -0
- package/dist/core/ingestion/languages/php/captures.js +739 -0
- package/dist/core/ingestion/languages/php/import-decomposer.d.ts +28 -0
- package/dist/core/ingestion/languages/php/import-decomposer.js +265 -0
- package/dist/core/ingestion/languages/php/import-target.d.ts +47 -0
- package/dist/core/ingestion/languages/php/import-target.js +100 -0
- package/dist/core/ingestion/languages/php/index.d.ts +68 -0
- package/dist/core/ingestion/languages/php/index.js +72 -0
- package/dist/core/ingestion/languages/php/interpret.d.ts +36 -0
- package/dist/core/ingestion/languages/php/interpret.js +241 -0
- package/dist/core/ingestion/languages/php/merge-bindings.d.ts +19 -0
- package/dist/core/ingestion/languages/php/merge-bindings.js +47 -0
- package/dist/core/ingestion/languages/php/namespace-siblings.d.ts +51 -0
- package/dist/core/ingestion/languages/php/namespace-siblings.js +288 -0
- package/dist/core/ingestion/languages/php/query.d.ts +32 -0
- package/dist/core/ingestion/languages/php/query.js +326 -0
- package/dist/core/ingestion/languages/php/receiver-binding.d.ts +36 -0
- package/dist/core/ingestion/languages/php/receiver-binding.js +128 -0
- package/dist/core/ingestion/languages/php/scope-resolver.d.ts +23 -0
- package/dist/core/ingestion/languages/php/scope-resolver.js +358 -0
- package/dist/core/ingestion/languages/php/simple-hooks.d.ts +42 -0
- package/dist/core/ingestion/languages/php/simple-hooks.js +111 -0
- package/dist/core/ingestion/languages/php.d.ts +0 -7
- package/dist/core/ingestion/languages/php.js +15 -0
- package/dist/core/ingestion/registry-primary-flag.js +1 -0
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +54 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/method-dispatch.d.ts +1 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/method-dispatch.js +12 -2
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +5 -0
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +23 -0
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +68 -7
- package/dist/core/ingestion/scope-resolution/passes/overload-narrowing.d.ts +7 -3
- package/dist/core/ingestion/scope-resolution/passes/overload-narrowing.js +24 -4
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +21 -2
- package/dist/core/ingestion/scope-resolution/pipeline/registry.js +2 -0
- package/dist/core/ingestion/scope-resolution/pipeline/run.js +7 -2
- package/dist/core/ingestion/tree-sitter-queries.d.ts +1 -1
- package/dist/core/ingestion/tree-sitter-queries.js +10 -0
- package/package.json +1 -1
|
@@ -36,10 +36,26 @@ export interface MethodDispatchIndex {
|
|
|
36
36
|
readonly mroByOwnerDefId: ReadonlyMap<DefId, readonly DefId[]>;
|
|
37
37
|
/** Interfaces / traits → classes that implement them. */
|
|
38
38
|
readonly implsByInterfaceDefId: ReadonlyMap<DefId, readonly DefId[]>;
|
|
39
|
+
/**
|
|
40
|
+
* Optional parallel MRO view that EXCLUDES mixin-like augmentation
|
|
41
|
+
* (e.g., PHP traits). Populated only when the input supplies
|
|
42
|
+
* `computeExtendsOnlyMro`. Used by the super-branch dispatch in
|
|
43
|
+
* `receiver-bound-calls` so that `parent::method()` walks the
|
|
44
|
+
* inheritance chain only, not the trait-augmented one. Undefined for
|
|
45
|
+
* languages without mixin-like semantics — callers should fall back
|
|
46
|
+
* to `mroFor` when this is missing.
|
|
47
|
+
*/
|
|
48
|
+
readonly extendsOnlyMroByOwnerDefId?: ReadonlyMap<DefId, readonly DefId[]>;
|
|
39
49
|
/** `mroByOwnerDefId.get`, with an empty frozen array on miss. */
|
|
40
50
|
mroFor(ownerDefId: DefId): readonly DefId[];
|
|
41
51
|
/** `implsByInterfaceDefId.get`, with an empty frozen array on miss. */
|
|
42
52
|
implementorsOf(interfaceDefId: DefId): readonly DefId[];
|
|
53
|
+
/**
|
|
54
|
+
* `extendsOnlyMroByOwnerDefId.get`, with an empty frozen array on miss.
|
|
55
|
+
* Undefined when `extendsOnlyMroByOwnerDefId` was not populated; callers
|
|
56
|
+
* should treat this as equivalent to `mroFor` for non-mixin languages.
|
|
57
|
+
*/
|
|
58
|
+
readonly extendsOnlyMroFor?: (ownerDefId: DefId) => readonly DefId[];
|
|
43
59
|
}
|
|
44
60
|
export interface MethodDispatchInput {
|
|
45
61
|
/**
|
|
@@ -75,6 +91,16 @@ export interface MethodDispatchInput {
|
|
|
75
91
|
* write-wins policy and fires at most once per unique owner.
|
|
76
92
|
*/
|
|
77
93
|
readonly implementsOf: (ownerDefId: DefId) => readonly DefId[];
|
|
94
|
+
/**
|
|
95
|
+
* Optional: return the EXTENDS-only ancestor chain for `ownerDefId`,
|
|
96
|
+
* excluding the owner itself AND any mixin-like augmentation (e.g.,
|
|
97
|
+
* PHP traits). Languages without mixin semantics leave this undefined
|
|
98
|
+
* and the index's `extendsOnlyMroByOwnerDefId` stays unpopulated.
|
|
99
|
+
*
|
|
100
|
+
* Same contract as `computeMro`: pure, deterministic, `[]` on no parents.
|
|
101
|
+
* Called at most once per unique owner (first-write-wins).
|
|
102
|
+
*/
|
|
103
|
+
readonly computeExtendsOnlyMro?: (ownerDefId: DefId) => readonly DefId[];
|
|
78
104
|
}
|
|
79
105
|
export declare function buildMethodDispatchIndex(input: MethodDispatchInput): MethodDispatchIndex;
|
|
80
106
|
//# sourceMappingURL=method-dispatch-index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"method-dispatch-index.d.ts","sourceRoot":"","sources":["../../src/scope-resolution/method-dispatch-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAIxC,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC;IAC/D,yDAAyD;IACzD,QAAQ,CAAC,qBAAqB,EAAE,WAAW,CAAC,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"method-dispatch-index.d.ts","sourceRoot":"","sources":["../../src/scope-resolution/method-dispatch-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAIxC,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC;IAC/D,yDAAyD;IACzD,QAAQ,CAAC,qBAAqB,EAAE,WAAW,CAAC,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC;IACrE;;;;;;;;OAQG;IACH,QAAQ,CAAC,0BAA0B,CAAC,EAAE,WAAW,CAAC,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC;IAE3E,iEAAiE;IACjE,MAAM,CAAC,UAAU,EAAE,KAAK,GAAG,SAAS,KAAK,EAAE,CAAC;IAC5C,uEAAuE;IACvE,cAAc,CAAC,cAAc,EAAE,KAAK,GAAG,SAAS,KAAK,EAAE,CAAC;IACxD;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,KAAK,SAAS,KAAK,EAAE,CAAC;CACtE;AAED,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IAClC;;;;;;;;;OASG;IACH,QAAQ,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,KAAK,KAAK,SAAS,KAAK,EAAE,CAAC;IAC7D;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,KAAK,KAAK,SAAS,KAAK,EAAE,CAAC;IAC/D;;;;;;;;OAQG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,KAAK,SAAS,KAAK,EAAE,CAAC;CAC1E;AAID,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB,CAgDxF"}
|
|
@@ -30,6 +30,9 @@
|
|
|
30
30
|
// ─── Builder ────────────────────────────────────────────────────────────────
|
|
31
31
|
export function buildMethodDispatchIndex(input) {
|
|
32
32
|
const mroByOwnerDefId = new Map();
|
|
33
|
+
const extendsOnlyByOwnerDefId = input.computeExtendsOnlyMro
|
|
34
|
+
? new Map()
|
|
35
|
+
: undefined;
|
|
33
36
|
const implsBuilding = new Map();
|
|
34
37
|
const implsSeen = new Map();
|
|
35
38
|
for (const ownerId of input.owners) {
|
|
@@ -39,6 +42,12 @@ export function buildMethodDispatchIndex(input) {
|
|
|
39
42
|
const chain = input.computeMro(ownerId);
|
|
40
43
|
mroByOwnerDefId.set(ownerId, Object.freeze(chain.slice()));
|
|
41
44
|
}
|
|
45
|
+
if (input.computeExtendsOnlyMro !== undefined &&
|
|
46
|
+
extendsOnlyByOwnerDefId !== undefined &&
|
|
47
|
+
!extendsOnlyByOwnerDefId.has(ownerId)) {
|
|
48
|
+
const extOnly = input.computeExtendsOnlyMro(ownerId);
|
|
49
|
+
extendsOnlyByOwnerDefId.set(ownerId, Object.freeze(extOnly.slice()));
|
|
50
|
+
}
|
|
42
51
|
for (const ifaceId of input.implementsOf(ownerId)) {
|
|
43
52
|
let seen = implsSeen.get(ifaceId);
|
|
44
53
|
if (seen === undefined) {
|
|
@@ -60,12 +69,12 @@ export function buildMethodDispatchIndex(input) {
|
|
|
60
69
|
for (const [ifaceId, owners] of implsBuilding) {
|
|
61
70
|
implsByInterfaceDefId.set(ifaceId, Object.freeze(owners.slice()));
|
|
62
71
|
}
|
|
63
|
-
return wrapIndex(mroByOwnerDefId, implsByInterfaceDefId);
|
|
72
|
+
return wrapIndex(mroByOwnerDefId, implsByInterfaceDefId, extendsOnlyByOwnerDefId);
|
|
64
73
|
}
|
|
65
74
|
// ─── Internal ───────────────────────────────────────────────────────────────
|
|
66
75
|
const EMPTY = Object.freeze([]);
|
|
67
|
-
function wrapIndex(mroByOwnerDefId, implsByInterfaceDefId) {
|
|
68
|
-
|
|
76
|
+
function wrapIndex(mroByOwnerDefId, implsByInterfaceDefId, extendsOnlyMroByOwnerDefId) {
|
|
77
|
+
const base = {
|
|
69
78
|
mroByOwnerDefId,
|
|
70
79
|
implsByInterfaceDefId,
|
|
71
80
|
mroFor(ownerDefId) {
|
|
@@ -75,5 +84,15 @@ function wrapIndex(mroByOwnerDefId, implsByInterfaceDefId) {
|
|
|
75
84
|
return implsByInterfaceDefId.get(interfaceDefId) ?? EMPTY;
|
|
76
85
|
},
|
|
77
86
|
};
|
|
87
|
+
if (extendsOnlyMroByOwnerDefId !== undefined) {
|
|
88
|
+
return {
|
|
89
|
+
...base,
|
|
90
|
+
extendsOnlyMroByOwnerDefId,
|
|
91
|
+
extendsOnlyMroFor(ownerDefId) {
|
|
92
|
+
return extendsOnlyMroByOwnerDefId.get(ownerDefId) ?? EMPTY;
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
return base;
|
|
78
97
|
}
|
|
79
98
|
//# sourceMappingURL=method-dispatch-index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"method-dispatch-index.js","sourceRoot":"","sources":["../../src/scope-resolution/method-dispatch-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;
|
|
1
|
+
{"version":3,"file":"method-dispatch-index.js","sourceRoot":"","sources":["../../src/scope-resolution/method-dispatch-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -299,14 +299,31 @@ function applyArityFilter(callsite, perCandidate, ctx) {
|
|
|
299
299
|
return;
|
|
300
300
|
}
|
|
301
301
|
let anyCompatible = false;
|
|
302
|
+
let anyUnknown = false;
|
|
302
303
|
for (const state of perCandidate.values()) {
|
|
303
304
|
const verdict = arityFn(callsite, state.def);
|
|
304
305
|
state.signals.arityVerdict = verdict;
|
|
305
306
|
if (verdict === 'compatible')
|
|
306
307
|
anyCompatible = true;
|
|
308
|
+
else if (verdict === 'unknown')
|
|
309
|
+
anyUnknown = true;
|
|
307
310
|
}
|
|
308
|
-
|
|
311
|
+
// When ALL candidates are 'incompatible' (none compatible, none unknown),
|
|
312
|
+
// the call is genuinely arity-broken — drop every candidate so the
|
|
313
|
+
// registry returns no resolution. This matches the PHP variadic case
|
|
314
|
+
// f(int $req, ...$rest) called with zero args: every candidate definitively
|
|
315
|
+
// rejects, and emitting an edge to a definitively-rejected callable is
|
|
316
|
+
// a false positive. When some candidates are 'unknown' (missing metadata),
|
|
317
|
+
// keep the set so downstream evidence can break the tie — that's the
|
|
318
|
+
// original safety-fallback behavior.
|
|
319
|
+
if (!anyCompatible) {
|
|
320
|
+
if (!anyUnknown) {
|
|
321
|
+
for (const defId of perCandidate.keys()) {
|
|
322
|
+
perCandidate.delete(defId);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
309
325
|
return;
|
|
326
|
+
}
|
|
310
327
|
// Filter: when at least one compatible candidate exists, drop incompatibles.
|
|
311
328
|
for (const [defId, state] of perCandidate) {
|
|
312
329
|
if (state.signals.arityVerdict === 'incompatible') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lookup-core.js","sourceRoot":"","sources":["../../../src/scope-resolution/registries/lookup-core.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"lookup-core.js","sourceRoot":"","sources":["../../../src/scope-resolution/registries/lookup-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,3 +28,8 @@ export declare const resolveImportPath: (currentFile: string, importPath: string
|
|
|
28
28
|
export declare function resolveStandard(rawImportPath: string, filePath: string, ctx: ResolveCtx, language: SupportedLanguages): ImportResult;
|
|
29
29
|
/** Create a reusable standard-resolution strategy for a given language. */
|
|
30
30
|
export declare function createStandardStrategy(language: SupportedLanguages): ImportResolverStrategy;
|
|
31
|
+
/**
|
|
32
|
+
* Strip a JS-family extension from a path, returning the stem.
|
|
33
|
+
* Returns `null` if the path does not end with a JS-family extension.
|
|
34
|
+
*/
|
|
35
|
+
export declare function stripJsExtension(path: string): string | null;
|
|
@@ -108,7 +108,20 @@ export const resolveImportPath = (currentFile, importPath, allFiles, allFileList
|
|
|
108
108
|
const basePath = currentDir.join('/');
|
|
109
109
|
if (importPath.startsWith('.')) {
|
|
110
110
|
const resolved = tryResolveWithExtensions(basePath, allFiles);
|
|
111
|
-
|
|
111
|
+
if (resolved)
|
|
112
|
+
return cache(resolved);
|
|
113
|
+
// TypeScript ESM: imports use .js/.jsx/.mjs/.cjs but source files are
|
|
114
|
+
// .ts/.tsx/.mts/.cts. Strip the JS-family extension and re-resolve.
|
|
115
|
+
// NOTE: This fallback only applies to relative imports. Path alias imports
|
|
116
|
+
// (e.g. @/utils.js via tsconfig paths) do not yet strip .js extensions —
|
|
117
|
+
// that is a known limitation tracked for follow-up.
|
|
118
|
+
if (language === SupportedLanguages.TypeScript || language === SupportedLanguages.JavaScript) {
|
|
119
|
+
const stripped = stripJsExtension(basePath);
|
|
120
|
+
if (stripped !== null) {
|
|
121
|
+
return cache(tryResolveWithExtensions(stripped, allFiles));
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return cache(null);
|
|
112
125
|
}
|
|
113
126
|
// ---- Generic package/absolute import resolution (suffix matching) ----
|
|
114
127
|
// Java wildcards are handled in processImports, not here
|
|
@@ -140,3 +153,16 @@ export function resolveStandard(rawImportPath, filePath, ctx, language) {
|
|
|
140
153
|
export function createStandardStrategy(language) {
|
|
141
154
|
return (raw, fp, ctx) => resolveStandard(raw, fp, ctx, language);
|
|
142
155
|
}
|
|
156
|
+
// ============================================================================
|
|
157
|
+
// ESM extension helpers
|
|
158
|
+
// ============================================================================
|
|
159
|
+
/** JS-family extensions that TypeScript ESM maps to TS equivalents. */
|
|
160
|
+
const JS_EXTENSION_PATTERN = /\.(js|jsx|mjs|cjs)$/;
|
|
161
|
+
/**
|
|
162
|
+
* Strip a JS-family extension from a path, returning the stem.
|
|
163
|
+
* Returns `null` if the path does not end with a JS-family extension.
|
|
164
|
+
*/
|
|
165
|
+
export function stripJsExtension(path) {
|
|
166
|
+
const match = JS_EXTENSION_PATTERN.exec(path);
|
|
167
|
+
return match ? path.slice(0, -match[0].length) : null;
|
|
168
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract PHP arity metadata from a method-like tree-sitter node —
|
|
3
|
+
* `method_declaration` or `function_definition`.
|
|
4
|
+
*
|
|
5
|
+
* Reuses `phpMethodConfig.extractParameters` so scope-extracted defs
|
|
6
|
+
* carry the same arity semantics as the legacy parse-worker path:
|
|
7
|
+
* - `variadic_parameter` (`...$args`) collapses `parameterCount` to
|
|
8
|
+
* `undefined`, which `phpArityCompatibility` then treats as
|
|
9
|
+
* "max unknown" — the candidate stays eligible at `argCount >= required`.
|
|
10
|
+
* - Defaulted parameters (`= expr`) contribute to `optionalCount`;
|
|
11
|
+
* `requiredParameterCount = total − optionalCount − (variadic ? 1 : 0)`.
|
|
12
|
+
* The variadic slot itself accepts zero args so it is subtracted from
|
|
13
|
+
* the required count — `f(int $a, ...$rest)` requires exactly 1 arg,
|
|
14
|
+
* not 2, and `f(...$rest)` requires 0.
|
|
15
|
+
* - `property_promotion_parameter` (constructor-promoted) is counted
|
|
16
|
+
* the same as `simple_parameter` since both consume an argument slot.
|
|
17
|
+
* - `parameterTypes` collects declared type names; a literal `'...'`
|
|
18
|
+
* marker is appended for variadic methods so `phpArityCompatibility`
|
|
19
|
+
* can detect them without re-reading the AST.
|
|
20
|
+
*/
|
|
21
|
+
import type { SyntaxNode } from '../../utils/ast-helpers.js';
|
|
22
|
+
interface PhpArityMetadata {
|
|
23
|
+
readonly parameterCount: number | undefined;
|
|
24
|
+
readonly requiredParameterCount: number | undefined;
|
|
25
|
+
readonly parameterTypes: readonly string[] | undefined;
|
|
26
|
+
}
|
|
27
|
+
export declare function computePhpArityMetadata(fnNode: SyntaxNode): PhpArityMetadata;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract PHP arity metadata from a method-like tree-sitter node —
|
|
3
|
+
* `method_declaration` or `function_definition`.
|
|
4
|
+
*
|
|
5
|
+
* Reuses `phpMethodConfig.extractParameters` so scope-extracted defs
|
|
6
|
+
* carry the same arity semantics as the legacy parse-worker path:
|
|
7
|
+
* - `variadic_parameter` (`...$args`) collapses `parameterCount` to
|
|
8
|
+
* `undefined`, which `phpArityCompatibility` then treats as
|
|
9
|
+
* "max unknown" — the candidate stays eligible at `argCount >= required`.
|
|
10
|
+
* - Defaulted parameters (`= expr`) contribute to `optionalCount`;
|
|
11
|
+
* `requiredParameterCount = total − optionalCount − (variadic ? 1 : 0)`.
|
|
12
|
+
* The variadic slot itself accepts zero args so it is subtracted from
|
|
13
|
+
* the required count — `f(int $a, ...$rest)` requires exactly 1 arg,
|
|
14
|
+
* not 2, and `f(...$rest)` requires 0.
|
|
15
|
+
* - `property_promotion_parameter` (constructor-promoted) is counted
|
|
16
|
+
* the same as `simple_parameter` since both consume an argument slot.
|
|
17
|
+
* - `parameterTypes` collects declared type names; a literal `'...'`
|
|
18
|
+
* marker is appended for variadic methods so `phpArityCompatibility`
|
|
19
|
+
* can detect them without re-reading the AST.
|
|
20
|
+
*/
|
|
21
|
+
import { phpMethodConfig } from '../../method-extractors/configs/php.js';
|
|
22
|
+
export function computePhpArityMetadata(fnNode) {
|
|
23
|
+
const params = phpMethodConfig.extractParameters?.(fnNode) ?? [];
|
|
24
|
+
let hasVariadic = false;
|
|
25
|
+
let optionalCount = 0;
|
|
26
|
+
const types = [];
|
|
27
|
+
for (const p of params) {
|
|
28
|
+
if (p.isVariadic) {
|
|
29
|
+
hasVariadic = true;
|
|
30
|
+
}
|
|
31
|
+
else if (p.isOptional) {
|
|
32
|
+
optionalCount++;
|
|
33
|
+
}
|
|
34
|
+
if (p.type !== null)
|
|
35
|
+
types.push(p.type);
|
|
36
|
+
}
|
|
37
|
+
// PHP variadic marker convention: append the literal '...' string to
|
|
38
|
+
// `parameterTypes`. This is intentionally DIFFERENT from C#, which uses
|
|
39
|
+
// the literal 'params' (its source-language keyword). The shared
|
|
40
|
+
// `narrowOverloadCandidates` pass in `scope-resolution/passes/overload-
|
|
41
|
+
// narrowing.ts` checks for the C# 'params' marker — that branch is
|
|
42
|
+
// dead code for PHP because PHP variadic methods set `parameterCount
|
|
43
|
+
// = undefined` (see line below), which skips the `max !== undefined`
|
|
44
|
+
// gate that hosts the 'params' check. PHP's actual variadic-aware
|
|
45
|
+
// arity logic lives in `phpArityCompatibility` (arity.ts) and now
|
|
46
|
+
// also in `phpEmitUnresolvedReceiverEdges` (scope-resolver.ts), both
|
|
47
|
+
// of which check `'...'`. Finding 9 of PR #1497 adversarial review.
|
|
48
|
+
if (hasVariadic)
|
|
49
|
+
types.push('...');
|
|
50
|
+
const total = params.length;
|
|
51
|
+
// Variadic methods accept any arg count ≥ required — leave `parameterCount`
|
|
52
|
+
// undefined so the registry treats max as unknown.
|
|
53
|
+
const parameterCount = hasVariadic ? undefined : total;
|
|
54
|
+
// The variadic slot itself accepts zero args; subtract it from the required
|
|
55
|
+
// count so PHP's ArgumentCountError-equivalent calls (too few args before
|
|
56
|
+
// the variadic) are correctly rejected by arity compatibility.
|
|
57
|
+
const requiredParameterCount = total - optionalCount - (hasVariadic ? 1 : 0);
|
|
58
|
+
return {
|
|
59
|
+
parameterCount,
|
|
60
|
+
requiredParameterCount,
|
|
61
|
+
parameterTypes: types.length > 0 ? types : undefined,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PHP arity check, accommodating variadic (`...$args`) and default parameters.
|
|
3
|
+
*
|
|
4
|
+
* The `def` metadata synthesized by `arity-metadata.ts`:
|
|
5
|
+
* - `parameterCount` — total formal parameters; `undefined` when
|
|
6
|
+
* the method has a variadic `...$param`.
|
|
7
|
+
* - `requiredParameterCount` — min required (excludes defaulted params
|
|
8
|
+
* and the variadic itself).
|
|
9
|
+
* - `parameterTypes` — declared type strings; contains the
|
|
10
|
+
* literal `'...'` when the method is variadic.
|
|
11
|
+
*
|
|
12
|
+
* Verdicts:
|
|
13
|
+
* - `'compatible'` — `required <= argCount <= max`, OR the def has
|
|
14
|
+
* variadic (any `argCount >= required`).
|
|
15
|
+
* - `'incompatible'` — argCount below required, or above max with no variadic.
|
|
16
|
+
* - `'unknown'` — metadata absent / incomplete; named-args can satisfy
|
|
17
|
+
* any arity so we return unknown when we detect them.
|
|
18
|
+
*
|
|
19
|
+
* PHP supports named arguments (PHP 8.0+): `save(force: true)`. Named-arg
|
|
20
|
+
* call sites cannot be arity-checked statically without parsing arg names,
|
|
21
|
+
* so we return `'unknown'` when the callsite carries named args (signalled
|
|
22
|
+
* by a negative `arity` value per the shared Callsite contract).
|
|
23
|
+
*/
|
|
24
|
+
import type { Callsite, SymbolDefinition } from '../../../../_shared/index.js';
|
|
25
|
+
export declare function phpArityCompatibility(def: SymbolDefinition, callsite: Callsite): 'compatible' | 'unknown' | 'incompatible';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PHP arity check, accommodating variadic (`...$args`) and default parameters.
|
|
3
|
+
*
|
|
4
|
+
* The `def` metadata synthesized by `arity-metadata.ts`:
|
|
5
|
+
* - `parameterCount` — total formal parameters; `undefined` when
|
|
6
|
+
* the method has a variadic `...$param`.
|
|
7
|
+
* - `requiredParameterCount` — min required (excludes defaulted params
|
|
8
|
+
* and the variadic itself).
|
|
9
|
+
* - `parameterTypes` — declared type strings; contains the
|
|
10
|
+
* literal `'...'` when the method is variadic.
|
|
11
|
+
*
|
|
12
|
+
* Verdicts:
|
|
13
|
+
* - `'compatible'` — `required <= argCount <= max`, OR the def has
|
|
14
|
+
* variadic (any `argCount >= required`).
|
|
15
|
+
* - `'incompatible'` — argCount below required, or above max with no variadic.
|
|
16
|
+
* - `'unknown'` — metadata absent / incomplete; named-args can satisfy
|
|
17
|
+
* any arity so we return unknown when we detect them.
|
|
18
|
+
*
|
|
19
|
+
* PHP supports named arguments (PHP 8.0+): `save(force: true)`. Named-arg
|
|
20
|
+
* call sites cannot be arity-checked statically without parsing arg names,
|
|
21
|
+
* so we return `'unknown'` when the callsite carries named args (signalled
|
|
22
|
+
* by a negative `arity` value per the shared Callsite contract).
|
|
23
|
+
*/
|
|
24
|
+
export function phpArityCompatibility(def, callsite) {
|
|
25
|
+
const max = def.parameterCount;
|
|
26
|
+
const min = def.requiredParameterCount;
|
|
27
|
+
if (max === undefined && min === undefined)
|
|
28
|
+
return 'unknown';
|
|
29
|
+
const argCount = callsite.arity;
|
|
30
|
+
// Negative arity signals named-argument call sites — can't narrow statically.
|
|
31
|
+
if (!Number.isFinite(argCount) || argCount < 0)
|
|
32
|
+
return 'unknown';
|
|
33
|
+
const hasVarArgs = def.parameterTypes !== undefined &&
|
|
34
|
+
def.parameterTypes.some((t) => t === '...' || t.startsWith('...'));
|
|
35
|
+
if (min !== undefined && argCount < min)
|
|
36
|
+
return 'incompatible';
|
|
37
|
+
if (max !== undefined && argCount > max && !hasVarArgs)
|
|
38
|
+
return 'incompatible';
|
|
39
|
+
return 'compatible';
|
|
40
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dev-mode counters for the cross-phase scope-captures parse cache
|
|
3
|
+
* (PHP mirror of `languages/csharp/cache-stats.ts`).
|
|
4
|
+
*
|
|
5
|
+
* Gated by `PROF_SCOPE_RESOLUTION=1`. Production builds fold every
|
|
6
|
+
* increment into dead code via the module-level `PROF` constant, so
|
|
7
|
+
* the hot path in `captures.ts` stays branch-free.
|
|
8
|
+
*/
|
|
9
|
+
export declare function recordCacheHit(): void;
|
|
10
|
+
export declare function recordCacheMiss(): void;
|
|
11
|
+
export declare function getPhpCaptureCacheStats(): {
|
|
12
|
+
hits: number;
|
|
13
|
+
misses: number;
|
|
14
|
+
};
|
|
15
|
+
export declare function resetPhpCaptureCacheStats(): void;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dev-mode counters for the cross-phase scope-captures parse cache
|
|
3
|
+
* (PHP mirror of `languages/csharp/cache-stats.ts`).
|
|
4
|
+
*
|
|
5
|
+
* Gated by `PROF_SCOPE_RESOLUTION=1`. Production builds fold every
|
|
6
|
+
* increment into dead code via the module-level `PROF` constant, so
|
|
7
|
+
* the hot path in `captures.ts` stays branch-free.
|
|
8
|
+
*/
|
|
9
|
+
const PROF = process.env.PROF_SCOPE_RESOLUTION === '1';
|
|
10
|
+
let CACHE_HITS = 0;
|
|
11
|
+
let CACHE_MISSES = 0;
|
|
12
|
+
export function recordCacheHit() {
|
|
13
|
+
if (PROF)
|
|
14
|
+
CACHE_HITS++;
|
|
15
|
+
}
|
|
16
|
+
export function recordCacheMiss() {
|
|
17
|
+
if (PROF)
|
|
18
|
+
CACHE_MISSES++;
|
|
19
|
+
}
|
|
20
|
+
export function getPhpCaptureCacheStats() {
|
|
21
|
+
return { hits: CACHE_HITS, misses: CACHE_MISSES };
|
|
22
|
+
}
|
|
23
|
+
export function resetPhpCaptureCacheStats() {
|
|
24
|
+
CACHE_HITS = 0;
|
|
25
|
+
CACHE_MISSES = 0;
|
|
26
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `emitScopeCaptures` for PHP (RFC #909 Ring 3 LANG-php).
|
|
3
|
+
*
|
|
4
|
+
* Drives the PHP scope query against tree-sitter-php and groups raw
|
|
5
|
+
* matches into `CaptureMatch[]` for the central extractor. Layers two
|
|
6
|
+
* synthesized streams on top:
|
|
7
|
+
*
|
|
8
|
+
* 1. **Decomposed use declarations** — each `namespace_use_declaration`
|
|
9
|
+
* is re-emitted with `@import.kind/source/name/alias` markers so
|
|
10
|
+
* `interpretPhpImport` can recover the ParsedImport shape without
|
|
11
|
+
* re-parsing raw text. Grouped uses fan out to one match per clause.
|
|
12
|
+
*
|
|
13
|
+
* 2. **Receiver-binding synthesis** — `$this` and `parent` type-bindings
|
|
14
|
+
* are synthesized on every non-static method entry. PHP's grammar
|
|
15
|
+
* does not express "implicit receiver of a non-static class method"
|
|
16
|
+
* via a clean `.scm` pattern, so we walk up the AST in code.
|
|
17
|
+
*
|
|
18
|
+
* 3. **Arity metadata synthesis** — `@declaration.parameter-count` /
|
|
19
|
+
* `@declaration.required-parameter-count` / `@declaration.parameter-types`
|
|
20
|
+
* are synthesized on function-like declarations so the registry can
|
|
21
|
+
* narrow overloads.
|
|
22
|
+
*
|
|
23
|
+
* 4. **PHPDoc synthesis** — @param and @return annotations in comment
|
|
24
|
+
* nodes preceding method/function declarations are extracted and emitted
|
|
25
|
+
* as `@type-binding.parameter` and `@type-binding.return` matches.
|
|
26
|
+
*
|
|
27
|
+
* 5. **Foreach loop synthesis** — `foreach ($users as $user)` emits
|
|
28
|
+
* a `@type-binding.alias` match binding the loop variable to the
|
|
29
|
+
* element type of the iterable (resolved from PHPDoc or scopeEnv).
|
|
30
|
+
*
|
|
31
|
+
* Pure given the input source text. No I/O, no globals consulted.
|
|
32
|
+
*/
|
|
33
|
+
import type { CaptureMatch } from '../../../../_shared/index.js';
|
|
34
|
+
export declare function emitPhpScopeCaptures(sourceText: string, _filePath: string, cachedTree?: unknown): readonly CaptureMatch[];
|