@scriptc/compiler 0.4.7 → 0.4.8

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 (776) hide show
  1. package/ambient/node-fallback/child_process.d.ts +71 -22
  2. package/ambient/node-fallback/crypto.d.ts +15 -7
  3. package/ambient/node-fallback/events.d.ts +23 -5
  4. package/ambient/node-fallback/fs.d.ts +3 -2
  5. package/ambient/node-fallback/http.d.ts +23 -17
  6. package/ambient/node-fallback/https.d.ts +5 -2
  7. package/ambient/node-fallback/net.d.ts +6 -0
  8. package/ambient/node-fallback/os.d.ts +11 -1
  9. package/ambient/node-fallback/path-posix.d.ts +6 -0
  10. package/ambient/node-fallback/path-win32.d.ts +5 -0
  11. package/ambient/node-fallback/path.d.ts +2 -0
  12. package/ambient/node-fallback/zlib.d.ts +31 -2
  13. package/ambient/scriptc-node-fallback.d.ts +37 -7
  14. package/ambient/scriptc.d.ts +7 -2
  15. package/dist/backend/executable-features.js +11 -3
  16. package/dist/backend/executable-features.js.map +1 -1
  17. package/dist/backend/library-pack.d.ts +6 -0
  18. package/dist/backend/library-pack.js +17 -6
  19. package/dist/backend/library-pack.js.map +1 -1
  20. package/dist/backend/library-pack.test.d.ts +1 -0
  21. package/dist/backend/library-pack.test.js +28 -0
  22. package/dist/backend/library-pack.test.js.map +1 -0
  23. package/dist/backend/linker.d.ts +9 -2
  24. package/dist/backend/linker.js +190 -32
  25. package/dist/backend/linker.js.map +1 -1
  26. package/dist/backend/lld.d.ts +8 -4
  27. package/dist/backend/lld.js +19 -13
  28. package/dist/backend/lld.js.map +1 -1
  29. package/dist/backend/lld.test.js +3 -1
  30. package/dist/backend/lld.test.js.map +1 -1
  31. package/dist/backend/llvm/alloc.d.ts +15 -2
  32. package/dist/backend/llvm/alloc.js +172 -36
  33. package/dist/backend/llvm/alloc.js.map +1 -1
  34. package/dist/backend/llvm/alloc.test.js +69 -1
  35. package/dist/backend/llvm/alloc.test.js.map +1 -1
  36. package/dist/backend/llvm/arenas.d.ts +17 -4
  37. package/dist/backend/llvm/arenas.js +105 -10
  38. package/dist/backend/llvm/arenas.js.map +1 -1
  39. package/dist/backend/llvm/arenas.test.js +229 -0
  40. package/dist/backend/llvm/arenas.test.js.map +1 -1
  41. package/dist/backend/llvm/bytes-alias.js +10 -1
  42. package/dist/backend/llvm/bytes-alias.js.map +1 -1
  43. package/dist/backend/llvm/bytes-headers.js +6 -0
  44. package/dist/backend/llvm/bytes-headers.js.map +1 -1
  45. package/dist/backend/llvm/bytes-loop-versions.test.js +25 -0
  46. package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
  47. package/dist/backend/llvm/call-lifetimes.js +10 -0
  48. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  49. package/dist/backend/llvm/classes.d.ts +16 -9
  50. package/dist/backend/llvm/classes.js +142 -37
  51. package/dist/backend/llvm/classes.js.map +1 -1
  52. package/dist/backend/llvm/classes.test.js +42 -0
  53. package/dist/backend/llvm/classes.test.js.map +1 -1
  54. package/dist/backend/llvm/cpu-dispatch.d.ts +15 -5
  55. package/dist/backend/llvm/cpu-dispatch.js +31 -7
  56. package/dist/backend/llvm/cpu-dispatch.js.map +1 -1
  57. package/dist/backend/llvm/dyn.d.ts +12 -3
  58. package/dist/backend/llvm/dyn.js +31 -7
  59. package/dist/backend/llvm/dyn.js.map +1 -1
  60. package/dist/backend/llvm/emit-function.js +67 -4
  61. package/dist/backend/llvm/emit-function.js.map +1 -1
  62. package/dist/backend/llvm/emit-module.js +90 -39
  63. package/dist/backend/llvm/emit-module.js.map +1 -1
  64. package/dist/backend/llvm/emit-module.test.d.ts +1 -0
  65. package/dist/backend/llvm/emit-module.test.js +52 -0
  66. package/dist/backend/llvm/emit-module.test.js.map +1 -0
  67. package/dist/backend/llvm/emit-statements.js +99 -15
  68. package/dist/backend/llvm/emit-statements.js.map +1 -1
  69. package/dist/backend/llvm/emitter.d.ts +113 -8
  70. package/dist/backend/llvm/emitter.js +438 -67
  71. package/dist/backend/llvm/emitter.js.map +1 -1
  72. package/dist/backend/llvm/emitter.test.js +31 -3
  73. package/dist/backend/llvm/emitter.test.js.map +1 -1
  74. package/dist/backend/llvm/expr-async.js +19 -1
  75. package/dist/backend/llvm/expr-async.js.map +1 -1
  76. package/dist/backend/llvm/expr-bytes.js +16 -1
  77. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  78. package/dist/backend/llvm/expr-calls.js +18 -2
  79. package/dist/backend/llvm/expr-calls.js.map +1 -1
  80. package/dist/backend/llvm/expr-dynamic.js +31 -10
  81. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  82. package/dist/backend/llvm/expr-primitives.js +31 -3
  83. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  84. package/dist/backend/llvm/expr-records.d.ts +1 -1
  85. package/dist/backend/llvm/expr-records.js +124 -56
  86. package/dist/backend/llvm/expr-records.js.map +1 -1
  87. package/dist/backend/llvm/expr-stream-bridges.js +17 -0
  88. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  89. package/dist/backend/llvm/js-groups.d.ts +21 -0
  90. package/dist/backend/llvm/js-groups.js +277 -0
  91. package/dist/backend/llvm/js-groups.js.map +1 -0
  92. package/dist/backend/llvm/js-ic.d.ts +19 -1
  93. package/dist/backend/llvm/js-ic.js +96 -23
  94. package/dist/backend/llvm/js-ic.js.map +1 -1
  95. package/dist/backend/llvm/lib-dispatch.js +132 -1
  96. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  97. package/dist/backend/llvm/lib-network.js +33 -6
  98. package/dist/backend/llvm/lib-network.js.map +1 -1
  99. package/dist/backend/llvm/lib-process.js +44 -3
  100. package/dist/backend/llvm/lib-process.js.map +1 -1
  101. package/dist/backend/llvm/lib-shared.js +69 -2
  102. package/dist/backend/llvm/lib-shared.js.map +1 -1
  103. package/dist/backend/llvm/local-union-storage.test.js +32 -0
  104. package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
  105. package/dist/backend/llvm/loop-state.js +7 -2
  106. package/dist/backend/llvm/loop-state.js.map +1 -1
  107. package/dist/backend/llvm/map-entry-fusion.d.ts +8 -0
  108. package/dist/backend/llvm/map-entry-fusion.js +3 -3
  109. package/dist/backend/llvm/map-entry-fusion.js.map +1 -1
  110. package/dist/backend/llvm/map-number-lookup.test.js +6 -6
  111. package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
  112. package/dist/backend/llvm/nullable-unions.js +7 -6
  113. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  114. package/dist/backend/llvm/nullable-unions.test.js +4 -1
  115. package/dist/backend/llvm/nullable-unions.test.js.map +1 -1
  116. package/dist/backend/llvm/receivers.js +3 -0
  117. package/dist/backend/llvm/receivers.js.map +1 -1
  118. package/dist/backend/llvm/record-entry-fusion.d.ts +32 -0
  119. package/dist/backend/llvm/record-entry-fusion.js +217 -0
  120. package/dist/backend/llvm/record-entry-fusion.js.map +1 -0
  121. package/dist/backend/llvm/record-results.d.ts +5 -2
  122. package/dist/backend/llvm/record-results.js +13 -12
  123. package/dist/backend/llvm/record-results.js.map +1 -1
  124. package/dist/backend/llvm/record-views.js +12 -6
  125. package/dist/backend/llvm/record-views.js.map +1 -1
  126. package/dist/backend/llvm/reference-effects.js +1 -0
  127. package/dist/backend/llvm/reference-effects.js.map +1 -1
  128. package/dist/backend/llvm/reference-writes.js +3 -0
  129. package/dist/backend/llvm/reference-writes.js.map +1 -1
  130. package/dist/backend/llvm/region-ir.js +1 -0
  131. package/dist/backend/llvm/region-ir.js.map +1 -1
  132. package/dist/backend/llvm/region-sites.d.ts +18 -0
  133. package/dist/backend/llvm/region-sites.js +79 -1
  134. package/dist/backend/llvm/region-sites.js.map +1 -1
  135. package/dist/backend/llvm/runtime-registries.test.js +53 -6
  136. package/dist/backend/llvm/runtime-registries.test.js.map +1 -1
  137. package/dist/backend/llvm/serialized-ir-emission.test.js +3 -1
  138. package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
  139. package/dist/backend/llvm/shapes.d.ts +33 -3
  140. package/dist/backend/llvm/shapes.js +183 -13
  141. package/dist/backend/llvm/shapes.js.map +1 -1
  142. package/dist/backend/llvm/stack-objects.d.ts +1 -2
  143. package/dist/backend/llvm/stack-objects.js +8 -5
  144. package/dist/backend/llvm/stack-objects.js.map +1 -1
  145. package/dist/backend/llvm/walkers.d.ts +12 -0
  146. package/dist/backend/llvm/walkers.js +46 -2
  147. package/dist/backend/llvm/walkers.js.map +1 -1
  148. package/dist/backend/may-throw.js +12 -2
  149. package/dist/backend/may-throw.js.map +1 -1
  150. package/dist/backend/may-throw.test.js +13 -0
  151. package/dist/backend/may-throw.test.js.map +1 -1
  152. package/dist/backend/native/contracts.d.ts +48 -8
  153. package/dist/backend/native/executable.js +55 -13
  154. package/dist/backend/native/executable.js.map +1 -1
  155. package/dist/backend/native/helper-identity-record.d.ts +11 -0
  156. package/dist/backend/native/helper-identity-record.js +76 -0
  157. package/dist/backend/native/helper-identity-record.js.map +1 -0
  158. package/dist/backend/native/helper-identity-record.test.d.ts +1 -0
  159. package/dist/backend/native/helper-identity-record.test.js +101 -0
  160. package/dist/backend/native/helper-identity-record.test.js.map +1 -0
  161. package/dist/backend/native/library.js +9 -1
  162. package/dist/backend/native/library.js.map +1 -1
  163. package/dist/backend/native/runtime-inputs.js +4 -1
  164. package/dist/backend/native/runtime-inputs.js.map +1 -1
  165. package/dist/backend/native/vendor.d.ts +1 -1
  166. package/dist/backend/native/vendor.js +1 -1
  167. package/dist/backend/native/vendor.js.map +1 -1
  168. package/dist/backend/native-codegen-core.d.ts +13 -10
  169. package/dist/backend/native-codegen-core.js +26 -13
  170. package/dist/backend/native-codegen-core.js.map +1 -1
  171. package/dist/backend/native-codegen.js +27 -8
  172. package/dist/backend/native-codegen.js.map +1 -1
  173. package/dist/backend/native-codegen.test.js +110 -14
  174. package/dist/backend/native-codegen.test.js.map +1 -1
  175. package/dist/backend/native-link-info-core.d.ts +37 -8
  176. package/dist/backend/native-link-info-core.js.map +1 -1
  177. package/dist/backend/runtime-pack-core.d.ts +17 -2
  178. package/dist/backend/runtime-pack-core.js +18 -3
  179. package/dist/backend/runtime-pack-core.js.map +1 -1
  180. package/dist/backend/runtime-pack-targets.test.js +1 -1
  181. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  182. package/dist/backend/runtime-pack.test.js +211 -2
  183. package/dist/backend/runtime-pack.test.js.map +1 -1
  184. package/dist/backend/tree-classes.d.ts +42 -0
  185. package/dist/backend/tree-classes.js +723 -0
  186. package/dist/backend/tree-classes.js.map +1 -0
  187. package/dist/backend/tree-classes.test.d.ts +1 -0
  188. package/dist/backend/tree-classes.test.js +338 -0
  189. package/dist/backend/tree-classes.test.js.map +1 -0
  190. package/dist/backend/vendor-archives.d.ts +5 -1
  191. package/dist/backend/vendor-archives.js +51 -7
  192. package/dist/backend/vendor-archives.js.map +1 -1
  193. package/dist/backend/vendor-inputs.d.ts +25 -4
  194. package/dist/backend/vendor-inputs.js +68 -4
  195. package/dist/backend/vendor-inputs.js.map +1 -1
  196. package/dist/backend/vendor-inputs.test.js +35 -1
  197. package/dist/backend/vendor-inputs.test.js.map +1 -1
  198. package/dist/backend/warm-cache.js +1 -1
  199. package/dist/backend/warm-cache.js.map +1 -1
  200. package/dist/compat/fetch-profile.js +2 -2
  201. package/dist/coverage/report.js +47 -0
  202. package/dist/coverage/report.js.map +1 -1
  203. package/dist/coverage/surface-manifest.js +1 -1
  204. package/dist/diagnostics/codes.d.ts +8 -0
  205. package/dist/diagnostics/codes.js +8 -0
  206. package/dist/diagnostics/codes.js.map +1 -1
  207. package/dist/diagnostics/diagnostic.d.ts +27 -9
  208. package/dist/diagnostics/diagnostic.js +60 -19
  209. package/dist/diagnostics/diagnostic.js.map +1 -1
  210. package/dist/diagnostics/envelope.d.ts +18 -0
  211. package/dist/diagnostics/envelope.js.map +1 -1
  212. package/dist/executable/executable-cache.d.ts +21 -2
  213. package/dist/executable/executable-cache.js +21 -1
  214. package/dist/executable/executable-cache.js.map +1 -1
  215. package/dist/executable/executable-cache.test.js +123 -1
  216. package/dist/executable/executable-cache.test.js.map +1 -1
  217. package/dist/executable/prepare.js +199 -248
  218. package/dist/executable/prepare.js.map +1 -1
  219. package/dist/frontend/analysis.js +200 -18
  220. package/dist/frontend/analysis.js.map +1 -1
  221. package/dist/frontend/builtin-modules.d.ts +4 -0
  222. package/dist/frontend/builtin-modules.js +10 -0
  223. package/dist/frontend/builtin-modules.js.map +1 -1
  224. package/dist/frontend/early-errors.d.ts +12 -2
  225. package/dist/frontend/early-errors.js +535 -4
  226. package/dist/frontend/early-errors.js.map +1 -1
  227. package/dist/frontend/early-errors.test.js +165 -0
  228. package/dist/frontend/early-errors.test.js.map +1 -1
  229. package/dist/frontend/inferred-js-diagnostics.test.js +65 -0
  230. package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -1
  231. package/dist/frontend/jsx-opinion-sites.test.d.ts +1 -0
  232. package/dist/frontend/jsx-opinion-sites.test.js +86 -0
  233. package/dist/frontend/jsx-opinion-sites.test.js.map +1 -0
  234. package/dist/frontend/lib-exports.d.ts +23 -4
  235. package/dist/frontend/lib-exports.js +98 -26
  236. package/dist/frontend/lib-exports.js.map +1 -1
  237. package/dist/frontend/lowering/binding-analysis.js +21 -3
  238. package/dist/frontend/lowering/binding-analysis.js.map +1 -1
  239. package/dist/frontend/lowering/buffers.d.ts +8 -0
  240. package/dist/frontend/lowering/buffers.js +43 -0
  241. package/dist/frontend/lowering/buffers.js.map +1 -0
  242. package/dist/frontend/lowering/builtin-calls.js +4 -0
  243. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  244. package/dist/frontend/lowering/builtin-namespaces.d.ts +3 -2
  245. package/dist/frontend/lowering/builtin-namespaces.js +24 -3
  246. package/dist/frontend/lowering/builtin-namespaces.js.map +1 -1
  247. package/dist/frontend/lowering/builtin-statics.d.ts +24 -0
  248. package/dist/frontend/lowering/builtin-statics.js +407 -0
  249. package/dist/frontend/lowering/builtin-statics.js.map +1 -0
  250. package/dist/frontend/lowering/builtins/arguments.d.ts +4 -0
  251. package/dist/frontend/lowering/builtins/arguments.js +12 -0
  252. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  253. package/dist/frontend/lowering/builtins/atomics.d.ts +6 -1
  254. package/dist/frontend/lowering/builtins/atomics.js +87 -1
  255. package/dist/frontend/lowering/builtins/atomics.js.map +1 -1
  256. package/dist/frontend/lowering/builtins/child-process-methods.js +2 -2
  257. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  258. package/dist/frontend/lowering/builtins/child-process-sync.d.ts +13 -0
  259. package/dist/frontend/lowering/builtins/child-process-sync.js +1 -13
  260. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  261. package/dist/frontend/lowering/builtins/child-process.d.ts +10 -4
  262. package/dist/frontend/lowering/builtins/child-process.js +560 -27
  263. package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
  264. package/dist/frontend/lowering/builtins/compression.d.ts +2 -2
  265. package/dist/frontend/lowering/builtins/compression.js +41 -21
  266. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  267. package/dist/frontend/lowering/builtins/constants.js +7 -2
  268. package/dist/frontend/lowering/builtins/constants.js.map +1 -1
  269. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +1 -0
  270. package/dist/frontend/lowering/builtins/filesystem-calls.js +28 -2
  271. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  272. package/dist/frontend/lowering/builtins/json.js +4 -0
  273. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  274. package/dist/frontend/lowering/builtins/module-calls.js +3 -1
  275. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  276. package/dist/frontend/lowering/builtins/numbers.d.ts +4 -1
  277. package/dist/frontend/lowering/builtins/numbers.js +10 -2
  278. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  279. package/dist/frontend/lowering/builtins/operating-system.d.ts +6 -3
  280. package/dist/frontend/lowering/builtins/operating-system.js +96 -16
  281. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  282. package/dist/frontend/lowering/builtins/process.d.ts +2 -2
  283. package/dist/frontend/lowering/builtins/process.js +103 -8
  284. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  285. package/dist/frontend/lowering/builtins/promises.js +169 -8
  286. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  287. package/dist/frontend/lowering/builtins/properties.js +6 -2
  288. package/dist/frontend/lowering/builtins/properties.js.map +1 -1
  289. package/dist/frontend/lowering/builtins/readline.d.ts +6 -4
  290. package/dist/frontend/lowering/builtins/readline.js +180 -36
  291. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  292. package/dist/frontend/lowering/builtins/url.js +35 -12
  293. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  294. package/dist/frontend/lowering/builtins/webassembly.js +2 -0
  295. package/dist/frontend/lowering/builtins/webassembly.js.map +1 -1
  296. package/dist/frontend/lowering/call-arguments.d.ts +10 -0
  297. package/dist/frontend/lowering/call-arguments.js +37 -2
  298. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  299. package/dist/frontend/lowering/call-signatures.d.ts +10 -0
  300. package/dist/frontend/lowering/call-signatures.js +103 -0
  301. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  302. package/dist/frontend/lowering/class-construction.d.ts +14 -2
  303. package/dist/frontend/lowering/class-construction.js +99 -5
  304. package/dist/frontend/lowering/class-construction.js.map +1 -1
  305. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +9 -0
  306. package/dist/frontend/lowering/class-dynamic-dispatch.js +1283 -1030
  307. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  308. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +158 -0
  309. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  310. package/dist/frontend/lowering/class-prototypes.js +20 -15
  311. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  312. package/dist/frontend/lowering/class-runtime-statics.d.ts +8 -0
  313. package/dist/frontend/lowering/class-runtime-statics.js +20 -1
  314. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  315. package/dist/frontend/lowering/class-unions.js +21 -4
  316. package/dist/frontend/lowering/class-unions.js.map +1 -1
  317. package/dist/frontend/lowering/coercions/function-adapters.js +9 -0
  318. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  319. package/dist/frontend/lowering/coercions/state.d.ts +8 -0
  320. package/dist/frontend/lowering/coercions/state.js +17 -0
  321. package/dist/frontend/lowering/coercions/state.js.map +1 -1
  322. package/dist/frontend/lowering/coercions/structural-plans.js +20 -5
  323. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  324. package/dist/frontend/lowering/coercions/structural.js +10 -1
  325. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  326. package/dist/frontend/lowering/coercions/unions.d.ts +2 -1
  327. package/dist/frontend/lowering/coercions/unions.js +54 -10
  328. package/dist/frontend/lowering/coercions/unions.js.map +1 -1
  329. package/dist/frontend/lowering/constructor-returns.d.ts +23 -2
  330. package/dist/frontend/lowering/constructor-returns.js +284 -58
  331. package/dist/frontend/lowering/constructor-returns.js.map +1 -1
  332. package/dist/frontend/lowering/containers/array-callbacks.js +156 -62
  333. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  334. package/dist/frontend/lowering/containers/array-construction.js +21 -3
  335. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  336. package/dist/frontend/lowering/containers/array-from-async.js +139 -3
  337. package/dist/frontend/lowering/containers/array-from-async.js.map +1 -1
  338. package/dist/frontend/lowering/containers/array-iteration.d.ts +14 -4
  339. package/dist/frontend/lowering/containers/array-iteration.js +24 -7
  340. package/dist/frontend/lowering/containers/array-iteration.js.map +1 -1
  341. package/dist/frontend/lowering/containers/array-methods.js +14 -11
  342. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  343. package/dist/frontend/lowering/containers/bytes.d.ts +6 -0
  344. package/dist/frontend/lowering/containers/bytes.js +446 -86
  345. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  346. package/dist/frontend/lowering/containers/callback-arguments.d.ts +5 -0
  347. package/dist/frontend/lowering/containers/callback-arguments.js +21 -12
  348. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -1
  349. package/dist/frontend/lowering/containers/collection-grouping.js +421 -2
  350. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -1
  351. package/dist/frontend/lowering/containers/collection-methods.js +52 -17
  352. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  353. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +23 -0
  354. package/dist/frontend/lowering/containers/iterator-helpers.js +176 -10
  355. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -1
  356. package/dist/frontend/lowering/containers/string-and-regexp.d.ts +5 -2
  357. package/dist/frontend/lowering/containers/string-and-regexp.js +45 -11
  358. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  359. package/dist/frontend/lowering/crypto-tables.d.ts +3 -3
  360. package/dist/frontend/lowering/crypto-tables.js +5 -5
  361. package/dist/frontend/lowering/dispatch-sites.js +3 -0
  362. package/dist/frontend/lowering/dispatch-sites.js.map +1 -1
  363. package/dist/frontend/lowering/divergences.d.ts +40 -0
  364. package/dist/frontend/lowering/divergences.js +239 -20
  365. package/dist/frontend/lowering/divergences.js.map +1 -1
  366. package/dist/frontend/lowering/effect-free.d.ts +12 -0
  367. package/dist/frontend/lowering/effect-free.js +44 -0
  368. package/dist/frontend/lowering/effect-free.js.map +1 -0
  369. package/dist/frontend/lowering/expressions/array-literals.d.ts +10 -0
  370. package/dist/frontend/lowering/expressions/array-literals.js +62 -0
  371. package/dist/frontend/lowering/expressions/array-literals.js.map +1 -1
  372. package/dist/frontend/lowering/expressions/binary.js +115 -5
  373. package/dist/frontend/lowering/expressions/binary.js.map +1 -1
  374. package/dist/frontend/lowering/expressions/element-access.js +151 -7
  375. package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
  376. package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +15 -0
  377. package/dist/frontend/lowering/expressions/hosted-narrowing.js +54 -1
  378. package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -1
  379. package/dist/frontend/lowering/expressions/identifiers.js +31 -2
  380. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
  381. package/dist/frontend/lowering/expressions/narrowing.d.ts +3 -0
  382. package/dist/frontend/lowering/expressions/narrowing.js +175 -22
  383. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
  384. package/dist/frontend/lowering/expressions/object-literals.js +173 -11
  385. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  386. package/dist/frontend/lowering/expressions/optional-chains.js +5 -1
  387. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  388. package/dist/frontend/lowering/expressions/property-access.d.ts +8 -0
  389. package/dist/frontend/lowering/expressions/property-access.js +379 -109
  390. package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
  391. package/dist/frontend/lowering/expressions/relational.js +237 -7
  392. package/dist/frontend/lowering/expressions/relational.js.map +1 -1
  393. package/dist/frontend/lowering/expressions/typeof.js +8 -0
  394. package/dist/frontend/lowering/expressions/typeof.js.map +1 -1
  395. package/dist/frontend/lowering/expressions/union-fields.d.ts +20 -1
  396. package/dist/frontend/lowering/expressions/union-fields.js +103 -13
  397. package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
  398. package/dist/frontend/lowering/expressions/updates.js +74 -55
  399. package/dist/frontend/lowering/expressions/updates.js.map +1 -1
  400. package/dist/frontend/lowering/function-returns.js +37 -10
  401. package/dist/frontend/lowering/function-returns.js.map +1 -1
  402. package/dist/frontend/lowering/general-streams.js +5 -0
  403. package/dist/frontend/lowering/general-streams.js.map +1 -1
  404. package/dist/frontend/lowering/generator-delegation.d.ts +15 -7
  405. package/dist/frontend/lowering/generator-delegation.js +301 -118
  406. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  407. package/dist/frontend/lowering/generic-functions.d.ts +27 -1
  408. package/dist/frontend/lowering/generic-functions.js +432 -18
  409. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  410. package/dist/frontend/lowering/global-function-values.d.ts +25 -0
  411. package/dist/frontend/lowering/global-function-values.js +193 -0
  412. package/dist/frontend/lowering/global-function-values.js.map +1 -0
  413. package/dist/frontend/lowering/global-values.d.ts +6 -4
  414. package/dist/frontend/lowering/global-values.js +24 -10
  415. package/dist/frontend/lowering/global-values.js.map +1 -1
  416. package/dist/frontend/lowering/host-global-values.d.ts +31 -0
  417. package/dist/frontend/lowering/host-global-values.js +121 -0
  418. package/dist/frontend/lowering/host-global-values.js.map +1 -0
  419. package/dist/frontend/lowering/host-globals.d.ts +74 -0
  420. package/dist/frontend/lowering/host-globals.js +344 -0
  421. package/dist/frontend/lowering/host-globals.js.map +1 -0
  422. package/dist/frontend/lowering/http2-constants.js +1 -1
  423. package/dist/frontend/lowering/iterator-adapters.js +46 -17
  424. package/dist/frontend/lowering/iterator-adapters.js.map +1 -1
  425. package/dist/frontend/lowering/iterator-prototype.d.ts +30 -0
  426. package/dist/frontend/lowering/iterator-prototype.js +160 -0
  427. package/dist/frontend/lowering/iterator-prototype.js.map +1 -0
  428. package/dist/frontend/lowering/key-order-witness.js +43 -22
  429. package/dist/frontend/lowering/key-order-witness.js.map +1 -1
  430. package/dist/frontend/lowering/key-order-witness.test.js +1 -0
  431. package/dist/frontend/lowering/key-order-witness.test.js.map +1 -1
  432. package/dist/frontend/lowering/lib-boundary.js +11 -3
  433. package/dist/frontend/lowering/lib-boundary.js.map +1 -1
  434. package/dist/frontend/lowering/lower-assert.js +30 -15
  435. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  436. package/dist/frontend/lowering/lower-async-iteration.d.ts +11 -0
  437. package/dist/frontend/lowering/lower-async-iteration.js +15 -0
  438. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  439. package/dist/frontend/lowering/lower-builtin-values.js +11 -1
  440. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  441. package/dist/frontend/lowering/lower-calls.d.ts +25 -0
  442. package/dist/frontend/lowering/lower-calls.js +929 -227
  443. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  444. package/dist/frontend/lowering/lower-calls.test.js +59 -16
  445. package/dist/frontend/lowering/lower-calls.test.js.map +1 -1
  446. package/dist/frontend/lowering/lower-classes.d.ts +20 -0
  447. package/dist/frontend/lowering/lower-classes.js +468 -44
  448. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  449. package/dist/frontend/lowering/lower-event-emitter.d.ts +6 -2
  450. package/dist/frontend/lowering/lower-event-emitter.js +253 -83
  451. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  452. package/dist/frontend/lowering/lower-exprs.d.ts +1 -1
  453. package/dist/frontend/lowering/lower-exprs.js +71 -20
  454. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  455. package/dist/frontend/lowering/lower-functions.js +25 -6
  456. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  457. package/dist/frontend/lowering/lower-generators.js +57 -10
  458. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  459. package/dist/frontend/lowering/lower-global-value.d.ts +6 -0
  460. package/dist/frontend/lowering/lower-global-value.js +14 -5
  461. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  462. package/dist/frontend/lowering/lower-inspect.d.ts +4 -0
  463. package/dist/frontend/lowering/lower-inspect.js +638 -64
  464. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  465. package/dist/frontend/lowering/lower-modules.js +48 -2
  466. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  467. package/dist/frontend/lowering/lower-namespaces.js +18 -0
  468. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  469. package/dist/frontend/lowering/lower-node-island.js +16 -6
  470. package/dist/frontend/lowering/lower-node-island.js.map +1 -1
  471. package/dist/frontend/lowering/lower-server.js +303 -87
  472. package/dist/frontend/lowering/lower-server.js.map +1 -1
  473. package/dist/frontend/lowering/lower-stdlib.js +45 -0
  474. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  475. package/dist/frontend/lowering/lower-stmts.d.ts +14 -11
  476. package/dist/frontend/lowering/lower-stmts.js +270 -52
  477. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  478. package/dist/frontend/lowering/lower-timers.js +110 -27
  479. package/dist/frontend/lowering/lower-timers.js.map +1 -1
  480. package/dist/frontend/lowering/lower-url.js +6 -3
  481. package/dist/frontend/lowering/lower-url.js.map +1 -1
  482. package/dist/frontend/lowering/lowerer.d.ts +227 -21
  483. package/dist/frontend/lowering/lowerer.js +651 -92
  484. package/dist/frontend/lowering/lowerer.js.map +1 -1
  485. package/dist/frontend/lowering/lowerer.test.js +18 -0
  486. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  487. package/dist/frontend/lowering/lowering-facts.d.ts +110 -0
  488. package/dist/frontend/lowering/lowering-facts.js +323 -0
  489. package/dist/frontend/lowering/lowering-facts.js.map +1 -0
  490. package/dist/frontend/lowering/lowering-facts.test.d.ts +1 -0
  491. package/dist/frontend/lowering/lowering-facts.test.js +100 -0
  492. package/dist/frontend/lowering/lowering-facts.test.js.map +1 -0
  493. package/dist/frontend/lowering/nan-coded-reads.d.ts +27 -4
  494. package/dist/frontend/lowering/nan-coded-reads.js +112 -9
  495. package/dist/frontend/lowering/nan-coded-reads.js.map +1 -1
  496. package/dist/frontend/lowering/optional-arguments.d.ts +4 -0
  497. package/dist/frontend/lowering/optional-arguments.js +26 -2
  498. package/dist/frontend/lowering/optional-arguments.js.map +1 -1
  499. package/dist/frontend/lowering/partial-assertions.d.ts +0 -3
  500. package/dist/frontend/lowering/partial-assertions.js +9 -15
  501. package/dist/frontend/lowering/partial-assertions.js.map +1 -1
  502. package/dist/frontend/lowering/primitive-throws.d.ts +100 -0
  503. package/dist/frontend/lowering/primitive-throws.js +241 -0
  504. package/dist/frontend/lowering/primitive-throws.js.map +1 -0
  505. package/dist/frontend/lowering/primitive-wrappers.js +1 -0
  506. package/dist/frontend/lowering/primitive-wrappers.js.map +1 -1
  507. package/dist/frontend/lowering/record-inherited.d.ts +17 -1
  508. package/dist/frontend/lowering/record-inherited.js +16 -2
  509. package/dist/frontend/lowering/record-inherited.js.map +1 -1
  510. package/dist/frontend/lowering/record-links.d.ts +73 -0
  511. package/dist/frontend/lowering/record-links.js +797 -0
  512. package/dist/frontend/lowering/record-links.js.map +1 -0
  513. package/dist/frontend/lowering/runtime-optional-provenance.d.ts +27 -7
  514. package/dist/frontend/lowering/runtime-optional-provenance.js +25 -11
  515. package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -1
  516. package/dist/frontend/lowering/runtime-optional-report.d.ts +40 -0
  517. package/dist/frontend/lowering/runtime-optional-report.js +300 -0
  518. package/dist/frontend/lowering/runtime-optional-report.js.map +1 -0
  519. package/dist/frontend/lowering/scoped-type-memo.test.d.ts +1 -0
  520. package/dist/frontend/lowering/scoped-type-memo.test.js +86 -0
  521. package/dist/frontend/lowering/scoped-type-memo.test.js.map +1 -0
  522. package/dist/frontend/lowering/static-typeof.d.ts +3 -1
  523. package/dist/frontend/lowering/static-typeof.js +6 -1
  524. package/dist/frontend/lowering/static-typeof.js.map +1 -1
  525. package/dist/frontend/lowering/strict-mode.d.ts +1 -5
  526. package/dist/frontend/lowering/strict-mode.js +4 -30
  527. package/dist/frontend/lowering/strict-mode.js.map +1 -1
  528. package/dist/frontend/lowering/structural-instances.d.ts +7 -0
  529. package/dist/frontend/lowering/structural-instances.js +23 -0
  530. package/dist/frontend/lowering/structural-instances.js.map +1 -1
  531. package/dist/frontend/lowering/surfaces.d.ts +15 -1
  532. package/dist/frontend/lowering/surfaces.js +78 -10
  533. package/dist/frontend/lowering/surfaces.js.map +1 -1
  534. package/dist/frontend/lowering/union-retag.d.ts +13 -1
  535. package/dist/frontend/lowering/union-retag.js +55 -1
  536. package/dist/frontend/lowering/union-retag.js.map +1 -1
  537. package/dist/frontend/lowering/union-retag.test.js +51 -0
  538. package/dist/frontend/lowering/union-retag.test.js.map +1 -1
  539. package/dist/frontend/lowering/unit-journal.d.ts +8 -0
  540. package/dist/frontend/lowering/unit-journal.js +14 -0
  541. package/dist/frontend/lowering/unit-journal.js.map +1 -1
  542. package/dist/frontend/lowering/unit-journal.test.js +36 -1
  543. package/dist/frontend/lowering/unit-journal.test.js.map +1 -1
  544. package/dist/frontend/lowering/zlib-constants.js +3 -2
  545. package/dist/frontend/lowering/zlib-constants.js.map +1 -1
  546. package/dist/frontend/npm-static.js +78 -9
  547. package/dist/frontend/npm-static.js.map +1 -1
  548. package/dist/frontend/npm-static.test.js +95 -2
  549. package/dist/frontend/npm-static.test.js.map +1 -1
  550. package/dist/frontend/pipeline.d.ts +5 -4
  551. package/dist/frontend/pipeline.js +94 -31
  552. package/dist/frontend/pipeline.js.map +1 -1
  553. package/dist/frontend/pipeline.test.js +68 -11
  554. package/dist/frontend/pipeline.test.js.map +1 -1
  555. package/dist/frontend/program.d.ts +62 -2
  556. package/dist/frontend/program.js +695 -422
  557. package/dist/frontend/program.js.map +1 -1
  558. package/dist/frontend/program.test.js +37 -1
  559. package/dist/frontend/program.test.js.map +1 -1
  560. package/dist/frontend/services-node.d.ts +7 -0
  561. package/dist/frontend/services-node.js +32 -1
  562. package/dist/frontend/services-node.js.map +1 -1
  563. package/dist/frontend/services-node.test.js +51 -0
  564. package/dist/frontend/services-node.test.js.map +1 -1
  565. package/dist/frontend/shape-inference/overlay.js +68 -2
  566. package/dist/frontend/shape-inference/overlay.js.map +1 -1
  567. package/dist/frontend/tier-analysis.d.ts +9 -0
  568. package/dist/frontend/tier-analysis.js +1 -0
  569. package/dist/frontend/tier-analysis.js.map +1 -1
  570. package/dist/frontend/tsc-codes.d.ts +57 -3
  571. package/dist/frontend/tsc-codes.js +935 -150
  572. package/dist/frontend/tsc-codes.js.map +1 -1
  573. package/dist/frontend/tsc-codes.test.js +221 -12
  574. package/dist/frontend/tsc-codes.test.js.map +1 -1
  575. package/dist/frontend/type-mapper.d.ts +91 -9
  576. package/dist/frontend/type-mapper.js +622 -181
  577. package/dist/frontend/type-mapper.js.map +1 -1
  578. package/dist/index.d.ts +1 -1
  579. package/dist/index.js +80 -15
  580. package/dist/index.js.map +1 -1
  581. package/dist/index.test.d.ts +1 -0
  582. package/dist/index.test.js +60 -0
  583. package/dist/index.test.js.map +1 -0
  584. package/dist/ir/builtin-effects.js +43 -0
  585. package/dist/ir/builtin-effects.js.map +1 -1
  586. package/dist/ir/builtin-signatures.d.ts +1 -1
  587. package/dist/ir/builtin-signatures.js +242 -16
  588. package/dist/ir/builtin-signatures.js.map +1 -1
  589. package/dist/ir/callback-specialization.d.ts +3 -2
  590. package/dist/ir/callback-specialization.js +35 -25
  591. package/dist/ir/callback-specialization.js.map +1 -1
  592. package/dist/ir/capture-values.d.ts +8 -4
  593. package/dist/ir/capture-values.js +9 -6
  594. package/dist/ir/capture-values.js.map +1 -1
  595. package/dist/ir/char-unit-locals.d.ts +6 -2
  596. package/dist/ir/char-unit-locals.js +11 -2
  597. package/dist/ir/char-unit-locals.js.map +1 -1
  598. package/dist/ir/class-key-index.d.ts +18 -0
  599. package/dist/ir/class-key-index.js +29 -0
  600. package/dist/ir/class-key-index.js.map +1 -0
  601. package/dist/ir/class-key-index.test.d.ts +1 -0
  602. package/dist/ir/class-key-index.test.js +25 -0
  603. package/dist/ir/class-key-index.test.js.map +1 -0
  604. package/dist/ir/codec.generated.d.ts +1 -1
  605. package/dist/ir/codec.generated.js +724 -648
  606. package/dist/ir/codec.generated.js.map +1 -1
  607. package/dist/ir/constant-globals.d.ts +5 -2
  608. package/dist/ir/constant-globals.js +25 -27
  609. package/dist/ir/constant-globals.js.map +1 -1
  610. package/dist/ir/expression-inlining.d.ts +4 -2
  611. package/dist/ir/expression-inlining.js +8 -2
  612. package/dist/ir/expression-inlining.js.map +1 -1
  613. package/dist/ir/field-values.d.ts +5 -2
  614. package/dist/ir/field-values.js +32 -21
  615. package/dist/ir/field-values.js.map +1 -1
  616. package/dist/ir/fields.generated.d.ts +11 -2
  617. package/dist/ir/fields.generated.js +8 -0
  618. package/dist/ir/fields.generated.js.map +1 -1
  619. package/dist/ir/final-fields.js +1 -1
  620. package/dist/ir/final-fields.js.map +1 -1
  621. package/dist/ir/function-references.d.ts +5 -4
  622. package/dist/ir/function-references.js +7 -4
  623. package/dist/ir/function-references.js.map +1 -1
  624. package/dist/ir/function-references.test.js +7 -0
  625. package/dist/ir/function-references.test.js.map +1 -1
  626. package/dist/ir/init-only-globals.d.ts +4 -2
  627. package/dist/ir/init-only-globals.js +17 -18
  628. package/dist/ir/init-only-globals.js.map +1 -1
  629. package/dist/ir/inline-array-views.js +1 -0
  630. package/dist/ir/inline-array-views.js.map +1 -1
  631. package/dist/ir/int32-slots.js +7 -0
  632. package/dist/ir/int32-slots.js.map +1 -1
  633. package/dist/ir/ir.d.ts +59 -4
  634. package/dist/ir/ir.js +7 -0
  635. package/dist/ir/ir.js.map +1 -1
  636. package/dist/ir/js-groups.d.ts +51 -0
  637. package/dist/ir/js-groups.js +394 -0
  638. package/dist/ir/js-groups.js.map +1 -0
  639. package/dist/ir/js-groups.test.d.ts +1 -0
  640. package/dist/ir/js-groups.test.js +555 -0
  641. package/dist/ir/js-groups.test.js.map +1 -0
  642. package/dist/ir/js-ic.js +30 -5
  643. package/dist/ir/js-ic.js.map +1 -1
  644. package/dist/ir/js-ic.test.js +27 -1
  645. package/dist/ir/js-ic.test.js.map +1 -1
  646. package/dist/ir/node-index.d.ts +23 -6
  647. package/dist/ir/node-index.js +126 -49
  648. package/dist/ir/node-index.js.map +1 -1
  649. package/dist/ir/numeric-call-specialization.d.ts +4 -2
  650. package/dist/ir/numeric-call-specialization.js +40 -26
  651. package/dist/ir/numeric-call-specialization.js.map +1 -1
  652. package/dist/ir/paired-while-loops.d.ts +4 -2
  653. package/dist/ir/paired-while-loops.js +8 -2
  654. package/dist/ir/paired-while-loops.js.map +1 -1
  655. package/dist/ir/parameter-versions.d.ts +13 -4
  656. package/dist/ir/parameter-versions.js +63 -42
  657. package/dist/ir/parameter-versions.js.map +1 -1
  658. package/dist/ir/property-bags.d.ts +4 -2
  659. package/dist/ir/property-bags.js +22 -17
  660. package/dist/ir/property-bags.js.map +1 -1
  661. package/dist/ir/row-pairs.d.ts +4 -2
  662. package/dist/ir/row-pairs.js +12 -11
  663. package/dist/ir/row-pairs.js.map +1 -1
  664. package/dist/ir/runtime-features.d.ts +87 -12
  665. package/dist/ir/runtime-features.js +263 -160
  666. package/dist/ir/runtime-features.js.map +1 -1
  667. package/dist/ir/runtime-features.test.js +109 -139
  668. package/dist/ir/runtime-features.test.js.map +1 -1
  669. package/dist/ir/runtime-jam-loops.d.ts +35 -0
  670. package/dist/ir/runtime-jam-loops.js +604 -0
  671. package/dist/ir/runtime-jam-loops.js.map +1 -0
  672. package/dist/ir/runtime-jam-loops.test.d.ts +1 -0
  673. package/dist/ir/runtime-jam-loops.test.js +565 -0
  674. package/dist/ir/runtime-jam-loops.test.js.map +1 -0
  675. package/dist/ir/saturating-loop-jams.d.ts +4 -2
  676. package/dist/ir/saturating-loop-jams.js +11 -10
  677. package/dist/ir/saturating-loop-jams.js.map +1 -1
  678. package/dist/ir/scalar-records.d.ts +5 -2
  679. package/dist/ir/scalar-records.js +12 -2
  680. package/dist/ir/scalar-records.js.map +1 -1
  681. package/dist/ir/self-captures.d.ts +4 -2
  682. package/dist/ir/self-captures.js +32 -27
  683. package/dist/ir/self-captures.js.map +1 -1
  684. package/dist/ir/serialize.d.ts +6 -1
  685. package/dist/ir/serialize.js +87 -23
  686. package/dist/ir/serialize.js.map +1 -1
  687. package/dist/ir/serialize.test.js +26 -0
  688. package/dist/ir/serialize.test.js.map +1 -1
  689. package/dist/ir/tiers.js +1 -0
  690. package/dist/ir/tiers.js.map +1 -1
  691. package/dist/ir/traverse.js +4 -0
  692. package/dist/ir/traverse.js.map +1 -1
  693. package/dist/ir/typed-argument-clones.d.ts +30 -0
  694. package/dist/ir/typed-argument-clones.js +789 -0
  695. package/dist/ir/typed-argument-clones.js.map +1 -0
  696. package/dist/ir/union-arm-loops.d.ts +3 -0
  697. package/dist/ir/union-arm-loops.js +373 -0
  698. package/dist/ir/union-arm-loops.js.map +1 -0
  699. package/dist/ir/union-arm-loops.test.d.ts +1 -0
  700. package/dist/ir/union-arm-loops.test.js +230 -0
  701. package/dist/ir/union-arm-loops.test.js.map +1 -0
  702. package/dist/ir/validate.js +88 -18
  703. package/dist/ir/validate.js.map +1 -1
  704. package/dist/library/compiler-self-identity.d.ts +8 -2
  705. package/dist/library/compiler-self-identity.js +92 -18
  706. package/dist/library/compiler-self-identity.js.map +1 -1
  707. package/dist/library/compiler-self-identity.test.js +150 -3
  708. package/dist/library/compiler-self-identity.test.js.map +1 -1
  709. package/dist/library/int-infer.d.ts +5 -0
  710. package/dist/library/int-infer.js +15 -3
  711. package/dist/library/int-infer.js.map +1 -1
  712. package/dist/library/ir-policy.js +1 -0
  713. package/dist/library/ir-policy.js.map +1 -1
  714. package/dist/library/library-cache.d.ts +4 -0
  715. package/dist/library/library-cache.js +2 -0
  716. package/dist/library/library-cache.js.map +1 -1
  717. package/dist/library/library-cache.test.js +26 -0
  718. package/dist/library/library-cache.test.js.map +1 -1
  719. package/dist/library/prepare.js +99 -31
  720. package/dist/library/prepare.js.map +1 -1
  721. package/dist/native/cache.d.ts +7 -0
  722. package/dist/native/cache.js +47 -0
  723. package/dist/native/cache.js.map +1 -1
  724. package/dist/native/cache.test.js +13 -1
  725. package/dist/native/cache.test.js.map +1 -1
  726. package/dist/native/cli.js +1 -1
  727. package/dist/native/cli.js.map +1 -1
  728. package/dist/native/compiler.js +18 -3
  729. package/dist/native/compiler.js.map +1 -1
  730. package/dist/native/executable-cache-open.test.js +31 -5
  731. package/dist/native/executable-cache-open.test.js.map +1 -1
  732. package/dist/native/executable-cache.d.ts +6 -1
  733. package/dist/native/executable-cache.js +7 -1
  734. package/dist/native/executable-cache.js.map +1 -1
  735. package/dist/native/prepare.d.ts +3 -0
  736. package/dist/native/prepare.js +43 -26
  737. package/dist/native/prepare.js.map +1 -1
  738. package/dist/native/prepare.test.js +25 -3
  739. package/dist/native/prepare.test.js.map +1 -1
  740. package/dist/native/sanitizer.js +10 -1
  741. package/dist/native/sanitizer.js.map +1 -1
  742. package/dist/native/sanitizer.test.js +7 -2
  743. package/dist/native/sanitizer.test.js.map +1 -1
  744. package/dist/node-islands/boundary.d.ts +12 -0
  745. package/dist/node-islands/boundary.js +38 -6
  746. package/dist/node-islands/boundary.js.map +1 -1
  747. package/dist/node-islands/boundary.test.d.ts +1 -0
  748. package/dist/node-islands/boundary.test.js +76 -0
  749. package/dist/node-islands/boundary.test.js.map +1 -0
  750. package/dist/node-islands/detect.d.ts +9 -0
  751. package/dist/node-islands/detect.js +110 -0
  752. package/dist/node-islands/detect.js.map +1 -1
  753. package/dist/node-islands/detect.test.js +24 -0
  754. package/dist/node-islands/detect.test.js.map +1 -1
  755. package/dist/node-islands/graph-islands.d.ts +40 -0
  756. package/dist/node-islands/graph-islands.js +128 -0
  757. package/dist/node-islands/graph-islands.js.map +1 -0
  758. package/dist/node-islands/growth.d.ts +57 -0
  759. package/dist/node-islands/growth.js +205 -0
  760. package/dist/node-islands/growth.js.map +1 -0
  761. package/dist/node-islands/report.d.ts +12 -0
  762. package/dist/node-islands/report.js +28 -0
  763. package/dist/node-islands/report.js.map +1 -1
  764. package/dist/node-islands/report.test.js +2 -0
  765. package/dist/node-islands/report.test.js.map +1 -1
  766. package/dist/node-islands/rules.js +5 -0
  767. package/dist/node-islands/rules.js.map +1 -1
  768. package/dist/node-islands/scan.d.ts +11 -2
  769. package/dist/node-islands/scan.js +61 -9
  770. package/dist/node-islands/scan.js.map +1 -1
  771. package/dist/wasm/translate.js +11 -5
  772. package/dist/wasm/translate.js.map +1 -1
  773. package/dist/wasm/translate.test.js +35 -0
  774. package/dist/wasm/translate.test.js.map +1 -1
  775. package/package.json +20 -20
  776. package/surface-manifest.json +184 -117
