@scriptc/compiler 0.3.5 → 0.3.6

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 (181) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +278 -32
  2. package/dist/backend/llvm/dyn.js +31 -1
  3. package/dist/backend/llvm/dyn.js.map +1 -1
  4. package/dist/backend/llvm/emitter.d.ts +45 -1
  5. package/dist/backend/llvm/emitter.js +412 -104
  6. package/dist/backend/llvm/emitter.js.map +1 -1
  7. package/dist/backend/llvm/expr-dispatch.js +1 -0
  8. package/dist/backend/llvm/expr-dispatch.js.map +1 -1
  9. package/dist/backend/llvm/expr-dynamic.js +25 -1
  10. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  11. package/dist/backend/llvm/expr-primitives.d.ts +1 -1
  12. package/dist/backend/llvm/expr-primitives.js +11 -0
  13. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  14. package/dist/backend/llvm/lib-dispatch.js +28 -1
  15. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  16. package/dist/backend/llvm/lib-filesystem.js +61 -1
  17. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  18. package/dist/backend/llvm/lib-network.js +21 -3
  19. package/dist/backend/llvm/lib-network.js.map +1 -1
  20. package/dist/backend/llvm/lib-process.js +10 -0
  21. package/dist/backend/llvm/lib-process.js.map +1 -1
  22. package/dist/backend/llvm/lib-shared.js +43 -0
  23. package/dist/backend/llvm/lib-shared.js.map +1 -1
  24. package/dist/backend/llvm/lib-test.js +16 -3
  25. package/dist/backend/llvm/lib-test.js.map +1 -1
  26. package/dist/backend/llvm/nullable-unions.d.ts +6 -3
  27. package/dist/backend/llvm/nullable-unions.js +2 -0
  28. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  29. package/dist/backend/llvm/record-results.d.ts +1 -1
  30. package/dist/backend/llvm/record-results.js +2 -2
  31. package/dist/backend/llvm/record-results.js.map +1 -1
  32. package/dist/backend/llvm/reference-writes.js +1 -0
  33. package/dist/backend/llvm/reference-writes.js.map +1 -1
  34. package/dist/backend/llvm/shapes.d.ts +3 -0
  35. package/dist/backend/llvm/shapes.js +5 -0
  36. package/dist/backend/llvm/shapes.js.map +1 -1
  37. package/dist/backend/llvm/speculative-integers.d.ts +74 -0
  38. package/dist/backend/llvm/speculative-integers.js +571 -0
  39. package/dist/backend/llvm/speculative-integers.js.map +1 -0
  40. package/dist/backend/llvm/speculative-integers.test.d.ts +1 -0
  41. package/dist/backend/llvm/speculative-integers.test.js +148 -0
  42. package/dist/backend/llvm/speculative-integers.test.js.map +1 -0
  43. package/dist/backend/may-throw.js +2 -0
  44. package/dist/backend/may-throw.js.map +1 -1
  45. package/dist/backend/native/executable.js +3 -0
  46. package/dist/backend/native/executable.js.map +1 -1
  47. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  48. package/dist/backend/native/runtime-inputs.js +1 -0
  49. package/dist/backend/native/runtime-inputs.js.map +1 -1
  50. package/dist/backend/runtime-pack.d.ts +7 -3
  51. package/dist/backend/runtime-pack.js +12 -6
  52. package/dist/backend/runtime-pack.js.map +1 -1
  53. package/dist/backend/runtime-pack.test.js +15 -6
  54. package/dist/backend/runtime-pack.test.js.map +1 -1
  55. package/dist/contracts/check.js +1 -0
  56. package/dist/contracts/check.js.map +1 -1
  57. package/dist/coverage/surface-manifest.js +3 -3
  58. package/dist/coverage/surface-manifest.js.map +1 -1
  59. package/dist/diagnostics/diagnostic.d.ts +1 -1
  60. package/dist/diagnostics/diagnostic.js +6 -2
  61. package/dist/diagnostics/diagnostic.js.map +1 -1
  62. package/dist/frontend/lowering/builtin-calls.js +10 -0
  63. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  64. package/dist/frontend/lowering/builtins/callable-aliases.js +31 -3
  65. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
  66. package/dist/frontend/lowering/builtins/compression.d.ts +9 -0
  67. package/dist/frontend/lowering/builtins/compression.js +145 -30
  68. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  69. package/dist/frontend/lowering/builtins/crypto.js +12 -1
  70. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  71. package/dist/frontend/lowering/builtins/errors.js +5 -3
  72. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  73. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +4 -0
  74. package/dist/frontend/lowering/builtins/filesystem-calls.js +11 -0
  75. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  76. package/dist/frontend/lowering/builtins/filesystem.d.ts +8 -0
  77. package/dist/frontend/lowering/builtins/filesystem.js +139 -2
  78. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  79. package/dist/frontend/lowering/builtins/hash-stream.d.ts +12 -0
  80. package/dist/frontend/lowering/builtins/hash-stream.js +80 -0
  81. package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -0
  82. package/dist/frontend/lowering/builtins/module-calls.js +13 -3
  83. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  84. package/dist/frontend/lowering/builtins/process.js +9 -2
  85. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  86. package/dist/frontend/lowering/builtins/readline.d.ts +45 -13
  87. package/dist/frontend/lowering/builtins/readline.js +812 -47
  88. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  89. package/dist/frontend/lowering/builtins/workers.d.ts +4 -0
  90. package/dist/frontend/lowering/builtins/workers.js +58 -0
  91. package/dist/frontend/lowering/builtins/workers.js.map +1 -1
  92. package/dist/frontend/lowering/class-protocols.d.ts +55 -0
  93. package/dist/frontend/lowering/class-protocols.js +735 -0
  94. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  95. package/dist/frontend/lowering/containers/array-from-async.d.ts +18 -0
  96. package/dist/frontend/lowering/containers/array-from-async.js +282 -0
  97. package/dist/frontend/lowering/containers/array-from-async.js.map +1 -0
  98. package/dist/frontend/lowering/containers/collection-grouping.js +2 -1
  99. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
  100. package/dist/frontend/lowering/containers/collection-methods.js +27 -23
  101. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  102. package/dist/frontend/lowering/divergences.js +188 -15
  103. package/dist/frontend/lowering/divergences.js.map +1 -1
  104. package/dist/frontend/lowering/lower-calls.js +71 -22
  105. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  106. package/dist/frontend/lowering/lower-classes.js +39 -1
  107. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  108. package/dist/frontend/lowering/lower-event-emitter.js +10 -1
  109. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  110. package/dist/frontend/lowering/lower-exprs.js +107 -13
  111. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  112. package/dist/frontend/lowering/lower-inspect.js +23 -3
  113. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  114. package/dist/frontend/lowering/lower-mock.d.ts +11 -1
  115. package/dist/frontend/lowering/lower-mock.js +377 -61
  116. package/dist/frontend/lowering/lower-mock.js.map +1 -1
  117. package/dist/frontend/lowering/lower-modules.js +1 -0
  118. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  119. package/dist/frontend/lowering/lower-server.js +161 -16
  120. package/dist/frontend/lowering/lower-server.js.map +1 -1
  121. package/dist/frontend/lowering/lower-stmts.js +48 -7
  122. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  123. package/dist/frontend/lowering/lower-stream.d.ts +1 -3
  124. package/dist/frontend/lowering/lower-stream.js +317 -20
  125. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  126. package/dist/frontend/lowering/lower-test.js +147 -48
  127. package/dist/frontend/lowering/lower-test.js.map +1 -1
  128. package/dist/frontend/lowering/lowerer.d.ts +10 -0
  129. package/dist/frontend/lowering/lowerer.js +8 -0
  130. package/dist/frontend/lowering/lowerer.js.map +1 -1
  131. package/dist/frontend/lowering/null-prototype.d.ts +13 -0
  132. package/dist/frontend/lowering/null-prototype.js +33 -0
  133. package/dist/frontend/lowering/null-prototype.js.map +1 -0
  134. package/dist/frontend/lowering/surfaces.d.ts +3 -3
  135. package/dist/frontend/lowering/surfaces.js +27 -5
  136. package/dist/frontend/lowering/surfaces.js.map +1 -1
  137. package/dist/frontend/mock-shapes.d.ts +5 -0
  138. package/dist/frontend/mock-shapes.js +27 -2
  139. package/dist/frontend/mock-shapes.js.map +1 -1
  140. package/dist/frontend/program.js +5 -4
  141. package/dist/frontend/program.js.map +1 -1
  142. package/dist/frontend/type-mapper.js +95 -4
  143. package/dist/frontend/type-mapper.js.map +1 -1
  144. package/dist/index.js +18 -8
  145. package/dist/index.js.map +1 -1
  146. package/dist/ir/builtin-effects.js +36 -0
  147. package/dist/ir/builtin-effects.js.map +1 -1
  148. package/dist/ir/builtin-signatures.d.ts +1 -1
  149. package/dist/ir/builtin-signatures.js +167 -6
  150. package/dist/ir/builtin-signatures.js.map +1 -1
  151. package/dist/ir/function-references.test.js +1 -0
  152. package/dist/ir/function-references.test.js.map +1 -1
  153. package/dist/ir/int32-slots.js +22 -0
  154. package/dist/ir/int32-slots.js.map +1 -1
  155. package/dist/ir/int32-slots.test.js +28 -0
  156. package/dist/ir/int32-slots.test.js.map +1 -1
  157. package/dist/ir/integer-loop-facts.d.ts +14 -6
  158. package/dist/ir/integer-loop-facts.js +119 -35
  159. package/dist/ir/integer-loop-facts.js.map +1 -1
  160. package/dist/ir/integer-ranges.js +1 -5
  161. package/dist/ir/integer-ranges.js.map +1 -1
  162. package/dist/ir/integer-ranges.test.js +60 -0
  163. package/dist/ir/integer-ranges.test.js.map +1 -1
  164. package/dist/ir/ir.d.ts +13 -0
  165. package/dist/ir/ir.js +4 -0
  166. package/dist/ir/ir.js.map +1 -1
  167. package/dist/ir/runtime-features.d.ts +3 -1
  168. package/dist/ir/runtime-features.js +96 -6
  169. package/dist/ir/runtime-features.js.map +1 -1
  170. package/dist/ir/runtime-features.test.js +62 -0
  171. package/dist/ir/runtime-features.test.js.map +1 -1
  172. package/dist/ir/traverse.js +4 -0
  173. package/dist/ir/traverse.js.map +1 -1
  174. package/dist/ir/validate.js +45 -3
  175. package/dist/ir/validate.js.map +1 -1
  176. package/dist/ir/validate.test.js +38 -0
  177. package/dist/ir/validate.test.js.map +1 -1
  178. package/dist/library/ir-policy.js +5 -0
  179. package/dist/library/ir-policy.js.map +1 -1
  180. package/package.json +20 -20
  181. package/surface-manifest.json +31 -19
