@scriptc/compiler 0.2.4 → 0.2.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 (1201) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +972 -245
  2. package/ambient/scriptc-overrides.d.ts +5 -1
  3. package/ambient/scriptc.d.ts +22 -2
  4. package/dist/backend/build-cache.d.ts +4 -0
  5. package/dist/backend/build-cache.js +16 -2
  6. package/dist/backend/build-cache.js.map +1 -1
  7. package/dist/backend/cycle-analysis.js +17 -5
  8. package/dist/backend/cycle-analysis.js.map +1 -1
  9. package/dist/backend/cycle-analysis.test.js +50 -11
  10. package/dist/backend/cycle-analysis.test.js.map +1 -1
  11. package/dist/backend/debug-symbols.js.map +1 -1
  12. package/dist/backend/executable-features.js +3 -1
  13. package/dist/backend/executable-features.js.map +1 -1
  14. package/dist/backend/external-c.d.ts +13 -6
  15. package/dist/backend/external-c.js +15 -3
  16. package/dist/backend/external-c.js.map +1 -1
  17. package/dist/backend/ffi-callbacks.js +6 -9
  18. package/dist/backend/ffi-callbacks.js.map +1 -1
  19. package/dist/backend/library-identity-markers.js.map +1 -1
  20. package/dist/backend/library-pack.d.ts +1 -1
  21. package/dist/backend/library-pack.js +81 -24
  22. package/dist/backend/library-pack.js.map +1 -1
  23. package/dist/backend/link-plan-core.d.ts +2 -0
  24. package/dist/backend/link-plan-core.js +10 -2
  25. package/dist/backend/link-plan-core.js.map +1 -1
  26. package/dist/backend/link-plan.d.ts +2 -1
  27. package/dist/backend/link-plan.js +7 -5
  28. package/dist/backend/link-plan.js.map +1 -1
  29. package/dist/backend/linker.d.ts +1 -1
  30. package/dist/backend/linker.js +42 -23
  31. package/dist/backend/linker.js.map +1 -1
  32. package/dist/backend/literals.js +5 -4
  33. package/dist/backend/literals.js.map +1 -1
  34. package/dist/backend/literals.test.js +30 -5
  35. package/dist/backend/literals.test.js.map +1 -1
  36. package/dist/backend/llvm/blocks.test.js +5 -2
  37. package/dist/backend/llvm/blocks.test.js.map +1 -1
  38. package/dist/backend/llvm/borrowed-inputs.js.map +1 -1
  39. package/dist/backend/llvm/borrowed-receivers.js +43 -19
  40. package/dist/backend/llvm/borrowed-receivers.js.map +1 -1
  41. package/dist/backend/llvm/byte-numbers.js +38 -5
  42. package/dist/backend/llvm/byte-numbers.js.map +1 -1
  43. package/dist/backend/llvm/byte-windows.d.ts +31 -0
  44. package/dist/backend/llvm/byte-windows.js +334 -0
  45. package/dist/backend/llvm/byte-windows.js.map +1 -0
  46. package/dist/backend/llvm/byte-windows.test.d.ts +1 -0
  47. package/dist/backend/llvm/byte-windows.test.js +244 -0
  48. package/dist/backend/llvm/byte-windows.test.js.map +1 -0
  49. package/dist/backend/llvm/bytes-bounds.js +73 -22
  50. package/dist/backend/llvm/bytes-bounds.js.map +1 -1
  51. package/dist/backend/llvm/call-lifetimes.d.ts +5 -2
  52. package/dist/backend/llvm/call-lifetimes.js +72 -19
  53. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  54. package/dist/backend/llvm/call-lifetimes.test.js +159 -28
  55. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  56. package/dist/backend/llvm/checked-value-lifetimes.d.ts +4 -0
  57. package/dist/backend/llvm/checked-value-lifetimes.js +14 -4
  58. package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
  59. package/dist/backend/llvm/classes.d.ts +14 -1
  60. package/dist/backend/llvm/classes.js +94 -19
  61. package/dist/backend/llvm/classes.js.map +1 -1
  62. package/dist/backend/llvm/classes.test.d.ts +1 -0
  63. package/dist/backend/llvm/classes.test.js +99 -0
  64. package/dist/backend/llvm/classes.test.js.map +1 -0
  65. package/dist/backend/llvm/common.js +4 -1
  66. package/dist/backend/llvm/common.js.map +1 -1
  67. package/dist/backend/llvm/constant-callbacks.d.ts +11 -0
  68. package/dist/backend/llvm/constant-callbacks.js +213 -0
  69. package/dist/backend/llvm/constant-callbacks.js.map +1 -0
  70. package/dist/backend/llvm/constant-callbacks.test.d.ts +1 -0
  71. package/dist/backend/llvm/constant-callbacks.test.js +124 -0
  72. package/dist/backend/llvm/constant-callbacks.test.js.map +1 -0
  73. package/dist/backend/llvm/counted-loops.js +10 -3
  74. package/dist/backend/llvm/counted-loops.js.map +1 -1
  75. package/dist/backend/llvm/debug-info.js +33 -13
  76. package/dist/backend/llvm/debug-info.js.map +1 -1
  77. package/dist/backend/llvm/debug-info.test.js +28 -6
  78. package/dist/backend/llvm/debug-info.test.js.map +1 -1
  79. package/dist/backend/llvm/dyn.d.ts +1 -1
  80. package/dist/backend/llvm/dyn.js +75 -56
  81. package/dist/backend/llvm/dyn.js.map +1 -1
  82. package/dist/backend/llvm/emitter.d.ts +28 -3
  83. package/dist/backend/llvm/emitter.js +506 -145
  84. package/dist/backend/llvm/emitter.js.map +1 -1
  85. package/dist/backend/llvm/emitter.test.js +247 -50
  86. package/dist/backend/llvm/emitter.test.js.map +1 -1
  87. package/dist/backend/llvm/expr-async.js +25 -6
  88. package/dist/backend/llvm/expr-async.js.map +1 -1
  89. package/dist/backend/llvm/expr-bytes.js +24 -4
  90. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  91. package/dist/backend/llvm/expr-callbacks.js +10 -4
  92. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  93. package/dist/backend/llvm/expr-calls.js +110 -31
  94. package/dist/backend/llvm/expr-calls.js.map +1 -1
  95. package/dist/backend/llvm/expr-containers.d.ts +2 -0
  96. package/dist/backend/llvm/expr-containers.js +112 -41
  97. package/dist/backend/llvm/expr-containers.js.map +1 -1
  98. package/dist/backend/llvm/expr-control.js +1 -3
  99. package/dist/backend/llvm/expr-control.js.map +1 -1
  100. package/dist/backend/llvm/expr-dispatch.js +3 -1
  101. package/dist/backend/llvm/expr-dispatch.js.map +1 -1
  102. package/dist/backend/llvm/expr-dynamic.js +55 -7
  103. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  104. package/dist/backend/llvm/expr-island.js +26 -6
  105. package/dist/backend/llvm/expr-island.js.map +1 -1
  106. package/dist/backend/llvm/expr-primitives.js +95 -19
  107. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  108. package/dist/backend/llvm/expr-primitives.test.js +44 -2
  109. package/dist/backend/llvm/expr-primitives.test.js.map +1 -1
  110. package/dist/backend/llvm/expr-records.js +10 -9
  111. package/dist/backend/llvm/expr-records.js.map +1 -1
  112. package/dist/backend/llvm/expr-stream-bridges.js +44 -26
  113. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  114. package/dist/backend/llvm/expr-stream-bridges.test.js +51 -14
  115. package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
  116. package/dist/backend/llvm/expr-stream-callbacks.js +34 -14
  117. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  118. package/dist/backend/llvm/integer-remainder.d.ts +7 -0
  119. package/dist/backend/llvm/integer-remainder.js +26 -0
  120. package/dist/backend/llvm/integer-remainder.js.map +1 -0
  121. package/dist/backend/llvm/integer-values.js +15 -4
  122. package/dist/backend/llvm/integer-values.js.map +1 -1
  123. package/dist/backend/llvm/integer-views.js +23 -7
  124. package/dist/backend/llvm/integer-views.js.map +1 -1
  125. package/dist/backend/llvm/integer-views.test.js +42 -7
  126. package/dist/backend/llvm/integer-views.test.js.map +1 -1
  127. package/dist/backend/llvm/layouts.js +1 -1
  128. package/dist/backend/llvm/layouts.js.map +1 -1
  129. package/dist/backend/llvm/lib-abi.js +20 -4
  130. package/dist/backend/llvm/lib-abi.js.map +1 -1
  131. package/dist/backend/llvm/lib-connect.js +7 -1
  132. package/dist/backend/llvm/lib-connect.js.map +1 -1
  133. package/dist/backend/llvm/lib-datagram.js +35 -10
  134. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  135. package/dist/backend/llvm/lib-dispatch.js +42 -38
  136. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  137. package/dist/backend/llvm/lib-filesystem.js +33 -18
  138. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  139. package/dist/backend/llvm/lib-http2.js +60 -15
  140. package/dist/backend/llvm/lib-http2.js.map +1 -1
  141. package/dist/backend/llvm/lib-lookup.js +12 -5
  142. package/dist/backend/llvm/lib-lookup.js.map +1 -1
  143. package/dist/backend/llvm/lib-network.js +97 -31
  144. package/dist/backend/llvm/lib-network.js.map +1 -1
  145. package/dist/backend/llvm/lib-process.js +57 -14
  146. package/dist/backend/llvm/lib-process.js.map +1 -1
  147. package/dist/backend/llvm/lib-shared.js +122 -31
  148. package/dist/backend/llvm/lib-shared.js.map +1 -1
  149. package/dist/backend/llvm/lib-stream.js +33 -14
  150. package/dist/backend/llvm/lib-stream.js.map +1 -1
  151. package/dist/backend/llvm/lib-test.js +21 -7
  152. package/dist/backend/llvm/lib-test.js.map +1 -1
  153. package/dist/backend/llvm/lib-tls.js +69 -20
  154. package/dist/backend/llvm/lib-tls.js.map +1 -1
  155. package/dist/backend/llvm/local-array-reads.d.ts +9 -2
  156. package/dist/backend/llvm/local-array-reads.js +176 -89
  157. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  158. package/dist/backend/llvm/local-array-reads.test.js +394 -62
  159. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  160. package/dist/backend/llvm/local-union-storage.d.ts +25 -0
  161. package/dist/backend/llvm/local-union-storage.js +109 -0
  162. package/dist/backend/llvm/local-union-storage.js.map +1 -0
  163. package/dist/backend/llvm/local-union-storage.test.d.ts +1 -0
  164. package/dist/backend/llvm/local-union-storage.test.js +210 -0
  165. package/dist/backend/llvm/local-union-storage.test.js.map +1 -0
  166. package/dist/backend/llvm/loop-array-borrows.d.ts +11 -0
  167. package/dist/backend/llvm/loop-array-borrows.js +70 -0
  168. package/dist/backend/llvm/loop-array-borrows.js.map +1 -0
  169. package/dist/backend/llvm/loop-array-borrows.test.d.ts +1 -0
  170. package/dist/backend/llvm/loop-array-borrows.test.js +145 -0
  171. package/dist/backend/llvm/loop-array-borrows.test.js.map +1 -0
  172. package/dist/backend/llvm/map-read-lifetimes.d.ts +11 -2
  173. package/dist/backend/llvm/map-read-lifetimes.js +64 -19
  174. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  175. package/dist/backend/llvm/map-read-lifetimes.test.js +89 -17
  176. package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
  177. package/dist/backend/llvm/reference-effects.d.ts +5 -3
  178. package/dist/backend/llvm/reference-effects.js +74 -36
  179. package/dist/backend/llvm/reference-effects.js.map +1 -1
  180. package/dist/backend/llvm/reference-effects.test.js +92 -9
  181. package/dist/backend/llvm/reference-effects.test.js.map +1 -1
  182. package/dist/backend/llvm/shapes.d.ts +4 -1
  183. package/dist/backend/llvm/shapes.js +82 -24
  184. package/dist/backend/llvm/shapes.js.map +1 -1
  185. package/dist/backend/llvm/shapes.test.js +3 -1
  186. package/dist/backend/llvm/shapes.test.js.map +1 -1
  187. package/dist/backend/llvm/split-loops.d.ts +48 -0
  188. package/dist/backend/llvm/split-loops.js +183 -0
  189. package/dist/backend/llvm/split-loops.js.map +1 -0
  190. package/dist/backend/llvm/split.js +4 -11
  191. package/dist/backend/llvm/split.js.map +1 -1
  192. package/dist/backend/llvm/split.test.js +80 -8
  193. package/dist/backend/llvm/split.test.js.map +1 -1
  194. package/dist/backend/llvm/stack-callbacks.d.ts +14 -0
  195. package/dist/backend/llvm/stack-callbacks.js +73 -0
  196. package/dist/backend/llvm/stack-callbacks.js.map +1 -0
  197. package/dist/backend/llvm/stack-captures.d.ts +25 -0
  198. package/dist/backend/llvm/stack-captures.js +150 -0
  199. package/dist/backend/llvm/stack-captures.js.map +1 -0
  200. package/dist/backend/llvm/stack-unions.js +14 -5
  201. package/dist/backend/llvm/stack-unions.js.map +1 -1
  202. package/dist/backend/llvm/stack-unions.test.js +151 -32
  203. package/dist/backend/llvm/stack-unions.test.js.map +1 -1
  204. package/dist/backend/llvm/string-construction.js.map +1 -1
  205. package/dist/backend/llvm/string-construction.test.js +32 -7
  206. package/dist/backend/llvm/string-construction.test.js.map +1 -1
  207. package/dist/backend/llvm/string-lifetimes.js +14 -8
  208. package/dist/backend/llvm/string-lifetimes.js.map +1 -1
  209. package/dist/backend/llvm/string-lifetimes.test.js +119 -29
  210. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  211. package/dist/backend/llvm/string-slices.d.ts +20 -0
  212. package/dist/backend/llvm/string-slices.js +87 -0
  213. package/dist/backend/llvm/string-slices.js.map +1 -0
  214. package/dist/backend/llvm/string-slices.test.d.ts +1 -0
  215. package/dist/backend/llvm/string-slices.test.js +98 -0
  216. package/dist/backend/llvm/string-slices.test.js.map +1 -0
  217. package/dist/backend/llvm/switch-dispatch.d.ts +9 -0
  218. package/dist/backend/llvm/switch-dispatch.js +114 -0
  219. package/dist/backend/llvm/switch-dispatch.js.map +1 -0
  220. package/dist/backend/llvm/switch-dispatch.test.d.ts +1 -0
  221. package/dist/backend/llvm/switch-dispatch.test.js +83 -0
  222. package/dist/backend/llvm/switch-dispatch.test.js.map +1 -0
  223. package/dist/backend/llvm/unsupported.js.map +1 -1
  224. package/dist/backend/llvm/walkers.d.ts +4 -14
  225. package/dist/backend/llvm/walkers.js +58 -313
  226. package/dist/backend/llvm/walkers.js.map +1 -1
  227. package/dist/backend/mangle.js +9 -3
  228. package/dist/backend/mangle.js.map +1 -1
  229. package/dist/backend/may-throw.js +18 -8
  230. package/dist/backend/may-throw.js.map +1 -1
  231. package/dist/backend/may-throw.test.js +119 -23
  232. package/dist/backend/may-throw.test.js.map +1 -1
  233. package/dist/backend/native/artifact-stamps.d.ts +39 -0
  234. package/dist/backend/native/artifact-stamps.js +371 -0
  235. package/dist/backend/native/artifact-stamps.js.map +1 -0
  236. package/dist/backend/native/cache-warm.d.ts +24 -0
  237. package/dist/backend/native/cache-warm.js +80 -0
  238. package/dist/backend/native/cache-warm.js.map +1 -0
  239. package/dist/backend/native/compiler-fingerprint.d.ts +19 -0
  240. package/dist/backend/native/compiler-fingerprint.js +357 -0
  241. package/dist/backend/native/compiler-fingerprint.js.map +1 -0
  242. package/dist/backend/native/contracts.d.ts +316 -0
  243. package/dist/backend/native/contracts.js +2 -0
  244. package/dist/backend/native/contracts.js.map +1 -0
  245. package/dist/backend/native/dependency-files.d.ts +5 -0
  246. package/dist/backend/native/dependency-files.js +83 -0
  247. package/dist/backend/native/dependency-files.js.map +1 -0
  248. package/dist/backend/native/driver.d.ts +50 -0
  249. package/dist/backend/native/driver.js +294 -0
  250. package/dist/backend/native/driver.js.map +1 -0
  251. package/dist/backend/native/executable.d.ts +18 -0
  252. package/dist/backend/native/executable.js +1275 -0
  253. package/dist/backend/native/executable.js.map +1 -0
  254. package/dist/backend/native/library.d.ts +2 -0
  255. package/dist/backend/native/library.js +614 -0
  256. package/dist/backend/native/library.js.map +1 -0
  257. package/dist/backend/native/linker-fingerprint.d.ts +8 -0
  258. package/dist/backend/native/linker-fingerprint.js +174 -0
  259. package/dist/backend/native/linker-fingerprint.js.map +1 -0
  260. package/dist/backend/native/object-merge.d.ts +2 -0
  261. package/dist/backend/native/object-merge.js +154 -0
  262. package/dist/backend/native/object-merge.js.map +1 -0
  263. package/dist/backend/native/process.d.ts +17 -0
  264. package/dist/backend/native/process.js +42 -0
  265. package/dist/backend/native/process.js.map +1 -0
  266. package/dist/backend/native/program-shards.d.ts +21 -0
  267. package/dist/backend/native/program-shards.js +99 -0
  268. package/dist/backend/native/program-shards.js.map +1 -0
  269. package/dist/backend/native/runtime-inputs.d.ts +12 -0
  270. package/dist/backend/native/runtime-inputs.js +165 -0
  271. package/dist/backend/native/runtime-inputs.js.map +1 -0
  272. package/dist/backend/native/runtime-inputs.test.d.ts +1 -0
  273. package/dist/backend/native/runtime-inputs.test.js +64 -0
  274. package/dist/backend/native/runtime-inputs.test.js.map +1 -0
  275. package/dist/backend/native/runtime-objects.d.ts +16 -0
  276. package/dist/backend/native/runtime-objects.js +122 -0
  277. package/dist/backend/native/runtime-objects.js.map +1 -0
  278. package/dist/backend/native/session.d.ts +12 -0
  279. package/dist/backend/native/session.js +31 -0
  280. package/dist/backend/native/session.js.map +1 -0
  281. package/dist/backend/native/tool-identity.d.ts +37 -0
  282. package/dist/backend/native/tool-identity.js +310 -0
  283. package/dist/backend/native/tool-identity.js.map +1 -0
  284. package/dist/backend/native/trace-paths.d.ts +12 -0
  285. package/dist/backend/native/trace-paths.js +73 -0
  286. package/dist/backend/native/trace-paths.js.map +1 -0
  287. package/dist/backend/native/vendor.d.ts +1 -0
  288. package/dist/backend/native/vendor.js +12 -0
  289. package/dist/backend/native/vendor.js.map +1 -0
  290. package/dist/backend/native-codegen-core.d.ts +6 -0
  291. package/dist/backend/native-codegen-core.js +23 -1
  292. package/dist/backend/native-codegen-core.js.map +1 -1
  293. package/dist/backend/native-codegen.d.ts +5 -1
  294. package/dist/backend/native-codegen.js +52 -25
  295. package/dist/backend/native-codegen.js.map +1 -1
  296. package/dist/backend/native-codegen.test.js +59 -11
  297. package/dist/backend/native-codegen.test.js.map +1 -1
  298. package/dist/backend/native-link-info-core.d.ts +1 -0
  299. package/dist/backend/native-link-info-core.js +9 -5
  300. package/dist/backend/native-link-info-core.js.map +1 -1
  301. package/dist/backend/native-link-info.js +14 -5
  302. package/dist/backend/native-link-info.js.map +1 -1
  303. package/dist/backend/native-link-info.test.js +58 -13
  304. package/dist/backend/native-link-info.test.js.map +1 -1
  305. package/dist/backend/native-toolchain.d.ts +17 -450
  306. package/dist/backend/native-toolchain.js +17 -3971
  307. package/dist/backend/native-toolchain.js.map +1 -1
  308. package/dist/backend/native-toolchain.test.js +103 -72
  309. package/dist/backend/native-toolchain.test.js.map +1 -1
  310. package/dist/backend/native-tools.d.ts +3 -1
  311. package/dist/backend/native-tools.js +30 -9
  312. package/dist/backend/native-tools.js.map +1 -1
  313. package/dist/backend/object-localize.js +17 -14
  314. package/dist/backend/object-localize.js.map +1 -1
  315. package/dist/backend/object-localize.test.js +59 -12
  316. package/dist/backend/object-localize.test.js.map +1 -1
  317. package/dist/backend/runtime-abi.d.ts +2 -2
  318. package/dist/backend/runtime-abi.js +2 -2
  319. package/dist/backend/runtime-pack-core.d.ts +1 -0
  320. package/dist/backend/runtime-pack-core.js +104 -50
  321. package/dist/backend/runtime-pack-core.js.map +1 -1
  322. package/dist/backend/runtime-pack-native.js +5 -3
  323. package/dist/backend/runtime-pack-native.js.map +1 -1
  324. package/dist/backend/runtime-pack-targets.test.js +126 -17
  325. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  326. package/dist/backend/runtime-pack.d.ts +1 -1
  327. package/dist/backend/runtime-pack.js +11 -12
  328. package/dist/backend/runtime-pack.js.map +1 -1
  329. package/dist/backend/runtime-pack.test.js +51 -25
  330. package/dist/backend/runtime-pack.test.js.map +1 -1
  331. package/dist/backend/source-locations.js.map +1 -1
  332. package/dist/backend/source-locations.test.js +7 -2
  333. package/dist/backend/source-locations.test.js.map +1 -1
  334. package/dist/backend/target-diagnostics.js +44 -14
  335. package/dist/backend/target-diagnostics.js.map +1 -1
  336. package/dist/backend/target-diagnostics.test.js +93 -20
  337. package/dist/backend/target-diagnostics.test.js.map +1 -1
  338. package/dist/backend/targets.js +230 -86
  339. package/dist/backend/targets.js.map +1 -1
  340. package/dist/backend/targets.test.js +32 -18
  341. package/dist/backend/targets.test.js.map +1 -1
  342. package/dist/backend/toolchain-environment.js +5 -1
  343. package/dist/backend/toolchain-environment.js.map +1 -1
  344. package/dist/backend/vendor-archives.d.ts +2 -2
  345. package/dist/backend/vendor-archives.js +84 -35
  346. package/dist/backend/vendor-archives.js.map +1 -1
  347. package/dist/backend/vendor-inputs.js +13 -1
  348. package/dist/backend/vendor-inputs.js.map +1 -1
  349. package/dist/backend/warm-cache.d.ts +1 -1
  350. package/dist/backend/warm-cache.js +33 -9
  351. package/dist/backend/warm-cache.js.map +1 -1
  352. package/dist/cli/command.js +39 -9
  353. package/dist/cli/command.js.map +1 -1
  354. package/dist/cli/output-options.js +14 -4
  355. package/dist/cli/output-options.js.map +1 -1
  356. package/dist/cli/paths.js.map +1 -1
  357. package/dist/cli/wasi-runner.js.map +1 -1
  358. package/dist/compat/fetch-profile.js +36 -35
  359. package/dist/compat/fetch-profile.js.map +1 -1
  360. package/dist/coverage/report.js +16 -17
  361. package/dist/coverage/report.js.map +1 -1
  362. package/dist/coverage/surface-manifest.js +112 -26
  363. package/dist/coverage/surface-manifest.js.map +1 -1
  364. package/dist/diagnostics/diagnostic.js +55 -16
  365. package/dist/diagnostics/diagnostic.js.map +1 -1
  366. package/dist/executable/executable-cache.d.ts +2 -1
  367. package/dist/executable/executable-cache.js +79 -48
  368. package/dist/executable/executable-cache.js.map +1 -1
  369. package/dist/executable/executable-cache.test.js +90 -26
  370. package/dist/executable/executable-cache.test.js.map +1 -1
  371. package/dist/executable/prepare.js +2 -2
  372. package/dist/executable/prepare.js.map +1 -1
  373. package/dist/ffi/ffi-manifest.js +78 -20
  374. package/dist/ffi/ffi-manifest.js.map +1 -1
  375. package/dist/ffi/ffi-manifest.test.js +96 -16
  376. package/dist/ffi/ffi-manifest.test.js.map +1 -1
  377. package/dist/format-integer.js.map +1 -1
  378. package/dist/frontend/analysis.js +12 -2
  379. package/dist/frontend/analysis.js.map +1 -1
  380. package/dist/frontend/arguments-usage.js.map +1 -1
  381. package/dist/frontend/binding-source.js +9 -3
  382. package/dist/frontend/binding-source.js.map +1 -1
  383. package/dist/frontend/builtin-modules.js +46 -2
  384. package/dist/frontend/builtin-modules.js.map +1 -1
  385. package/dist/frontend/cjs-resolve.js +40 -17
  386. package/dist/frontend/cjs-resolve.js.map +1 -1
  387. package/dist/frontend/cjs-syntax.js +31 -10
  388. package/dist/frontend/cjs-syntax.js.map +1 -1
  389. package/dist/frontend/comptime-node.test.js +10 -11
  390. package/dist/frontend/comptime-node.test.js.map +1 -1
  391. package/dist/frontend/dts-paths.js +7 -3
  392. package/dist/frontend/dts-paths.js.map +1 -1
  393. package/dist/frontend/fork-target.d.ts +5 -0
  394. package/dist/frontend/fork-target.js +55 -18
  395. package/dist/frontend/fork-target.js.map +1 -1
  396. package/dist/frontend/fork-target.test.d.ts +1 -0
  397. package/dist/frontend/fork-target.test.js +59 -0
  398. package/dist/frontend/fork-target.test.js.map +1 -0
  399. package/dist/frontend/function-completion.js +11 -6
  400. package/dist/frontend/function-completion.js.map +1 -1
  401. package/dist/frontend/helper-tokens.js +53 -6
  402. package/dist/frontend/helper-tokens.js.map +1 -1
  403. package/dist/frontend/helper-tokens.test.js +18 -2
  404. package/dist/frontend/helper-tokens.test.js.map +1 -1
  405. package/dist/frontend/inferred-js-diagnostics.js +32 -12
  406. package/dist/frontend/inferred-js-diagnostics.js.map +1 -1
  407. package/dist/frontend/inferred-js-diagnostics.test.js +11 -15
  408. package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -1
  409. package/dist/frontend/input-tracker.js +11 -11
  410. package/dist/frontend/input-tracker.js.map +1 -1
  411. package/dist/frontend/input-tracker.test.js +4 -1
  412. package/dist/frontend/input-tracker.test.js.map +1 -1
  413. package/dist/frontend/lib-contract.js +38 -9
  414. package/dist/frontend/lib-contract.js.map +1 -1
  415. package/dist/frontend/literal-values.js.map +1 -1
  416. package/dist/frontend/literal-values.test.js +28 -8
  417. package/dist/frontend/literal-values.test.js.map +1 -1
  418. package/dist/frontend/lowering/abstract-equality.js +53 -10
  419. package/dist/frontend/lowering/abstract-equality.js.map +1 -1
  420. package/dist/frontend/lowering/array-indexed-mutation.d.ts +1 -1
  421. package/dist/frontend/lowering/array-indexed-mutation.js +108 -106
  422. package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -1
  423. package/dist/frontend/lowering/array-values.js +37 -14
  424. package/dist/frontend/lowering/array-values.js.map +1 -1
  425. package/dist/frontend/lowering/binding-analysis.d.ts +50 -0
  426. package/dist/frontend/lowering/binding-analysis.js +376 -0
  427. package/dist/frontend/lowering/binding-analysis.js.map +1 -0
  428. package/dist/frontend/lowering/builtin-calls.d.ts +9 -0
  429. package/dist/frontend/lowering/builtin-calls.js +60 -0
  430. package/dist/frontend/lowering/builtin-calls.js.map +1 -0
  431. package/dist/frontend/lowering/builtins/arguments.d.ts +43 -0
  432. package/dist/frontend/lowering/builtins/arguments.js +247 -0
  433. package/dist/frontend/lowering/builtins/arguments.js.map +1 -0
  434. package/dist/frontend/lowering/builtins/async-context.d.ts +52 -0
  435. package/dist/frontend/lowering/builtins/async-context.js +436 -0
  436. package/dist/frontend/lowering/builtins/async-context.js.map +1 -0
  437. package/dist/frontend/lowering/builtins/atomics.d.ts +6 -0
  438. package/dist/frontend/lowering/builtins/atomics.js +82 -0
  439. package/dist/frontend/lowering/builtins/atomics.js.map +1 -0
  440. package/dist/frontend/lowering/builtins/callable-aliases.d.ts +13 -0
  441. package/dist/frontend/lowering/builtins/callable-aliases.js +87 -0
  442. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -0
  443. package/dist/frontend/lowering/builtins/child-process-async.d.ts +18 -0
  444. package/dist/frontend/lowering/builtins/child-process-async.js +245 -0
  445. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -0
  446. package/dist/frontend/lowering/builtins/child-process-methods.d.ts +21 -0
  447. package/dist/frontend/lowering/builtins/child-process-methods.js +362 -0
  448. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -0
  449. package/dist/frontend/lowering/builtins/child-process-sync.d.ts +4 -0
  450. package/dist/frontend/lowering/builtins/child-process-sync.js +639 -0
  451. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -0
  452. package/dist/frontend/lowering/builtins/child-process.d.ts +55 -0
  453. package/dist/frontend/lowering/builtins/child-process.js +669 -0
  454. package/dist/frontend/lowering/builtins/child-process.js.map +1 -0
  455. package/dist/frontend/lowering/builtins/compression.d.ts +7 -0
  456. package/dist/frontend/lowering/builtins/compression.js +115 -0
  457. package/dist/frontend/lowering/builtins/compression.js.map +1 -0
  458. package/dist/frontend/lowering/builtins/console.d.ts +10 -0
  459. package/dist/frontend/lowering/builtins/console.js +38 -0
  460. package/dist/frontend/lowering/builtins/console.js.map +1 -0
  461. package/dist/frontend/lowering/builtins/constants.d.ts +24 -0
  462. package/dist/frontend/lowering/builtins/constants.js +141 -0
  463. package/dist/frontend/lowering/builtins/constants.js.map +1 -0
  464. package/dist/frontend/lowering/builtins/crypto.d.ts +22 -0
  465. package/dist/frontend/lowering/builtins/crypto.js +517 -0
  466. package/dist/frontend/lowering/builtins/crypto.js.map +1 -0
  467. package/dist/frontend/lowering/builtins/dates.d.ts +7 -0
  468. package/dist/frontend/lowering/builtins/dates.js +101 -0
  469. package/dist/frontend/lowering/builtins/dates.js.map +1 -0
  470. package/dist/frontend/lowering/builtins/environment.d.ts +34 -0
  471. package/dist/frontend/lowering/builtins/environment.js +95 -0
  472. package/dist/frontend/lowering/builtins/environment.js.map +1 -0
  473. package/dist/frontend/lowering/builtins/errors.d.ts +14 -0
  474. package/dist/frontend/lowering/builtins/errors.js +83 -0
  475. package/dist/frontend/lowering/builtins/errors.js.map +1 -0
  476. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +35 -0
  477. package/dist/frontend/lowering/builtins/filesystem-calls.js +725 -0
  478. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -0
  479. package/dist/frontend/lowering/builtins/filesystem.d.ts +108 -0
  480. package/dist/frontend/lowering/builtins/filesystem.js +1061 -0
  481. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -0
  482. package/dist/frontend/lowering/builtins/ipc.d.ts +8 -0
  483. package/dist/frontend/lowering/builtins/ipc.js +76 -0
  484. package/dist/frontend/lowering/builtins/ipc.js.map +1 -0
  485. package/dist/frontend/lowering/builtins/json.d.ts +12 -0
  486. package/dist/frontend/lowering/builtins/json.js +387 -0
  487. package/dist/frontend/lowering/builtins/json.js.map +1 -0
  488. package/dist/frontend/lowering/builtins/module-bindings.d.ts +85 -0
  489. package/dist/frontend/lowering/builtins/module-bindings.js +346 -0
  490. package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -0
  491. package/dist/frontend/lowering/builtins/module-calls.d.ts +8 -0
  492. package/dist/frontend/lowering/builtins/module-calls.js +308 -0
  493. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -0
  494. package/dist/frontend/lowering/builtins/module-resolution.d.ts +38 -0
  495. package/dist/frontend/lowering/builtins/module-resolution.js +344 -0
  496. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -0
  497. package/dist/frontend/lowering/builtins/numbers.d.ts +15 -0
  498. package/dist/frontend/lowering/builtins/numbers.js +124 -0
  499. package/dist/frontend/lowering/builtins/numbers.js.map +1 -0
  500. package/dist/frontend/lowering/builtins/operating-system.d.ts +13 -0
  501. package/dist/frontend/lowering/builtins/operating-system.js +148 -0
  502. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -0
  503. package/dist/frontend/lowering/builtins/performance.d.ts +13 -0
  504. package/dist/frontend/lowering/builtins/performance.js +100 -0
  505. package/dist/frontend/lowering/builtins/performance.js.map +1 -0
  506. package/dist/frontend/lowering/builtins/process.d.ts +50 -0
  507. package/dist/frontend/lowering/builtins/process.js +1138 -0
  508. package/dist/frontend/lowering/builtins/process.js.map +1 -0
  509. package/dist/frontend/lowering/builtins/promises.d.ts +14 -0
  510. package/dist/frontend/lowering/builtins/promises.js +356 -0
  511. package/dist/frontend/lowering/builtins/promises.js.map +1 -0
  512. package/dist/frontend/lowering/builtins/properties.d.ts +11 -0
  513. package/dist/frontend/lowering/builtins/properties.js +186 -0
  514. package/dist/frontend/lowering/builtins/properties.js.map +1 -0
  515. package/dist/frontend/lowering/builtins/querystring.d.ts +19 -0
  516. package/dist/frontend/lowering/builtins/querystring.js +150 -0
  517. package/dist/frontend/lowering/builtins/querystring.js.map +1 -0
  518. package/dist/frontend/lowering/builtins/readline.d.ts +13 -0
  519. package/dist/frontend/lowering/builtins/readline.js +138 -0
  520. package/dist/frontend/lowering/builtins/readline.js.map +1 -0
  521. package/dist/frontend/lowering/builtins/receiver-types.d.ts +5 -0
  522. package/dist/frontend/lowering/builtins/receiver-types.js +15 -0
  523. package/dist/frontend/lowering/builtins/receiver-types.js.map +1 -0
  524. package/dist/frontend/lowering/builtins/reflection.d.ts +13 -0
  525. package/dist/frontend/lowering/builtins/reflection.js +95 -0
  526. package/dist/frontend/lowering/builtins/reflection.js.map +1 -0
  527. package/dist/frontend/lowering/builtins/strings.d.ts +14 -0
  528. package/dist/frontend/lowering/builtins/strings.js +121 -0
  529. package/dist/frontend/lowering/builtins/strings.js.map +1 -0
  530. package/dist/frontend/lowering/builtins/text-codecs.d.ts +29 -0
  531. package/dist/frontend/lowering/builtins/text-codecs.js +590 -0
  532. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -0
  533. package/dist/frontend/lowering/builtins/timers.d.ts +22 -0
  534. package/dist/frontend/lowering/builtins/timers.js +180 -0
  535. package/dist/frontend/lowering/builtins/timers.js.map +1 -0
  536. package/dist/frontend/lowering/builtins/url.d.ts +37 -0
  537. package/dist/frontend/lowering/builtins/url.js +596 -0
  538. package/dist/frontend/lowering/builtins/url.js.map +1 -0
  539. package/dist/frontend/lowering/builtins/util-types.d.ts +7 -0
  540. package/dist/frontend/lowering/builtins/util-types.js +31 -0
  541. package/dist/frontend/lowering/builtins/util-types.js.map +1 -0
  542. package/dist/frontend/lowering/builtins/workers.d.ts +5 -0
  543. package/dist/frontend/lowering/builtins/workers.js +65 -0
  544. package/dist/frontend/lowering/builtins/workers.js.map +1 -0
  545. package/dist/frontend/lowering/call-arguments.d.ts +72 -0
  546. package/dist/frontend/lowering/call-arguments.js +618 -0
  547. package/dist/frontend/lowering/call-arguments.js.map +1 -0
  548. package/dist/frontend/lowering/call-signatures.d.ts +115 -0
  549. package/dist/frontend/lowering/call-signatures.js +719 -0
  550. package/dist/frontend/lowering/call-signatures.js.map +1 -0
  551. package/dist/frontend/lowering/callback-arg.js.map +1 -1
  552. package/dist/frontend/lowering/checked-iterable-spread.js +53 -10
  553. package/dist/frontend/lowering/checked-iterable-spread.js.map +1 -1
  554. package/dist/frontend/lowering/checked-promise-all.js +41 -9
  555. package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
  556. package/dist/frontend/lowering/class-assertions.d.ts +7 -0
  557. package/dist/frontend/lowering/class-assertions.js +96 -0
  558. package/dist/frontend/lowering/class-assertions.js.map +1 -0
  559. package/dist/frontend/lowering/class-callbacks.d.ts +1 -1
  560. package/dist/frontend/lowering/class-callbacks.js +130 -27
  561. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  562. package/dist/frontend/lowering/class-construction.d.ts +1 -1
  563. package/dist/frontend/lowering/class-construction.js +247 -50
  564. package/dist/frontend/lowering/class-construction.js.map +1 -1
  565. package/dist/frontend/lowering/class-descriptors.js +109 -29
  566. package/dist/frontend/lowering/class-descriptors.js.map +1 -1
  567. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +6 -1
  568. package/dist/frontend/lowering/class-dynamic-dispatch.js +2471 -465
  569. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  570. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +284 -44
  571. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  572. package/dist/frontend/lowering/class-instance-constructor.js +17 -5
  573. package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
  574. package/dist/frontend/lowering/class-method-values.js +199 -51
  575. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  576. package/dist/frontend/lowering/class-protocols.d.ts +17 -0
  577. package/dist/frontend/lowering/class-protocols.js +126 -0
  578. package/dist/frontend/lowering/class-protocols.js.map +1 -0
  579. package/dist/frontend/lowering/class-prototypes.js +345 -86
  580. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  581. package/dist/frontend/lowering/class-runtime-statics.d.ts +1 -1
  582. package/dist/frontend/lowering/class-runtime-statics.js +80 -17
  583. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -1
  584. package/dist/frontend/lowering/class-static-data.js +76 -16
  585. package/dist/frontend/lowering/class-static-data.js.map +1 -1
  586. package/dist/frontend/lowering/coercions/builders.d.ts +13 -0
  587. package/dist/frontend/lowering/coercions/builders.js +77 -0
  588. package/dist/frontend/lowering/coercions/builders.js.map +1 -0
  589. package/dist/frontend/lowering/coercions/function-adapters.d.ts +58 -0
  590. package/dist/frontend/lowering/coercions/function-adapters.js +430 -0
  591. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -0
  592. package/dist/frontend/lowering/coercions/island.d.ts +37 -0
  593. package/dist/frontend/lowering/coercions/island.js +350 -0
  594. package/dist/frontend/lowering/coercions/island.js.map +1 -0
  595. package/dist/frontend/lowering/coercions/state.d.ts +14 -0
  596. package/dist/frontend/lowering/coercions/state.js +16 -0
  597. package/dist/frontend/lowering/coercions/state.js.map +1 -0
  598. package/dist/frontend/lowering/coercions/structural-plans.d.ts +40 -0
  599. package/dist/frontend/lowering/coercions/structural-plans.js +447 -0
  600. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -0
  601. package/dist/frontend/lowering/coercions/structural.d.ts +63 -0
  602. package/dist/frontend/lowering/coercions/structural.js +616 -0
  603. package/dist/frontend/lowering/coercions/structural.js.map +1 -0
  604. package/dist/frontend/lowering/coercions/unions.d.ts +65 -0
  605. package/dist/frontend/lowering/coercions/unions.js +318 -0
  606. package/dist/frontend/lowering/coercions/unions.js.map +1 -0
  607. package/dist/frontend/lowering/collection-ingestion.js +355 -72
  608. package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
  609. package/dist/frontend/lowering/containers/array-callbacks.d.ts +88 -0
  610. package/dist/frontend/lowering/containers/array-callbacks.js +1611 -0
  611. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -0
  612. package/dist/frontend/lowering/containers/array-construction.d.ts +42 -0
  613. package/dist/frontend/lowering/containers/array-construction.js +1044 -0
  614. package/dist/frontend/lowering/containers/array-construction.js.map +1 -0
  615. package/dist/frontend/lowering/containers/array-iteration.d.ts +16 -0
  616. package/dist/frontend/lowering/containers/array-iteration.js +95 -0
  617. package/dist/frontend/lowering/containers/array-iteration.js.map +1 -0
  618. package/dist/frontend/lowering/containers/array-methods.d.ts +27 -0
  619. package/dist/frontend/lowering/containers/array-methods.js +1854 -0
  620. package/dist/frontend/lowering/containers/array-methods.js.map +1 -0
  621. package/dist/frontend/lowering/containers/bytes.d.ts +17 -17
  622. package/dist/frontend/lowering/containers/bytes.js +430 -138
  623. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  624. package/dist/frontend/lowering/containers/callback-arguments.d.ts +26 -0
  625. package/dist/frontend/lowering/containers/callback-arguments.js +179 -0
  626. package/dist/frontend/lowering/containers/callback-arguments.js.map +1 -0
  627. package/dist/frontend/lowering/containers/collection-grouping.d.ts +19 -0
  628. package/dist/frontend/lowering/containers/collection-grouping.js +297 -0
  629. package/dist/frontend/lowering/containers/collection-grouping.js.map +1 -0
  630. package/dist/frontend/lowering/containers/collection-methods.d.ts +57 -0
  631. package/dist/frontend/lowering/containers/collection-methods.js +1314 -0
  632. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -0
  633. package/dist/frontend/lowering/containers/dynamic-receivers.d.ts +18 -0
  634. package/dist/frontend/lowering/containers/dynamic-receivers.js +114 -0
  635. package/dist/frontend/lowering/containers/dynamic-receivers.js.map +1 -0
  636. package/dist/frontend/lowering/containers/for-of.d.ts +60 -0
  637. package/dist/frontend/lowering/containers/for-of.js +643 -0
  638. package/dist/frontend/lowering/containers/for-of.js.map +1 -0
  639. package/dist/frontend/lowering/containers/indexed-objects.d.ts +132 -0
  640. package/dist/frontend/lowering/containers/indexed-objects.js +1743 -0
  641. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -0
  642. package/dist/frontend/lowering/containers/iterator-helpers.d.ts +20 -0
  643. package/dist/frontend/lowering/containers/iterator-helpers.js +809 -0
  644. package/dist/frontend/lowering/containers/iterator-helpers.js.map +1 -0
  645. package/dist/frontend/lowering/containers/string-and-regexp.js +601 -160
  646. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  647. package/dist/frontend/lowering/containers/string-replacement.js +213 -63
  648. package/dist/frontend/lowering/containers/string-replacement.js.map +1 -1
  649. package/dist/frontend/lowering/crypto-tables.js +263 -64
  650. package/dist/frontend/lowering/crypto-tables.js.map +1 -1
  651. package/dist/frontend/lowering/deferred-module-initializers.js +172 -68
  652. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  653. package/dist/frontend/lowering/deferred-module-initializers.test.js +41 -8
  654. package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
  655. package/dist/frontend/lowering/error-methods.js +339 -65
  656. package/dist/frontend/lowering/error-methods.js.map +1 -1
  657. package/dist/frontend/lowering/expressions/evaluation-safety.js +3 -2
  658. package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
  659. package/dist/frontend/lowering/expressions/global-symbols.js +2 -1
  660. package/dist/frontend/lowering/expressions/global-symbols.js.map +1 -1
  661. package/dist/frontend/lowering/expressions/native-proxy.js +11 -5
  662. package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
  663. package/dist/frontend/lowering/expressions/nullish-assignment.js +67 -13
  664. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  665. package/dist/frontend/lowering/expressions/object-literals.js +588 -165
  666. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  667. package/dist/frontend/lowering/expressions/optional-chains.d.ts +1 -1
  668. package/dist/frontend/lowering/expressions/optional-chains.js +68 -17
  669. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  670. package/dist/frontend/lowering/expressions/union-field-write.js +45 -18
  671. package/dist/frontend/lowering/expressions/union-field-write.js.map +1 -1
  672. package/dist/frontend/lowering/function-context.js +5 -1
  673. package/dist/frontend/lowering/function-context.js.map +1 -1
  674. package/dist/frontend/lowering/function-returns.d.ts +67 -0
  675. package/dist/frontend/lowering/function-returns.js +392 -0
  676. package/dist/frontend/lowering/function-returns.js.map +1 -0
  677. package/dist/frontend/lowering/generator-delegation.d.ts +1 -1
  678. package/dist/frontend/lowering/generator-delegation.js +171 -39
  679. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  680. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +1 -1
  681. package/dist/frontend/lowering/generator-dynamic-dispatch.js +176 -36
  682. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
  683. package/dist/frontend/lowering/generic-functions.d.ts +271 -0
  684. package/dist/frontend/lowering/generic-functions.js +1730 -0
  685. package/dist/frontend/lowering/generic-functions.js.map +1 -0
  686. package/dist/frontend/lowering/import-meta.d.ts +1 -1
  687. package/dist/frontend/lowering/import-meta.js +37 -14
  688. package/dist/frontend/lowering/import-meta.js.map +1 -1
  689. package/dist/frontend/lowering/indexed-comparison.js +6 -2
  690. package/dist/frontend/lowering/indexed-comparison.js.map +1 -1
  691. package/dist/frontend/lowering/instantiation-path.d.ts +8 -0
  692. package/dist/frontend/lowering/instantiation-path.js +10 -0
  693. package/dist/frontend/lowering/instantiation-path.js.map +1 -0
  694. package/dist/frontend/lowering/instantiation-path.test.d.ts +1 -0
  695. package/dist/frontend/lowering/instantiation-path.test.js +23 -0
  696. package/dist/frontend/lowering/instantiation-path.test.js.map +1 -0
  697. package/dist/frontend/lowering/iterator-consumption.d.ts +9 -0
  698. package/dist/frontend/lowering/iterator-consumption.js +91 -0
  699. package/dist/frontend/lowering/iterator-consumption.js.map +1 -0
  700. package/dist/frontend/lowering/lib-boundary.js +40 -17
  701. package/dist/frontend/lowering/lib-boundary.js.map +1 -1
  702. package/dist/frontend/lowering/lib-boundary.test.js +49 -11
  703. package/dist/frontend/lowering/lib-boundary.test.js.map +1 -1
  704. package/dist/frontend/lowering/lower-array-sort.d.ts +0 -19
  705. package/dist/frontend/lowering/lower-array-sort.js +331 -566
  706. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  707. package/dist/frontend/lowering/lower-assert.js +248 -43
  708. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  709. package/dist/frontend/lowering/lower-async-iteration.js +71 -16
  710. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  711. package/dist/frontend/lowering/lower-builtin-values.js +430 -77
  712. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  713. package/dist/frontend/lowering/lower-calls.d.ts +39 -558
  714. package/dist/frontend/lowering/lower-calls.js +2628 -5669
  715. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  716. package/dist/frontend/lowering/lower-classes.d.ts +248 -242
  717. package/dist/frontend/lowering/lower-classes.js +1820 -775
  718. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  719. package/dist/frontend/lowering/lower-comptime.d.ts +35 -35
  720. package/dist/frontend/lowering/lower-comptime.js +39 -37
  721. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  722. package/dist/frontend/lowering/lower-dgram.js +59 -31
  723. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  724. package/dist/frontend/lowering/lower-enums.js +5 -2
  725. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  726. package/dist/frontend/lowering/lower-event-emitter.js +323 -86
  727. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  728. package/dist/frontend/lowering/lower-expando.js +19 -7
  729. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  730. package/dist/frontend/lowering/lower-exprs.d.ts +194 -194
  731. package/dist/frontend/lowering/lower-exprs.js +3473 -1160
  732. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  733. package/dist/frontend/lowering/lower-functions.d.ts +23 -0
  734. package/dist/frontend/lowering/lower-functions.js +449 -0
  735. package/dist/frontend/lowering/lower-functions.js.map +1 -0
  736. package/dist/frontend/lowering/lower-generators.js +121 -32
  737. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  738. package/dist/frontend/lowering/lower-global-value.js +15 -4
  739. package/dist/frontend/lowering/lower-global-value.js.map +1 -1
  740. package/dist/frontend/lowering/lower-inspect.js +479 -89
  741. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  742. package/dist/frontend/lowering/lower-island.d.ts +79 -79
  743. package/dist/frontend/lowering/lower-island.js +366 -274
  744. package/dist/frontend/lowering/lower-island.js.map +1 -1
  745. package/dist/frontend/lowering/lower-island.test.js +7 -2
  746. package/dist/frontend/lowering/lower-island.test.js.map +1 -1
  747. package/dist/frontend/lowering/lower-mixins.js +17 -8
  748. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  749. package/dist/frontend/lowering/lower-modules.d.ts +95 -94
  750. package/dist/frontend/lowering/lower-modules.js +655 -329
  751. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  752. package/dist/frontend/lowering/lower-modules.test.js +91 -20
  753. package/dist/frontend/lowering/lower-modules.test.js.map +1 -1
  754. package/dist/frontend/lowering/lower-namespaces.js +25 -8
  755. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  756. package/dist/frontend/lowering/lower-node-module.js +115 -34
  757. package/dist/frontend/lowering/lower-node-module.js.map +1 -1
  758. package/dist/frontend/lowering/lower-server.js +1210 -290
  759. package/dist/frontend/lowering/lower-server.js.map +1 -1
  760. package/dist/frontend/lowering/lower-stmts.d.ts +148 -148
  761. package/dist/frontend/lowering/lower-stmts.js +2324 -994
  762. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  763. package/dist/frontend/lowering/lower-stmts.test.js +13 -5
  764. package/dist/frontend/lowering/lower-stmts.test.js.map +1 -1
  765. package/dist/frontend/lowering/lower-stream.js +363 -91
  766. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  767. package/dist/frontend/lowering/lower-system-errors.js +30 -8
  768. package/dist/frontend/lowering/lower-system-errors.js.map +1 -1
  769. package/dist/frontend/lowering/lower-test.js +40 -13
  770. package/dist/frontend/lowering/lower-test.js.map +1 -1
  771. package/dist/frontend/lowering/lower-timers.d.ts +31 -0
  772. package/dist/frontend/lowering/lower-timers.js +336 -0
  773. package/dist/frontend/lowering/lower-timers.js.map +1 -0
  774. package/dist/frontend/lowering/lower-url.d.ts +1 -1
  775. package/dist/frontend/lowering/lower-url.js +46 -13
  776. package/dist/frontend/lowering/lower-url.js.map +1 -1
  777. package/dist/frontend/lowering/lowerer.d.ts +34 -352
  778. package/dist/frontend/lowering/lowerer.js +1074 -2712
  779. package/dist/frontend/lowering/lowerer.js.map +1 -1
  780. package/dist/frontend/lowering/lowerer.test.js +85 -17
  781. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  782. package/dist/frontend/lowering/module-namespace-elements.js +43 -8
  783. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -1
  784. package/dist/frontend/lowering/native-ffi.d.ts +21 -1
  785. package/dist/frontend/lowering/native-ffi.js +487 -18
  786. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  787. package/dist/frontend/lowering/object-enumeration-receiver.js +55 -10
  788. package/dist/frontend/lowering/object-enumeration-receiver.js.map +1 -1
  789. package/dist/frontend/lowering/object-factory-new.d.ts +1 -1
  790. package/dist/frontend/lowering/object-factory-new.js +36 -11
  791. package/dist/frontend/lowering/object-factory-new.js.map +1 -1
  792. package/dist/frontend/lowering/optional-arguments.js +49 -20
  793. package/dist/frontend/lowering/optional-arguments.js.map +1 -1
  794. package/dist/frontend/lowering/pairs-snapshot.js +66 -14
  795. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
  796. package/dist/frontend/lowering/runtime-optional-locals.js +3 -1
  797. package/dist/frontend/lowering/runtime-optional-locals.js.map +1 -1
  798. package/dist/frontend/lowering/runtime-optional-locals.test.js.map +1 -1
  799. package/dist/frontend/lowering/sanitize-class-types.js +4 -1
  800. package/dist/frontend/lowering/sanitize-class-types.js.map +1 -1
  801. package/dist/frontend/lowering/sanitize-class-types.test.js +86 -18
  802. package/dist/frontend/lowering/sanitize-class-types.test.js.map +1 -1
  803. package/dist/frontend/lowering/split-consumers.d.ts +7 -0
  804. package/dist/frontend/lowering/split-consumers.js +64 -0
  805. package/dist/frontend/lowering/split-consumers.js.map +1 -0
  806. package/dist/frontend/lowering/static-this.js +13 -6
  807. package/dist/frontend/lowering/static-this.js.map +1 -1
  808. package/dist/frontend/lowering/string-index.js +32 -10
  809. package/dist/frontend/lowering/string-index.js.map +1 -1
  810. package/dist/frontend/lowering/surfaces.d.ts +45 -46
  811. package/dist/frontend/lowering/surfaces.js +1129 -256
  812. package/dist/frontend/lowering/surfaces.js.map +1 -1
  813. package/dist/frontend/lowering/symbol-fields.js +40 -15
  814. package/dist/frontend/lowering/symbol-fields.js.map +1 -1
  815. package/dist/frontend/lowering/symbol-methods.js.map +1 -1
  816. package/dist/frontend/lowering/text-decoder-encoding.js +236 -24
  817. package/dist/frontend/lowering/text-decoder-encoding.js.map +1 -1
  818. package/dist/frontend/lowering/text-decoder-encoding.test.js +84 -12
  819. package/dist/frontend/lowering/text-decoder-encoding.test.js.map +1 -1
  820. package/dist/frontend/lowering/union-narrow.js +59 -16
  821. package/dist/frontend/lowering/union-narrow.js.map +1 -1
  822. package/dist/frontend/lowering/union-narrow.test.js +24 -7
  823. package/dist/frontend/lowering/union-narrow.test.js.map +1 -1
  824. package/dist/frontend/lowering/union-retag.js +155 -40
  825. package/dist/frontend/lowering/union-retag.js.map +1 -1
  826. package/dist/frontend/lowering/union-retag.test.js +131 -33
  827. package/dist/frontend/lowering/union-retag.test.js.map +1 -1
  828. package/dist/frontend/lowering/unregistered-class-types.js.map +1 -1
  829. package/dist/frontend/lowering/unregistered-class-types.test.js +34 -8
  830. package/dist/frontend/lowering/unregistered-class-types.test.js.map +1 -1
  831. package/dist/frontend/module-source-candidates.d.ts +10 -0
  832. package/dist/frontend/module-source-candidates.js +40 -0
  833. package/dist/frontend/module-source-candidates.js.map +1 -0
  834. package/dist/frontend/module-source-candidates.test.d.ts +1 -0
  835. package/dist/frontend/module-source-candidates.test.js +53 -0
  836. package/dist/frontend/module-source-candidates.test.js.map +1 -0
  837. package/dist/frontend/module-syntax.js +21 -8
  838. package/dist/frontend/module-syntax.js.map +1 -1
  839. package/dist/frontend/module-syntax.test.js +37 -13
  840. package/dist/frontend/module-syntax.test.js.map +1 -1
  841. package/dist/frontend/npm-fetch-analysis.js +13 -4
  842. package/dist/frontend/npm-fetch-analysis.js.map +1 -1
  843. package/dist/frontend/npm-fetch-analysis.test.js +33 -10
  844. package/dist/frontend/npm-fetch-analysis.test.js.map +1 -1
  845. package/dist/frontend/npm-fetch-node.js.map +1 -1
  846. package/dist/frontend/npm-fetch-syntax.js +4 -9
  847. package/dist/frontend/npm-fetch-syntax.js.map +1 -1
  848. package/dist/frontend/npm-node.js +3 -1
  849. package/dist/frontend/npm-node.js.map +1 -1
  850. package/dist/frontend/npm-static-bundled-cjs.js +88 -29
  851. package/dist/frontend/npm-static-bundled-cjs.js.map +1 -1
  852. package/dist/frontend/npm-static-bundled-cjs.test.js +29 -10
  853. package/dist/frontend/npm-static-bundled-cjs.test.js.map +1 -1
  854. package/dist/frontend/npm-static-declaration-syntax.js +148 -56
  855. package/dist/frontend/npm-static-declaration-syntax.js.map +1 -1
  856. package/dist/frontend/npm-static-declarations.d.ts +1 -1
  857. package/dist/frontend/npm-static-declarations.js.map +1 -1
  858. package/dist/frontend/npm-static-declarations.test.js +33 -7
  859. package/dist/frontend/npm-static-declarations.test.js.map +1 -1
  860. package/dist/frontend/npm-static-prune.js +26 -12
  861. package/dist/frontend/npm-static-prune.js.map +1 -1
  862. package/dist/frontend/npm-static-prune.test.js +17 -3
  863. package/dist/frontend/npm-static-prune.test.js.map +1 -1
  864. package/dist/frontend/npm-static-rewrite-host.js +2 -3
  865. package/dist/frontend/npm-static-rewrite-host.js.map +1 -1
  866. package/dist/frontend/npm-static-rewrite-syntax.js +64 -21
  867. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  868. package/dist/frontend/npm-static-rewrite.js.map +1 -1
  869. package/dist/frontend/npm-static-subtyping.js +9 -4
  870. package/dist/frontend/npm-static-subtyping.js.map +1 -1
  871. package/dist/frontend/npm-static-subtyping.test.js +30 -6
  872. package/dist/frontend/npm-static-subtyping.test.js.map +1 -1
  873. package/dist/frontend/npm-static.js +15 -4
  874. package/dist/frontend/npm-static.js.map +1 -1
  875. package/dist/frontend/npm.js +122 -36
  876. package/dist/frontend/npm.js.map +1 -1
  877. package/dist/frontend/npm.test.js +30 -10
  878. package/dist/frontend/npm.test.js.map +1 -1
  879. package/dist/frontend/pipeline-native.js.map +1 -1
  880. package/dist/frontend/pipeline.js +25 -8
  881. package/dist/frontend/pipeline.js.map +1 -1
  882. package/dist/frontend/pipeline.test.js +21 -7
  883. package/dist/frontend/pipeline.test.js.map +1 -1
  884. package/dist/frontend/program-analysis.d.ts +2 -0
  885. package/dist/frontend/program-analysis.js +2 -0
  886. package/dist/frontend/program-analysis.js.map +1 -1
  887. package/dist/frontend/program-node.js +5 -3
  888. package/dist/frontend/program-node.js.map +1 -1
  889. package/dist/frontend/program.d.ts +2 -2
  890. package/dist/frontend/program.js +248 -127
  891. package/dist/frontend/program.js.map +1 -1
  892. package/dist/frontend/program.test.js +27 -27
  893. package/dist/frontend/program.test.js.map +1 -1
  894. package/dist/frontend/provenance-core.js +8 -4
  895. package/dist/frontend/provenance-core.js.map +1 -1
  896. package/dist/frontend/provenance-registry.js +1 -4
  897. package/dist/frontend/provenance-registry.js.map +1 -1
  898. package/dist/frontend/resolve.js +32 -20
  899. package/dist/frontend/resolve.js.map +1 -1
  900. package/dist/frontend/resolve.test.js +1 -1
  901. package/dist/frontend/resolve.test.js.map +1 -1
  902. package/dist/frontend/runtime-resolve.js +13 -4
  903. package/dist/frontend/runtime-resolve.js.map +1 -1
  904. package/dist/frontend/runtime-resolve.test.js +25 -9
  905. package/dist/frontend/runtime-resolve.test.js.map +1 -1
  906. package/dist/frontend/services-node.js +6 -2
  907. package/dist/frontend/services-node.js.map +1 -1
  908. package/dist/frontend/services-node.test.js +18 -6
  909. package/dist/frontend/services-node.test.js.map +1 -1
  910. package/dist/frontend/services.js +8 -4
  911. package/dist/frontend/services.js.map +1 -1
  912. package/dist/frontend/services.test.js +6 -2
  913. package/dist/frontend/services.test.js.map +1 -1
  914. package/dist/frontend/ts7/api.js +12 -4
  915. package/dist/frontend/ts7/api.js.map +1 -1
  916. package/dist/frontend/ts7/ast-bytes.js +10 -3
  917. package/dist/frontend/ts7/ast-bytes.js.map +1 -1
  918. package/dist/frontend/ts7/ast-bytes.test.js +23 -4
  919. package/dist/frontend/ts7/ast-bytes.test.js.map +1 -1
  920. package/dist/frontend/ts7/ast-guards.test.js +14 -5
  921. package/dist/frontend/ts7/ast-guards.test.js.map +1 -1
  922. package/dist/frontend/ts7/ast-node.d.ts +6 -1
  923. package/dist/frontend/ts7/ast-node.js +490 -172
  924. package/dist/frontend/ts7/ast-node.js.map +1 -1
  925. package/dist/frontend/ts7/ast-node.test.js +150 -36
  926. package/dist/frontend/ts7/ast-node.test.js.map +1 -1
  927. package/dist/frontend/ts7/ast-text.js +13 -3
  928. package/dist/frontend/ts7/ast-text.js.map +1 -1
  929. package/dist/frontend/ts7/ast-text.test.js.map +1 -1
  930. package/dist/frontend/ts7/ast-types.js.map +1 -1
  931. package/dist/frontend/ts7/ast-wire.d.ts +5 -1
  932. package/dist/frontend/ts7/ast-wire.js +83 -20
  933. package/dist/frontend/ts7/ast-wire.js.map +1 -1
  934. package/dist/frontend/ts7/ast-wire.test.js +53 -8
  935. package/dist/frontend/ts7/ast-wire.test.js.map +1 -1
  936. package/dist/frontend/ts7/ast.d.ts +2 -1
  937. package/dist/frontend/ts7/ast.js +53 -30
  938. package/dist/frontend/ts7/ast.js.map +1 -1
  939. package/dist/frontend/ts7/census-check.js +1 -1
  940. package/dist/frontend/ts7/census-check.js.map +1 -1
  941. package/dist/frontend/ts7/checker-cache.js.map +1 -1
  942. package/dist/frontend/ts7/checker.d.ts +8 -2
  943. package/dist/frontend/ts7/checker.js +46 -8
  944. package/dist/frontend/ts7/checker.js.map +1 -1
  945. package/dist/frontend/ts7/checker.test.js +96 -17
  946. package/dist/frontend/ts7/checker.test.js.map +1 -1
  947. package/dist/frontend/ts7/enums.test.js +9 -4
  948. package/dist/frontend/ts7/enums.test.js.map +1 -1
  949. package/dist/frontend/ts7/native-api.js.map +1 -1
  950. package/dist/frontend/ts7/native-host.js.map +1 -1
  951. package/dist/frontend/ts7/native-process.js +9 -3
  952. package/dist/frontend/ts7/native-process.js.map +1 -1
  953. package/dist/frontend/ts7/program-adapter.js +1 -1
  954. package/dist/frontend/ts7/program-adapter.js.map +1 -1
  955. package/dist/frontend/ts7/program-host.d.ts +7 -0
  956. package/dist/frontend/ts7/program-host.js +33 -6
  957. package/dist/frontend/ts7/program-host.js.map +1 -1
  958. package/dist/frontend/ts7/program-host.test.js +72 -11
  959. package/dist/frontend/ts7/program-host.test.js.map +1 -1
  960. package/dist/frontend/ts7/rpc-api.js +3 -1
  961. package/dist/frontend/ts7/rpc-api.js.map +1 -1
  962. package/dist/frontend/ts7/rpc-client.js +15 -5
  963. package/dist/frontend/ts7/rpc-client.js.map +1 -1
  964. package/dist/frontend/ts7/rpc-client.test.js +26 -8
  965. package/dist/frontend/ts7/rpc-client.test.js.map +1 -1
  966. package/dist/frontend/ts7/rpc-filesystem.js.map +1 -1
  967. package/dist/frontend/ts7/rpc-filesystem.test.js +43 -10
  968. package/dist/frontend/ts7/rpc-filesystem.test.js.map +1 -1
  969. package/dist/frontend/ts7/rpc-process.js +16 -6
  970. package/dist/frontend/ts7/rpc-process.js.map +1 -1
  971. package/dist/frontend/ts7/rpc-process.test.js.map +1 -1
  972. package/dist/frontend/ts7/rpc-wire.d.ts +1 -0
  973. package/dist/frontend/ts7/rpc-wire.js +41 -14
  974. package/dist/frontend/ts7/rpc-wire.js.map +1 -1
  975. package/dist/frontend/ts7/rpc-wire.test.js +36 -6
  976. package/dist/frontend/ts7/rpc-wire.test.js.map +1 -1
  977. package/dist/frontend/ts7/semantic-checker.js +209 -68
  978. package/dist/frontend/ts7/semantic-checker.js.map +1 -1
  979. package/dist/frontend/ts7/semantic-checker.test.js +29 -14
  980. package/dist/frontend/ts7/semantic-checker.test.js.map +1 -1
  981. package/dist/frontend/ts7/semantic-json.js +7 -1
  982. package/dist/frontend/ts7/semantic-json.js.map +1 -1
  983. package/dist/frontend/ts7/semantic-json.test.js +17 -3
  984. package/dist/frontend/ts7/semantic-json.test.js.map +1 -1
  985. package/dist/frontend/ts7/semantic-model.js +147 -51
  986. package/dist/frontend/ts7/semantic-model.js.map +1 -1
  987. package/dist/frontend/ts7/semantic-model.test.js +72 -19
  988. package/dist/frontend/ts7/semantic-model.test.js.map +1 -1
  989. package/dist/frontend/ts7/semantic-types.d.ts +2 -2
  990. package/dist/frontend/ts7/session-cache.js +10 -3
  991. package/dist/frontend/ts7/session-cache.js.map +1 -1
  992. package/dist/frontend/ts7/session-cache.test.js +13 -4
  993. package/dist/frontend/ts7/session-cache.test.js.map +1 -1
  994. package/dist/frontend/ts7/session-path.js +25 -10
  995. package/dist/frontend/ts7/session-path.js.map +1 -1
  996. package/dist/frontend/ts7/session-path.test.js +47 -4
  997. package/dist/frontend/ts7/session-path.test.js.map +1 -1
  998. package/dist/frontend/ts7/session-timing.js +22 -3
  999. package/dist/frontend/ts7/session-timing.js.map +1 -1
  1000. package/dist/frontend/ts7/session-timing.test.js +12 -3
  1001. package/dist/frontend/ts7/session-timing.test.js.map +1 -1
  1002. package/dist/frontend/ts7/session.d.ts +1 -0
  1003. package/dist/frontend/ts7/session.js +109 -35
  1004. package/dist/frontend/ts7/session.js.map +1 -1
  1005. package/dist/frontend/ts7/session.test.js +69 -15
  1006. package/dist/frontend/ts7/session.test.js.map +1 -1
  1007. package/dist/frontend/ts7/source-parser.js +17 -6
  1008. package/dist/frontend/ts7/source-parser.js.map +1 -1
  1009. package/dist/frontend/ts7/source-parser.test.js +32 -9
  1010. package/dist/frontend/ts7/source-parser.test.js.map +1 -1
  1011. package/dist/frontend/tsc-codes.js +56 -11
  1012. package/dist/frontend/tsc-codes.js.map +1 -1
  1013. package/dist/frontend/tsc-codes.test.d.ts +1 -0
  1014. package/dist/frontend/tsc-codes.test.js +16 -0
  1015. package/dist/frontend/tsc-codes.test.js.map +1 -0
  1016. package/dist/frontend/type-mapper.d.ts +3 -0
  1017. package/dist/frontend/type-mapper.js +589 -206
  1018. package/dist/frontend/type-mapper.js.map +1 -1
  1019. package/dist/frontend/type-mapper.test.js +108 -33
  1020. package/dist/frontend/type-mapper.test.js.map +1 -1
  1021. package/dist/frontend/union-discriminants.js +8 -2
  1022. package/dist/frontend/union-discriminants.js.map +1 -1
  1023. package/dist/frontend/union-discriminants.test.js +77 -20
  1024. package/dist/frontend/union-discriminants.test.js.map +1 -1
  1025. package/dist/frontend/worker-target.d.ts +6 -0
  1026. package/dist/frontend/worker-target.js +108 -0
  1027. package/dist/frontend/worker-target.js.map +1 -0
  1028. package/dist/frontend/worker-target.test.d.ts +1 -0
  1029. package/dist/frontend/worker-target.test.js +71 -0
  1030. package/dist/frontend/worker-target.test.js.map +1 -0
  1031. package/dist/index.d.ts +9 -8
  1032. package/dist/index.js +174 -88
  1033. package/dist/index.js.map +1 -1
  1034. package/dist/ir/analysis.js +95 -38
  1035. package/dist/ir/analysis.js.map +1 -1
  1036. package/dist/ir/analysis.test.js +91 -15
  1037. package/dist/ir/analysis.test.js.map +1 -1
  1038. package/dist/ir/api.d.ts +4 -0
  1039. package/dist/ir/api.js +6 -0
  1040. package/dist/ir/api.js.map +1 -0
  1041. package/dist/ir/build.d.ts +7 -0
  1042. package/dist/ir/build.js +27 -1
  1043. package/dist/ir/build.js.map +1 -1
  1044. package/dist/ir/builtin-effects.d.ts +9 -0
  1045. package/dist/ir/builtin-effects.js +643 -0
  1046. package/dist/ir/builtin-effects.js.map +1 -0
  1047. package/dist/ir/builtin-signatures.d.ts +15 -0
  1048. package/dist/ir/builtin-signatures.js +3397 -0
  1049. package/dist/ir/builtin-signatures.js.map +1 -0
  1050. package/dist/ir/byte-numbers.js +67 -16
  1051. package/dist/ir/byte-numbers.js.map +1 -1
  1052. package/dist/ir/byte-numbers.test.js +17 -4
  1053. package/dist/ir/byte-numbers.test.js.map +1 -1
  1054. package/dist/ir/constant-tables.js +13 -5
  1055. package/dist/ir/constant-tables.js.map +1 -1
  1056. package/dist/ir/constant-tables.test.js +47 -7
  1057. package/dist/ir/constant-tables.test.js.map +1 -1
  1058. package/dist/ir/control-flow.js +2 -1
  1059. package/dist/ir/control-flow.js.map +1 -1
  1060. package/dist/ir/control-flow.test.js +35 -11
  1061. package/dist/ir/control-flow.test.js.map +1 -1
  1062. package/dist/ir/initializer-bindings.d.ts +9 -0
  1063. package/dist/ir/initializer-bindings.js +115 -0
  1064. package/dist/ir/initializer-bindings.js.map +1 -0
  1065. package/dist/ir/initializer-bindings.test.d.ts +1 -0
  1066. package/dist/ir/initializer-bindings.test.js +118 -0
  1067. package/dist/ir/initializer-bindings.test.js.map +1 -0
  1068. package/dist/ir/integer-loop-facts.d.ts +12 -0
  1069. package/dist/ir/integer-loop-facts.js +137 -0
  1070. package/dist/ir/integer-loop-facts.js.map +1 -0
  1071. package/dist/ir/integer-loops.js +85 -30
  1072. package/dist/ir/integer-loops.js.map +1 -1
  1073. package/dist/ir/integer-loops.test.js +76 -13
  1074. package/dist/ir/integer-loops.test.js.map +1 -1
  1075. package/dist/ir/integer-ranges.js +93 -21
  1076. package/dist/ir/integer-ranges.js.map +1 -1
  1077. package/dist/ir/integer-ranges.test.js +199 -21
  1078. package/dist/ir/integer-ranges.test.js.map +1 -1
  1079. package/dist/ir/intrinsic-signatures.d.ts +20 -0
  1080. package/dist/ir/intrinsic-signatures.js +57 -0
  1081. package/dist/ir/intrinsic-signatures.js.map +1 -0
  1082. package/dist/ir/ir.d.ts +15 -2160
  1083. package/dist/ir/ir.js +160 -1396
  1084. package/dist/ir/ir.js.map +1 -1
  1085. package/dist/ir/ir.test.js +98 -77
  1086. package/dist/ir/ir.test.js.map +1 -1
  1087. package/dist/ir/numeric-call-specialization.d.ts +8 -0
  1088. package/dist/ir/numeric-call-specialization.js +198 -0
  1089. package/dist/ir/numeric-call-specialization.js.map +1 -0
  1090. package/dist/ir/runtime-features.d.ts +221 -0
  1091. package/dist/ir/runtime-features.js +552 -0
  1092. package/dist/ir/runtime-features.js.map +1 -0
  1093. package/dist/ir/runtime-features.test.d.ts +1 -0
  1094. package/dist/ir/runtime-features.test.js +98 -0
  1095. package/dist/ir/runtime-features.test.js.map +1 -0
  1096. package/dist/ir/scalar-records.js +130 -40
  1097. package/dist/ir/scalar-records.js.map +1 -1
  1098. package/dist/ir/scalar-records.test.js +146 -27
  1099. package/dist/ir/scalar-records.test.js.map +1 -1
  1100. package/dist/ir/serialize.d.ts +1 -1
  1101. package/dist/ir/serialize.js +7 -5
  1102. package/dist/ir/serialize.js.map +1 -1
  1103. package/dist/ir/serialize.test.js +44 -9
  1104. package/dist/ir/serialize.test.js.map +1 -1
  1105. package/dist/ir/traverse.js +156 -43
  1106. package/dist/ir/traverse.js.map +1 -1
  1107. package/dist/ir/traverse.test.js +99 -24
  1108. package/dist/ir/traverse.test.js.map +1 -1
  1109. package/dist/ir/validate.d.ts +1 -31
  1110. package/dist/ir/validate.js +869 -1910
  1111. package/dist/ir/validate.js.map +1 -1
  1112. package/dist/ir/validate.test.js +697 -114
  1113. package/dist/ir/validate.test.js.map +1 -1
  1114. package/dist/library/cache-primitives.js +9 -10
  1115. package/dist/library/cache-primitives.js.map +1 -1
  1116. package/dist/library/cache-reset.test.js +2 -1
  1117. package/dist/library/cache-reset.test.js.map +1 -1
  1118. package/dist/library/compiler-self-identity.js +11 -5
  1119. package/dist/library/compiler-self-identity.js.map +1 -1
  1120. package/dist/library/compiler-self-identity.test.js +10 -3
  1121. package/dist/library/compiler-self-identity.test.js.map +1 -1
  1122. package/dist/library/fence-eval.js +24 -7
  1123. package/dist/library/fence-eval.js.map +1 -1
  1124. package/dist/library/fence-eval.test.js +31 -7
  1125. package/dist/library/fence-eval.test.js.map +1 -1
  1126. package/dist/library/int-infer.js +199 -59
  1127. package/dist/library/int-infer.js.map +1 -1
  1128. package/dist/library/int-infer.test.js +137 -61
  1129. package/dist/library/int-infer.test.js.map +1 -1
  1130. package/dist/library/ir-policy.d.ts +27 -0
  1131. package/dist/library/ir-policy.js +234 -0
  1132. package/dist/library/ir-policy.js.map +1 -0
  1133. package/dist/library/library-cache.js +40 -17
  1134. package/dist/library/library-cache.js.map +1 -1
  1135. package/dist/library/library-cache.test.js +29 -18
  1136. package/dist/library/library-cache.test.js.map +1 -1
  1137. package/dist/library/library-profile.js +68 -13
  1138. package/dist/library/library-profile.js.map +1 -1
  1139. package/dist/library/prepare.js +48 -20
  1140. package/dist/library/prepare.js.map +1 -1
  1141. package/dist/library/semantic-source.js +16 -14
  1142. package/dist/library/semantic-source.js.map +1 -1
  1143. package/dist/library/semantic-source.test.js +9 -14
  1144. package/dist/library/semantic-source.test.js.map +1 -1
  1145. package/dist/library/sidecar-validate.js +53 -12
  1146. package/dist/library/sidecar-validate.js.map +1 -1
  1147. package/dist/library/sidecar.js +85 -24
  1148. package/dist/library/sidecar.js.map +1 -1
  1149. package/dist/library/trap-teaching.js +11 -2
  1150. package/dist/library/trap-teaching.js.map +1 -1
  1151. package/dist/native/cache.js +10 -4
  1152. package/dist/native/cache.js.map +1 -1
  1153. package/dist/native/cli.js +34 -9
  1154. package/dist/native/cli.js.map +1 -1
  1155. package/dist/native/compiler.js +191 -54
  1156. package/dist/native/compiler.js.map +1 -1
  1157. package/dist/native/compiler.test.js +134 -33
  1158. package/dist/native/compiler.test.js.map +1 -1
  1159. package/dist/native/comptime.js +23 -7
  1160. package/dist/native/comptime.js.map +1 -1
  1161. package/dist/native/comptime.test.js +26 -6
  1162. package/dist/native/comptime.test.js.map +1 -1
  1163. package/dist/native/executable-cache.js +77 -27
  1164. package/dist/native/executable-cache.js.map +1 -1
  1165. package/dist/native/executable-cache.test.js +41 -6
  1166. package/dist/native/executable-cache.test.js.map +1 -1
  1167. package/dist/native/file-identity.js +9 -2
  1168. package/dist/native/file-identity.js.map +1 -1
  1169. package/dist/native/file-identity.test.js.map +1 -1
  1170. package/dist/native/library.js +50 -12
  1171. package/dist/native/library.js.map +1 -1
  1172. package/dist/native/prepare.js +121 -34
  1173. package/dist/native/prepare.js.map +1 -1
  1174. package/dist/native/prepare.test.js +22 -6
  1175. package/dist/native/prepare.test.js.map +1 -1
  1176. package/dist/native/runtime-typescript.js +24 -11
  1177. package/dist/native/runtime-typescript.js.map +1 -1
  1178. package/dist/native/runtime-typescript.test.js.map +1 -1
  1179. package/dist/native/sanitizer.js +71 -18
  1180. package/dist/native/sanitizer.js.map +1 -1
  1181. package/dist/native/sanitizer.test.js +78 -20
  1182. package/dist/native/sanitizer.test.js.map +1 -1
  1183. package/dist/native/task.js.map +1 -1
  1184. package/dist/native/task.test.js +7 -2
  1185. package/dist/native/task.test.js.map +1 -1
  1186. package/dist/native/toolchain.js +68 -26
  1187. package/dist/native/toolchain.js.map +1 -1
  1188. package/dist/native/toolchain.test.js +59 -20
  1189. package/dist/native/toolchain.test.js.map +1 -1
  1190. package/dist/startup-cache.d.ts +1 -1
  1191. package/dist/startup-cache.js +1 -1
  1192. package/dist/startup-cache.js.map +1 -1
  1193. package/dist/timing.js.map +1 -1
  1194. package/package.json +20 -20
  1195. package/surface-manifest.json +30 -2
  1196. package/dist/frontend/lowering/lower-builtins.d.ts +0 -601
  1197. package/dist/frontend/lowering/lower-builtins.js +0 -8986
  1198. package/dist/frontend/lowering/lower-builtins.js.map +0 -1
  1199. package/dist/frontend/lowering/lower-containers.d.ts +0 -382
  1200. package/dist/frontend/lowering/lower-containers.js +0 -7344
  1201. package/dist/frontend/lowering/lower-containers.js.map +0 -1
