@scriptc/compiler 0.2.9 → 0.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/dist/backend/cycle-analysis.d.ts +56 -0
  2. package/dist/backend/cycle-analysis.js +175 -14
  3. package/dist/backend/cycle-analysis.js.map +1 -1
  4. package/dist/backend/cycle-analysis.test.js +94 -1
  5. package/dist/backend/cycle-analysis.test.js.map +1 -1
  6. package/dist/backend/cycle-mutability.d.ts +2 -6
  7. package/dist/backend/cycle-mutability.js +3 -12
  8. package/dist/backend/cycle-mutability.js.map +1 -1
  9. package/dist/backend/immutability.d.ts +57 -0
  10. package/dist/backend/immutability.js +178 -0
  11. package/dist/backend/immutability.js.map +1 -0
  12. package/dist/backend/immutability.test.d.ts +1 -0
  13. package/dist/backend/immutability.test.js +131 -0
  14. package/dist/backend/immutability.test.js.map +1 -0
  15. package/dist/backend/llvm/borrowed-inputs.d.ts +9 -2
  16. package/dist/backend/llvm/borrowed-inputs.js +31 -3
  17. package/dist/backend/llvm/borrowed-inputs.js.map +1 -1
  18. package/dist/backend/llvm/classes.d.ts +28 -0
  19. package/dist/backend/llvm/classes.js +45 -5
  20. package/dist/backend/llvm/classes.js.map +1 -1
  21. package/dist/backend/llvm/classes.test.js +129 -1
  22. package/dist/backend/llvm/classes.test.js.map +1 -1
  23. package/dist/backend/llvm/common.d.ts +13 -0
  24. package/dist/backend/llvm/common.js +13 -0
  25. package/dist/backend/llvm/common.js.map +1 -1
  26. package/dist/backend/llvm/dense-array-access.js +5 -4
  27. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  28. package/dist/backend/llvm/dense-array-access.test.js +9 -1
  29. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  30. package/dist/backend/llvm/dyn.d.ts +2 -0
  31. package/dist/backend/llvm/dyn.js +3 -3
  32. package/dist/backend/llvm/dyn.js.map +1 -1
  33. package/dist/backend/llvm/emitter.d.ts +64 -2
  34. package/dist/backend/llvm/emitter.js +390 -45
  35. package/dist/backend/llvm/emitter.js.map +1 -1
  36. package/dist/backend/llvm/emitter.test.js +18 -0
  37. package/dist/backend/llvm/emitter.test.js.map +1 -1
  38. package/dist/backend/llvm/expr-calls.js +14 -6
  39. package/dist/backend/llvm/expr-calls.js.map +1 -1
  40. package/dist/backend/llvm/expr-containers.js +30 -7
  41. package/dist/backend/llvm/expr-containers.js.map +1 -1
  42. package/dist/backend/llvm/expr-primitives.js +30 -3
  43. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  44. package/dist/backend/llvm/expr-primitives.test.js +53 -0
  45. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  46. package/dist/backend/llvm/expr-stream-bridges.js +4 -4
  47. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  48. package/dist/backend/llvm/local-array-reads.js +3 -3
  49. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  50. package/dist/backend/llvm/loop-array-borrows.d.ts +5 -2
  51. package/dist/backend/llvm/loop-array-borrows.js +27 -8
  52. package/dist/backend/llvm/loop-array-borrows.js.map +1 -1
  53. package/dist/backend/llvm/map-number-lookup.d.ts +7 -0
  54. package/dist/backend/llvm/map-number-lookup.js +18 -1
  55. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  56. package/dist/backend/llvm/map-read-lifetimes.d.ts +5 -0
  57. package/dist/backend/llvm/map-read-lifetimes.js +14 -4
  58. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  59. package/dist/backend/llvm/map-read-lifetimes.test.js +5 -0
  60. package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
  61. package/dist/backend/llvm/reference-writes.d.ts +124 -0
  62. package/dist/backend/llvm/reference-writes.js +1090 -0
  63. package/dist/backend/llvm/reference-writes.js.map +1 -0
  64. package/dist/backend/llvm/shapes.d.ts +8 -5
  65. package/dist/backend/llvm/shapes.js +36 -11
  66. package/dist/backend/llvm/shapes.js.map +1 -1
  67. package/dist/backend/llvm/string-lifetimes.test.js +39 -10
  68. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  69. package/dist/backend/llvm/string-reads.d.ts +3 -0
  70. package/dist/backend/llvm/string-reads.js +31 -0
  71. package/dist/backend/llvm/string-reads.js.map +1 -1
  72. package/dist/backend/llvm/switch-dispatch.d.ts +2 -2
  73. package/dist/backend/llvm/switch-dispatch.js +35 -22
  74. package/dist/backend/llvm/switch-dispatch.js.map +1 -1
  75. package/dist/backend/llvm/switch-dispatch.test.js +28 -10
  76. package/dist/backend/llvm/switch-dispatch.test.js.map +1 -1
  77. package/dist/backend/llvm/walk-borrows.d.ts +8 -1
  78. package/dist/backend/llvm/walk-borrows.js +15 -4
  79. package/dist/backend/llvm/walk-borrows.js.map +1 -1
  80. package/dist/backend/may-throw.d.ts +36 -2
  81. package/dist/backend/may-throw.js +308 -12
  82. package/dist/backend/may-throw.js.map +1 -1
  83. package/dist/backend/may-throw.test.js +146 -1
  84. package/dist/backend/may-throw.test.js.map +1 -1
  85. package/dist/backend/publication.d.ts +5 -0
  86. package/dist/backend/publication.js +10 -0
  87. package/dist/backend/publication.js.map +1 -1
  88. package/dist/backend/runtime-abi.d.ts +2 -2
  89. package/dist/backend/runtime-abi.js +2 -2
  90. package/dist/backend/runtime-pack-targets.test.js +1 -1
  91. package/dist/backend/runtime-pack.test.js +1 -1
  92. package/dist/contracts/check.d.ts +8 -0
  93. package/dist/contracts/check.js +1577 -0
  94. package/dist/contracts/check.js.map +1 -0
  95. package/dist/executable/prepare.js +9 -0
  96. package/dist/executable/prepare.js.map +1 -1
  97. package/dist/frontend/contract-types.d.ts +50 -0
  98. package/dist/frontend/contract-types.js +232 -0
  99. package/dist/frontend/contract-types.js.map +1 -0
  100. package/dist/frontend/lowering/coercions/unions.d.ts +12 -0
  101. package/dist/frontend/lowering/coercions/unions.js +63 -0
  102. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  103. package/dist/frontend/lowering/expressions/optional-chains.js +4 -1
  104. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  105. package/dist/frontend/lowering/lower-calls.js +9 -2
  106. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  107. package/dist/frontend/lowering/lower-exprs.js +83 -1
  108. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  109. package/dist/frontend/lowering/lowerer.d.ts +9 -0
  110. package/dist/frontend/lowering/lowerer.js +47 -0
  111. package/dist/frontend/lowering/lowerer.js.map +1 -1
  112. package/dist/frontend/lowering/narrowing-stability.d.ts +100 -0
  113. package/dist/frontend/lowering/narrowing-stability.js +1174 -0
  114. package/dist/frontend/lowering/narrowing-stability.js.map +1 -0
  115. package/dist/frontend/lowering/narrowing-stability.test.d.ts +1 -0
  116. package/dist/frontend/lowering/narrowing-stability.test.js +150 -0
  117. package/dist/frontend/lowering/narrowing-stability.test.js.map +1 -0
  118. package/dist/frontend/program.js +1 -1
  119. package/dist/frontend/type-mapper.js +43 -0
  120. package/dist/frontend/type-mapper.js.map +1 -1
  121. package/dist/ir/int32-slots.d.ts +26 -0
  122. package/dist/ir/int32-slots.js +147 -47
  123. package/dist/ir/int32-slots.js.map +1 -1
  124. package/dist/ir/integer-loops.js +3 -0
  125. package/dist/ir/integer-loops.js.map +1 -1
  126. package/dist/ir/integer-loops.test.js +26 -1
  127. package/dist/ir/integer-loops.test.js.map +1 -1
  128. package/dist/ir/integer-ranges.d.ts +20 -0
  129. package/dist/ir/integer-ranges.js +178 -21
  130. package/dist/ir/integer-ranges.js.map +1 -1
  131. package/dist/ir/integer-ranges.test.js +148 -3
  132. package/dist/ir/integer-ranges.test.js.map +1 -1
  133. package/dist/ir/ir.d.ts +32 -0
  134. package/dist/ir/ir.js.map +1 -1
  135. package/dist/ir/serialize.d.ts +5 -1
  136. package/dist/ir/serialize.js +8 -0
  137. package/dist/ir/serialize.js.map +1 -1
  138. package/dist/ir/unshare.d.ts +14 -0
  139. package/dist/ir/unshare.js +60 -0
  140. package/dist/ir/unshare.js.map +1 -0
  141. package/dist/ir/unshare.test.d.ts +1 -0
  142. package/dist/ir/unshare.test.js +115 -0
  143. package/dist/ir/unshare.test.js.map +1 -0
  144. package/dist/library/prepare.js +9 -0
  145. package/dist/library/prepare.js.map +1 -1
  146. package/package.json +20 -20
  147. package/surface-manifest.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"narrowing-stability.js","sourceRoot":"","sources":["../../../src/frontend/lowering/narrowing-stability.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
2
+ import { tmpdir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { expect, test } from "vitest";
5
+ import { compile, deserializeModule, validateModule } from "../../index.js";
6
+ async function lower(source) {
7
+ const dir = await mkdtemp(join(tmpdir(), "scriptc-narrowing-stability-"));
8
+ try {
9
+ const entry = join(dir, "main.ts"), output = join(dir, "main.ir.json");
10
+ await writeFile(entry, source);
11
+ const result = await compile(entry, { outDir: dir, outPath: output, outputKind: "ir" });
12
+ if (!result.ok)
13
+ throw new Error(result.diagnostics.map((item) => `${item.code}: ${item.message}`).join("\n"));
14
+ const module = deserializeModule(await readFile(output, "utf8"));
15
+ expect(validateModule(module)).toEqual([]);
16
+ return module;
17
+ }
18
+ finally {
19
+ await rm(dir, { recursive: true, force: true });
20
+ }
21
+ }
22
+ /** The TypeError messages a function's checked reads can throw. */
23
+ function thrownMessages(module, name) {
24
+ const fn = module.functions.find((f) => f.name === name || f.name.endsWith(`.${name}`));
25
+ if (!fn)
26
+ throw new Error(`no function ${name}`);
27
+ const messages = [];
28
+ JSON.stringify(fn.body, (_key, value) => {
29
+ const node = value;
30
+ if (node?.kind === "libCall" && node.fn === "error.nodeThrow")
31
+ messages.push(String(node.args?.[2]?.value));
32
+ return value;
33
+ });
34
+ return messages;
35
+ }
36
+ const SOURCE = `
37
+ class Tree {
38
+ parent: Tree | undefined;
39
+ depth: number;
40
+ constructor(parent: Tree | undefined) {
41
+ this.parent = parent;
42
+ this.depth = parent ? parent.depth + 1 : 0;
43
+ }
44
+ }
45
+ class Box {
46
+ label: string | undefined = undefined;
47
+ clear(): void { this.label = undefined; }
48
+ }
49
+ function visit(t: Tree): number { return t.depth; }
50
+ function constructionOnly(t: Tree): number {
51
+ if (t.parent) {
52
+ visit(t);
53
+ return t.parent.depth;
54
+ }
55
+ return -1;
56
+ }
57
+ function noCall(b: Box): number {
58
+ if (b.label !== undefined) return b.label.length + b.label.length;
59
+ return 0;
60
+ }
61
+ function libraryCalls(b: Box, xs: number[]): number {
62
+ if (b.label !== undefined) {
63
+ xs.push(Math.max(1, 2));
64
+ console.log("x");
65
+ return b.label.length;
66
+ }
67
+ return 0;
68
+ }
69
+ function userCall(b: Box): number {
70
+ if (b.label !== undefined) {
71
+ visit(new Tree(undefined));
72
+ return b.label.length;
73
+ }
74
+ return 0;
75
+ }
76
+ function methodCall(b: Box): number {
77
+ if (b.label !== undefined) {
78
+ b.clear();
79
+ return b.label.length;
80
+ }
81
+ return 0;
82
+ }
83
+ function loopBackEdge(b: Box): number {
84
+ let n = 0;
85
+ if (b.label !== undefined) {
86
+ for (let i = 0; i < 2; i++) {
87
+ n += b.label.length;
88
+ b.clear();
89
+ }
90
+ }
91
+ return n;
92
+ }
93
+ const b = new Box();
94
+ b.label = "abc";
95
+ console.log(constructionOnly(new Tree(new Tree(undefined))), noCall(b), libraryCalls(b, []),
96
+ userCall(b), methodCall(b), loopBackEdge(b));
97
+ `;
98
+ test("narrowed reads keep the unchecked extraction where nothing can change the field", async () => {
99
+ const module = await lower(SOURCE);
100
+ expect(thrownMessages(module, "constructionOnly")).toEqual([]);
101
+ expect(thrownMessages(module, "noCall")).toEqual([]);
102
+ expect(thrownMessages(module, "libraryCalls")).toEqual([]);
103
+ });
104
+ test("narrowed reads after code that can clear the field check it with Node's TypeError", async () => {
105
+ const module = await lower(SOURCE);
106
+ const read = "Cannot read properties of undefined (reading 'length')";
107
+ expect(thrownMessages(module, "userCall")).toContain(read);
108
+ expect(thrownMessages(module, "methodCall")).toContain(read);
109
+ expect(thrownMessages(module, "loopBackEdge")).toContain(read);
110
+ });
111
+ test("standard-library arguments read as declared only where the lowering is generic", async () => {
112
+ // JSON.stringify and clearInterval lower only the narrowed argument types;
113
+ // console methods and type-parameter slots take the declared value.
114
+ const module = await lower(`
115
+ interface Opts {
116
+ p?: { [k: string]: number };
117
+ }
118
+ function touch(): number {
119
+ return 1;
120
+ }
121
+ let handle: ReturnType<typeof setInterval> | null = null;
122
+ const stop = (): void => {
123
+ handle = null;
124
+ };
125
+ function specialized(o: Opts): string {
126
+ o.p = { a: 1 };
127
+ touch();
128
+ return JSON.stringify(o.p);
129
+ }
130
+ function clearAfterCall(): void {
131
+ if (handle !== null) {
132
+ touch();
133
+ clearInterval(handle);
134
+ }
135
+ }
136
+ function formatted(o: Opts, out: (Opts["p"])[]): void {
137
+ o.p = { a: 2 };
138
+ touch();
139
+ console.log(o.p);
140
+ out.push(o.p);
141
+ }
142
+ handle = setInterval(() => {}, 1000);
143
+ console.log(specialized({}));
144
+ clearAfterCall();
145
+ stop();
146
+ formatted({}, []);
147
+ `);
148
+ expect(thrownMessages(module, "formatted")).toEqual([]);
149
+ });
150
+ //# sourceMappingURL=narrowing-stability.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"narrowing-stability.test.js","sourceRoot":"","sources":["../../../src/frontend/lowering/narrowing-stability.test.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@
13
13
  * the order-parity suite holding both lanes to identical diagnostics and
14
14
  * module order over the whole corpus. The phase-4 flip deleted the 5.9.3
15
15
  * pipeline; its recorded verdicts live on as the canary baselines
16
- * (test/ts7/baselines/order-parity.json), and the rationale prose the old
16
+ * (test/ts7/baselines/order-parity/), and the rationale prose the old
17
17
  * program.ts carried was folded in here where behavior demands it.
18
18
  *
19
19
  * Differences from the retired 5.9.3 lane, each deliberate and each
@@ -963,6 +963,11 @@ function mapTypeInner(type, ctx) {
963
963
  checker.declarationsOf(directAlias).some((decl) => ctx.isStdlibFile(decl.getSourceFile()))) {
964
964
  return { kind: "object", className: "%Error" };
965
965
  }
966
+ // Immutable<T> (@scriptc/types) is a deep-readonly view: the value is
967
+ // still the T it maps.
968
+ const immutableSource = immutableSourceType(type, ctx);
969
+ if (immutableSource !== null)
970
+ return mapType(immutableSource, ctx);
966
971
  if (resolveTypeParam && type.flags & ts.TypeFlags.TypeParameter) {
967
972
  const bound = resolveTypeParam(type);
968
973
  if (bound) {
@@ -4027,6 +4032,44 @@ function mapBrandedPrimitiveIntersection(widened, ctx) {
4027
4032
  }
4028
4033
  return primitive && markerParts > 0 ? primitive : null;
4029
4034
  }
4035
+ /** The declaration file of @scriptc/types (installed, pnpm-linked or the
4036
+ * workspace package). */
4037
+ const CONTRACT_TYPES_FILE = /[\\/](?:@scriptc[\\/]types|packages[\\/]types)[\\/]index\.d\.ts$/;
4038
+ /** `Immutable<T>` over a class, interface or object literal type resolves to
4039
+ * a mapped type declared in @scriptc/types; TypeScript drops the alias, but
4040
+ * homomorphic mapped members keep their original declarations. The source
4041
+ * type is the non-generic declaration that declares every member (the most
4042
+ * derived class or interface). Null for every other type. */
4043
+ function immutableSourceType(type, ctx) {
4044
+ if (!isMappedShape(type))
4045
+ return null;
4046
+ const { checker } = ctx;
4047
+ const symbol = type.getSymbol();
4048
+ const decl = symbol ? checker.declarationsOf(symbol)[0] : undefined;
4049
+ if (decl === undefined || !CONTRACT_TYPES_FILE.test(decl.getSourceFile().fileName))
4050
+ return null;
4051
+ const props = checker.getPropertiesOfType(type);
4052
+ const seen = new Set();
4053
+ for (const prop of props) {
4054
+ const owner = checker.declarationsOf(prop)[0]?.parent;
4055
+ if (owner === undefined || seen.has(owner))
4056
+ continue;
4057
+ seen.add(owner);
4058
+ let source = null;
4059
+ if (ts.isTypeLiteralNode(owner))
4060
+ source = checker.getTypeFromTypeNode(owner);
4061
+ else if ((ts.isClassDeclaration(owner) || ts.isInterfaceDeclaration(owner)) &&
4062
+ owner.name !== undefined &&
4063
+ (owner.typeParameters?.length ?? 0) === 0) {
4064
+ const ownerSymbol = checker.getSymbolAtLocation(owner.name);
4065
+ if (ownerSymbol)
4066
+ source = checker.getDeclaredTypeOfSymbol(ownerSymbol);
4067
+ }
4068
+ if (source !== null && checker.getPropertiesOfType(source).length === props.length)
4069
+ return source;
4070
+ }
4071
+ return null;
4072
+ }
4030
4073
  /** True for MAPPED-type results — `Partial<Config>`, `Record<"a", n>`,
4031
4074
  * whatever `Pick`/`Omit` reduce to. Their shape is computed by the checker,
4032
4075
  * not declared anywhere: the only declaration behind them is the utility