@@ -17,7 +17,23 @@ import { resultIsDiscarded } from "./call-position.js";
17
17
  import { locOf } from "../program.js";
18
18
  import { F64, STRING, VOID, isUnitType, } from "../../ir/ir.js";
19
19
  import { numLit, strLit } from "../../ir/build.js";
20
- import { lowerMockContextCall, lowerMockContextProperty, lowerMockFn } from "./lower-mock.js";
20
+ import { lowerMockContextCall, lowerMockContextProperty, lowerMockFn, lowerMockMethod, lowerMockTrackerCall, } from "./lower-mock.js";
21
+ const MOCK_HINT = "mock.fn, mock.method, mock.restoreAll and mock.reset are the supported mock members";
22
+ /** The mock tracker members that lower, for the module's `mock` (tracker
23
+ * null) and t.mock. Null for other members. */
24
+ function lowerMockTrackerMember(lowerer, call, member, what, tracker) {
25
+ switch (member) {
26
+ case "fn":
27
+ return lowerMockFn(lowerer, call, `${what}.fn`, tracker());
28
+ case "method":
29
+ return lowerMockMethod(lowerer, call, `${what}.method`, tracker());
30
+ case "restoreAll":
31
+ case "reset":
32
+ return lowerMockTrackerCall(lowerer, call, member, tracker());
33
+ default:
34
+ return null;
35
+ }
36
+ }
21
37
  const TEST_FN_HINT = "test bodies take () or (t: TestContext) and return void or Promise<void>";
