Land the six-file fix from upstream PR #1691 by danusha2345 (pr-1691 at 6d0e80d52ae953b22d615bd20c4a4c7758814e60), preserving wasm/native extraction parity and exclusive field-type resolution. Preserve coexistence with the #1566 Map/collection fix merged in #1790, including nested holder.values.get coverage and the unchanged #1566 Unreleased changelog bullet. EXTRACTION_VERSION remains unchanged. Align the existing chained-receiver regression with the fix: a declared service field calls its method, while an anonymous field type does not bind to unrelated same-named project functions. Verified on Linux with Node 22.19.0: - Rebuilt the native kernel and TypeScript/browser distribution. - Both backends change Outbox::send -> Outbox::send into Outbox::send -> Mailer::send, keep Relay::forward -> Mailer::send, and store no self-edges in the issue repro. - Wasm: 224 tests passed; native kernel: 255 tests passed, no skips. - All 10 #1566 resolution cases pass on each backend, plus all four nested-receiver extraction parity cases. Co-authored-by: Colby McHenry <colbymchenry@users.noreply.github.com>
This commit is contained in:
co-authored by
Colby McHenry
parent
de5adba7ea
commit
cece0720e3
@@ -43,7 +43,12 @@ beforeAll(async () => {
|
||||
'export function viaGlobal(): string {\n' +
|
||||
' return window.MyNs.ping();\n' +
|
||||
'}\n' +
|
||||
'export class PingService { ping(): string { return "service"; } }\n' +
|
||||
'export class Runner {\n' +
|
||||
' constructor(private svc: PingService) {}\n' +
|
||||
' run(): string { return this.svc.ping(); }\n' +
|
||||
'}\n' +
|
||||
'export class AnonymousRunner {\n' +
|
||||
' constructor(private svc: { ping(): string }) {}\n' +
|
||||
' run(): string { return this.svc.ping(); }\n' +
|
||||
'}\n'
|
||||
@@ -86,6 +91,11 @@ describe('TS/JS call through a host-global chain (#1707)', () => {
|
||||
it('keeps a chain rooted at a project value — window.MyNs.m() and this.<field>.m()', () => {
|
||||
const ping = fn('ping', 'service.ts').id;
|
||||
expect(callTargets(fn('viaGlobal', 'service.ts').id)).toContain(ping);
|
||||
expect(callTargets(method('Runner::run').id)).toContain(ping);
|
||||
expect(callTargets(method('Runner::run').id)).toEqual([method('PingService::ping').id]);
|
||||
});
|
||||
|
||||
it('does not guess a same-named project target for an anonymous field type (#1496)', () => {
|
||||
// Neither the top-level ping nor PingService::ping establishes what svc is.
|
||||
expect(callTargets(method('AnonymousRunner::run').id)).toEqual([]);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user