chore: integrate public receiver regression coverage
This commit is contained in:
commit
555877b438
1 file changed
+17
@@ -47,6 +47,10 @@ const writes = {
|
||||
constructor:
|
||||
"function Box() { return shared; } const t = new Box(); t.x = 2;",
|
||||
callback: "const get = () => shared; [0].forEach(() => { get().x = 2; });",
|
||||
wideMethods: `const box = { ${Array.from(
|
||||
{ length: 64 },
|
||||
(_, index) => `m${index}() { return shared; }`,
|
||||
).join(", ")} }; box.m0().x = 2; box.m63().other = 3;`,
|
||||
};
|
||||
const source = [
|
||||
...Object.entries(writes).map(
|
||||
@@ -61,6 +65,8 @@ const source = [
|
||||
"export function unused(){ const shared = {x: 1}; const get = () => shared; get(); return shared.x; }",
|
||||
"export function nestedCallable(){ const shared = {x: 1}; const get = () => { const inner = () => shared; return {x: 0}; }; get().x = 2; return shared.x; }",
|
||||
"export function unrelated(){ const shared = {x: 1}; const other = {x: 9}; const get = () => shared; get().x = 2; return other.x; }",
|
||||
"export function receiverDistinctScopes(){ const shared = {x: 1}; const box = {outer(){ return shared; }, inner(){ const shared = {x: 9}; return shared; }, noop(){}}; box.noop(); return {outer: shared.x, inner: box.inner().x}; }",
|
||||
"export function receiverDistinctPaths(){ const parent = {left: {x: 1}, right: {x: 9}, keep: 7}; const box = {left(){ return parent.left; }, right(){ return parent.right; }, noop(){}}; box.noop(); return {left: parent.left.x, right: parent.right.x, keep: parent.keep}; }",
|
||||
].join("\n");
|
||||
|
||||
const assertReturns = (fields: JavaScriptReturnFields): void => {
|
||||
@@ -91,6 +97,17 @@ const assertReturns = (fields: JavaScriptReturnFields): void => {
|
||||
expect(fields("unrelated")).toContainEqual(
|
||||
expect.objectContaining({ path: "", state: "literal", value: 9 }),
|
||||
);
|
||||
for (const path of ["/outer", "/inner"])
|
||||
expect(fields("receiverDistinctScopes")).toContainEqual(
|
||||
expect.objectContaining({ path, state: "unknown" }),
|
||||
);
|
||||
for (const path of ["/left", "/right"])
|
||||
expect(fields("receiverDistinctPaths")).toContainEqual(
|
||||
expect.objectContaining({ path, state: "unknown" }),
|
||||
);
|
||||
expect(fields("receiverDistinctPaths")).toContainEqual(
|
||||
expect.objectContaining({ path: "/keep", state: "literal", value: 7 }),
|
||||
);
|
||||
};
|
||||
|
||||
cliTest(
|
||||
|
||||
Reference in new issue
Block a user