@@ -1,357 +1,6 @@
1
1
  import * as ts from "../ts7/adapter.js";
2
- import { bodyReadsArguments } from "../arguments-usage.js";
3
2
  import type { Lowerer } from "./lowerer.js";
4
- import { type IrExpr, type IrFunction, type IrStmt, type IrType, type SrcLoc } from "../../ir/ir.js";
5
- import type { ScrDiagnostic } from "../../diagnostics/diagnostic.js";
6
- import { type ClassInfo } from "./lower-classes.js";
7
- export { bodyReadsArguments };
8
- /** How a parameter participates in CALL-SITE COMPLETION (the frontend
9
- * completes every call to the one full signature, so the IR and backends
10
- * stay count-exact — see docs/ir.md). `required` params must be passed;
11
- * `omittable` params (declared `x?: T` or `x: T = e`) may be omitted by a
12
- * trailing-suffix call, and the frontend appends the interned undefined arm;
13
- * `rest` (always last) receives the surplus arguments packed into one array
14
- * literal at each call site. `arguments` is a hidden slot containing every
15
- * actual argument, including those bound to named parameters. */
16
- export type ParamMode = "required" | "omittable" | "rest" | "dynRest" | "islandRest" | "arguments";
17
- /** One parameter of a signature, as call sites and callee prologues see it.
18
- * `type` is the ABI type — what the emitted LLVM parameter carries: the
19
- * checker's `T | undefined` union for `x?: T`, a synthesized `T | undefined`
20
- * union for `x: T = e`, `T[]` for `...xs: T[]`, the plain declared type
21
- * otherwise. `bodyType` is present exactly for DEFAULTED program params:
22
- * the plain T the body sees after the prologue applies the default (see
23
- * declareParams). `callDefault` is the compile-time default value for a
24
- * table-backed builtin's omittable slot. */
25
- export interface ParamShape {
26
- type: IrType;
27
- mode: ParamMode;
28
- bodyType?: IrType;
29
- callDefault?: IrExpr;
30
- }
31
- export interface FnSig {
32
- name: string;
33
- params: ParamShape[];
34
- /** Call-site result type — Promise<inner> for async functions, the
35
- * generator type for generator functions. */
36
- returnType: IrType;
37
- /** Async: the IrFunction's returnType is the promise's INNER type, or
38
- * the generator's TReturn when generator is also present. */
39
- isAsync?: boolean;
40
- /** Generator: the IrFunction's returnType is the TReturn channel; the
41
- * yield/next channels ride here (IrFunction.generator's exact shape). */
42
- generator?: {
43
- yieldT: IrType;
44
- nextT: IrType;
45
- resultType: IrType & {
46
- kind: "record";
47
- };
48
- };
49
- }
50
- /** The one func-type projection of completed parameter shapes. Typed rest
51
- * parameters keep their packed array as the trailing native ABI slot and
52
- * mark the value variadic so indirect call sites run completeArgs before
53
- * callValue. Dynamic rest remains the historical hidden ScrDyn slot, while
54
- * island rest spells its engine-array slot directly. */
55
- export declare function funcTypeFromParamShapes(shapes: readonly ParamShape[], ret: IrType): IrType & {
56
- kind: "func";
57
- };
58
- /** Registers `const alias = overloadedDeclaration` as a compile-time
59
- * callable projection. The source function's one implementation ABI is
60
- * already collected in fnSigsBySymbol; each direct call still uses the
61
- * TS7-resolved overload result bridge. The alias owns no storage, and a
62
- * value read materializes the source function's interned closure, so JS
63
- * identity (`alias === source`) is preserved. */
64
- export declare function registerOverloadedCallableAlias(lowerer: Lowerer, decl: ts.VariableDeclaration): boolean;
65
- export declare function generatorMeta(lowerer: Lowerer, type: IrType & {
66
- kind: "generator";
67
- }): NonNullable<IrFunction["generator"]>;
68
- /** Instantiation cap per generic function: same-key recursion (`len<T>`
69
- * calling itself) converges, but POLYMORPHIC recursion (`f<T>` calling
70
- * `f<T[]>`) would request new instances forever — the cap turns that into a
71
- * diagnostic instead of a hang. */
72
- export declare const MAX_GENERIC_INSTANCES = 100;
73
- /** A generic function-like declaration, collected instead of an FnSig —
74
- * top-level generic function declarations, class GENERIC METHODS (own type
75
- * parameters, instance and static), and object-literal generic methods.
76
- * The body is NOT lowered at collection: each call site's checker-resolved
77
- * signature (type arguments substituted) becomes an instantiation key, and
78
- * the body is lowered once per distinct key (monomorphization). */
79
- export interface GenericFnInfo {
80
- decl: ts.FunctionDeclaration | ts.MethodDeclaration | ts.FunctionExpression | ts.ArrowFunction;
81
- /** Unqualified source name, for diagnostics. */
82
- baseName: string;
83
- /** Program-wide qualified name; instance `n` is named `<qualified>%<n>`
84
- * ('%' cannot appear in a TS identifier, so instance names can never
85
- * collide with user functions). */
86
- qualifiedName: string;
87
- /** Declaration-order type parameter symbols. */
88
- typeParams: ts.Symbol[];
89
- /** Lazily computed (keyofConstrainedTypeParams): the type parameters
90
- * declared `K extends keyof …`. Their bound LITERAL keys are semantic —
91
- * the body's `o[k]` reads the named field — so instances key on the
92
- * literal (no cross-literal sharing) and keep the checker types
93
- * (tsBindings) the body resolves through. */
94
- keyofTps?: Set<ts.Symbol>;
95
- /** Instantiation key (comma-joined typeKeys of the mapped param types +
96
- * `=>` + return typeKey) → instance. Key identity IS signature identity:
97
- * two call sites whose inferred types map to the same IR types share one
98
- * native function. */
99
- instances: Map<string, GenericInstance>;
100
- /** CLASS-member generic methods: the declaring ClassInfo and flavor.
101
- * Instance methods take `this` (object:<declarer>) as param 0 and lower
102
- * under the declarer's instantiation bindings (generic-class receivers)
103
- * MERGED with the method instantiation's own; statics lower as plain
104
- * module functions with an exact receiver or the this/super fence. Absent for
105
- * top-level functions and object-literal methods. */
106
- member?: {
107
- cls: ClassInfo;
108
- kind: "method" | "static";
109
- };
110
- /** Direct static calls specialize lexical this for the proven receiver. */
111
- staticReceiver?: ClassInfo;
112
- receiverSpecializations?: Map<string, GenericFnInfo>;
113
- /** Object-literal generic methods (`{ m<T>(x: T) {...} }` and generic
114
- * arrow/function-expression properties): lowered as plain module
115
- * functions — `this` inside is fenced (rejectThisInObjectMethod) and the
116
- * defining literal must sit at module scope (no enclosing frame to
117
- * capture). */
118
- objectLiteral?: true;
119
- /** IMPLICIT-ANY monomorphization (npm-static JS): parallel to
120
- * decl.parameters — the param's own symbol when the slot is a BINDABLE
121
- * implicit-any parameter (untyped, identifier-named, never written in
122
- * the body), null for typed or unbindable slots. Present ⇔ this info
123
- * monomorphizes over its implicit-any params instead of declared type
124
- * parameters (typeParams stays empty): each call site's WIDENED argument
125
- * checker types key an instantiation, exactly the generic machinery —
126
- * the untyped params ARE the type parameters (see implicitCallInstance). */
127
- implicitParams?: (ts.Symbol | null)[];
128
- }
129
- export interface GenericInstance {
130
- name: string;
131
- /** 0 for the first instance of a base function — the only one whose
132
- * statements count toward coverage stats (re-instantiations re-visit the
133
- * same source lines). */
134
- ordinal: number;
135
- params: ParamShape[];
136
- returnType: IrType;
137
- /** Type-parameter symbol → concrete IR type, consulted by mapType (via
138
- * typeParamResolver) while the instance body lowers. */
139
- bindings: Map<ts.Symbol, IrType>;
140
- /** Call-keyed instances: type-parameter symbol → the bound CHECKER type
141
- * (pre-widening), consulted while the body lowers where the IrType
142
- * binding has already lost what the body needs — `T[K]` and `o[k]` reads
143
- * whose K is bound to one literal key (typeParamTsBindings). */
144
- tsBindings?: Map<ts.Symbol, ts.Type>;
145
- /** Rendered type arguments ("<number, string>") for diagnostics. */
146
- typeArgsText: string;
147
- /** Implicit instances only: param symbol → the call site's (widened)
148
- * checker type, consulted by the Lowerer's typeOf while this instance's
149
- * body lowers (the implicit twin of `bindings`). */
150
- implicitArgTypes?: Map<ts.Symbol, ts.Type>;
151
- /** Implicit instances only: eager-lowering lifecycle. "lowering" while
152
- * the body builds (a re-demand is same-key recursion: the caller uses
153
- * the PINNED fallback returnType and returnPinned locks it); "done" once
154
- * returnType holds the inferred (or pinned) truth. */
155
- implicitState?: "lowering" | "done" | "failed";
156
- /** Same-key recursion observed the fallback return type mid-lowering, so
157
- * the ABI is locked to it — the return post-pass coerces every return
158
- * value to the pinned type instead of adopting the inferred one. */
159
- returnPinned?: boolean;
160
- /** Implicit instances only: the declared return did not map (the
161
- * any-params poisoned it) — the body lowers in return-INFERENCE mode
162
- * (returnType holds the DYN recursion pin until the post-pass settles). */
163
- implicitInferReturn?: true;
164
- }
165
- /** One parameter's ParamShape — the shared signature-shaped collection
166
- * point for function declarations, methods, constructors, and lambdas
167
- * (generic declarations defer to their call sites, where the resolved
168
- * types exist; see lowerGenericCall).
169
- *
170
- * - `x?: T`: the checker already types the param `T | undefined` under
171
- * strictNullChecks, so the ABI type IS that union and the body narrows
172
- * with `!== undefined` like any union local.
173
- * - `x: T = e`: the ABI type is a synthesized `T | undefined` union (the
174
- * caller may omit the arg or pass undefined — both trigger the default,
175
- * JS-exact); the body sees plain T through the two-local prologue
176
- * (declareParams). A single-arm T narrows in the prologue; a UNION T
177
- * re-tags through the interned retag helper (the undefined arm is the
178
- * one stranded case, unreachable from the else-branch by construction).
179
- * - `...xs: T[]`: the ABI type is the array; call sites pack the surplus.
180
- */
181
- export declare function paramShape(lowerer: Lowerer, param: ts.ParameterDeclaration): ParamShape;
182
- /** ParamShapes for a whole parameter list. */
183
- /** A `this` PARAMETER declaration (`function f(this: void, x: {}) ...`)
184
- * — type-world only: tsc types the receiver with it, callers never pass
185
- * it, and signature.getParameters() excludes it. The syntactic walks
186
- * (paramShapes, declareParams) skip it with this predicate so ABI slots
187
- * and call completion stay aligned with what JS actually passes. */
188
- export declare function isThisParameter(param: ts.ParameterDeclaration): boolean;
189
- export declare function paramShapes(lowerer: Lowerer, params: readonly ts.ParameterDeclaration[], signature?: ts.Signature, blameOf?: (param: ts.ParameterDeclaration, index: number) => ts.Node): ParamShape[];
190
- /** The fences on a defaulted parameter's body type: it becomes the value
191
- * arm of the synthesized `T | undefined` ABI union, so it must be a valid
192
- * single arm. Functions, Maps and Sets are valid: the ABI union's test is
193
- * the prologue's own undefined-tag check (never a user narrowing, which
194
- * is what keeps containers out of unions with data siblings), so `runner: Runner =
195
- * defaultRunner` and `skip: Set<string> = new Set()` arm like any ref
196
- * kind — the nullable-callback union shape, built by the compiler. */
197
- export declare function checkDefaultParamBodyType(lowerer: Lowerer, param: ts.ParameterDeclaration, bodyType: IrType): void;
198
- export declare function completeArgs(lowerer: Lowerer, argNodes: readonly ts.Expression[], shapes: readonly ParamShape[], loc: SrcLoc, blame: ts.Node,
199
- /** Pre-lowered values virtually PREPENDED to the argument list — the
200
- * tagged-template strings object, which has no ts.Expression to lower
201
- * (lowerTaggedTemplate builds it). Each rides the same slot-directed
202
- * coercion an ordinary argument gets (coerceInto against its shape,
203
- * DYN conversion in a dyn rest, element coercion in a typed rest). */
204
- leading?: readonly IrExpr[]): IrExpr[];
205
- /** The undefined arm of an undefined-armed union `type`, wrapped (a
206
- * unitLit under a unionWrap) — the value every "absent" slot holds: an
207
- * omitted optional argument, an omitted optional record field. Null when
208
- * `type` has no undefined arm to wrap into. */
209
- export declare function wrappedUndefined(lowerer: Lowerer, type: IrType, loc: SrcLoc): IrExpr | null;
210
- /** The synthesized argument for an omitted omittable param: the interned
211
- * undefined arm of the param's `T | undefined` ABI union, or the checked-dynamic tree
212
- * undefined for a checked-dynamic param (`bar?: any`). */
213
- /** The "absent argument" value for a param SLOT type, or null when the
214
- * slot cannot hold one: the interned undefined arm for undefined-armed
215
- * unions, the dyn undefined for checked-dynamic slots, the engine's own
216
- * undefined for island slots. Shared by every call-completion loop
217
- * (direct calls and calls through func-typed values). */
218
- export declare function omittedArgFor(lowerer: Lowerer, type: IrType, loc: SrcLoc): IrExpr | null;
219
- export declare function undefinedArgFor(lowerer: Lowerer, type: IrType, loc: SrcLoc, blame: ts.Node): IrExpr;
220
- /** DECISION (docs/ir.md): function VALUES carry one completed native ABI.
221
- * Optional/default parameters appear as literal `T | undefined` slots;
222
- * typed rest parameters appear as one trailing typed-array slot plus the
223
- * typed-rest marker that makes indirect call sites pack source arguments.
224
- * A value is admitted only where its target type projects to that same
225
- * completed signature. */
226
- export declare function requireExactArityValue(lowerer: Lowerer, blame: ts.Node, contextual: ts.Expression | null, shapes: readonly ParamShape[], funcType: IrType): void;
227
- /** The BODY-facing return type of a (possibly async) function: an async
228
- * body's `return v` fulfills its promise with v, so the body returns the
229
- * promise's INNER type while call sites keep Promise<T>. The declared
230
- * type of an async function is always a promise (collectSignature /
231
- * lowerLambda reject anything else before calling this). */
232
- export declare function bodyReturnType(lowerer: Lowerer, isAsync: boolean, declared: IrType): IrType;
233
- /** A union-returning body may complete WITHOUT returning — JS yields
234
- * undefined then (`(): string | undefined => { if (c) return "x"; }`), so
235
- * an undefined-armed union return gets a trailing `return <undefined
236
- * arm>` appended unless the body's last statement already returns or
237
- * throws (deeper always-returning control flow keeps the appended return
238
- * as dead code — harmless).
239
- *
240
- * Every OTHER non-void body gets a trailing UNREACHABLE trap instead:
241
- * tsc's reachability can prove completions the validator's conservative
242
- * alwaysReturns cannot (an exhaustive `switch (typeof x)` with a return
243
- * in every case — signature 16), and those bodies end without a terminal
244
- * statement of their own. The trap satisfies the must-return rule as the
245
- * dead code it is; it can only fire if the checker's proof was violated,
246
- * which would be a lowering bug — hence the please-report wording. */
247
- export declare function appendImplicitUndefinedReturn(lowerer: Lowerer, body: IrStmt[], bodyReturn: IrType, loc: SrcLoc): void;
248
- /** A declaration's checker-derived IR return type. The unmappable-type
249
- * diagnostic points at `blame` (the name for top-level declarations, the
250
- * whole node for lambda-likes — preserving each caller's historical loc). */
251
- export declare function hasExplicitJsDocReturn(decl: ts.SignatureDeclaration): boolean;
252
- export declare function declaredReturnType(lowerer: Lowerer, decl: ts.SignatureDeclaration, blame: ts.Node): IrType;
253
- export declare function collectSignature(lowerer: Lowerer, decl: ts.FunctionDeclaration): void;
254
- export declare function collectSignatureInner(lowerer: Lowerer, decl: ts.FunctionDeclaration): void;
255
- /** Registers a top-level generic function. Only the SYNTAX is checked
256
- * here — parameter/return types mention the type parameters and cannot
257
- * map yet; the body is lowered per instantiation, on demand (an unused
258
- * generic function costs nothing, like a C++ template). Called inside
259
- * collectSignature's poison catch. */
260
- export declare function collectGenericSignature(lowerer: Lowerer, decl: ts.FunctionDeclaration): void;
261
- export declare function genericFnOf(lowerer: Lowerer, ident: ts.Identifier): GenericFnInfo | null;
262
- /** Call of a generic top-level function. The checker already inferred (or
263
- * was told, via explicit type arguments) the concrete signature —
264
- * getResolvedSignature returns it with type arguments substituted. The
265
- * mapped param+return IR types form the INSTANTIATION KEY; the first call
266
- * with a new key queues the body for monomorphic lowering as
267
- * `<qualifiedName>%<n>`, and every call lowers to a direct `call` of that
268
- * instance. */
269
- export declare function lowerGenericCall(lowerer: Lowerer, expr: ts.CallExpression, info: GenericFnInfo): IrExpr;
270
- /** The instance a CALL of a generic function-like names: resolved
271
- * signature → mapped param shapes/return → interned instance. Shared by
272
- * top-level generic calls, class generic-method calls (the caller
273
- * prepends the receiver), and object-literal generic-method calls. */
274
- export declare function genericCallInstance(lowerer: Lowerer, expr: ts.CallExpression, info: GenericFnInfo): GenericInstance;
275
- /** Type-parameter symbol → concrete IR type for one instantiation.
276
- * Explicit type arguments bind directly; the rest come from structurally
277
- * matching each DECLARED param/return type (which mentions the type
278
- * parameters) against the checker's INSTANTIATED one — the latter is the
279
- * former with the substitution applied, so the shapes are parallel by
280
- * construction. A type parameter left unbound only matters if the body
281
- * mentions it, where mapType fails and badType names the shape
282
- * (carrying the instantiation context). */
283
- export declare function inferTypeParamBindings(lowerer: Lowerer, expr: ts.CallExpression, info: GenericFnInfo, rsig: ts.Signature, tsBindings?: Map<ts.Symbol, ts.Type>): Map<ts.Symbol, IrType>;
284
- /** Lowers ONE monomorphic instance of a generic function: the same body
285
- * AST, re-lowered with the type parameters bound (threaded into every
286
- * mapType call via typeParamResolver — the checker keeps reporting the
287
- * unsubstituted `T`s inside the body). Coverage stats count a base
288
- * function's statements once: only the FIRST instance contributes. */
289
- export declare function lowerGenericInstance(lowerer: Lowerer, info: GenericFnInfo, inst: GenericInstance): IrFunction;
290
- /** A generic function taken as a VALUE, monomorphized by flow. A function
291
- * value needs ONE concrete signature; tsc pins one at exactly two
292
- * reference shapes — an instantiation EXPRESSION (`identity<number>`,
293
- * whose own checker type is the substituted signature) and a reference
294
- * whose CONTEXTUAL type completes the signature (`const f: (x: number) =>
295
- * number = identity`, `take(identity)`). The declared signature unifies
296
- * against the pinned one to recover the bindings; the instance then
297
- * registers in the SAME table call sites use (one compiled copy per
298
- * signature however it is reached), and the value is the instance's
299
- * zero-capture closure — `f === f` holds within an instantiation, the
300
- * declared-function identity rule. References with no pinning context
301
- * (the slot keeps `<T>(x: T) => T`) fence by name. */
302
- export declare function lowerGenericFnValue(lowerer: Lowerer, ref: ts.Expression, info: GenericFnInfo): IrExpr;
303
- /** The npm-static gate: implicit-any monomorphization applies to functions
304
- * DECLARED in an opted-in package's JS files (user JS keeps today's
305
- * checked-dynamic story until the corpus is re-baselined). */
306
- export declare function implicitMonoFile(sf: ts.SourceFile): boolean;
307
- /** The implicit-type-parameter slots of a JS function-like: parallel to
308
- * decl.parameters, the param SYMBOL where the slot is a bindable
309
- * implicit param (identifier-named, broad inferred/JSDoc type, not
310
- * rest/optional/defaulted, never written), null elsewhere. Package JS
311
- * methods may also specialize class parameters: JSDoc names a nominal
312
- * class even when the body accepts other objects with the same members.
313
- * Null overall when nothing qualifies — the declaration keeps its ABI. */
314
- export declare function implicitAnyParamSymbolsOf(lowerer: Lowerer, decl: ts.FunctionDeclaration | ts.MethodDeclaration | ts.FunctionExpression | ts.ArrowFunction, classParams?: boolean): (ts.Symbol | null)[] | null;
315
- /** True when a `this.method(...)` call targets an implicit npm-static
316
- * method whose result is settled from its lowered body rather than the
317
- * checker declaration. Uninitialized-local inference uses this to avoid
318
- * freezing an evolving `any` slot to stale JSDoc. */
319
- export declare function implicitMethodCallInfersReturn(lowerer: Lowerer, call: ts.CallExpression): boolean;
320
- /** The instance a CALL of an implicit-any function-like names: each
321
- * bindable implicit param takes the call's WIDENED argument checker type
322
- * when it maps statically (DYN otherwise — today's slot), typed params
323
- * keep their declared shapes, and the param-type tuple is the
324
- * instantiation key. New keys lower EAGERLY (return inference — see the
325
- * section comment); a same-key re-demand mid-lowering pins the fallback
326
- * return type. */
327
- export declare function implicitCallInstance(lowerer: Lowerer, call: ts.CallExpression, info: GenericFnInfo): GenericInstance;
328
- /** The all-dyn DEFAULT instance — today's compiled body exactly: what a
329
- * VALUE reference of an implicit-any function names (indirect calls
330
- * carry no per-site types to bind). */
331
- export declare function implicitDefaultInstance(lowerer: Lowerer, blame: ts.Node, info: GenericFnInfo): GenericInstance;
332
- /** The implicit-any twin of bindingGenericFnNodeOf, for LOCAL and module
333
- * bindings alike (`const knownBy = (cmd) => [cmd.name()].concat(...)`
334
- * inside a method body — commander's _registerCommand shape): the
335
- * initializer function-like when the WHOLE declaration qualifies for
336
- * implicit monomorphization, else null — non-qualifying shapes keep
337
- * today's closure story silently (never a fence: the flag must not make
338
- * working code worse). Qualification: an npm-static JS file, a const (or
339
- * never-reassigned, never-redeclared) identifier binding, an
340
- * arrow/function-expression initializer with bindable implicit-any
341
- * params, and a body with NO captures — no `this`/`super`, and no
342
- * reference to a function-scoped declaration outside itself (compiled
343
- * instances are module functions; module-scope references are fine).
344
- * Cached per declaration on lowerer.implicitLocalFns. */
345
- export declare function implicitLocalFnNodeOf(lowerer: Lowerer, decl: ts.VariableDeclaration): ts.FunctionExpression | ts.ArrowFunction | null;
346
- /** Registers (or returns) the GenericFnInfo of a qualifying implicit-any
347
- * function-value binding — implicitLocalFnNodeOf's companion, the
348
- * bindingGenericFnInfoOf shape: the info enters genericFnsBySymbol under
349
- * the binding's symbol (and a named function expression's inner name),
350
- * so calls and value references resolve through genericFnOf; the
351
- * declaration statement emits nothing and the binding has no runtime
352
- * value. The declaration's source position joins the qualified name —
353
- * two same-named locals in one file stay distinct. */
354
- export declare function implicitLocalFnInfoOf(lowerer: Lowerer, decl: ts.VariableDeclaration, fnNode: ts.FunctionExpression | ts.ArrowFunction): GenericFnInfo;
3
+ import { type IrExpr, type IrType, type SrcLoc } from "../../ir/ir.js";
355
4
  /** An island call result the .d.ts DECLARES as a primitive exits eagerly
356
5
  * to that static type — the member-read rule's call sibling (see the
357
6
  * getProp lowering in lower-exprs.ts): primitives copy by value, every
@@ -359,106 +8,45 @@ export declare function implicitLocalFnInfoOf(lowerer: Lowerer, decl: ts.Variabl
359
8
  * catchable TypeError. Chain-handled forms stay jsval (the optChain's
360
9
  * unit path is the engine's undefined). */
