@scriptc/compiler 0.3.4 → 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 (316) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +409 -42
  2. package/dist/backend/llvm/array-search.js +1 -1
  3. package/dist/backend/llvm/array-search.js.map +1 -1
  4. package/dist/backend/llvm/call-lifetimes.d.ts +6 -0
  5. package/dist/backend/llvm/call-lifetimes.js +19 -0
  6. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  7. package/dist/backend/llvm/constant-callbacks.d.ts +2 -21
  8. package/dist/backend/llvm/constant-callbacks.js +36 -219
  9. package/dist/backend/llvm/constant-callbacks.js.map +1 -1
  10. package/dist/backend/llvm/constant-callbacks.test.js +22 -0
  11. package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
  12. package/dist/backend/llvm/dense-array-access.d.ts +9 -0
  13. package/dist/backend/llvm/dense-array-access.js +27 -1
  14. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  15. package/dist/backend/llvm/dyn.d.ts +6 -0
  16. package/dist/backend/llvm/dyn.js +71 -7
  17. package/dist/backend/llvm/dyn.js.map +1 -1
  18. package/dist/backend/llvm/emitter.d.ts +120 -2
  19. package/dist/backend/llvm/emitter.js +820 -142
  20. package/dist/backend/llvm/emitter.js.map +1 -1
  21. package/dist/backend/llvm/expr-async.js +17 -7
  22. package/dist/backend/llvm/expr-async.js.map +1 -1
  23. package/dist/backend/llvm/expr-bytes.js +1 -1
  24. package/dist/backend/llvm/expr-callbacks.d.ts +11 -0
  25. package/dist/backend/llvm/expr-callbacks.js +53 -0
  26. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  27. package/dist/backend/llvm/expr-calls.js +88 -2
  28. package/dist/backend/llvm/expr-calls.js.map +1 -1
  29. package/dist/backend/llvm/expr-containers.js +50 -27
  30. package/dist/backend/llvm/expr-containers.js.map +1 -1
  31. package/dist/backend/llvm/expr-dispatch.js +1 -0
  32. package/dist/backend/llvm/expr-dispatch.js.map +1 -1
  33. package/dist/backend/llvm/expr-dynamic.js +25 -1
  34. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  35. package/dist/backend/llvm/expr-primitives.d.ts +1 -1
  36. package/dist/backend/llvm/expr-primitives.js +20 -1
  37. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  38. package/dist/backend/llvm/expr-stream-bridges.js +4 -0
  39. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  40. package/dist/backend/llvm/integer-clones.d.ts +103 -0
  41. package/dist/backend/llvm/integer-clones.js +1336 -0
  42. package/dist/backend/llvm/integer-clones.js.map +1 -0
  43. package/dist/backend/llvm/integer-clones.test.d.ts +1 -0
  44. package/dist/backend/llvm/integer-clones.test.js +219 -0
  45. package/dist/backend/llvm/integer-clones.test.js.map +1 -0
  46. package/dist/backend/llvm/lib-datagram.js +14 -0
  47. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  48. package/dist/backend/llvm/lib-dispatch.js +32 -1
  49. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  50. package/dist/backend/llvm/lib-filesystem.js +61 -1
  51. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  52. package/dist/backend/llvm/lib-network.js +21 -3
  53. package/dist/backend/llvm/lib-network.js.map +1 -1
  54. package/dist/backend/llvm/lib-process.js +34 -0
  55. package/dist/backend/llvm/lib-process.js.map +1 -1
  56. package/dist/backend/llvm/lib-shared.js +77 -2
  57. package/dist/backend/llvm/lib-shared.js.map +1 -1
  58. package/dist/backend/llvm/lib-test.js +16 -3
  59. package/dist/backend/llvm/lib-test.js.map +1 -1
  60. package/dist/backend/llvm/lib-tls.js +6 -0
  61. package/dist/backend/llvm/lib-tls.js.map +1 -1
  62. package/dist/backend/llvm/local-array-reads.js +1 -1
  63. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  64. package/dist/backend/llvm/map-entry-fusion.d.ts +28 -0
  65. package/dist/backend/llvm/map-entry-fusion.js +233 -0
  66. package/dist/backend/llvm/map-entry-fusion.js.map +1 -0
  67. package/dist/backend/llvm/map-entry-fusion.test.d.ts +1 -0
  68. package/dist/backend/llvm/map-entry-fusion.test.js +183 -0
  69. package/dist/backend/llvm/map-entry-fusion.test.js.map +1 -0
  70. package/dist/backend/llvm/map-number-lookup.d.ts +2 -0
  71. package/dist/backend/llvm/map-number-lookup.js +1 -1
  72. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  73. package/dist/backend/llvm/map-number-lookup.test.js +10 -11
  74. package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
  75. package/dist/backend/llvm/map-read-lifetimes.d.ts +2 -0
  76. package/dist/backend/llvm/map-read-lifetimes.js +3 -0
  77. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  78. package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
  79. package/dist/backend/llvm/nullable-unions.d.ts +6 -3
  80. package/dist/backend/llvm/nullable-unions.js +2 -0
  81. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  82. package/dist/backend/llvm/publish.d.ts +16 -0
  83. package/dist/backend/llvm/publish.js +81 -10
  84. package/dist/backend/llvm/publish.js.map +1 -1
  85. package/dist/backend/llvm/publish.test.d.ts +1 -0
  86. package/dist/backend/llvm/publish.test.js +94 -0
  87. package/dist/backend/llvm/publish.test.js.map +1 -0
  88. package/dist/backend/llvm/record-results.d.ts +1 -1
  89. package/dist/backend/llvm/record-results.js +78 -4
  90. package/dist/backend/llvm/record-results.js.map +1 -1
  91. package/dist/backend/llvm/record-sources.d.ts +7 -0
  92. package/dist/backend/llvm/record-sources.js +14 -0
  93. package/dist/backend/llvm/record-sources.js.map +1 -0
  94. package/dist/backend/llvm/reference-writes.js +1 -0
  95. package/dist/backend/llvm/reference-writes.js.map +1 -1
  96. package/dist/backend/llvm/shapes.d.ts +12 -3
  97. package/dist/backend/llvm/shapes.js +23 -14
  98. package/dist/backend/llvm/shapes.js.map +1 -1
  99. package/dist/backend/llvm/shapes.test.js +5 -3
  100. package/dist/backend/llvm/shapes.test.js.map +1 -1
  101. package/dist/backend/llvm/speculative-integers.d.ts +74 -0
  102. package/dist/backend/llvm/speculative-integers.js +571 -0
  103. package/dist/backend/llvm/speculative-integers.js.map +1 -0
  104. package/dist/backend/llvm/speculative-integers.test.d.ts +1 -0
  105. package/dist/backend/llvm/speculative-integers.test.js +148 -0
  106. package/dist/backend/llvm/speculative-integers.test.js.map +1 -0
  107. package/dist/backend/llvm/string-lifetimes.test.js +75 -1
  108. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  109. package/dist/backend/llvm/walkers.d.ts +17 -0
  110. package/dist/backend/llvm/walkers.js +123 -0
  111. package/dist/backend/llvm/walkers.js.map +1 -1
  112. package/dist/backend/may-throw.js +2 -0
  113. package/dist/backend/may-throw.js.map +1 -1
  114. package/dist/backend/native/contracts.d.ts +2 -1
  115. package/dist/backend/native/executable.js +6 -1
  116. package/dist/backend/native/executable.js.map +1 -1
  117. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  118. package/dist/backend/native/runtime-inputs.js +1 -0
  119. package/dist/backend/native/runtime-inputs.js.map +1 -1
  120. package/dist/backend/runtime-abi.d.ts +2 -2
  121. package/dist/backend/runtime-abi.js +2 -2
  122. package/dist/backend/runtime-pack-targets.test.js +1 -1
  123. package/dist/backend/runtime-pack.d.ts +7 -3
  124. package/dist/backend/runtime-pack.js +12 -6
  125. package/dist/backend/runtime-pack.js.map +1 -1
  126. package/dist/backend/runtime-pack.test.js +16 -7
  127. package/dist/backend/runtime-pack.test.js.map +1 -1
  128. package/dist/contracts/check.js +1 -0
  129. package/dist/contracts/check.js.map +1 -1
  130. package/dist/coverage/surface-manifest.js +3 -3
  131. package/dist/coverage/surface-manifest.js.map +1 -1
  132. package/dist/diagnostics/diagnostic.d.ts +1 -1
  133. package/dist/diagnostics/diagnostic.js +6 -2
  134. package/dist/diagnostics/diagnostic.js.map +1 -1
  135. package/dist/frontend/lowering/builtin-calls.js +13 -0
  136. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  137. package/dist/frontend/lowering/builtins/callable-aliases.js +82 -8
  138. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
  139. package/dist/frontend/lowering/builtins/child-process-async.d.ts +8 -6
  140. package/dist/frontend/lowering/builtins/child-process-async.js +45 -29
  141. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
  142. package/dist/frontend/lowering/builtins/compression.d.ts +9 -0
  143. package/dist/frontend/lowering/builtins/compression.js +145 -30
  144. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  145. package/dist/frontend/lowering/builtins/crypto.js +12 -1
  146. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  147. package/dist/frontend/lowering/builtins/errors.js +5 -3
  148. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  149. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +6 -0
  150. package/dist/frontend/lowering/builtins/filesystem-calls.js +16 -0
  151. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  152. package/dist/frontend/lowering/builtins/filesystem.d.ts +8 -0
  153. package/dist/frontend/lowering/builtins/filesystem.js +199 -2
  154. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  155. package/dist/frontend/lowering/builtins/fs-streams.d.ts +26 -0
  156. package/dist/frontend/lowering/builtins/fs-streams.js +131 -0
  157. package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -0
  158. package/dist/frontend/lowering/builtins/hash-stream.d.ts +12 -0
  159. package/dist/frontend/lowering/builtins/hash-stream.js +80 -0
  160. package/dist/frontend/lowering/builtins/hash-stream.js.map +1 -0
  161. package/dist/frontend/lowering/builtins/module-calls.js +17 -3
  162. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  163. package/dist/frontend/lowering/builtins/process.js +9 -2
  164. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  165. package/dist/frontend/lowering/builtins/readline.d.ts +45 -13
  166. package/dist/frontend/lowering/builtins/readline.js +812 -47
  167. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  168. package/dist/frontend/lowering/builtins/workers.d.ts +4 -0
  169. package/dist/frontend/lowering/builtins/workers.js +58 -0
  170. package/dist/frontend/lowering/builtins/workers.js.map +1 -1
  171. package/dist/frontend/lowering/class-dynamic-dispatch.js +150 -8
  172. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  173. package/dist/frontend/lowering/class-protocols.d.ts +55 -0
  174. package/dist/frontend/lowering/class-protocols.js +735 -0
  175. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  176. package/dist/frontend/lowering/containers/array-from-async.d.ts +18 -0
  177. package/dist/frontend/lowering/containers/array-from-async.js +282 -0
  178. package/dist/frontend/lowering/containers/array-from-async.js.map +1 -0
  179. package/dist/frontend/lowering/containers/bytes.js +33 -12
  180. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  181. package/dist/frontend/lowering/containers/collection-grouping.js +2 -1
  182. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
  183. package/dist/frontend/lowering/containers/collection-methods.js +27 -23
  184. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  185. package/dist/frontend/lowering/devirtualize.js +20 -7
  186. package/dist/frontend/lowering/devirtualize.js.map +1 -1
  187. package/dist/frontend/lowering/divergences.js +188 -15
  188. package/dist/frontend/lowering/divergences.js.map +1 -1
  189. package/dist/frontend/lowering/lower-calls.js +129 -25
  190. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  191. package/dist/frontend/lowering/lower-classes.js +46 -1
  192. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  193. package/dist/frontend/lowering/lower-dgram.js +55 -15
  194. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  195. package/dist/frontend/lowering/lower-event-emitter.d.ts +9 -1
  196. package/dist/frontend/lowering/lower-event-emitter.js +88 -1
  197. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  198. package/dist/frontend/lowering/lower-exprs.d.ts +4 -0
  199. package/dist/frontend/lowering/lower-exprs.js +239 -71
  200. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  201. package/dist/frontend/lowering/lower-inspect.js +49 -3
  202. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  203. package/dist/frontend/lowering/lower-mock.d.ts +11 -1
  204. package/dist/frontend/lowering/lower-mock.js +377 -61
  205. package/dist/frontend/lowering/lower-mock.js.map +1 -1
  206. package/dist/frontend/lowering/lower-modules.js +1 -0
  207. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  208. package/dist/frontend/lowering/lower-server.d.ts +2 -1
  209. package/dist/frontend/lowering/lower-server.js +234 -21
  210. package/dist/frontend/lowering/lower-server.js.map +1 -1
  211. package/dist/frontend/lowering/lower-stmts.js +60 -13
  212. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  213. package/dist/frontend/lowering/lower-stream.d.ts +1 -3
  214. package/dist/frontend/lowering/lower-stream.js +325 -20
  215. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  216. package/dist/frontend/lowering/lower-test.js +147 -48
  217. package/dist/frontend/lowering/lower-test.js.map +1 -1
  218. package/dist/frontend/lowering/lowerer.d.ts +13 -1
  219. package/dist/frontend/lowering/lowerer.js +10 -2
  220. package/dist/frontend/lowering/lowerer.js.map +1 -1
  221. package/dist/frontend/lowering/null-prototype.d.ts +13 -0
  222. package/dist/frontend/lowering/null-prototype.js +33 -0
  223. package/dist/frontend/lowering/null-prototype.js.map +1 -0
  224. package/dist/frontend/lowering/record-sources.d.ts +15 -0
  225. package/dist/frontend/lowering/record-sources.js +46 -0
  226. package/dist/frontend/lowering/record-sources.js.map +1 -0
  227. package/dist/frontend/lowering/surfaces.d.ts +3 -3
  228. package/dist/frontend/lowering/surfaces.js +59 -5
  229. package/dist/frontend/lowering/surfaces.js.map +1 -1
  230. package/dist/frontend/mock-shapes.d.ts +5 -0
  231. package/dist/frontend/mock-shapes.js +27 -2
  232. package/dist/frontend/mock-shapes.js.map +1 -1
  233. package/dist/frontend/program.js +5 -4
  234. package/dist/frontend/program.js.map +1 -1
  235. package/dist/frontend/type-mapper.d.ts +3 -0
  236. package/dist/frontend/type-mapper.js +148 -4
  237. package/dist/frontend/type-mapper.js.map +1 -1
  238. package/dist/index.js +18 -8
  239. package/dist/index.js.map +1 -1
  240. package/dist/ir/analysis.d.ts +10 -0
  241. package/dist/ir/analysis.js +35 -0
  242. package/dist/ir/analysis.js.map +1 -1
  243. package/dist/ir/analysis.test.js +69 -1
  244. package/dist/ir/analysis.test.js.map +1 -1
  245. package/dist/ir/builtin-effects.js +72 -0
  246. package/dist/ir/builtin-effects.js.map +1 -1
  247. package/dist/ir/builtin-signatures.d.ts +1 -1
  248. package/dist/ir/builtin-signatures.js +258 -13
  249. package/dist/ir/builtin-signatures.js.map +1 -1
  250. package/dist/ir/capture-values.d.ts +107 -0
  251. package/dist/ir/capture-values.js +850 -0
  252. package/dist/ir/capture-values.js.map +1 -0
  253. package/dist/ir/capture-values.test.d.ts +1 -0
  254. package/dist/ir/capture-values.test.js +268 -0
  255. package/dist/ir/capture-values.test.js.map +1 -0
  256. package/dist/ir/field-values.d.ts +16 -0
  257. package/dist/ir/field-values.js +128 -0
  258. package/dist/ir/field-values.js.map +1 -0
  259. package/dist/ir/field-values.test.d.ts +1 -0
  260. package/dist/ir/field-values.test.js +160 -0
  261. package/dist/ir/field-values.test.js.map +1 -0
  262. package/dist/ir/final-fields.d.ts +4 -1
  263. package/dist/ir/final-fields.js +11 -3
  264. package/dist/ir/final-fields.js.map +1 -1
  265. package/dist/ir/function-references.test.js +2 -1
  266. package/dist/ir/function-references.test.js.map +1 -1
  267. package/dist/ir/init-only-globals.d.ts +16 -0
  268. package/dist/ir/init-only-globals.js +121 -0
  269. package/dist/ir/init-only-globals.js.map +1 -0
  270. package/dist/ir/init-only-globals.test.d.ts +1 -0
  271. package/dist/ir/init-only-globals.test.js +115 -0
  272. package/dist/ir/init-only-globals.test.js.map +1 -0
  273. package/dist/ir/initializer-bindings.d.ts +18 -1
  274. package/dist/ir/initializer-bindings.js +91 -1
  275. package/dist/ir/initializer-bindings.js.map +1 -1
  276. package/dist/ir/initializer-bindings.test.js +57 -2
  277. package/dist/ir/initializer-bindings.test.js.map +1 -1
  278. package/dist/ir/int32-slots.d.ts +22 -0
  279. package/dist/ir/int32-slots.js +398 -13
  280. package/dist/ir/int32-slots.js.map +1 -1
  281. package/dist/ir/int32-slots.test.js +119 -8
  282. package/dist/ir/int32-slots.test.js.map +1 -1
  283. package/dist/ir/integer-loop-facts.d.ts +27 -1
  284. package/dist/ir/integer-loop-facts.js +239 -7
  285. package/dist/ir/integer-loop-facts.js.map +1 -1
  286. package/dist/ir/integer-ranges.d.ts +8 -5
  287. package/dist/ir/integer-ranges.js +147 -59
  288. package/dist/ir/integer-ranges.js.map +1 -1
  289. package/dist/ir/integer-ranges.test.js +285 -7
  290. package/dist/ir/integer-ranges.test.js.map +1 -1
  291. package/dist/ir/ir.d.ts +22 -1
  292. package/dist/ir/ir.js +4 -0
  293. package/dist/ir/ir.js.map +1 -1
  294. package/dist/ir/property-bags.d.ts +14 -0
  295. package/dist/ir/property-bags.js +121 -0
  296. package/dist/ir/property-bags.js.map +1 -0
  297. package/dist/ir/receiver-readers.d.ts +21 -0
  298. package/dist/ir/receiver-readers.js +217 -0
  299. package/dist/ir/receiver-readers.js.map +1 -0
  300. package/dist/ir/runtime-features.d.ts +3 -1
  301. package/dist/ir/runtime-features.js +102 -7
  302. package/dist/ir/runtime-features.js.map +1 -1
  303. package/dist/ir/runtime-features.test.js +62 -0
  304. package/dist/ir/runtime-features.test.js.map +1 -1
  305. package/dist/ir/traverse.js +4 -0
  306. package/dist/ir/traverse.js.map +1 -1
  307. package/dist/ir/validate.js +71 -3
  308. package/dist/ir/validate.js.map +1 -1
  309. package/dist/ir/validate.test.js +59 -0
  310. package/dist/ir/validate.test.js.map +1 -1
  311. package/dist/library/int-infer.js +3 -0
  312. package/dist/library/int-infer.js.map +1 -1
  313. package/dist/library/ir-policy.js +5 -0
  314. package/dist/library/ir-policy.js.map +1 -1
  315. package/package.json +20 -20
  316. package/surface-manifest.json +57 -19
