Skip to content

Promote staged fixes into 0.1.9 - #1804

Merged
swapnilpaliwal-sd merged 13 commits into
0.1.9from
apps/integration-0.1.9
Sep 30, 2026
Merged

swapnilpaliwal-sd merged 13 commits into
0.1.9from
apps/integration-0.1.9

Conversation

@swapnilpaliwal-sd

Copy link
Copy Markdown
Contributor

Promotes the staged fixes into 0.1.9:

swapnilpaliwal-sd and others added 12 commits September 29, 2026 15:55
…an reach the interface

A class was counted as implementing an interface whenever it declared a member of each
required name. Now a covered method that needs more arguments than the target passes
rejects the pair, and outside one tsconfig program the class's module (or a module that
uses the class as a value) must import the interface's module. impact never promotes a
structural pair to 'must change', and a via-the-interface row reached only structurally
is at most one of a set.

Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
…e member

The compiler rejects assigning a class whose only member of a required name is private,
protected or #private, so the structural rule no longer counts such a class as a conformer.
The structural-satisfaction case gains a same-arity class with a private method, built in the
interface's module, that must not become a dispatch candidate.

Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
… lets its class meet it

The reachability gate walks imports from the class's modules to the interface's
module. A workspace package whose manifest points at absent build output, or a
compiled .d.ts, binds no client module, so the walk stopped there and dropped true
conformers (a class declaring implements through such a package, or one built by a
factory module that imports the interface that way). An import in a reached module
that names the interface now counts as the meeting.

Control Declared in 03-structural-satisfaction: without the rule it loses
Relay.run -> Declared.publish; Stranger and Bus stay absent.

Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
… a project function reaches that function

A field or module variable set to what a platform call returned when handed a project function
(promisify(store.find.bind(store))) was an ambient terminal, and path called the caller independent
of the very method the wrapper runs. The wrapper call now reaches the bound method when the graph
knows it (one of a set), and is an open value callee when it does not. path also counts a call that
ends on a function type's signature (TypeScript) as a value callee, and lists a value callee named
like the other endpoint first.

Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
…bers is refused, naming the members either side

A line number copied before an edit often lands on a blank or doc-comment line
between two methods. Where a class body has no module node of its own
(TypeScript, JavaScript, Java, C#), that line fell through to the file's module
and was answered as its top-level code, with nothing saying the line held no
declaration; Java said only "no callable spans". It is now refused with the
enclosing type and the nearest declaration above and below it. A Python class
body is a module node inside the type and answers as before.

Checked: new checks in fileline-line-outside-file (JS) and
fileline-dotted-basename (TS) fail before (3 of 32) and pass after (32 of 32);
graph unchanged (9988 call edges on a real NestJS repo either way).
…egistered where the const is handed over

TypeScript: a const whose initializer is a boundary call handed a function (fp(async (app) => ...),
defineExtension(fn)) hands that function on to a library registration it is passed to, by name or
through an import. Not a reassignment, not a call through a project value, not a call whose typed
result has no call signature.
JavaScript: the same, for a call rooted at a package import, carried as its own value kind that is
never a callee.

path answered 'independent' for a plugin registered this way although the bare form was reached.

Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
…rtial are transparent

- javascript: f.bind(o) gives f's this the value of o (objects and instances, functions no
  class owns), so this.repo.append() inside a handler bound to { repo } resolves
- javascript: util.promisify(f) evaluates to what f holds, recognised on the import of the
  core util module; a project's own promisify is untouched
- typescript: a declared this parameter types this inside the function; the compiler
  oracle's labels drop it, as the engine's do
- python: a functools.partial call denotes its target wherever it goes (attribute,
  argument), not only in a local name

Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
…satisfaction-by-name-only

typescript: a structural pair needs matching arity and a class that can reach the interface
…-independence-despite-same-na

javascript: a call through a field holding a platform-made wrapper reaches the wrapped function
…d579c

path, impact: a file:line in a class body but in no member is refused, naming the members either side
…ed-callback-registration

engine: a library-wrapped function kept in a const is registered where the const is handed over
…ion-identity-and-bound-this

engine: bound this, and promisify / partial as transparent wrappers
Keeps both: the line-inside-a-type-body check and 0.1.9's why_note on top-level code.

Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
@swapnilpaliwal-sd
swapnilpaliwal-sd merged commit 5e23ed3 into 0.1.9 Sep 30, 2026
12 checks passed
@swapnilpaliwal-sd
swapnilpaliwal-sd deleted the apps/integration-0.1.9 branch September 30, 2026 02:26
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