361
10
  export declare function islandPrimitiveExit(lowerer: Lowerer, call: ts.CallExpression, result: IrExpr): IrExpr;
362
- /** The trailing-argument timer forms — `setTimeout(cb, ms, ...args)`,
363
- * `setInterval(cb, ms, ...args)`, `setImmediate(cb, ...args)` — invoke
364
- * the callback WITH those arguments (Node passes them through). The
365
- * callback and every argument box into dyn and an interned per-arity
366
- * thunk delivers the dynCall at fire time: JS's exact call semantics
367
- * (per-argument checks against the callee's declared signature, extras
368
- * ignored, a non-function callee throwing the catchable TypeError).
369
- * Non-boxable callbacks fence. */
370
- export declare function timerStyleCallback(lowerer: Lowerer, callArgs: readonly ts.Expression[], what: string, loc: SrcLoc): IrExpr;
371
- /** One timer call by MEMBER NAME — the shared lowering behind the ambient
372
- * globals, the node:timers named/destructured imports, and the namespace
373
- * form (`timers.setTimeout(...)`). Null when the member isn't a lowered
374
- * timer function (the caller's fence machinery takes over). */
375
- export declare function lowerTimersMemberCall(lowerer: Lowerer, expr: ts.CallExpression, member: string, loc: SrcLoc): IrExpr | null;
376
- export interface FfiValidationResult {
377
- diagnostics: ScrDiagnostic[];
378
- symbolsByName: ReadonlyMap<string, ReadonlySet<ts.Symbol>>;
379
- }
380
- /** Resolve and validate every configured outbound binding before emit.
381
- * Candidate declarations are signature-only functions bearing the manifest
382
- * name anywhere in the program. Multiple scoped declarations are all native
383
- * bindings under the existing name-based call surface, so every candidate
384
- * must fit the one manifest ABI. Library callbacks additionally exclude
385
- * standard-library and package declaration files while retaining project
386
- * declaration files as authored callback surface. */
387
- export declare function validateFfiImports(lowerer: Lowerer): FfiValidationResult;
388
- /** A manifest-bound call of a signature-only ambient declaration. This
389
- * recognition deliberately runs before ambientUndefVarRootOf: without the
390
- * manifest the exact same source keeps Node's ReferenceError semantics;
391
- * with it, only the resolved declaration binding (never a shadowing
392
- * function with a body) becomes a direct native call. */
393
- export declare function lowerFfiCall(lowerer: Lowerer, expr: ts.CallExpression): IrExpr | null;
394
11
  export declare function lowerCall(lowerer: Lowerer, expr: ts.CallExpression): IrExpr;