@@ -0,0 +1,13 @@
1
+ import { type IrExpr, type IrType, type SrcLoc } from "../../ir/ir.js";
2
+ import type { Lowerer } from "./lowerer.js";
3
+ /** Records that can have a null prototype: pure index-signature shapes,
4
+ * which Object.groupBy builds with a `nullProto` recordLit. The flag lives
5
+ * on the record's overflow map, so other shapes never carry it. */
6
+ export declare function nullProtoRecordShape(lowerer: Lowerer, t: IrType): (IrType & {
7
+ kind: "record";
8
+ }) | null;
9
+ /** `obj` has a null prototype (`obj` is a borrowed, pure read). */
10
+ export declare function recordNullProtoTest(obj: IrExpr, shapeId: string, loc: SrcLoc): IrExpr;
11
+ /** `value`, or Node's TypeError(message) when `obj` has a null prototype
12
+ * (`obj` is a borrowed, pure read evaluated before `value`). */
13
+ export declare function guardNullProto(obj: IrExpr, shapeId: string, message: string, value: IrExpr, loc: SrcLoc): IrExpr;
@@ -0,0 +1,33 @@
1
+ import { nodeThrowExpr } from "../../ir/build.js";
2
+ import { BOOL } from "../../ir/ir.js";
3
+ /** Records that can have a null prototype: pure index-signature shapes,
4
+ * which Object.groupBy builds with a `nullProto` recordLit. The flag lives
5
+ * on the record's overflow map, so other shapes never carry it. */
6
+ export function nullProtoRecordShape(lowerer, t) {
7
+ if (t.kind !== "record")
8
+ return null;
9
+ const shape = lowerer.shapes.get(t.shapeId);
10
+ return shape !== undefined &&
11
+ shape.indexValue !== undefined &&
12
+ !shape.tuple &&
13
+ shape.fields.length === 0
14
+ ? t
15
+ : null;
16
+ }
17
+ /** `obj` has a null prototype (`obj` is a borrowed, pure read). */
18
+ export function recordNullProtoTest(obj, shapeId, loc) {
19
+ return { kind: "recordNullProto", obj, shapeId, type: BOOL, loc };
20
+ }
21
+ /** `value`, or Node's TypeError(message) when `obj` has a null prototype
22
+ * (`obj` is a borrowed, pure read evaluated before `value`). */
23
+ export function guardNullProto(obj, shapeId, message, value, loc) {
24
+ return {
25
+ kind: "ternary",
26
+ cond: recordNullProtoTest(obj, shapeId, loc),
27
+ then: nodeThrowExpr(1, "", message, value.type, loc),
28
+ else_: value,
29
+ type: value.type,
30
+ loc,
31
+ };
32
+ }
33
+ //# sourceMappingURL=null-prototype.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"null-prototype.js","sourceRoot":"","sources":["../../../src/frontend/lowering/null-prototype.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAyC,MAAM,gBAAgB,CAAC;AAG7E;;mEAEmE;AACnE,MAAM,UAAU,oBAAoB,CAClC,OAAgB,EAChB,CAAS;IAET,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,KAAK,KAAK,SAAS;QACxB,KAAK,CAAC,UAAU,KAAK,SAAS;QAC9B,CAAC,KAAK,CAAC,KAAK;QACZ,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,OAAe,EAAE,GAAW;IAC3E,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACpE,CAAC;AAED;gEACgE;AAChE,MAAM,UAAU,cAAc,CAC5B,GAAW,EACX,OAAe,EACf,OAAe,EACf,KAAa,EACb,GAAW;IAEX,OAAO;QACL,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC;QAC5C,IAAI,EAAE,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC;QACpD,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG;KACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { IrExpr, IrType, SrcLoc } from "../../ir/ir.js";
2
+ import type { Lowerer } from "./lowerer.js";
3
+ /** Closed declared-field layouts with an ordinary data surface: the targets
4
+ * the checked record builder notes sources for. */
5
+ export declare function recordMayKeepSource(lowerer: Lowerer, t: IrType & {
6
+ kind: "record";
7
+ }): boolean;
8
+ /** `record.sourceHas(value)`: whether this record kept undeclared source
9
+ * properties. */
10
+ export declare function recordSourceTest(value: IrExpr, loc: SrcLoc): IrExpr;
11
+ /** A reflective answer over a record value that branches on its kept
12
+ * source: `staticAnswer` walks the declared fields, `viewAnswer` answers
13
+ * from the live checked view (typed `type`, the static answer's type). The
14
+ * receiver evaluates once. */
15
+ export declare function throughRecordSource(lowerer: Lowerer, receiver: IrExpr, loc: SrcLoc, staticAnswer: (record: IrExpr) => IrExpr, viewAnswer: (view: IrExpr, type: IrType) => IrExpr): IrExpr;
@@ -0,0 +1,46 @@
1
+ import { BOOL, DYN, recordTextCodecClass, shapeHasAccessorSlots } from "../../ir/ir.js";
2
+ import { varRef } from "../../ir/build.js";
3
+ import { isPerfEntryType } from "./builtins/performance.js";
4
+ /** Closed declared-field layouts with an ordinary data surface: the targets
5
+ * the checked record builder notes sources for. */
6
+ export function recordMayKeepSource(lowerer, t) {
7
+ const shape = lowerer.shapes.get(t.shapeId);
8
+ return (shape !== undefined &&
9
+ !shape.tuple &&
10
+ shape.indexValue === undefined &&
11
+ shape.fields.length > 0 &&
12
+ !shapeHasAccessorSlots(shape) &&
13
+ recordTextCodecClass(shape) === null &&
14
+ !isPerfEntryType(lowerer, t) &&
15
+ lowerer.dynConvertible(t));
16
+ }
17
+ /** `record.sourceHas(value)`: whether this record kept undeclared source
18
+ * properties. */
19
+ export function recordSourceTest(value, loc) {
20
+ return { kind: "libCall", fn: "record.sourceHas", args: [value], type: BOOL, loc };
21
+ }
22
+ /** A reflective answer over a record value that branches on its kept
23
+ * source: `staticAnswer` walks the declared fields, `viewAnswer` answers
24
+ * from the live checked view (typed `type`, the static answer's type). The
25
+ * receiver evaluates once. */
26
+ export function throughRecordSource(lowerer, receiver, loc, staticAnswer, viewAnswer) {
27
+ const local = lowerer.declareHiddenLocal("%sourcedRecord", receiver.type);
28
+ const record = () => varRef(local.id, receiver.type, loc);
29
+ const plain = staticAnswer(record());
30
+ const view = { kind: "dynFrom", value: record(), liveRef: true, type: DYN, loc };
31
+ return {
32
+ kind: "seqExpr",
33
+ stmts: [{ kind: "varDecl", localId: local.id, init: receiver, loc }],
34
+ result: {
35
+ kind: "ternary",
36
+ cond: recordSourceTest(record(), loc),
37
+ then: viewAnswer(view, plain.type),
38
+ else_: plain,
39
+ type: plain.type,
40
+ loc,
41
+ },
42
+ type: plain.type,
43
+ loc,
44
+ };
45
+ }
46
+ //# sourceMappingURL=record-sources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-sources.js","sourceRoot":"","sources":["../../../src/frontend/lowering/record-sources.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D;mDACmD;AACnD,MAAM,UAAU,mBAAmB,CAAC,OAAgB,EAAE,CAA8B;IAClF,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,CACL,KAAK,KAAK,SAAS;QACnB,CAAC,KAAK,CAAC,KAAK;QACZ,KAAK,CAAC,UAAU,KAAK,SAAS;QAC9B,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QACvB,CAAC,qBAAqB,CAAC,KAAK,CAAC;QAC7B,oBAAoB,CAAC,KAAK,CAAC,KAAK,IAAI;QACpC,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5B,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAC1B,CAAC;AACJ,CAAC;AAED;iBACiB;AACjB,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,GAAW;IACzD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACrF,CAAC;AAED;;;8BAG8B;AAC9B,MAAM,UAAU,mBAAmB,CACjC,OAAgB,EAChB,QAAgB,EAChB,GAAW,EACX,YAAwC,EACxC,UAAkD;IAElD,MAAM,KAAK,GAAG,OAAO,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,GAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IACrC,MAAM,IAAI,GAAW,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACzF,OAAO;QACL,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QACpE,MAAM,EAAE;YACN,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC;YACrC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;YAClC,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,GAAG;SACJ;QACD,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG;KACJ,CAAC;AACJ,CAAC"}
@@ -88,9 +88,9 @@ export declare const SET_METHODS: Set<string>;
88
88
  /** The ES2025 Set composition surface (union/intersection/…): desugared
89
89
  * to interned helper loops over the set iteration primitives — no user
90
90
  * code runs mid-loop, so the walks need no enter/exit bracketing. The
91
- * lib accepts any ReadonlySetLike argument; only a real Set lowers (the
92
- * argument's has/size must be the builtins for the desugar to BE the
93
- * spec's algorithm). */
91
+ * lib accepts any ReadonlySetLike argument; only a real Set or Map lowers
92
+ * (the argument's has/size/keys must be the builtins for the desugar to BE
93
+ * the spec's algorithm). */
94
94
  export declare const SET_COMBINE_METHODS: Set<string>;
95
95
  export type CompoundOp = "+" | "-" | "*" | "/" | "%" | "**" | "&" | "|" | "^" | "<<" | ">>" | ">>>";
96
96
  export declare const COMPOUND_ASSIGN_OPS: Partial<Record<ts.SyntaxKind, CompoundOp>>;
@@ -461,9 +461,9 @@ export const SET_METHODS = new Set([
461
461
  /** The ES2025 Set composition surface (union/intersection/…): desugared
462
462
  * to interned helper loops over the set iteration primitives — no user
463
463
  * code runs mid-loop, so the walks need no enter/exit bracketing. The
464
- * lib accepts any ReadonlySetLike argument; only a real Set lowers (the
465
- * argument's has/size must be the builtins for the desugar to BE the
466
- * spec's algorithm). */
464
+ * lib accepts any ReadonlySetLike argument; only a real Set or Map lowers
465
+ * (the argument's has/size/keys must be the builtins for the desugar to BE
466
+ * the spec's algorithm). */
467
467
  export const SET_COMBINE_METHODS = new Set([
468
468
  "union",
469
469
  "intersection",
@@ -1033,6 +1033,18 @@ export const BUILTIN_MODULE_FNS = {
1033
1033
  // opendirSync's options (a literal { bufferSize, encoding: "utf8" })
1034
1034
  // lower in lowerBuiltinModuleCall; the row routes the dispatch.
1035
1035
  opendirSync: { fn: "fs.opendirSync", params: [STRING, F64], result: DIR_T },
1036
+ // createReadStream/createWriteStream lower in lowerBuiltinModuleCall
1037
+ // (path and options cross as dyn values); the rows route the dispatch.
1038
+ createReadStream: {
1039
+ fn: "fs.createReadStream",
1040
+ params: [DYN, DYN],
1041
+ result: { kind: "object", className: "%Readable" },
1042
+ },
1043
+ createWriteStream: {
1044
+ fn: "fs.createWriteStream",
1045
+ params: [DYN, DYN],
1046
+ result: { kind: "object", className: "%Writable" },
1047
+ },
1036
1048
  lstatSync: { fn: "fs.lstatSync", params: [STRING], result: STATS_T },
1037
1049
  fstatSync: {
1038
1050
  fn: "fs.fstatSync",
@@ -1070,6 +1082,16 @@ export const BUILTIN_MODULE_FNS = {
1070
1082
  result: VOID,
1071
1083
  valueParams: exactValueParams(DYN, DYN),
1072
1084
  },
1085
+ // Options and paths are checked by the runtime (scr_fs_cp_begin).
1086
+ cpSync: {
1087
+ fn: "fs.cpSync",
1088
+ params: [DYN, DYN, DYN],
1089
+ result: VOID,
1090
+ valueParams: [
1091
+ ...exactValueParams(DYN, DYN),
1092
+ { mode: "optional", type: DYN, defaultValue: undefined },
1093
+ ],
1094
+ },
1073
1095
  symlinkSync: {
1074
1096
  fn: "fs.symlinkSync",
1075
1097
  params: [DYN, DYN, DYN],
@@ -1210,6 +1232,15 @@ export const BUILTIN_MODULE_FNS = {
1210
1232
  result: { kind: "promise", inner: VOID },
1211
1233
  valueParams: exactValueParams(DYN, DYN),
1212
1234
  },
1235
+ cp: {
1236
+ fn: "fsp.cp",
1237
+ params: [DYN, DYN, DYN],
1238
+ result: { kind: "promise", inner: VOID },
1239
+ valueParams: [
1240
+ ...exactValueParams(DYN, DYN),
1241
+ { mode: "optional", type: DYN, defaultValue: undefined },
1242
+ ],
1243
+ },
1213
1244
  symlink: {
1214
1245
  fn: "fsp.symlink",
1215
1246
  params: [DYN, DYN, DYN],
@@ -1734,6 +1765,9 @@ export const BUILTIN_MODULE_FNS = {
1734
1765
  * lowering. Cluster metadata describes a directly-run native executable. */
1735
1766
  export const BUILTIN_MODULE_CONSTS = {
1736
1767
  http: { maxHeaderSize: 16384 },
1768
+ // Node's default protocol range, the TLS 1.2 to 1.3 range the bundled
1769
+ // mbedTLS negotiates
1770
+ tls: { DEFAULT_MIN_VERSION: "TLSv1.2", DEFAULT_MAX_VERSION: "TLSv1.3" },
1737
1771
  path: { sep: "/", delimiter: ":" },
1738
1772
  "path/posix": { sep: "/", delimiter: ":" },
1739
1773
  "path/win32": { sep: "\\", delimiter: ";" },
@@ -1775,6 +1809,23 @@ export const BUILTIN_MODULE_FN_ALIASES = {
1775
1809
  // The bytes-data form and the { mode } options form.
1776
1810
  writeFileSync: ["fs.writeFileSyncBytes", "fs.writeFileModeSync"],
1777
1811
  appendFileSync: ["fs.appendFileSyncBytes"],
1812
+ // The fs stream members (bytesRead/bytesWritten, pending, path, close).
1813
+ createReadStream: [
1814
+ "fs.fsStreamBytes",
1815
+ "fs.fsStreamPending",
1816
+ "fs.fsStreamPath",
1817
+ "fs.fsStreamPropDyn",
1818
+ "fs.fsStreamClose",
1819
+ "fs.fsStreamCloseCb",
1820
+ ],
1821
+ createWriteStream: [
1822
+ "fs.fsStreamBytes",
1823
+ "fs.fsStreamPending",
1824
+ "fs.fsStreamPath",
1825
+ "fs.fsStreamPropDyn",
1826
+ "fs.fsStreamClose",
1827
+ "fs.fsStreamCloseCb",
1828
+ ],
1778
1829
  // The utf8 string overload; the table row is the Buffer-window form.
1779
1830
  writeSync: ["fs.writeStrSync"],
1780
1831
  // The { recursive, mode } option lowerings.
@@ -1783,6 +1834,9 @@ export const BUILTIN_MODULE_FN_ALIASES = {
1783
1834
  rmSync: ["fs.rmOptsSync", "fs.rmRetrySync"],
1784
1835
  // The { withFileTypes: true } Dirent form.
1785
1836
  readdirSync: ["fs.readdirTypesSync"],
1837
+ // The { throwIfNoEntry } probe form.
1838
+ statSync: ["fs.statProbeSync"],
1839
+ lstatSync: ["fs.lstatProbeSync"],
1786
1840
  globSync: ["fs.globTypesSync"],
1787
1841
  // The JS-source validation-ladder variant (lowerFsLadderCall): the
1788
1842
  // real mkdtemp runs when the options leave utf8 semantics.
@@ -2547,7 +2601,7 @@ export function builtinModulesArrayLit(loc) {
2547
2601
  /** Member-specific hints for RECOGNIZED builtin modules whose member has
2548
2602
  * no lowering. The default-options one-shot zlib/deflate-raw/gzip codecs
2549
2603
  * lower for strings and Buffers; the remaining surface points at them. */
2550
- const ZLIB_HINT = "the default-options deflate/inflate, raw, gzip/gunzip, and unzip sync/callback forms, crc32, " +
2604
+ const ZLIB_HINT = "the deflate/inflate, raw, gzip/gunzip, and unzip sync/callback forms with Node's options, crc32, " +
2551
2605
  "and the Deflate/Inflate/Gzip/Gunzip/DeflateRaw/InflateRaw/Unzip streams are the lowered zlib surface";
2552
2606
  /** Brotli has no codec in the static runtime (zlib is the only vendored
2553
2607
  * compression library). */
@@ -2570,7 +2624,7 @@ export const BUILTIN_MODULE_FENCE_HINTS = {
2570
2624
  doesNotReject: ASSERT_MODULE_HINTS["doesNotReject"],
2571
2625
  },
2572
2626
  util: {
2573
- promisify: "the lowered shapes are const bindings over child_process.execFile and fs.readFile; call the bound function directly",
2627
+ promisify: "the lowered shapes are const bindings over child_process.execFile, child_process.exec, setTimeout, setImmediate, stream.finished, stream.pipeline, the zlib callback one-shots and the fs callback functions with an fs/promises counterpart; call the bound function directly",
2574
2628
  },
2575
2629
  "stream/consumers": {
2576
2630
  blob: "collecting a stream into a Blob is not supported yet — " +