Repository navigation
Promote staged fixes into 0.1.9 - #1804
Merged
Merged
Conversation
…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
swapnilpaliwal-sd
requested review from
JaredHLZhang,
Whua689 and
suyashpaliwal26
as code owners
September 30, 2026 02:04
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Promotes the staged fixes into 0.1.9: