gitnexus 1.6.13-rc.51 → 1.6.13-rc.53

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.
@@ -595,7 +595,7 @@ export interface TypeRef {
595
595
  readonly declaredSpelling?: string;
596
596
  /** Anchor for resolving `rawName` — the scope where the annotation/inference was written. */
597
597
  readonly declaredAtScope: ScopeId;
598
- readonly source: 'annotation' | 'parameter-annotation' | 'return-annotation' | 'self' | 'assignment-inferred' | 'constructor-inferred' | 'receiver-propagated';
598
+ readonly source: 'annotation' | 'parameter-annotation' | 'return-annotation' | 'self' | 'decorator-unknown' | 'assignment-inferred' | 'constructor-inferred' | 'receiver-propagated';
599
599
  /** Reserved for V2+: generic type arguments (`List<User>` → `[TypeRef('User')]`). V1 ignores. */
600
600
  readonly typeArgs?: readonly TypeRef[];
601
601
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scope-resolution/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scope-resolution/types.ts"],"names":[],"mappings":"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"}
@@ -43,13 +43,11 @@
43
43
  * and emit a single edge rather than branching. `List[T]` /
44
44
  * `Dict[K, V]` strip the outer generic for receiver typing (see
45
45
  * `interpret.ts`).
46
- * 5. **Decorators that rewrite signatures** — `@dataclass`,
47
- * `@property`, `@classmethod`, `@staticmethod` are recognized
48
- * by `receiver-binding.ts`. Arbitrary decorators (e.g.
49
- * `functools.wraps`, custom retry wrappers) preserve the wrapped
50
- * function's declared signature; a decorator that returns a
51
- * different callable is followed only through the declared
52
- * return type.
46
+ * 5. **Decorators that rewrite signatures** — Known descriptor
47
+ * spellings (`@property`, `@classmethod`, `@staticmethod`) are
48
+ * recognized by `receiver-binding.ts`. Unknown decorator expressions
49
+ * leave implicit receiver binding unresolved. Calls through wrappers
50
+ * are followed only through their declared return type.
53
51
  * 6. **`typing.TYPE_CHECKING`-guarded imports** — treated like any
54
52
  * other `import` for reference resolution. We do not distinguish
55
53
  * runtime-visible from type-checker-only imports; this is
@@ -43,13 +43,11 @@
43
43
  * and emit a single edge rather than branching. `List[T]` /
44
44
  * `Dict[K, V]` strip the outer generic for receiver typing (see
45
45
  * `interpret.ts`).
46
- * 5. **Decorators that rewrite signatures** — `@dataclass`,
47
- * `@property`, `@classmethod`, `@staticmethod` are recognized
48
- * by `receiver-binding.ts`. Arbitrary decorators (e.g.
49
- * `functools.wraps`, custom retry wrappers) preserve the wrapped
50
- * function's declared signature; a decorator that returns a
51
- * different callable is followed only through the declared
52
- * return type.
46
+ * 5. **Decorators that rewrite signatures** — Known descriptor
47
+ * spellings (`@property`, `@classmethod`, `@staticmethod`) are
48
+ * recognized by `receiver-binding.ts`. Unknown decorator expressions
49
+ * leave implicit receiver binding unresolved. Calls through wrappers
50
+ * are followed only through their declared return type.
53
51
  * 6. **`typing.TYPE_CHECKING`-guarded imports** — treated like any
54
52
  * other `import` for reference resolution. We do not distinguish
55
53
  * runtime-visible from type-checker-only imports; this is
@@ -124,7 +124,9 @@ export function interpretPythonTypeBinding(captures) {
124
124
  // the variable-annotation and constructor-inferred forms from the
125
125
  // classic parameter annotation.
126
126
  let source = 'parameter-annotation';
127
- if (captures['@type-binding.self'] !== undefined)
127
+ if (captures['@type-binding.uncertain-receiver'] !== undefined)
128
+ source = 'decorator-unknown';
129
+ else if (captures['@type-binding.self'] !== undefined)
128
130
  source = 'self';
129
131
  // `cls` is a self-like receiver; share the source label so downstream
130
132
  // `Registry.lookup` Step 2 treats them identically.
@@ -34,6 +34,11 @@ export declare function classifyPythonBoundReceiver(fnNode: SyntaxNode): PythonB
34
34
  * The caller is responsible for guaranteeing `fnNode.type ===
35
35
  * 'function_definition'`.
36
36
  */
37
+ /**
38
+ * The first parameter of a class method under an unrecognized decorator.
39
+ * Python may still bind it implicitly, but its receiver kind is unproven.
40
+ */
41
+ export declare function classifyPythonUncertainReceiver(fnNode: SyntaxNode): PythonBoundReceiver | null;
37
42
  export declare function synthesizeReceiverTypeBinding(fnNode: SyntaxNode): CaptureMatch | null;
38
43
  /**
39
44
  * Synthesize class-scope field bindings for the common Python constructor
@@ -27,20 +27,77 @@ function findEnclosingClassDefinition(node) {
27
27
  function classDefinitionName(classNode) {
28
28
  return classNode.childForFieldName('name')?.text ?? null;
29
29
  }
30
- /** Does the function carry a `@<decoratorName>` decorator? Matches both
31
- * bare `@classmethod` and module-qualified `@functools.classmethod`. */
32
- function hasDecorator(fnNode, decoratorName) {
30
+ /** Syntactic decorator expressions; aliases cannot be identified by spelling. */
31
+ function decoratorNames(fnNode) {
33
32
  const parent = fnNode.parent;
34
33
  if (parent === null || parent.type !== 'decorated_definition')
35
- return false;
34
+ return [];
35
+ const names = [];
36
36
  for (let i = 0; i < parent.namedChildCount; i++) {
37
37
  const child = parent.namedChild(i);
38
38
  if (child === null || child.type !== 'decorator')
39
39
  continue;
40
- const text = child.text.replace(/^@/, '').split('(')[0].trim();
41
- const tail = text.split('.').pop();
42
- if (tail === decoratorName)
40
+ const text = child.text.replace(/^@/, '').trim();
41
+ names.push(text);
42
+ }
43
+ return names;
44
+ }
45
+ /** Matches bare and module-qualified decorator spellings. */
46
+ function hasDecorator(fnNode, decoratorName) {
47
+ return decoratorNames(fnNode).some((expression) => {
48
+ const name = expression.split('(')[0].trim();
49
+ return name === decoratorName || name.endsWith(`.${decoratorName}`);
50
+ });
51
+ }
52
+ // These spellings have a known descriptor contract in ordinary Python code.
53
+ // Arbitrary dotted tails, aliases and decorator calls do not.
54
+ const KNOWN_RECEIVER_DECORATORS = new Set(['classmethod', 'staticmethod', 'property']);
55
+ /** Accept a local `@property` accessor chain, skipping only plain unrelated
56
+ * methods. Other intervening class-suite statements may rebind the descriptor,
57
+ * including tuple assignment or control flow. */
58
+ function isLocalPropertyAccessor(fnNode, expression) {
59
+ const methodName = fnNode.childForFieldName('name')?.text;
60
+ if (methodName === undefined ||
61
+ !['getter', 'setter', 'deleter'].some((kind) => expression === `${methodName}.${kind}`))
62
+ return false;
63
+ const wrapper = fnNode.parent;
64
+ const classBody = findEnclosingClassDefinition(fnNode)?.childForFieldName('body');
65
+ if (wrapper?.type !== 'decorated_definition' || classBody === null || classBody === undefined) {
66
+ return false;
67
+ }
68
+ let wrapperIndex = -1;
69
+ for (let i = 0; i < classBody.namedChildCount; i++) {
70
+ const sibling = classBody.namedChild(i);
71
+ if (sibling?.id === wrapper.id) {
72
+ wrapperIndex = i;
73
+ break;
74
+ }
75
+ }
76
+ for (let i = wrapperIndex - 1; i >= 0; i--) {
77
+ const sibling = classBody.namedChild(i);
78
+ if (sibling?.type === 'function_definition' &&
79
+ sibling.childForFieldName('name')?.text !== methodName) {
80
+ // A plain function definition binds only its own name in the class suite.
81
+ continue;
82
+ }
83
+ if (sibling?.type !== 'decorated_definition')
84
+ return false;
85
+ let candidate = null;
86
+ for (let j = 0; j < sibling.namedChildCount; j++) {
87
+ const child = sibling.namedChild(j);
88
+ if (child?.type === 'function_definition')
89
+ candidate = child;
90
+ }
91
+ if (candidate?.childForFieldName('name')?.text !== methodName)
92
+ return false;
93
+ const decorators = decoratorNames(candidate);
94
+ if (decorators.length !== 1)
95
+ return false;
96
+ if (decorators[0] === 'property')
43
97
  return true;
98
+ if (!['getter', 'setter', 'deleter'].some((kind) => decorators[0] === `${methodName}.${kind}`)) {
99
+ return false;
100
+ }
44
101
  }
45
102
  return false;
46
103
  }
@@ -48,6 +105,9 @@ function hasDecorator(fnNode, decoratorName) {
48
105
  export function isPythonStaticLikeMethod(fnNode) {
49
106
  return (fnNode.childForFieldName('name')?.text === '__new__' || hasDecorator(fnNode, 'staticmethod'));
50
107
  }
108
+ function isKnownReceiverDecorator(fnNode, expression) {
109
+ return KNOWN_RECEIVER_DECORATORS.has(expression) || isLocalPropertyAccessor(fnNode, expression);
110
+ }
51
111
  function firstBoundReceiverParameter(parameters) {
52
112
  for (let i = 0; i < parameters.namedChildCount; i++) {
53
113
  const child = parameters.namedChild(i);
@@ -86,8 +146,16 @@ function firstParameterName(param) {
86
146
  */
87
147
  export function classifyPythonBoundReceiver(fnNode) {
88
148
  const enclosingClass = findEnclosingClassDefinition(fnNode);
89
- if (enclosingClass === null || isPythonStaticLikeMethod(fnNode))
149
+ if (enclosingClass === null)
150
+ return null;
151
+ const decorators = decoratorNames(fnNode);
152
+ if (isPythonStaticLikeMethod(fnNode) ||
153
+ decorators.some((name) => !isKnownReceiverDecorator(fnNode, name))) {
154
+ // Python evaluates decorators as expressions. An unrecognized one may
155
+ // replace the function with a class/static descriptor, so its first
156
+ // parameter is not proven to receive an instance.
90
157
  return null;
158
+ }
91
159
  const functionName = fnNode.childForFieldName('name')?.text;
92
160
  // Python applies these descriptor kinds implicitly even without decorators.
93
161
  // __new__ is static-like (its class argument is explicit), while
@@ -103,7 +171,7 @@ export function classifyPythonBoundReceiver(fnNode) {
103
171
  if (name === null || className === null)
104
172
  return null;
105
173
  return {
106
- kind: hasDecorator(fnNode, 'classmethod') ||
174
+ kind: decorators.includes('classmethod') ||
107
175
  functionName === '__init_subclass__' ||
108
176
  functionName === '__class_getitem__'
109
177
  ? 'class'
@@ -142,10 +210,43 @@ function classifyPythonExplicitNewReceiver(fnNode) {
142
210
  * The caller is responsible for guaranteeing `fnNode.type ===
143
211
  * 'function_definition'`.
144
212
  */
213
+ /**
214
+ * The first parameter of a class method under an unrecognized decorator.
215
+ * Python may still bind it implicitly, but its receiver kind is unproven.
216
+ */
217
+ export function classifyPythonUncertainReceiver(fnNode) {
218
+ const decorators = decoratorNames(fnNode);
219
+ // Python applies decorators bottom-up. An outer built-in staticmethod
220
+ // guarantees no implicit receiver even when an inner decorator is opaque.
221
+ // The first parameter remains explicit and can keep its annotation.
222
+ if (decorators[0] === 'staticmethod')
223
+ return null;
224
+ if (decorators.every((name) => isKnownReceiverDecorator(fnNode, name)))
225
+ return null;
226
+ const enclosingClass = findEnclosingClassDefinition(fnNode);
227
+ const parameters = fnNode.childForFieldName('parameters');
228
+ const parameter = parameters === null ? null : firstBoundReceiverParameter(parameters);
229
+ const name = parameter === null ? null : firstParameterName(parameter);
230
+ const className = enclosingClass === null ? null : classDefinitionName(enclosingClass);
231
+ if (parameter === null || name === null || className === null)
232
+ return null;
233
+ return { kind: 'instance', parameter, name, className };
234
+ }
145
235
  export function synthesizeReceiverTypeBinding(fnNode) {
146
236
  const receiver = classifyPythonBoundReceiver(fnNode) ?? classifyPythonExplicitNewReceiver(fnNode);
147
- if (receiver === null)
148
- return null;
237
+ if (receiver === null) {
238
+ // Keep an uncertain receiver anchored to its enclosing class so the
239
+ // resolver can report the missing member without treating it as `self`.
240
+ const uncertain = classifyPythonUncertainReceiver(fnNode);
241
+ if (uncertain === null)
242
+ return null;
243
+ const { parameter: first, name, className } = uncertain;
244
+ return {
245
+ '@type-binding.uncertain-receiver': nodeToCapture('@type-binding.uncertain-receiver', first),
246
+ '@type-binding.name': syntheticCapture('@type-binding.name', first, name),
247
+ '@type-binding.type': syntheticCapture('@type-binding.type', first, className),
248
+ };
249
+ }
149
250
  // Receiver convention: instance methods get `self`, classmethods get `cls`.
150
251
  // The capture tag records the descriptor kind; the variable may use any
151
252
  // spelling.
@@ -50,6 +50,7 @@ const pythonScopeResolver = {
50
50
  // A free call naming a class constructs it: `Service(db).do_work()` (#2708).
51
51
  constructionSyntax: { bare: true },
52
52
  language: SupportedLanguages.Python,
53
+ suppressReceiverLookup: (typeRef) => typeRef.source === 'decorator-unknown',
53
54
  languageProvider: pythonProvider,
54
55
  importEdgeReason: 'python-scope: import',
55
56
  resolveImportTarget: (targetRaw, fromFile, allFilePaths, _resolutionConfig, context) => {
@@ -2,7 +2,7 @@
2
2
  // Verified against tree-sitter-python 0.23.4
3
3
  import { SupportedLanguages } from '../../../../_shared/index.js';
4
4
  import { hasKeyword } from '../../field-extractors/configs/helpers.js';
5
- import { classifyPythonBoundReceiver } from '../../languages/python/receiver-binding.js';
5
+ import { classifyPythonBoundReceiver, classifyPythonUncertainReceiver, isPythonStaticLikeMethod, } from '../../languages/python/receiver-binding.js';
6
6
  import { extractSimpleTypeName } from '../../type-extractors/shared.js';
7
7
  // ---------------------------------------------------------------------------
8
8
  // Python helpers
@@ -92,7 +92,10 @@ function extractPythonParameters(node) {
92
92
  return [];
93
93
  const params = [];
94
94
  let isFirst = true;
95
- const boundReceiverId = classifyPythonBoundReceiver(funcNode)?.parameter.id;
95
+ // An opaque decorator leaves the receiver kind unproven, not the slot: keep
96
+ // stripping it so arity matches ordinary bound calls.
97
+ const boundReceiverId = (classifyPythonBoundReceiver(funcNode) ??
98
+ (isPythonStaticLikeMethod(funcNode) ? null : classifyPythonUncertainReceiver(funcNode)))?.parameter.id;
96
99
  for (let i = 0; i < paramList.namedChildCount; i++) {
97
100
  const param = paramList.namedChild(i);
98
101
  if (!param)
@@ -1009,6 +1009,11 @@ function followChainedRef(start, draftById) {
1009
1009
  */
1010
1010
  function typeBindingStrength(source) {
1011
1011
  switch (source) {
1012
+ // A method decorator may change what the first parameter receives. An
1013
+ // annotation describes intent, not descriptor binding, so it cannot
1014
+ // override this uncertainty for that parameter.
1015
+ case 'decorator-unknown':
1016
+ return 4;
1012
1017
  case 'annotation':
1013
1018
  return 3;
1014
1019
  case 'parameter-annotation':
@@ -1235,6 +1235,10 @@ export interface ScopeResolver {
1235
1235
  * return undefined to retain the shared behavior.
1236
1236
  */
1237
1237
  readonly resolveReceiverMember?: (ownerDef: SymbolDefinition, memberName: string, callsite: Callsite, scopes: ScopeResolutionIndexes, model: SemanticModel) => ReceiverMemberResolution | undefined;
1238
+ /** Suppress all receiver dispatch when a captured type cannot prove its
1239
+ * runtime binding. Runs before compound and simple receiver lookup; the
1240
+ * caller records a receiver-unresolved outcome. */
1241
+ readonly suppressReceiverLookup?: (typeRef: TypeRef) => boolean;
1238
1242
  /**
1239
1243
  * Enable the receiver-bound Case 0.5 fallback for explicit `this`
1240
1244
  * receivers (`this->m()` / `this.m()`) that resolves against the
@@ -72,7 +72,7 @@ import { type HeritageTypeArguments } from '../utils/generic-instantiation.js';
72
72
  import type { ResolutionOutcomeRecorder } from '../resolution-outcome.js';
73
73
  import type { ReceiverOrigin } from '../resolution-outcome.js';
74
74
  import type { DecodedReceiverChain } from '../../utils/receiver-chain-codec.js';
75
- type ReceiverBoundProviderSubset = Pick<ScopeResolver, 'isSuperReceiver' | 'isSuperReceiverInContext' | 'fieldFallbackOnMethodLookup' | 'collapseMemberCallsByCallerTarget' | 'elementTypeOf' | 'hoistTypeBindingsToModule' | 'stripReceiverCastExpressions' | 'constructionSyntax' | 'stripTypePreservingDecoration' | 'resolveQualifiedReceiverMember' | 'namespaceReceiverPaths' | 'resolveReceiverMember' | 'resolveThisViaEnclosingClass' | 'resolveMissingReceiverMembersFromSubtypes' | 'missingReceiverSubtypeCandidateCompatibility' | 'arityCompatibility' | 'conversionRankFn' | 'conversionOnlyArgTypePrefixes' | 'constraintCompatibility' | 'isStaticOnly' | 'normalizeTypeArgument' | 'markConstructionSites' | 'namespaceExportsIncludeImportedNames' | 'resolveNamespaceChains'>;
75
+ type ReceiverBoundProviderSubset = Pick<ScopeResolver, 'isSuperReceiver' | 'isSuperReceiverInContext' | 'fieldFallbackOnMethodLookup' | 'collapseMemberCallsByCallerTarget' | 'elementTypeOf' | 'hoistTypeBindingsToModule' | 'stripReceiverCastExpressions' | 'constructionSyntax' | 'stripTypePreservingDecoration' | 'resolveQualifiedReceiverMember' | 'namespaceReceiverPaths' | 'resolveReceiverMember' | 'suppressReceiverLookup' | 'resolveThisViaEnclosingClass' | 'resolveMissingReceiverMembersFromSubtypes' | 'missingReceiverSubtypeCandidateCompatibility' | 'arityCompatibility' | 'conversionRankFn' | 'conversionOnlyArgTypePrefixes' | 'constraintCompatibility' | 'isStaticOnly' | 'normalizeTypeArgument' | 'markConstructionSites' | 'namespaceExportsIncludeImportedNames' | 'resolveNamespaceChains'>;
76
76
  /**
77
77
  * Is this dropped receiver rooted inside the analyzed program?
78
78
  *
@@ -849,6 +849,27 @@ export function emitReceiverBoundCalls(graph, scopes, parsedFiles, nodeLookup, h
849
849
  const receiverName = site.explicitReceiver.name;
850
850
  const memberName = site.name;
851
851
  const siteKey = `${parsed.filePath}:${site.atRange.startLine}:${site.atRange.startCol}`;
852
+ if (provider.suppressReceiverLookup !== undefined) {
853
+ const baseName = decodeReceiverChain(site.receiverChain)?.baseReceiverName ??
854
+ receiverName.split(/[.([\s]/, 1)[0];
855
+ const baseTypeRef = baseName === undefined
856
+ ? undefined
857
+ : findReceiverTypeBinding(site.inScope, baseName, scopes);
858
+ if (baseTypeRef !== undefined && provider.suppressReceiverLookup(baseTypeRef)) {
859
+ options.recordResolutionOutcome?.({
860
+ kind: 'suppressed',
861
+ reason: 'receiver-unresolved',
862
+ candidateIds: [],
863
+ phase: 'receiver-bound-calls',
864
+ filePath: parsed.filePath,
865
+ name: site.name,
866
+ range: site.atRange,
867
+ siteKind: site.kind,
868
+ });
869
+ handledSites.add(siteKey);
870
+ continue;
871
+ }
872
+ }
852
873
  // ── owned-but-unbound receiver ───────────────────────────────
853
874
  // The language declared this scope REBINDS the receiver and gave
854
875
  // it no type — a JS/TS ordinary `function`, whose `this` comes
@@ -52,6 +52,7 @@ const TEST_PATH_SUBSTRINGS = [
52
52
  const TEST_PATH_DELIMITED_SUFFIXES = [
53
53
  '_test.py',
54
54
  '_test.go',
55
+ '_test.dart',
55
56
  '_spec.rb',
56
57
  '_test.rb',
57
58
  ];
@@ -800,7 +800,10 @@ import { copyV8CacheIfPresent, tryLoadV8Cache, writeV8CacheFile } from './v8-sid
800
800
  // would retain that capacity and could emit a false concrete call target.
801
801
  // v119 (#3396): Python subtype method capacities now omit receiverless ordinary
802
802
  // methods. Warm v118 ParsedFiles would replay a false compatible target.
803
- const SCHEMA_BUMP = 119;
803
+ // v120 (#3394): decorated Python method receiver bindings now distinguish
804
+ // unproven decorators from instance receivers. Warm v119 ParsedFiles would
805
+ // replay a fabricated `self` binding or lack the uncertainty marker entirely.
806
+ const SCHEMA_BUMP = 120;
804
807
  const GITNEXUS_PKG_VERSION = (() => {
805
808
  try {
806
809
  // package.json sits at gitnexus/package.json — two levels up from
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gitnexus",
3
- "version": "1.6.13-rc.51",
3
+ "version": "1.6.13-rc.53",
4
4
  "description": "Graph-powered code intelligence for AI agents. Index any codebase, query via MCP or CLI.",
5
5
  "author": "Abhigyan Patwari",
6
6
  "license": "PolyForm-Noncommercial-1.0.0",