22
38
  const TESTCTX_SURFACE_HINT = "t.test, t.skip, t.todo, t.diagnostic, t.plan, t.before, t.after, t.beforeEach, t.afterEach, t.name, t.fullName, and t.assert.* are the supported TestContext members";
23
39
  /** Registration calls return Node's Promise<void>, but the promise only
@@ -38,51 +54,108 @@ function atStringOf(expr) {
38
54
  const pos = sf.getLineAndCharacterOfPosition(target.getStart());
39
55
  return `${sf.fileName}:${pos.line + 1}:${pos.character + 1}`;
40
56
  }
57
+ const noOptions = () => ({
58
+ mode: 0,
59
+ msg: null,
60
+ only: false,
61
+ plan: -1,
62
+ timeout: null,
63
+ concurrency: null,
64
+ pre: [],
65
+ });
66
+ /** Flags 8 and 16: a { timeout } and a { concurrency } are given. */
67
+ const optionFlags = (opts) => (opts.only ? 4 : 0) | (opts.timeout ? 8 : 0) | (opts.concurrency ? 16 : 0);
68
+ /** Evaluates a non-literal option value into a hidden local, so option
69
+ * values run in source order. */
70
+ function optionValue(lowerer, out, value, loc) {
71
+ if (value.kind === "strLit" || value.kind === "numLit")
72
+ return value;
73
+ const slot = lowerer.declareHiddenLocal("%testOption", value.type);
74
+ out.pre.push({ kind: "varDecl", localId: slot.id, init: value, loc });
75
+ return { kind: "varRef", localId: slot.id, type: value.type, loc };
76
+ }
41
77
  /** Parses a test/describe options argument — an OBJECT LITERAL whose
42
78
  * skip/todo values are boolean literals or string messages and whose
43
- * only is the boolean literal. Everything else fences with the option
44
- * name (concurrency/timeout/plan included — bounded surface, honest
45
- * fence). */
46
- function lowerTestOptions(lowerer, node, what) {
79
+ * only is the boolean literal, and concurrency, a boolean literal or a
80
+ * number. Tests also take plan, a non-negative integer literal, and
81
+ * timeout, a number. Everything else fences with the option name. */
82
+ function lowerTestOptions(lowerer, node, what, suite) {
47
83
  if (!ts.isObjectLiteralExpression(node)) {
48
- lowerer.noLowering(`${what} with a non-literal options argument`, node, "pass the options as an object literal: { skip?, todo?, only? }");
84
+ lowerer.noLowering(`${what} with a non-literal options argument`, node, suite
85
+ ? "pass the options as an object literal: { skip?, todo?, only?, concurrency? }"
86
+ : "pass the options as an object literal: { skip?, todo?, only?, concurrency?, plan?, timeout? }");
49
87
  }
50
- const out = { mode: 0, msg: null, only: false };
88
+ const out = noOptions();
51
89
  for (const prop of node.properties) {
52
- if (!ts.isPropertyAssignment(prop) || !ts.isIdentifier(prop.name)) {
53
- lowerer.noLowering(`${what} options with computed keys, spreads, or shorthand entries`, prop, "each option must be a plain `name: value` entry with a literal key");
90
+ if (!(ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)) &&
91
+ !ts.isShorthandPropertyAssignment(prop)) {
92
+ lowerer.noLowering(`${what} options with computed keys or spreads`, prop, "each option must be a `name: value` or shorthand entry with a literal key");
54
93
  }
55
- const name = prop.name.text;
94
+ const key = prop.name;
95
+ const name = key.text;
96
+ // A shorthand entry's value is the binding of the same name.
97
+ const init = ts.isPropertyAssignment(prop) ? prop.initializer : key;
56
98
  if (name === "skip" || name === "todo") {
57
99
  const mode = name === "skip" ? 1 : 2;
58
- const t = lowerer.typeOf(prop.initializer);
100
+ const t = lowerer.typeOf(init);
59
101
  if (t.isStringLiteralType() || lowerer.mapTypeOf(t)?.kind === "string") {
60
102
  out.mode = mode;
61
- out.msg = lowerer.lowerExprExpecting(prop.initializer, STRING);
103
+ out.msg = optionValue(lowerer, out, lowerer.lowerExprExpecting(init, STRING), locOf(init));
62
104
  }
63
- else if (prop.initializer.kind === ts.SyntaxKind.TrueKeyword) {
105
+ else if (init.kind === ts.SyntaxKind.TrueKeyword) {
64
106
  out.mode = mode;
65
107
  }
66
- else if (prop.initializer.kind === ts.SyntaxKind.FalseKeyword) {
108
+ else if (init.kind === ts.SyntaxKind.FalseKeyword) {
67
109
  // explicit false: run normally
68
110
  }
69
111
  else {
70
- lowerer.noLowering(`${what} with a non-literal ${name} value`, prop.initializer, `${name} takes the literal true/false or a string message here`);
112
+ lowerer.noLowering(`${what} with a non-literal ${name} value`, init, `${name} takes the literal true/false or a string message here`);
71
113
  }
72
114
  }
73
115
  else if (name === "only") {
74
- if (prop.initializer.kind === ts.SyntaxKind.TrueKeyword)
116
+ if (init.kind === ts.SyntaxKind.TrueKeyword)
75
117
  out.only = true;
76
- else if (prop.initializer.kind !== ts.SyntaxKind.FalseKeyword) {
77
- lowerer.noLowering(`${what} with a non-literal only value`, prop.initializer, "only takes the literal true/false here");
118
+ else if (init.kind !== ts.SyntaxKind.FalseKeyword) {
119
+ lowerer.noLowering(`${what} with a non-literal only value`, init, "only takes the literal true/false here");
120
+ }
121
+ }
122
+ else if (name === "plan" && !suite) {
123
+ const value = ts.isNumericLiteral(init) ? Number(init.text) : NaN;
124
+ if (!Number.isInteger(value) || value > 2147483647) {
125
+ lowerer.noLowering(`${what} with a non-literal plan value`, init, "plan takes a non-negative integer literal here");
126
+ }
127
+ out.plan = value;
128
+ }
129
+ else if (name === "concurrency") {
130
+ const loc = locOf(init);
131
+ if (init.kind === ts.SyntaxKind.TrueKeyword)
132
+ out.concurrency = numLit(-1, loc);
133
+ else if (init.kind === ts.SyntaxKind.FalseKeyword)
134
+ out.concurrency = numLit(1, loc);
135
+ else if (lowerer.mapTypeOf(lowerer.typeOf(init))?.kind === "f64") {
136
+ out.concurrency = optionValue(lowerer, out, lowerer.lowerExprExpecting(init, F64), loc);
137
+ }
138
+ else {
139
+ lowerer.noLowering(`${what} with a non-literal concurrency value`, init, "concurrency takes the literal true/false or a number here");
78
140
  }
79
141
  }
142
+ else if (name === "timeout" && !suite) {
143
+ out.timeout = optionValue(lowerer, out, lowerer.lowerExprExpecting(init, F64), locOf(init));
144
+ }
80
145
  else {
81
- lowerer.noLowering(`${what} option '${name}'`, prop, "skip, todo, and only are the supported options");
146
+ lowerer.noLowering(`${what} option '${name}'`, prop, suite
147
+ ? "skip, todo, only, and concurrency are the supported suite options"
148
+ : "skip, todo, only, concurrency, plan, and timeout are the supported options");
82
149
  }
83
150
  }
84
151
  return out;
85
152
  }
153
+ /** The registration call, after the option values it reads. */
154
+ function withOptionValues(call, opts, loc) {
155
+ if (opts.pre.length === 0)
156
+ return call;
157
+ return { kind: "seqExpr", stmts: opts.pre, result: call, type: call.type, loc };
158
+ }
86
159
  /** Lowers a test/hook body, pinning the shape: 0 params or the one
87
160
  * TestContext param, returning void (sync) or Promise<void> (async —
88
161
  * the runner awaits through the emitted spawn wrapper). Returns the
@@ -125,14 +198,20 @@ sub) {
125
198
  if (args.length < 1 || args.length > 3) {
126
199
  lowerer.noLowering(`${what} with ${args.length} arguments`, expr, "the supported forms are (name), (name, fn), and (name, options, fn)");
127
200
  }
128
- const name = lowerer.lowerExprExpecting(args[0], STRING);
129
- let opts = { mode: 0, msg: null, only: false };
201
+ let name = lowerer.lowerExprExpecting(args[0], STRING);
202
+ let opts = noOptions();
130
203
  let fnNode;
131
204
  if (args.length === 2)
132
205
  fnNode = args[1];
133
206
  if (args.length === 3) {
134
- opts = lowerTestOptions(lowerer, args[1], what);
207
+ opts = lowerTestOptions(lowerer, args[1], what, false);
135
208
  fnNode = args[2];
209
+ // The name runs before the option values.
210
+ if (opts.pre.length > 0 && name.kind !== "strLit") {
211
+ const slot = lowerer.declareHiddenLocal("%testName", STRING);
212
+ opts.pre.unshift({ kind: "varDecl", localId: slot.id, init: name, loc });
213
+ name = { kind: "varRef", localId: slot.id, type: STRING, loc };
214
+ }
136
215
  }
137
216
  if (methodMode === 1 || methodMode === 2)
138
217
  opts.mode = methodMode;
@@ -141,37 +220,49 @@ sub) {
141
220
  const at = strLit(atStringOf(expr), loc);
142
221
  const mode = numLit(opts.mode, loc);
143
222
  const msg = opts.msg ?? strLit("", loc);
223
+ const flagBits = optionFlags(opts);
224
+ const planTimeout = [
225
+ numLit(opts.plan, loc),
226
+ opts.timeout ?? numLit(0, loc),
227
+ opts.concurrency ?? numLit(0, loc),
228
+ ];
144
229
  if (!fnNode) {
145
- const emptyFlags = numLit(opts.only ? 4 : 0, loc);
146
- return sub
147
- ? { kind: "libCall", fn: "test.subEmpty", args: [sub, name, mode, msg, at], type: VOID, loc }
230
+ const emptyFlags = numLit(flagBits, loc);
231
+ return withOptionValues(sub
232
+ ? {
233
+ kind: "libCall",
234
+ fn: "test.subEmpty",
235
+ args: [sub, name, mode, msg, emptyFlags, at, ...planTimeout],
236
+ type: VOID,
237
+ loc,
238
+ }
148
239
  : {
149
240
  kind: "libCall",
150
241
  fn: "test.registerEmpty",
151
- args: [name, mode, msg, emptyFlags, at],
242
+ args: [name, mode, msg, emptyFlags, at, ...planTimeout],
152
243
  type: VOID,
153
244
  loc,
154
- };
245
+ }, opts, loc);
155
246
  }
156
247
  const { cb, flags } = lowerBodyArg(lowerer, fnNode, what, true);
157
- const flagsLit = numLit(flags | (opts.only ? 4 : 0), loc);
248
+ const flagsLit = numLit(flags | flagBits, loc);
158
249
  if (sub) {
159
250
  const promiseVoid = { kind: "promise", inner: VOID };
160
- return {
251
+ return withOptionValues({
161
252
  kind: "libCall",
162
253
  fn: "test.sub",
163
- args: [sub, name, mode, msg, cb, flagsLit, at],
254
+ args: [sub, name, mode, msg, cb, flagsLit, at, ...planTimeout],
164
255
  type: promiseVoid,
165
256
  loc,
166
- };
257
+ }, opts, loc);
167
258
  }
168
- return {
259
+ return withOptionValues({
169
260
  kind: "libCall",
170
261
  fn: "test.register",
171
- args: [name, mode, msg, cb, flagsLit, at],
262
+ args: [name, mode, msg, cb, flagsLit, at, ...planTimeout],
172
263
  type: VOID,
173
264
  loc,
174
- };
265
+ }, opts, loc);
175
266
  }
176
267
  /** describe/suite (and describe.skip/todo/only): the body is a SYNC
177
268
  * zero-parameter closure that runs AT registration. */
@@ -181,12 +272,17 @@ function lowerSuite(lowerer, expr, what, loc, methodMode) {
181
272
  if (args.length < 2 || args.length > 3) {
182
273
  lowerer.noLowering(`${what} with ${args.length} arguments`, expr, "the supported forms are (name, fn) and (name, options, fn)");
183
274
  }
184
- const name = lowerer.lowerExprExpecting(args[0], STRING);
185
- let opts = { mode: 0, msg: null, only: false };
275
+ let name = lowerer.lowerExprExpecting(args[0], STRING);
276
+ let opts = noOptions();
186
277
  let fnNode = args[1];
187
278
  if (args.length === 3) {
188
- opts = lowerTestOptions(lowerer, args[1], what);
279
+ opts = lowerTestOptions(lowerer, args[1], what, true);
189
280
  fnNode = args[2];
281
+ if (opts.pre.length > 0 && name.kind !== "strLit") {
282
+ const slot = lowerer.declareHiddenLocal("%testName", STRING);
283
+ opts.pre.unshift({ kind: "varDecl", localId: slot.id, init: name, loc });
284
+ name = { kind: "varRef", localId: slot.id, type: STRING, loc };
285
+ }
190
286
  }
191
287
  if (methodMode === 1 || methodMode === 2)
192
288
  opts.mode = methodMode;
@@ -201,14 +297,14 @@ function lowerSuite(lowerer, expr, what, loc, methodMode) {
201
297
  const mode = numLit(opts.mode, loc);
202
298
  const msg = opts.msg ?? strLit("", loc);
203
299
  // describe.only and { only: true } mark the suite (flag 4, as for tests).
204
- const flags = numLit(methodMode === 3 || opts.only ? 4 : 0, loc);
205
- return {
300
+ const flags = numLit(optionFlags(opts) | (methodMode === 3 ? 4 : 0), loc);
301
+ return withOptionValues({
206
302
  kind: "libCall",
207
303
  fn: "test.suite",
208
- args: [name, mode, msg, cb, at, flags],
304
+ args: [name, mode, msg, cb, at, flags, opts.concurrency ?? numLit(0, loc)],
209
305
  type: VOID,
210
306
  loc,
211
- };
307
+ }, opts, loc);
212
308
  }
213
309
  /** before/after/beforeEach/afterEach — hooks on the enclosing suite
214
310
  * (top-level hooks attach to the implicit root). */
@@ -315,22 +411,25 @@ export function lowerTestMethodCall(lowerer, call, access) {
315
411
  (member === "skip" || member === "todo" || member === "only")) {
316
412
  return lowerSuite(lowerer, call, `${bi.member}.${member}(...)`, loc, member === "skip" ? 1 : member === "todo" ? 2 : 3);
317
413
  }
318
- if (bi.member === "mock" && member === "fn")
319
- return lowerMockFn(lowerer, call, "mock.fn");
320
414
  if (bi.member === "mock") {
321
- lowerer.noLowering(`test.mock.${member}`, call, "mock.fn and t.mock.fn are the supported mock members", lowerer.checker.getSymbolAtLocation(access.name));
415
+ const served = lowerMockTrackerMember(lowerer, call, member, "mock", () => null);
416
+ if (served)
417
+ return served;
418
+ lowerer.noLowering(`test.mock.${member}`, call, MOCK_HINT, lowerer.checker.getSymbolAtLocation(access.name));
322
419
  }
323
420
  lowerer.noLowering(`test.${bi.member}.${member}`, call, "skip, todo, and only are the supported method twins", lowerer.checker.getSymbolAtLocation(access.name));
324
421
  }
325
422
  }
326
- // t.mock.fn(...): the test's mock tracker.
327
- if (member === "fn" &&
328
- ts.isPropertyAccessExpression(access.expression) &&
423
+ // t.mock.fn(...) and the other tracker members: the test's mock tracker.
424
+ if (ts.isPropertyAccessExpression(access.expression) &&
329
425
  !access.expression.questionDotToken &&
330
426
  access.expression.name.text === "mock" &&
331
427
  lowerer.mapTypeOf(lowerer.typeOf(access.expression.expression))?.kind === "testCtx" &&
332
428
  lowerer.isStdlibMember(access.expression)) {
333
- return lowerMockFn(lowerer, call, "t.mock.fn");
429
+ const testCtx = access.expression.expression;
430
+ const served = lowerMockTrackerMember(lowerer, call, member, "t.mock", () => lowerer.lowerExpr(testCtx));
431
+ if (served)
432
+ return served;
334
433
  }
335
434
  // t.assert.strictEqual(...) — the callee's receiver is `t.assert` on a
336
435
  // TestContext: Node's t.assert methods ARE the assert functions (bound
@@ -1 +1 @@
1
- {"version":3,"file":"lower-test.js","sourceRoot":"","sources":["../../../src/frontend/lowering/lower-test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lower-test.js","sourceRoot":"","sources":["../../../src/frontend/lowering/lower-test.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,9 @@ export type StaticCallableProjection = {
59
59
  kind: "promisified-builtin";
60
60
  module: string;
61
61
  member: string;
62
+ } | {
63
+ kind: "promisified-zlib";
64
+ member: string;
62
65
  };
63
66
  /** Own-property lookup for the surface tables. They are plain object
64
67
  * literals, so a bare `table[name]` would also find Object.prototype
@@ -770,6 +773,13 @@ export declare class Lowerer {
770
773
  /** Inline Promise.then parameters whose contextual type is a builtin
771
774
  * module namespace anonymous object. The settled native token is the
772
775
  * ABI truth even when the checker type has no stable module symbol. */
776
+ /** Receivers of a stream call on a Hash or Hmac (lowerHashStreamCall):
777
+ * for the duration of that call, the receiver lowers to the Transform of
778
+ * the value held in the named local. */
779
+ readonly hashStreamReceivers: Map<ts.ExpressionBase, {
780
+ localId: string;
781
+ type: IrType;
782
+ }>;
773
783
  readonly moduleNsParamOverrides: Map<ts.ParameterDeclaration, {
774
784
  kind: "moduleNs";
775
785
  moduleId: string;
@@ -12,6 +12,7 @@ import { concreteCollectionNarrow } from "./collection-narrowing.js";
12
12
  import { lowerWorkerMetadata } from "./builtins/workers.js";
13
13
  import { fenceStaticBlobMember, lowerBlobNew, lowerStaticBlobCall } from "./builtins/blob.js";
14
14
  import { lowerKeyObjectCall } from "./builtins/key-object.js";
15
+ import { hashStreamOf } from "./builtins/hash-stream.js";
15
16
  import { dynUndefinedExpr, nodeThrowExpr, numLit, varRef } from "../../ir/build.js";
16
17
  import { iteratorSlotAdapter } from "./iterator-adapters.js";
17
18
  import { lowerBuiltinCall } from "./builtin-calls.js";
@@ -1716,6 +1717,10 @@ export class Lowerer {
1716
1717
  /** Inline Promise.then parameters whose contextual type is a builtin
1717
1718
  * module namespace anonymous object. The settled native token is the
1718
1719
  * ABI truth even when the checker type has no stable module symbol. */
1720
+ /** Receivers of a stream call on a Hash or Hmac (lowerHashStreamCall):
1721
+ * for the duration of that call, the receiver lowers to the Transform of
1722
+ * the value held in the named local. */
1723
+ hashStreamReceivers = new Map();
1719
1724
  moduleNsParamOverrides = new Map();
1720
1725
  /** File → qualifier prefix: "" for the entry, "%mI." otherwise. */
1721
1726
  fileTag = new Map();
@@ -9033,6 +9038,9 @@ export class Lowerer {
9033
9038
  }
9034
9039
  /* ── expressions ──────────────────────────────────────────────────── */
9035
9040
  lowerExpr(expr) {
9041
+ const hash = this.hashStreamReceivers.get(expr);
9042
+ if (hash)
9043
+ return hashStreamOf(varRef(hash.localId, hash.type, locOf(expr)));
9036
9044
  return lowerExpr(this, expr);
9037
9045
  }
9038
9046
  lowerIntrinsicProperty(expr) {