@@ -0,0 +1,344 @@
1
+ import * as ts from "../ts7/adapter.js";
2
+ import { arrayOf, STRING, VOID } from "../../ir/ir.js";
3
+ import { stdlibGlobalNameOf, withoutTypeCasts } from "./surfaces.js";
4
+ /* Node 24 globals the native runtime does not implement. Reading one is NOT
5
+ * a feature probe for an absent capability: Node has the value, so answering
6
+ * `undefined` would silently diverge (pi's Codex transport stops running its
7
+ * WebSocket path). A read answers the constructor Node has
8
+ * (host-global-values.ts), so a module-init `instanceOf(globalThis.FormData,
9
+ * …)` keeps loading; constructing it, calling it, or reading a member the
10
+ * value does not carry refuses (SC2020, reason "host-global"), and a module
11
+ * that does one can run in a Node island.
12
+ *
13
+ * The set is derived, not typed by hand — see
14
+ * packages/compiler/test/host-globals.test.ts, which recomputes it from
15
+ * internal/compatibility/generated/node-v24-internal.json:
16
+ *
17
+ * globals chapter, depth 1, not flag-gated (an "Enable this API with …"
18
+ * stability note means Node 24 does not define it by default)
19
+ * − names the compiler's bundled declarations know
20
+ * (packages/compiler/ambient/*.d.ts: such a read is lowered or throws a
21
+ * loud runtime SC2020, never answers undefined)
22
+ * − the CommonJS wrapper bindings (require, module, exports, __dirname,
23
+ * __filename)
24
+ * − rows the ledger's implementation-owned static status does not call
25
+ * "not-implemented".
26
+ *
27
+ * Performance is the one Node 24 global the docs chapter omits (Node
28
+ * documents the class under perf_hooks, which has no Performance row either);
29
+ * the runtime oracle in the design repro pins it as a global whose typeof is
30
+ * "function", and it is listed here explicitly.
31
+ *
32
+ * Node's enumerable global list for `for (key in globalThis)` is
33
+ * scr_global_for_in_object's node_names (package runtime): these names are
34
+ * non-enumerable in Node, so they do not belong there.
35
+ *
36
+ * Temporal is deliberately absent: Node 24 does not define it, so "undefined"
37
+ * is the exact answer. Bun, Deno, window, self and document are absent for the
38
+ * same reason.
39
+ */
40
+ export const NODE_GLOBALS_WITHOUT_NATIVE = new Set([
41
+ "BroadcastChannel",
42
+ "CloseEvent",
43
+ "CompressionStream",
44
+ "DecompressionStream",
45
+ "FormData",
46
+ "Navigator",
47
+ "Performance",
48
+ "PerformanceEntry",
49
+ "PerformanceMark",
50
+ "PerformanceMeasure",
51
+ "PerformanceObserver",
52
+ "PerformanceObserverEntryList",
53
+ "PerformanceResourceTiming",
54
+ "ReadableByteStreamController",
55
+ "ReadableStreamBYOBReader",
56
+ "ReadableStreamBYOBRequest",
57
+ "URLPattern",
58
+ "WebSocket",
59
+ ]);
60
+ /** Node 24's `length` for each listed global's constructor — the `Function`
61
+ * length of the class (`WebSocket.length` is 1, `FormData.length` 0). A read
62
+ * answers a constructor carrying it, so a program reading `name`, `length` or
63
+ * `typeof` off the value sees what Node shows. Values are pinned against the
64
+ * running Node in packages/compiler/test/host-globals.test.ts. */
65
+ const HOST_GLOBAL_LENGTHS = new Map([
66
+ ["BroadcastChannel", 1],
67
+ ["CloseEvent", 1],
68
+ ["CompressionStream", 1],
69
+ ["DecompressionStream", 1],
70
+ ["FormData", 0],
71
+ ["Navigator", 0],
72
+ ["Performance", 0],
73
+ ["PerformanceEntry", 0],
74
+ ["PerformanceMark", 1],
75
+ ["PerformanceMeasure", 0],
76
+ ["PerformanceObserver", 1],
77
+ ["PerformanceObserverEntryList", 0],
78
+ ["PerformanceResourceTiming", 0],
79
+ ["ReadableByteStreamController", 0],
80
+ ["ReadableStreamBYOBReader", 1],
81
+ ["ReadableStreamBYOBRequest", 0],
82
+ ["URLPattern", 0],
83
+ ["WebSocket", 1],
84
+ ]);
85
+ /** Node's `length` for the listed global `name`, or undefined when the table
86
+ * does not know it (the value is then built with the closure's own arity). */
87
+ export function hostGlobalLength(name) {
88
+ return HOST_GLOBAL_LENGTHS.get(name);
89
+ }
90
+ /** Whether the read is the callee of a call or `new` — the one use a listed
91
+ * global's value refuses. A bare read answers the constructor (see
92
+ * host-global-values.ts); constructing or calling it can only produce an
93
+ * instance native code does not have, so the compile fence stays (and a
94
+ * JavaScript source defers it to the throw at that statement). */
95
+ export function hostGlobalCallTarget(node) {
96
+ let current = node;
97
+ for (;;) {
98
+ const parent = current.parent;
99
+ if (parent === undefined)
100
+ return false;
101
+ if (ts.isParenthesizedExpression(parent) ||
102
+ ts.isAsExpression(parent) ||
103
+ ts.isTypeAssertion(parent) ||
104
+ ts.isNonNullExpression(parent)) {
105
+ if (parent.expression !== current)
106
+ return false;
107
+ current = parent;
108
+ continue;
109
+ }
110
+ return ((ts.isCallExpression(parent) || ts.isNewExpression(parent)) && parent.expression === current);
111
+ }
112
+ }
113
+ /** Whether `id` reads one of those globals. Own bindings — imports, locals
114
+ * with an initializer, program classes and functions — keep their ordinary
115
+ * lowering; a declaration-file binding (the bundled lib, @types/node) or a
116
+ * program's ambient `declare var` is the global, and an unresolvable name
117
+ * (JavaScript) is Node's. */
118
+ export function hostGlobalNameOfIdentifier(lowerer, id) {
119
+ const name = id.text;
120
+ if (!NODE_GLOBALS_WITHOUT_NATIVE.has(name))
121
+ return null;
122
+ // `{ WebSocket }` reads the binding through the object literal's property:
123
+ // the name's own symbol is that property, and the value the shorthand
124
+ // copies is the checker's shorthand-value symbol. Read it here rather than
125
+ // through resolveValueSymbol, which also follows import aliases — this is
126
+ // a classification probe, and an alias of the name is the program's own
127
+ // binding, whatever it resolves to.
128
+ const own = lowerer.checker.getSymbolAtLocation(id);
129
+ const symbol = id.parent !== undefined && ts.isShorthandPropertyAssignment(id.parent) && id.parent.name === id
130
+ ? (lowerer.checker.getShorthandAssignmentValueSymbol(id.parent) ?? own)
131
+ : own;
132
+ if (symbol === undefined)
133
+ return name;
134
+ // An import (or require alias) of the same name is the program's binding
135
+ // of somebody else's value, never the global.
136
+ if ((symbol.flags & ts.SymbolFlags.Alias) !== 0)
137
+ return null;
138
+ const declarations = symbol.declarations ?? [];
139
+ if (declarations.length === 0)
140
+ return null;
141
+ // Type-world partners declare no value: lib.dom and @types/node write
142
+ // `interface WebSocket` beside `declare var WebSocket`, and that merged
143
+ // symbol is still the global. Only the value declarations decide — a
144
+ // symbol with none is a type (a read of it is a type error elsewhere).
145
+ const valueDeclarations = declarations.filter((decl) => !ts.isInterfaceDeclaration(decl) && !ts.isTypeAliasDeclaration(decl));
146
+ if (valueDeclarations.length === 0)
147
+ return null;
148
+ const ambient = (decl) => ts.getSourceFileOfNode(decl).isDeclarationFile ||
149
+ (ts.getCombinedModifierFlags(decl) & ts.ModifierFlags.Ambient) !== 0;
150
+ const declaresGlobal = valueDeclarations.every((decl) => {
151
+ if (ts.isVariableDeclaration(decl))
152
+ return decl.initializer === undefined && ambient(decl);
153
+ if (ts.isFunctionDeclaration(decl) || ts.isClassDeclaration(decl))
154
+ return ambient(decl);
155
+ return false;
156
+ });
157
+ return declaresGlobal ? name : null;
158
+ }
159
+ /** Whether `receiver` is the global object: `globalThis`, a cast of it
160
+ * (`(globalThis as T)`), or a `const` initialized with either (`const g =
161
+ * globalThis as Record<string, unknown>`). The last shape is how most
162
+ * programs spell the global object, and the runtime's dynamic global object
163
+ * answers undefined for these names. A `let` is not followed: it can be
164
+ * reassigned to another object. */
165
+ export function isGlobalObjectRead(lowerer, receiver, seen = new Set(), name = stdlibGlobalNameOf(lowerer, receiver)) {
166
+ if (name === "globalThis")
167
+ return true;
168
+ const uncast = withoutTypeCasts(receiver);
169
+ if (uncast !== receiver)
170
+ return isGlobalObjectRead(lowerer, uncast, seen);
171
+ if (!ts.isIdentifier(uncast))
172
+ return false;
173
+ const symbol = lowerer.checker.getSymbolAtLocation(uncast);
174
+ if (symbol === undefined || seen.has(symbol))
175
+ return false;
176
+ seen.add(symbol);
177
+ const decl = symbol.valueDeclaration ?? symbol.declarations?.[0];
178
+ if (decl === undefined || !ts.isVariableDeclaration(decl) || decl.initializer === undefined)
179
+ return false;
180
+ if ((ts.getCombinedNodeFlags(decl) & ts.NodeFlags.Const) === 0)
181
+ return false;
182
+ return isGlobalObjectRead(lowerer, decl.initializer, seen);
183
+ }
184
+ /** Whether `access` reads one of those globals off the global object —
185
+ * `globalThis.X`, `(globalThis as T).X`, `alias.X` (`const alias =
186
+ * globalThis`), through parentheses and type casts. */
187
+ export function hostGlobalNameOfMember(lowerer, access) {
188
+ const name = access.name.text;
189
+ if (!NODE_GLOBALS_WITHOUT_NATIVE.has(name))
190
+ return null;
191
+ return isGlobalObjectRead(lowerer, access.expression) ? name : null;
192
+ }
193
+ /** `globalThis["X"]` with a static string key: the same read as `globalThis.X`
194
+ * (the runtime's dynamic path cannot tell the name is Node's). */
195
+ export function hostGlobalNameOfElement(lowerer, access) {
196
+ const key = access.argumentExpression;
197
+ if (!ts.isStringLiteralLike(key))
198
+ return null;
199
+ if (!NODE_GLOBALS_WITHOUT_NATIVE.has(key.text))
200
+ return null;
201
+ return isGlobalObjectRead(lowerer, access.expression) ? key.text : null;
202
+ }
203
+ /** The members a read of a listed global's value answers: the function
204
+ * intrinsics every constructor carries. Node also has the class's own
205
+ * static members (`WebSocket.OPEN`, `FormData.prototype.append`) and its
206
+ * instances' methods, which native code does not provide; reading one is a
207
+ * use of that surface and refuses (SC2020, host-global) rather than
208
+ * answering undefined. */
209
+ export const HOST_GLOBAL_VALUE_MEMBERS = new Set([
210
+ "length",
211
+ "name",
212
+ "prototype",
213
+ ]);
214
+ /** The members the value's `prototype` object answers: `constructor`, the
215
+ * link back to the value, which is the same in Node. Node's prototype also
216
+ * carries the class's instance methods (`FormData.prototype.append`), which
217
+ * native code does not have; reading one refuses (SC2020, host-global). */
218
+ export const HOST_GLOBAL_PROTOTYPE_MEMBERS = new Set(["constructor"]);
219
+ /** The listed global whose `prototype` object `node` reads — a member read's
220
+ * receiver (`FormData.prototype.append`), a `const` holding that object
221
+ * (`const proto = FormData.prototype; proto.append`), or the
222
+ * `Object.setPrototypeOf` target shape. Null for every other expression. */
223
+ export function hostGlobalPrototypeOf(lowerer, node) {
224
+ return hostGlobalPrototypeOfSeen(lowerer, node, new Set());
225
+ }
226
+ function hostGlobalPrototypeOfSeen(lowerer, node, seen) {
227
+ const uncast = withoutTypeCasts(node);
228
+ // A constant holding the prototype object is the same object: member
229
+ // reads off it are as unsupported as off the read itself.
230
+ if (ts.isIdentifier(uncast)) {
231
+ const initializer = constAliasInitializer(lowerer, uncast, seen);
232
+ return initializer === null ? null : hostGlobalPrototypeOfSeen(lowerer, initializer, seen);
233
+ }
234
+ if (ts.isPropertyAccessExpression(uncast) && uncast.name.text === "prototype")
235
+ return hostGlobalNameOfReadSeen(lowerer, uncast.expression, seen);
236
+ if (ts.isElementAccessExpression(uncast) &&
237
+ ts.isStringLiteralLike(uncast.argumentExpression) &&
238
+ uncast.argumentExpression.text === "prototype")
239
+ return hostGlobalNameOfReadSeen(lowerer, uncast.expression, seen);
240
+ return null;
241
+ }
242
+ /** The listed global whose constructor value `node` holds through the
243
+ * prototype object (`FormData.prototype.constructor`), which is the same
244
+ * value the read answers. Null for every other expression. */
245
+ export function hostGlobalConstructorOfPrototype(lowerer, node) {
246
+ const uncast = withoutTypeCasts(node);
247
+ if (ts.isPropertyAccessExpression(uncast))
248
+ return uncast.name.text === "constructor"
249
+ ? hostGlobalPrototypeOf(lowerer, uncast.expression)
250
+ : null;
251
+ if (ts.isElementAccessExpression(uncast) && ts.isStringLiteralLike(uncast.argumentExpression))
252
+ return uncast.argumentExpression.text === "constructor"
253
+ ? hostGlobalPrototypeOf(lowerer, uncast.expression)
254
+ : null;
255
+ return null;
256
+ }
257
+ /** The listed global whose prototype member a call reads —
258
+ * `FormData.prototype.append(...)`, `globalThis.WebSocket["send"](...)`.
259
+ * A call reaches lowering without the member-read hook seeing the callee,
260
+ * so the call site asks the same question. Null for `constructor` and for
261
+ * every other expression. */
262
+ export function hostGlobalPrototypeMemberOf(lowerer, callee) {
263
+ const uncast = withoutTypeCasts(callee);
264
+ if (ts.isPropertyAccessExpression(uncast))
265
+ return HOST_GLOBAL_PROTOTYPE_MEMBERS.has(uncast.name.text)
266
+ ? null
267
+ : hostGlobalPrototypeOf(lowerer, uncast.expression);
268
+ if (ts.isElementAccessExpression(uncast) && ts.isStringLiteralLike(uncast.argumentExpression))
269
+ return HOST_GLOBAL_PROTOTYPE_MEMBERS.has(uncast.argumentExpression.text)
270
+ ? null
271
+ : hostGlobalPrototypeOf(lowerer, uncast.expression);
272
+ return null;
273
+ }
274
+ /** The listed global an operand reads, in any of the read forms — the
275
+ * expression itself (`typeof X`, a `new` callee, a call callee) — or the
276
+ * one a `const` holding the read answers (`const Ctor = WebSocket;
277
+ * Ctor.OPEN`). A `let` is not followed: it can be reassigned. */
278
+ export function hostGlobalNameOfRead(lowerer, operand) {
279
+ return hostGlobalNameOfReadSeen(lowerer, operand, new Set());
280
+ }
281
+ function hostGlobalNameOfReadSeen(lowerer, operand, seen) {
282
+ const unwrapped = withoutTypeCasts(operand);
283
+ if (ts.isIdentifier(unwrapped)) {
284
+ const global = hostGlobalNameOfIdentifier(lowerer, unwrapped);
285
+ if (global !== null)
286
+ return global;
287
+ const initializer = constAliasInitializer(lowerer, unwrapped, seen);
288
+ return initializer === null ? null : hostGlobalNameOfReadSeen(lowerer, initializer, seen);
289
+ }
290
+ if (ts.isPropertyAccessExpression(unwrapped))
291
+ return hostGlobalNameOfMember(lowerer, unwrapped);
292
+ if (ts.isElementAccessExpression(unwrapped))
293
+ return hostGlobalNameOfElement(lowerer, unwrapped);
294
+ return null;
295
+ }
296
+ /** The initializer of the `const` `id` names, when that constant is the
297
+ * program's own binding in a source file. Records the symbol in `seen` so a
298
+ * cycle between two constants ends the walk. */
299
+ function constAliasInitializer(lowerer, id, seen) {
300
+ const symbol = lowerer.checker.getSymbolAtLocation(id);
301
+ if (symbol === undefined || seen.has(symbol))
302
+ return null;
303
+ const declarations = symbol.declarations ?? [];
304
+ if (declarations.length !== 1)
305
+ return null;
306
+ const decl = declarations[0];
307
+ if (decl === undefined || !ts.isVariableDeclaration(decl) || decl.initializer === undefined)
308
+ return null;
309
+ if (decl.parent === undefined || (decl.parent.flags & ts.NodeFlags.Const) === 0)
310
+ return null;
311
+ if (ts.getSourceFileOfNode(decl).isDeclarationFile)
312
+ return null;
313
+ seen.add(symbol);
314
+ return decl.initializer;
315
+ }
316
+ /** The listed global a `typeof` operand reads, in any of the read forms. */
317
+ export function hostGlobalNameOfTypeofOperand(lowerer, operand) {
318
+ return hostGlobalNameOfRead(lowerer, operand);
319
+ }
320
+ /** The compiler's derived name table as the runtime's immortal
321
+ * `templateStrings` array (one per program): the runtime never carries a
322
+ * hand-copied list of host globals. */
323
+ export function hostAbsentNamesArg(loc) {
324
+ const names = [...NODE_GLOBALS_WITHOUT_NATIVE].sort();
325
+ return {
326
+ kind: "templateStrings",
327
+ key: `%hostAbsent.names:${names.join(",")}`,
328
+ cooked: names,
329
+ type: arrayOf(STRING),
330
+ loc,
331
+ };
332
+ }
333
+ /** Arms the runtime check at a dynamic site (idempotent): the runtime's
334
+ * global-object read and `in` answers throw for exactly these names. */
335
+ export function hostAbsentInstall(loc) {
336
+ return {
337
+ kind: "libCall",
338
+ fn: "global.hostAbsent",
339
+ args: [hostAbsentNamesArg(loc)],
340
+ type: VOID,
341
+ loc,
342
+ };
343
+ }
344
+ //# sourceMappingURL=host-globals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-globals.js","sourceRoot":"","sources":["../../../src/frontend/lowering/host-globals.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /* node:http2 constants — the full table Node v24.22.0 exposes as
1
+ /* node:http2 constants — the full table Node v24.22.1 exposes as
2
2
  * http2.constants (240 members: NGHTTP2_* protocol codes, NGHTTP2_ERR_*
3
3
  * library codes, HTTP2_HEADER_* names, HTTP2_METHOD_* verbs, and the
4
4
  * HTTP_STATUS_* table), generated with
@@ -752,7 +752,19 @@ export function lowerStringIteratorValue(lowerer, receiver, type, loc) {
752
752
  * conversion. */
753
753
  function generatorRetypeAdapter(lowerer, expr, expected) {
754
754
  const from = expr.type;
755
- if (from.kind !== "generator" || from.async || expected.async)
755
+ if (from.kind !== "generator")
756
+ return null;
757
+ // The adapter is the same kind of generator as its source: an async source
758
+ // resumes through promises, whose record the adapter awaits, and a sync one
759
+ // through records. Converting between the two protocols (sync iterator to
760
+ // async) is not this adapter's job.
761
+ const isAsync = from.async === true;
762
+ if (isAsync !== (expected.async === true))
763
+ return null;
764
+ // The adapter opens the source with a valueless `.next()` (as a consumer's
765
+ // first step does), so a source whose yields require a value has no
766
+ // adapter: there is no value to send.
767
+ if (from.nextT.kind !== "undefinedT" && from.nextT.kind !== "dyn")
756
768
  return null;
757
769
  if (from.yieldT.kind === "void" || expected.yieldT.kind === "void")
758
770
  return null;
@@ -798,14 +810,17 @@ function generatorRetypeAdapter(lowerer, expr, expected) {
798
810
  return null;
799
811
  if (!forwards && from.nextT.kind !== "undefinedT" && from.nextT.kind !== "dyn")
800
812
  return null;
801
- const resume = (arg) => ({
813
+ const resume = (mode, arg) => ({
802
814
  kind: "genResume",
803
- mode: "next",
815
+ mode,
804
816
  gen: source,
805
817
  arg,
806
- type: fromResult,
818
+ type: isAsync ? { kind: "promise", inner: fromResult } : fromResult,
807
819
  loc,
808
820
  });
821
+ // An async source answers a promise of the record; the adapter awaits it
822
+ // before it can read `done` and `value`. A sync one answers the record.
823
+ const settled = (e) => isAsync ? { kind: "awaitExpr", value: e, type: fromResult, loc } : e;
809
824
  const resumed = {
810
825
  kind: "yieldExpr",
811
826
  value: yielded,
@@ -818,6 +833,7 @@ function generatorRetypeAdapter(lowerer, expr, expected) {
818
833
  name,
819
834
  params: [{ localId: "source.0", name: "source", type: from }],
820
835
  returnType: expected.retT,
836
+ ...(isAsync && { async: true }),
821
837
  locals: [
822
838
  { id: "source.0", name: "source", type: from, mutable: false },
823
839
  { id: "step.0", name: "step", type: fromResult, mutable: true },
@@ -825,7 +841,7 @@ function generatorRetypeAdapter(lowerer, expr, expected) {
825
841
  { id: "resumed.0", name: "resumed", type: BOOL, mutable: true },
826
842
  ],
827
843
  body: [
828
- { kind: "varDecl", localId: "step.0", init: resume(null), loc },
844
+ { kind: "varDecl", localId: "step.0", init: settled(resume("next", null)), loc },
829
845
  ...(forwards ? [{ kind: "varDecl", localId: "sent.0", init: null, loc }] : []),
830
846
  {
831
847
  kind: "varDecl",
@@ -855,7 +871,12 @@ function generatorRetypeAdapter(lowerer, expr, expected) {
855
871
  ],
856
872
  catchBody: null,
857
873
  catchLocalId: null,
858
- // Closing the adapter early closes the source generator too.
874
+ // A close the adapter already runs on the way out of a throw
875
+ // must not replace that error, as in the for-await form.
876
+ ...(isAsync && { dropFinallyErrors: true }),
877
+ // Closing the adapter early closes the source generator too: a
878
+ // sync source through `close`, an async one by awaiting its
879
+ // `return()`.
859
880
  finallyBody: [
860
881
  {
861
882
  kind: "if",
@@ -867,18 +888,24 @@ function generatorRetypeAdapter(lowerer, expr, expected) {
867
888
  loc,
868
889
  },
869
890
  then: [
870
- {
871
- kind: "exprStmt",
872
- expr: {
873
- kind: "genResume",
874
- mode: "close",
875
- gen: source,
876
- arg: null,
877
- type: VOID,
891
+ isAsync
892
+ ? {
893
+ kind: "exprStmt",
894
+ expr: settled(resume("return", null)),
895
+ loc,
896
+ }
897
+ : {
898
+ kind: "exprStmt",
899
+ expr: {
900
+ kind: "genResume",
901
+ mode: "close",
902
+ gen: source,
903
+ arg: null,
904
+ type: VOID,
905
+ loc,
906
+ },
878
907
  loc,
879
908
  },
880
- loc,
881
- },
882
909
  ],
883
910
  else_: null,
884
911
  loc,
@@ -886,11 +913,13 @@ function generatorRetypeAdapter(lowerer, expr, expected) {
886
913
  ],
887
914
  loc,
888
915
  },
889
- { kind: "assign", localId: "step.0", value: resume(sent), loc },
916
+ { kind: "assign", localId: "step.0", value: settled(resume("next", sent)), loc },
890
917
  ],
891
918
  loc,
892
919
  },
893
920
  ],
921
+ // `async` on the lifted fn above is what makes this an async
922
+ // generator; the descriptor stays the same record for both kinds.
894
923
  generator: {
895
924
  yieldT: expected.yieldT,
896
925
  nextT: expected.nextT,