395
12
  export declare function lowerDynDispatchMethodCall(lowerer: Lowerer, call: ts.CallExpression, access: ts.PropertyAccessExpression, recv: IrExpr, arrayReceiver: boolean): IrExpr | null;
396
13
  /** Tagged templates `tag\`a${x}b\`` — ES's call: tag(strings, ...values).
397
- * The strings object is a per-SITE lazily initialized hidden array global,
398
- * so the spec's identity contract holds — the same site evaluated twice
399
- * hands the tag the SAME array; two sites never share. TemplateStringsArray
400
- * maps to string[] (type-mapper.ts), so the array rides the ordinary
401
- * slot-directed coercion into whatever the tag's first parameter wants
402
- * — string[] exactly, an `any` slot through the dyn boundary, a rest
403
- * pack's first element. Checked tags receive frozen cooked and raw
404
- * arrays with the standard nonenumerable `.raw` descriptor. Typed direct
405
- * tags retain the string-array representation.
406
- *
407
- * Tag forms: a top-level declared function (the direct-call fast path —
408
- * overload sets reconcile through the resolved signature exactly like
409
- * plain calls), an island value under --dynamic (engine method/function
410
- * call with the engine's cooked/raw template object), and
411
- * a checked-dynamic value (the dynCall boundary — a non-function tag
412
- * throws Node's catchable TypeError). Everything else — generic tags,
413
- * method tags, function-value bindings — fences by name. */
14
+ * The strings object is a per-SITE lazily initialized hidden array global,
15
+ * so the spec's identity contract holds — the same site evaluated twice
16
+ * hands the tag the SAME array; two sites never share. TemplateStringsArray
17
+ * maps to string[] (type-mapper.ts), so the array rides the ordinary
18
+ * slot-directed coercion into whatever the tag's first parameter wants
19
+ * — string[] exactly, an `any` slot through the dyn boundary, a rest
20
+ * pack's first element. Checked tags receive frozen cooked and raw
21
+ * arrays with the standard nonenumerable `.raw` descriptor. Typed direct
22
+ * tags retain the string-array representation.
23
+ *
24
+ * Tag forms: a top-level declared function (the direct-call fast path —
25
+ * overload sets reconcile through the resolved signature exactly like
26
+ * plain calls), an island value under --dynamic (engine method/function
27
+ * call with the engine's cooked/raw template object), and
28
+ * a checked-dynamic value (the dynCall boundary — a non-function tag
29
+ * throws Node's catchable TypeError). Everything else — generic tags,
30
+ * method tags, function-value bindings — fences by name. */
414
31
  export declare function lowerTaggedTemplate(lowerer: Lowerer, expr: ts.TaggedTemplateExpression): IrExpr;
415
- /** True when the identifier resolves (through import aliases) to a
416
- * top-level function declaration of ANY program file (not merely a
417
- * same-named local shadowing one). Functions declared directly in a
418
- * FLATTENED namespace block count — splitFiles hoisted them into the
419
- * same collection lists top-level declarations ride. */
420
- export declare function isTopLevelFnSymbol(lowerer: Lowerer, ident: ts.Identifier): boolean;
421
- /** Nested `function name(...) {...}`: declare the mutable function binding
422
- * before lowering its body, then initialize it with the lifted closure.
423
- * The early declaration is observable only when another nested closure
424
- * captures the binding: its box must exist before either side of a mutual
425
- * recursion cycle builds its closure. Forward source references use the
426
- * same split declaration/assignment through predeclareForwardFnDecl.
427
- * Self-references inside the body lower to `selfRef`, not a capture: a box
428
- * holding its own closure would be an RC cycle. */
429
- export declare function lowerNestedFunctionDecl(lowerer: Lowerer, stmt: ts.FunctionDeclaration): IrStmt;
430
- /** Signature checks + param shapes + IR func type for any lambda-like
431
- * node. The func type's params are the ABI types: optional/default params
432
- * become `T | undefined`, and typed rest becomes one packed-array slot.
433
- * requireExactArityValue decides whether that completed ABI may escape. */
434
- export declare function lambdaSignature(lowerer: Lowerer, node: ts.ArrowFunction | ts.FunctionExpression | ts.FunctionDeclaration | ts.MethodDeclaration | ts.GetAccessorDeclaration | ts.SetAccessorDeclaration): {
435
- shapes: ParamShape[];
436
- funcType: IrType & {
437
- kind: "func";
438
- };
439
- };
440
- /** Lifts an arrow function / function expression / nested declaration /
441
- * object-literal shorthand method to a module-level function and yields
442
- * the `closure` expression creating it. */
443
- export declare function lowerLambda(lowerer: Lowerer, node: ts.ArrowFunction | ts.FunctionExpression | ts.FunctionDeclaration | ts.MethodDeclaration | ts.GetAccessorDeclaration | ts.SetAccessorDeclaration): IrExpr;
444
32
  export declare function lowerPromiseMethodCall(lowerer: Lowerer, call: ts.CallExpression, access: ts.PropertyAccessExpression): IrExpr | null;
445
33
  /** NARROWING `a.filter(...)` — the two callback forms whose result the
446
- * checker types as a NARROWER array than the receiver:
447
- *
448
- * xs.filter((x) => x !== undefined) // TS-inferred type predicate
449
- * xs.filter(Boolean) // BooleanConstructor overload
450
- *
451
- * Trust discipline: only tests the RUNTIME actually performs may re-tag.
452
- * An INFERRED predicate (inline arrow/function expression with no return
453
- * annotation — TS 5.5 only infers `x is T` when the body proves it) and
454
- * `Boolean` (retained elements are truthy, hence never the undefined/
455
- * null arm) both qualify; a HAND-WRITTEN `x is T` annotation is an
456
- * unchecked assertion (a lying one would corrupt the extraction) and
457
- * stays fenced. The narrowed element must be a SINGLE arm of the
458
- * receiver's union — retained elements re-tag through unionNarrow in the
459
- * synthesized loop; a multi-arm target would need the union-to-union
460
- * re-tag that doesn't exist (fenced with the annotate-the-callback
461
- * escape). Null hands non-narrowing filters to the generic HOF path. */
34
+ * checker types as a NARROWER array than the receiver:
35
+ *
36
+ * xs.filter((x) => x !== undefined) // TS-inferred type predicate
37
+ * xs.filter(Boolean) // BooleanConstructor overload
38
+ *
39
+ * Trust discipline: only tests the RUNTIME actually performs may re-tag.
40
+ * An INFERRED predicate (inline arrow/function expression with no return
41
+ * annotation — TS 5.5 only infers `x is T` when the body proves it) and
42
+ * `Boolean` (retained elements are truthy, hence never the undefined/
43
+ * null arm) both qualify; a HAND-WRITTEN `x is T` annotation is an
44
+ * unchecked assertion (a lying one would corrupt the extraction) and
45
+ * stays fenced. The narrowed element must be a SINGLE arm of the
46
+ * receiver's union — retained elements re-tag through unionNarrow in the
47
+ * synthesized loop; a multi-arm target would need the union-to-union
48
+ * re-tag that doesn't exist (fenced with the annotate-the-callback
49
+ * escape). Null hands non-narrowing filters to the generic HOF path. */
462
50
  export declare function lowerFilterNarrowCall(lowerer: Lowerer, call: ts.CallExpression, access: ts.PropertyAccessExpression): IrExpr | null;
463
51
  /** The interned keys-array helper over a FIXED record shape: a call of a
464
52
  * lifted helper whose body pushes each declared field name in first-seen
@@ -470,118 +58,11 @@ export declare function lowerFilterNarrowCall(lowerer: Lowerer, call: ts.CallExp
470
58
  export declare function recordKeysArrayCall(lowerer: Lowerer, receiver: IrExpr, argIr: IrType & {
471
59
  kind: "record";
472
60
  }, shape: import("../../ir/ir.js").IrRecordShape, loc: SrcLoc): IrExpr;
473
- export declare function lowerFunction(lowerer: Lowerer, decl: ts.FunctionDeclaration): IrFunction | null;
474
61
  export declare function lowerRecordFieldCall(lowerer: Lowerer, call: ts.CallExpression, access: ts.PropertyAccessExpression): IrExpr | null;
475
- /** The function-like node behind an object-literal generic-method member:
476
- * the MethodDeclaration itself (`{ m<T>(x: T) {...} }`) or a generic
477
- * arrow/function-expression property's initializer (`{ m: <T>(x: T) =>
478
- * ... }`). Null when the property's declaration isn't that shape. */
479
- export declare function objLitGenericFnNodeOf(lowerer: Lowerer, propSym: ts.Symbol): {
480
- fnNode: ts.MethodDeclaration | ts.FunctionExpression | ts.ArrowFunction;
481
- literal: ts.ObjectLiteralExpression;
482
- } | null;
483
- /** The interned GenericFnInfo for one object-literal generic method, with
484
- * the supportability fences applied ONCE per declaration: the defining
485
- * literal must sit at module scope (the compiled instance is a plain
486
- * module function — an enclosing frame would need captures), and
487
- * async/generator forms keep the method fences. The name is source-
488
- * position-derived (`%ol<start>.<name>`, qualified per file) —
489
- * deterministic across the discovery and emit passes. */
490
- export declare function objLitGenericFnInfoOf(lowerer: Lowerer, blame: ts.Node, name: string, found: {
491
- fnNode: ts.MethodDeclaration | ts.FunctionExpression | ts.ArrowFunction;
492
- literal: ts.ObjectLiteralExpression;
493
- }): GenericFnInfo;
494
- /** True when nothing in `sym`'s DECLARING FILE ever writes it after the
495
- * initializer: assignments (plain and compound, destructuring targets
496
- * included), ++/--, and for-of/for-in expression targets all count.
497
- * Sound file-locally for module-scope bindings because ESM import
498
- * bindings are read-only — no other file can write one. Cached per
499
- * symbol (the scan walks the whole file once). */
500
- export declare function bindingNeverReassigned(lowerer: Lowerer, sym: ts.Symbol, decl: ts.Node): boolean;
501
- /** The nullish unit `e` provably evaluates to: a bare null/undefined
502
- * literal (assertion-wrapped — `null as any`, `null!`), or a read of a
503
- * registered NULLISH binding (nullishGenericBindingUnitOf). Null when
504
- * the value could be anything else. */
505
- export declare function nullishExprUnitOf(lowerer: Lowerer, e: ts.Expression): "null" | "undefined" | null;
506
- /** nullishValueUnitOf gated on a declared type that CANNOT hold the
507
- * value — the NO-STORAGE family: an unmappable type has no other story,
508
- * and a RECORD-mapped one (`const i: I<A & B> = null as any` — an
509
- * interface whose members are all generic signatures interns an empty
510
- * shape) has a slot null can never inhabit, so storing would throw the
511
- * representation error where Node stores null silently. Either way the
512
- * declaration emits nothing and reads know the value. Null-tolerant
513
- * mappings (unions with a null/undefined arm, dyn) keep their real
514
- * storage and every ordinary lowering. */
515
- export declare function nullishGenericBindingUnitOf(lowerer: Lowerer, sym: ts.Symbol | null): "null" | "undefined" | null;
516
- /** True when `sym` — a binding whose type has NO static mapping — is DEAD:
517
- * never read anywhere in the program, not exported through a specifier,
518
- * declared with no initializer or a side-effect-free one, and written
519
- * (if at all) only by plain assignments of side-effect-free values. Node
520
- * materializes those values and drops them — zero observable effect —
521
- * so the declaration and its writes lower to NOTHING instead of fencing
522
- * on a type the program never consumes (`var xs2: typeof Array;`, the
523
- * write-only `var f2: { <T, U>(x: T, y: U): T }`). TS program files
524
- * only: JS bindings keep their checked-dynamic fallbacks. Positive
525
- * answers register in lowerer.deadBindings (the assignment lowering skips
526
- * writes by the same set). */
527
- export declare function deadUnmappableBinding(lowerer: Lowerer, sym: ts.Symbol | null, decl: ts.VariableDeclaration): boolean;
528
- /** The generic function-like INITIALIZER behind a binding declaration —
529
- * `const f = <T>(x: T) => x` or `const f = function g<T>(x: T) {...}`
530
- * (parens stripped). Null when the declaration isn't that shape; the
531
- * SHAPE only — whether the binding qualifies (module scope, never
532
- * reassigned) is bindingGenericFnInfoOf's business. */
533
- export declare function bindingGenericFnNodeOf(decl: ts.VariableDeclaration): ts.FunctionExpression | ts.ArrowFunction | null;
534
- /** The CONTEXTUAL twin of bindingGenericFnNodeOf: `const g: Mapper = (x)
535
- * => x` where `type Mapper = <T>(x: T) => T` — the initializer declares
536
- * no type parameters of its own, but the ANNOTATION's one call signature
537
- * does, and the checker types the arrow's parameters by those (`x: T`).
538
- * Such a binding monomorphizes exactly like `const g = <T>(x: T) => x`;
539
- * bindingGenericFnInfoOf reads the type parameters off the annotation's
540
- * signature. Null when the shape doesn't match (a concrete annotation, a
541
- * generic arrow — the syntactic probe's case, an overloaded alias). */
542
- export declare function bindingContextualGenericFnNodeOf(lowerer: Lowerer, decl: ts.VariableDeclaration): ts.FunctionExpression | ts.ArrowFunction | null;
543
- /** The interned GenericFnInfo for one generic arrow/function-expression
544
- * binding initializer, with the supportability fences applied ONCE per
545
- * declaration: the binding must sit at module scope (the compiled
546
- * instances are plain module functions — an enclosing frame would need
547
- * captures) and must provably HOLD the initializer once initialized — a
548
- * const, or a let/var nothing in its declaring file ever writes (ESM
549
- * import bindings are read-only, so the file scan is the whole story;
550
- * observing the UNINITIALIZED state needs a hoisted early call, the
551
- * same temporal hole const TDZ leaves — the object-literal generic-
552
- * method receiver stance). Successful registration enters the info
553
- * in genericFnsBySymbol under the binding's symbol — and under a named
554
- * function expression's own inner name (it binds itself inside the
555
- * body, the class-expression rule) — so every genericFnOf consumer
556
- * (calls, pinned values, instantiation expressions, namespace and CJS
557
- * member paths) resolves it like a top-level generic declaration. */
558
- export declare function bindingGenericFnInfoOf(lowerer: Lowerer, decl: ts.VariableDeclaration, fnNode: ts.FunctionExpression | ts.ArrowFunction): GenericFnInfo;
559
- /** `const h = id` — a binding ALIASING a generic function (a top-level
560
- * declaration, a registered generic binding, or another alias — resolved
561
- * left to right in declaration order). The alias registers the SAME info
562
- * under its own symbol, so calls (`h(3)`) and pinned values (`take(h)`)
563
- * resolve exactly like the target's own name, and the binding itself has
564
- * no runtime value (a generic function value cannot materialize). Claims
565
- * only bindings whose OWN type still keeps type parameters — a
566
- * concrete-annotated alias (`const h: (x: number) => number = id`) is a
567
- * pinned VALUE, the existing lowerGenericFnValue story. Null when the
568
- * shape doesn't match or the target isn't a registered generic; fences
569
- * (reassignment, var redeclaration) report by name inside. */
570
- export declare function bindingGenericFnAliasInfoOf(lowerer: Lowerer, decl: ts.VariableDeclaration): GenericFnInfo | null;
571
- /** Static resolution stands in for the receiver's runtime value, so an
572
- * object-literal generic-method receiver must provably HOLD the defining
573
- * literal: a direct read of a binding whose initializer IS that literal
574
- * and that nothing ever reassigns — a const, or a let with no write in
575
- * its declaring file (ESM import bindings are read-only, so the file
576
- * scan is the whole story). The read is pure — call and value sites skip
577
- * evaluating it entirely. A reassignable binding could hold a
578
- * structurally identical literal with a DIFFERENT body, which static
579
- * resolution would silently miss. */
580
- export declare function requireObjLitGenericReceiver(lowerer: Lowerer, blame: ts.Node, recvExpr: ts.Expression, literal: ts.ObjectLiteralExpression, name: string): void;
581
62
  /** `obj.method(args)` — whole-program devirtualization decides the form:
582
- * a method some strict subclass of the receiver's STATIC class overrides
583
- * must dispatch on the dynamic class (`virtualCall`, through the vtable);
584
- * everything else — standalone classes, non-overridden methods, leaf
585
- * receivers — stays a direct `call` of the nearest declaration, exactly
586
- * as before inheritance existed. */
63
+ * a method some strict subclass of the receiver's STATIC class overrides
64
+ * must dispatch on the dynamic class (`virtualCall`, through the vtable);
65
+ * everything else — standalone classes, non-overridden methods, leaf
66
+ * receivers — stays a direct `call` of the nearest declaration, exactly
67
+ * as before inheritance existed. */
587
68
  export declare function lowerObjectMethodCall(lowerer: Lowerer, call: ts.CallExpression, access: ts.PropertyAccessExpression): IrExpr | null;