Skip to content

fix(python): resolve class-body and decorator calls - #2529

Open
DeusData wants to merge 7 commits into
mainfrom
fix/python-class-body-calls-v2
Open

DeusData wants to merge 7 commits into
mainfrom
fix/python-class-body-calls-v2

Conversation

@DeusData

@DeusData DeusData commented Oct 3, 2026 •

Copy link
Copy Markdown
Owner

Calls executed in Python class bodies and module-level decorators were missing from the LSP walk, so their graph edges depended on name heuristics. This also affected class bodies nested inside functions or methods.

Walk class bases, decorator call expressions, and class-body statements at their definition site. Preserve the extracted caller and isolate class-local bindings from nested classes, comprehensions, and deferred methods. Comprehensions evaluate their first iterable in the enclosing scope. Allocation failures stop the walk and preserve the existing output rollback behavior.

The regression cases cover exact call sites and caller identities, source-order bindings, decorators, comprehension scope, shadowing, allocation failure, and sequential/parallel pipeline joins. Class-local lambda replay and dictionary dispatch remain conservative where the existing file-wide metadata cannot prove lexical identity.

Stacked on #2528, which includes #2525, #2522, and #2498. This PR targets main, so its diff includes those dependencies until they land. Existing indexes need reindexing to acquire corrected edges.

Parallel resolver error slots use matching tracked allocation and cleanup. Import-filter failures share cleanup while preserving the full-registry fallback. The existing raw-allocation allowances are unchanged.

Validation: source review, clang-format 20 formatting, and diff checks. Builds, tests, compiler/syntax checks, revert proof, and local CI are UNRUN, as requested. GitHub CI is pending.

Carry declared instance-field types through extraction and result
compaction into the shared Python type registry so chained calls through
imported classes resolve their receiver types.

Refs #1277

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
Copy inherited field-type pointer arrays into the writable registry arena
before Python refines an existing field. Keep shared type objects intact
and avoid retaining per-file scratch types in the sealed fallback.

Add deterministic shared-state and later-overlay coverage, retaining the
sequential Python field regression and adding a forced-parallel variant.

Refs #1277

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
Memoize C expression evaluation, index repeated scope and registry queries,
and report incomplete walks explicitly on memo or depth failure.

Refs #1527

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
Preserve the arena-owned raw Module caller name so top-level resolutions
join the extractor in both pipeline drivers. Add occurrence and ownership
controls, including package modules and named lambdas.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
Resolve symbols declared in __init__.py under their package while retaining
the raw module identity for file and top-level caller nodes. Carry explicit
language through registry callers, select Python package imports, preserve
long exact names, and report scope allocation failures without partial output.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
Use tracked zeroed storage for the parallel LSP failure array and
release it with the matching memory class after worker joins.
Share import-filter failure cleanup without changing fallback state.
Keep existing raw-allocation allowances unchanged.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
@DeusData

DeusData commented Oct 3, 2026

Copy link
Copy Markdown
Owner Author

Checkpoint and handover (2026-10-03 UTC)

Published head: 185b96f7ce9cefe2e61bbee7a9a9ae3403eb501d. The remote head was verified.

Python class-body calls are published across four files with 10 new tests, unrun locally. Prerequisite: #2528. The allocator corrections are included. #2531 follows in the dependency stack; evaluate this head rather than an older canceled run.

Hosted snapshot at 2026-10-03 21:54:23 UTC: 3 queued. Confirm the required checks on this exact head before treating it as ready.

No additional local build, test, lint, sanitizer, benchmark or CI runs were performed at this checkpoint, as requested. Earlier executed evidence remains historical; prepared tests and the newer source-reviewed changes must still be validated by the hosted gate.

The campaign is paused at the maintainer’s request. Local monitoring has stopped; hosted jobs remain running. No merge was performed. Thanks for reviewing this change.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant