@scriptc/compiler 0.2.6 → 0.2.7

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 (368) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +5 -18
  2. package/dist/backend/cycle-analysis.d.ts +21 -9
  3. package/dist/backend/cycle-analysis.js +139 -67
  4. package/dist/backend/cycle-analysis.js.map +1 -1
  5. package/dist/backend/cycle-analysis.test.js +283 -3
  6. package/dist/backend/cycle-analysis.test.js.map +1 -1
  7. package/dist/backend/cycle-mutability.d.ts +39 -0
  8. package/dist/backend/cycle-mutability.js +205 -0
  9. package/dist/backend/cycle-mutability.js.map +1 -0
  10. package/dist/backend/link-plan-core.d.ts +2 -1
  11. package/dist/backend/link-plan-core.js +15 -3
  12. package/dist/backend/link-plan-core.js.map +1 -1
  13. package/dist/backend/link-plan.d.ts +2 -1
  14. package/dist/backend/link-plan.js.map +1 -1
  15. package/dist/backend/llvm/alloc.d.ts +40 -0
  16. package/dist/backend/llvm/alloc.js +205 -0
  17. package/dist/backend/llvm/alloc.js.map +1 -0
  18. package/dist/backend/llvm/alloc.test.d.ts +1 -0
  19. package/dist/backend/llvm/alloc.test.js +102 -0
  20. package/dist/backend/llvm/alloc.test.js.map +1 -0
  21. package/dist/backend/llvm/call-lifetimes.d.ts +15 -3
  22. package/dist/backend/llvm/call-lifetimes.js +42 -18
  23. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  24. package/dist/backend/llvm/call-lifetimes.test.js +170 -0
  25. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  26. package/dist/backend/llvm/classes.d.ts +4 -1
  27. package/dist/backend/llvm/classes.js +35 -32
  28. package/dist/backend/llvm/classes.js.map +1 -1
  29. package/dist/backend/llvm/classes.test.js +36 -3
  30. package/dist/backend/llvm/classes.test.js.map +1 -1
  31. package/dist/backend/llvm/common.d.ts +13 -0
  32. package/dist/backend/llvm/common.js +30 -0
  33. package/dist/backend/llvm/common.js.map +1 -1
  34. package/dist/backend/llvm/constant-callbacks.d.ts +19 -3
  35. package/dist/backend/llvm/constant-callbacks.js +289 -52
  36. package/dist/backend/llvm/constant-callbacks.js.map +1 -1
  37. package/dist/backend/llvm/constant-callbacks.test.js +140 -3
  38. package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
  39. package/dist/backend/llvm/dense-array-access.d.ts +29 -0
  40. package/dist/backend/llvm/dense-array-access.js +335 -0
  41. package/dist/backend/llvm/dense-array-access.js.map +1 -0
  42. package/dist/backend/llvm/dense-array-access.test.d.ts +1 -0
  43. package/dist/backend/llvm/dense-array-access.test.js +149 -0
  44. package/dist/backend/llvm/dense-array-access.test.js.map +1 -0
  45. package/dist/backend/llvm/dyn.d.ts +34 -0
  46. package/dist/backend/llvm/dyn.js +189 -1
  47. package/dist/backend/llvm/dyn.js.map +1 -1
  48. package/dist/backend/llvm/emitter.d.ts +124 -4
  49. package/dist/backend/llvm/emitter.js +623 -105
  50. package/dist/backend/llvm/emitter.js.map +1 -1
  51. package/dist/backend/llvm/emitter.test.js +68 -6
  52. package/dist/backend/llvm/emitter.test.js.map +1 -1
  53. package/dist/backend/llvm/expr-async.js +58 -4
  54. package/dist/backend/llvm/expr-async.js.map +1 -1
  55. package/dist/backend/llvm/expr-async.test.d.ts +1 -0
  56. package/dist/backend/llvm/expr-async.test.js +62 -0
  57. package/dist/backend/llvm/expr-async.test.js.map +1 -0
  58. package/dist/backend/llvm/expr-calls.js +64 -6
  59. package/dist/backend/llvm/expr-calls.js.map +1 -1
  60. package/dist/backend/llvm/expr-containers.js +16 -5
  61. package/dist/backend/llvm/expr-containers.js.map +1 -1
  62. package/dist/backend/llvm/expr-control.js +92 -2
  63. package/dist/backend/llvm/expr-control.js.map +1 -1
  64. package/dist/backend/llvm/expr-dispatch.js +2 -0
  65. package/dist/backend/llvm/expr-dispatch.js.map +1 -1
  66. package/dist/backend/llvm/expr-dynamic.js +174 -25
  67. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  68. package/dist/backend/llvm/expr-primitives.d.ts +1 -1
  69. package/dist/backend/llvm/expr-primitives.js +52 -24
  70. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  71. package/dist/backend/llvm/expr-primitives.test.js +1 -1
  72. package/dist/backend/llvm/expr-records.js +3 -3
  73. package/dist/backend/llvm/expr-records.js.map +1 -1
  74. package/dist/backend/llvm/expr-stream-bridges.js +59 -2
  75. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  76. package/dist/backend/llvm/expr-stream-bridges.test.js +1 -1
  77. package/dist/backend/llvm/integer-remainder.d.ts +11 -0
  78. package/dist/backend/llvm/integer-remainder.js +91 -0
  79. package/dist/backend/llvm/integer-remainder.js.map +1 -1
  80. package/dist/backend/llvm/layouts.d.ts +2 -1
  81. package/dist/backend/llvm/layouts.js +3 -2
  82. package/dist/backend/llvm/layouts.js.map +1 -1
  83. package/dist/backend/llvm/lazy-captures.d.ts +16 -0
  84. package/dist/backend/llvm/lazy-captures.js +96 -0
  85. package/dist/backend/llvm/lazy-captures.js.map +1 -0
  86. package/dist/backend/llvm/lazy-captures.test.d.ts +1 -0
  87. package/dist/backend/llvm/lazy-captures.test.js +78 -0
  88. package/dist/backend/llvm/lazy-captures.test.js.map +1 -0
  89. package/dist/backend/llvm/lib-filesystem.js +3 -4
  90. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  91. package/dist/backend/llvm/local-array-reads.d.ts +5 -1
  92. package/dist/backend/llvm/local-array-reads.js +78 -17
  93. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  94. package/dist/backend/llvm/local-array-reads.test.js +78 -1
  95. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  96. package/dist/backend/llvm/local-union-storage.d.ts +5 -1
  97. package/dist/backend/llvm/local-union-storage.js +48 -6
  98. package/dist/backend/llvm/local-union-storage.js.map +1 -1
  99. package/dist/backend/llvm/local-union-storage.test.js +91 -4
  100. package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
  101. package/dist/backend/llvm/map-read-lifetimes.test.js +1 -1
  102. package/dist/backend/llvm/nullable-fields.d.ts +28 -0
  103. package/dist/backend/llvm/nullable-fields.js +45 -0
  104. package/dist/backend/llvm/nullable-fields.js.map +1 -0
  105. package/dist/backend/llvm/nullable-fields.test.d.ts +1 -0
  106. package/dist/backend/llvm/nullable-fields.test.js +48 -0
  107. package/dist/backend/llvm/nullable-fields.test.js.map +1 -0
  108. package/dist/backend/llvm/serialized-ir-emission.test.d.ts +1 -0
  109. package/dist/backend/llvm/serialized-ir-emission.test.js +52 -0
  110. package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -0
  111. package/dist/backend/llvm/shapes.d.ts +69 -2
  112. package/dist/backend/llvm/shapes.js +259 -27
  113. package/dist/backend/llvm/shapes.js.map +1 -1
  114. package/dist/backend/llvm/shapes.test.js +114 -5
  115. package/dist/backend/llvm/shapes.test.js.map +1 -1
  116. package/dist/backend/llvm/stack-callbacks.js +2 -3
  117. package/dist/backend/llvm/stack-callbacks.js.map +1 -1
  118. package/dist/backend/llvm/stack-captures.d.ts +3 -1
  119. package/dist/backend/llvm/stack-captures.js +5 -3
  120. package/dist/backend/llvm/stack-captures.js.map +1 -1
  121. package/dist/backend/llvm/stack-unions.test.js +38 -1
  122. package/dist/backend/llvm/stack-unions.test.js.map +1 -1
  123. package/dist/backend/llvm/string-construction.test.js +1 -1
  124. package/dist/backend/llvm/string-key-hash.d.ts +8 -0
  125. package/dist/backend/llvm/string-key-hash.js +59 -0
  126. package/dist/backend/llvm/string-key-hash.js.map +1 -0
  127. package/dist/backend/llvm/string-key-hash.test.d.ts +1 -0
  128. package/dist/backend/llvm/string-key-hash.test.js +34 -0
  129. package/dist/backend/llvm/string-key-hash.test.js.map +1 -0
  130. package/dist/backend/llvm/string-lifetimes.test.js +41 -4
  131. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  132. package/dist/backend/llvm/switch-dispatch.js +1 -1
  133. package/dist/backend/llvm/switch-dispatch.js.map +1 -1
  134. package/dist/backend/llvm/switch-dispatch.test.js +2 -2
  135. package/dist/backend/llvm/switch-dispatch.test.js.map +1 -1
  136. package/dist/backend/may-throw.js +3 -0
  137. package/dist/backend/may-throw.js.map +1 -1
  138. package/dist/backend/may-throw.test.js +1 -1
  139. package/dist/backend/native/cache-warm.d.ts +2 -1
  140. package/dist/backend/native/cache-warm.js.map +1 -1
  141. package/dist/backend/native/contracts.d.ts +3 -2
  142. package/dist/backend/native/contracts.js.map +1 -1
  143. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  144. package/dist/backend/native/runtime-inputs.js +1 -0
  145. package/dist/backend/native/runtime-inputs.js.map +1 -1
  146. package/dist/backend/native-codegen-core.d.ts +2 -1
  147. package/dist/backend/native-codegen-core.js.map +1 -1
  148. package/dist/backend/native-codegen.d.ts +5 -0
  149. package/dist/backend/native-codegen.js +4 -0
  150. package/dist/backend/native-codegen.js.map +1 -1
  151. package/dist/backend/native-codegen.test.js +23 -0
  152. package/dist/backend/native-codegen.test.js.map +1 -1
  153. package/dist/backend/native-link-info-core.d.ts +3 -2
  154. package/dist/backend/native-link-info-core.js.map +1 -1
  155. package/dist/backend/native-link-info.d.ts +2 -1
  156. package/dist/backend/native-link-info.js.map +1 -1
  157. package/dist/backend/native-link-info.test.js +2 -2
  158. package/dist/backend/native-link-info.test.js.map +1 -1
  159. package/dist/backend/native-tools.d.ts +3 -1
  160. package/dist/backend/native-tools.js +0 -1
  161. package/dist/backend/native-tools.js.map +1 -1
  162. package/dist/backend/optimization.d.ts +25 -0
  163. package/dist/backend/optimization.js +21 -0
  164. package/dist/backend/optimization.js.map +1 -0
  165. package/dist/backend/optimization.test.d.ts +1 -0
  166. package/dist/backend/optimization.test.js +24 -0
  167. package/dist/backend/optimization.test.js.map +1 -0
  168. package/dist/backend/runtime-abi.d.ts +2 -2
  169. package/dist/backend/runtime-abi.js +2 -2
  170. package/dist/backend/runtime-pack-core.d.ts +15 -4
  171. package/dist/backend/runtime-pack-core.js +23 -12
  172. package/dist/backend/runtime-pack-core.js.map +1 -1
  173. package/dist/backend/runtime-pack-native.d.ts +7 -3
  174. package/dist/backend/runtime-pack-native.js +0 -3
  175. package/dist/backend/runtime-pack-native.js.map +1 -1
  176. package/dist/backend/runtime-pack-targets.test.js +1 -1
  177. package/dist/backend/runtime-pack.d.ts +20 -2
  178. package/dist/backend/runtime-pack.js +23 -0
  179. package/dist/backend/runtime-pack.js.map +1 -1
  180. package/dist/backend/runtime-pack.test.js +115 -2
  181. package/dist/backend/runtime-pack.test.js.map +1 -1
  182. package/dist/backend/target-diagnostics.test.js +1 -1
  183. package/dist/backend/targets.d.ts +2 -1
  184. package/dist/backend/targets.js +1 -1
  185. package/dist/backend/targets.js.map +1 -1
  186. package/dist/cli/command.js +5 -4
  187. package/dist/cli/command.js.map +1 -1
  188. package/dist/cli/host.d.ts +2 -1
  189. package/dist/cli/usage.d.ts +1 -1
  190. package/dist/cli/usage.js +5 -2
  191. package/dist/cli/usage.js.map +1 -1
  192. package/dist/compile-types.d.ts +5 -2
  193. package/dist/diagnostics/diagnostic.js +10 -8
  194. package/dist/diagnostics/diagnostic.js.map +1 -1
  195. package/dist/executable/executable-cache.d.ts +2 -2
  196. package/dist/executable/executable-cache.js +7 -4
  197. package/dist/executable/executable-cache.js.map +1 -1
  198. package/dist/executable/executable-cache.test.js +20 -0
  199. package/dist/executable/executable-cache.test.js.map +1 -1
  200. package/dist/frontend/lowering/abstract-equality.js +5 -49
  201. package/dist/frontend/lowering/abstract-equality.js.map +1 -1
  202. package/dist/frontend/lowering/array-values.d.ts +23 -0
  203. package/dist/frontend/lowering/array-values.js +129 -0
  204. package/dist/frontend/lowering/array-values.js.map +1 -1
  205. package/dist/frontend/lowering/builtins/errors.js +17 -2
  206. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  207. package/dist/frontend/lowering/builtins/process.d.ts +6 -17
  208. package/dist/frontend/lowering/builtins/process.js +56 -29
  209. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  210. package/dist/frontend/lowering/caught-value-dispatch.d.ts +11 -0
  211. package/dist/frontend/lowering/caught-value-dispatch.js +87 -0
  212. package/dist/frontend/lowering/caught-value-dispatch.js.map +1 -0
  213. package/dist/frontend/lowering/class-assertions.d.ts +4 -0
  214. package/dist/frontend/lowering/class-assertions.js +12 -4
  215. package/dist/frontend/lowering/class-assertions.js.map +1 -1
  216. package/dist/frontend/lowering/class-callbacks.d.ts +3 -3
  217. package/dist/frontend/lowering/class-callbacks.js +18 -5
  218. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  219. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +1 -0
  220. package/dist/frontend/lowering/class-dynamic-dispatch.js +4 -1
  221. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  222. package/dist/frontend/lowering/class-method-mutations.d.ts +5 -0
  223. package/dist/frontend/lowering/class-method-mutations.js +472 -0
  224. package/dist/frontend/lowering/class-method-mutations.js.map +1 -0
  225. package/dist/frontend/lowering/class-method-values.js +25 -5
  226. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  227. package/dist/frontend/lowering/class-prototypes.js +8 -2
  228. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  229. package/dist/frontend/lowering/class-unions.d.ts +16 -0
  230. package/dist/frontend/lowering/class-unions.js +127 -0
  231. package/dist/frontend/lowering/class-unions.js.map +1 -0
  232. package/dist/frontend/lowering/coercions/builders.js +8 -1
  233. package/dist/frontend/lowering/coercions/builders.js.map +1 -1
  234. package/dist/frontend/lowering/coercions/function-adapters.js +2 -0
  235. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  236. package/dist/frontend/lowering/coercions/identity.d.ts +7 -0
  237. package/dist/frontend/lowering/coercions/identity.js +26 -0
  238. package/dist/frontend/lowering/coercions/identity.js.map +1 -0
  239. package/dist/frontend/lowering/coercions/structural.js +9 -6
  240. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  241. package/dist/frontend/lowering/collection-narrowing.d.ts +6 -0
  242. package/dist/frontend/lowering/collection-narrowing.js +31 -0
  243. package/dist/frontend/lowering/collection-narrowing.js.map +1 -0
  244. package/dist/frontend/lowering/containers/array-callback-call.d.ts +7 -0
  245. package/dist/frontend/lowering/containers/array-callback-call.js +52 -0
  246. package/dist/frontend/lowering/containers/array-callback-call.js.map +1 -0
  247. package/dist/frontend/lowering/containers/array-callbacks.d.ts +1 -1
  248. package/dist/frontend/lowering/containers/array-callbacks.js +363 -49
  249. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  250. package/dist/frontend/lowering/containers/array-concat.d.ts +7 -0
  251. package/dist/frontend/lowering/containers/array-concat.js +130 -0
  252. package/dist/frontend/lowering/containers/array-concat.js.map +1 -0
  253. package/dist/frontend/lowering/containers/array-construction.d.ts +2 -0
  254. package/dist/frontend/lowering/containers/array-construction.js +95 -3
  255. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  256. package/dist/frontend/lowering/containers/array-methods.d.ts +1 -11
  257. package/dist/frontend/lowering/containers/array-methods.js +43 -132
  258. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  259. package/dist/frontend/lowering/containers/collection-methods.js +10 -1
  260. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  261. package/dist/frontend/lowering/containers/indexed-objects.js +56 -70
  262. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  263. package/dist/frontend/lowering/cycle-initialization.d.ts +41 -0
  264. package/dist/frontend/lowering/cycle-initialization.js +277 -0
  265. package/dist/frontend/lowering/cycle-initialization.js.map +1 -0
  266. package/dist/frontend/lowering/expressions/evaluation-safety.js +4 -0
  267. package/dist/frontend/lowering/expressions/evaluation-safety.js.map +1 -1
  268. package/dist/frontend/lowering/expressions/object-literals.js +138 -32
  269. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  270. package/dist/frontend/lowering/expressions/union-field-write.d.ts +4 -4
  271. package/dist/frontend/lowering/expressions/union-field-write.js +54 -44
  272. package/dist/frontend/lowering/expressions/union-field-write.js.map +1 -1
  273. package/dist/frontend/lowering/iterator-adapters.d.ts +20 -0
  274. package/dist/frontend/lowering/iterator-adapters.js +605 -0
  275. package/dist/frontend/lowering/iterator-adapters.js.map +1 -0
  276. package/dist/frontend/lowering/lower-array-sort.d.ts +1 -1
  277. package/dist/frontend/lowering/lower-array-sort.js +44 -5
  278. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  279. package/dist/frontend/lowering/lower-array-sort.test.d.ts +1 -0
  280. package/dist/frontend/lowering/lower-array-sort.test.js +31 -0
  281. package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -0
  282. package/dist/frontend/lowering/lower-assert.js +7 -0
  283. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  284. package/dist/frontend/lowering/lower-builtin-values.js +1 -0
  285. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  286. package/dist/frontend/lowering/lower-calls.d.ts +3 -3
  287. package/dist/frontend/lowering/lower-calls.js +162 -121
  288. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  289. package/dist/frontend/lowering/lower-classes.d.ts +2 -0
  290. package/dist/frontend/lowering/lower-classes.js +45 -43
  291. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  292. package/dist/frontend/lowering/lower-exprs.d.ts +9 -2
  293. package/dist/frontend/lowering/lower-exprs.js +390 -157
  294. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  295. package/dist/frontend/lowering/lower-functions.js +32 -19
  296. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  297. package/dist/frontend/lowering/lower-inspect.js +26 -2
  298. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  299. package/dist/frontend/lowering/lower-modules.js +10 -2
  300. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  301. package/dist/frontend/lowering/lower-stmts.js +46 -58
  302. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  303. package/dist/frontend/lowering/lowerer.d.ts +37 -0
  304. package/dist/frontend/lowering/lowerer.js +283 -18
  305. package/dist/frontend/lowering/lowerer.js.map +1 -1
  306. package/dist/frontend/lowering/native-ffi.js +3 -1
  307. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  308. package/dist/frontend/lowering/runtime-optional-provenance.d.ts +15 -0
  309. package/dist/frontend/lowering/runtime-optional-provenance.js +40 -0
  310. package/dist/frontend/lowering/runtime-optional-provenance.js.map +1 -0
  311. package/dist/frontend/lowering/sanitize-class-types.test.js +2 -2
  312. package/dist/frontend/lowering/strict-equality.d.ts +9 -0
  313. package/dist/frontend/lowering/strict-equality.js +116 -0
  314. package/dist/frontend/lowering/strict-equality.js.map +1 -0
  315. package/dist/frontend/lowering/surfaces.js +3 -0
  316. package/dist/frontend/lowering/surfaces.js.map +1 -1
  317. package/dist/frontend/lowering/union-comparison.d.ts +5 -0
  318. package/dist/frontend/lowering/union-comparison.js +47 -0
  319. package/dist/frontend/lowering/union-comparison.js.map +1 -0
  320. package/dist/frontend/program.d.ts +38 -2
  321. package/dist/frontend/program.js +440 -59
  322. package/dist/frontend/program.js.map +1 -1
  323. package/dist/frontend/program.test.js +59 -6
  324. package/dist/frontend/program.test.js.map +1 -1
  325. package/dist/frontend/type-mapper.d.ts +1 -1
  326. package/dist/frontend/type-mapper.js +89 -14
  327. package/dist/frontend/type-mapper.js.map +1 -1
  328. package/dist/frontend/type-mapper.test.js +15 -3
  329. package/dist/frontend/type-mapper.test.js.map +1 -1
  330. package/dist/index.js +25 -9
  331. package/dist/index.js.map +1 -1
  332. package/dist/ir/analysis.d.ts +3 -1
  333. package/dist/ir/analysis.js +4 -0
  334. package/dist/ir/analysis.js.map +1 -1
  335. package/dist/ir/builtin-signatures.js +2 -3
  336. package/dist/ir/builtin-signatures.js.map +1 -1
  337. package/dist/ir/constant-tables.test.js +1 -1
  338. package/dist/ir/initializer-bindings.test.js +1 -1
  339. package/dist/ir/ir.d.ts +78 -15
  340. package/dist/ir/ir.js +20 -6
  341. package/dist/ir/ir.js.map +1 -1
  342. package/dist/ir/scalar-records.test.js +1 -1
  343. package/dist/ir/serialize.d.ts +1 -1
  344. package/dist/ir/serialize.js +3 -3
  345. package/dist/ir/serialize.js.map +1 -1
  346. package/dist/ir/traverse.js +8 -0
  347. package/dist/ir/traverse.js.map +1 -1
  348. package/dist/ir/validate.js +118 -20
  349. package/dist/ir/validate.js.map +1 -1
  350. package/dist/ir/validate.test.js +269 -8
  351. package/dist/ir/validate.test.js.map +1 -1
  352. package/dist/library/fence-eval.test.js +1 -1
  353. package/dist/library/int-infer.test.js +4 -4
  354. package/dist/library/library-cache.test.js +5 -5
  355. package/dist/library/library-profile.d.ts +2 -1
  356. package/dist/library/library-profile.js +4 -3
  357. package/dist/library/library-profile.js.map +1 -1
  358. package/dist/native/compiler.js.map +1 -1
  359. package/dist/native/compiler.test.js +2 -2
  360. package/dist/native/library.d.ts +2 -1
  361. package/dist/native/library.js.map +1 -1
  362. package/dist/native/prepare.js +27 -3
  363. package/dist/native/prepare.js.map +1 -1
  364. package/dist/native/sanitizer.d.ts +3 -2
  365. package/dist/native/sanitizer.js +3 -13
  366. package/dist/native/sanitizer.js.map +1 -1
  367. package/package.json +20 -20
  368. package/surface-manifest.json +8 -2
@@ -1 +1 @@
1
- {"version":3,"file":"lower-builtin-values.js","sourceRoot":"","sources":["../../../src/frontend/lowering/lower-builtin-values.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lower-builtin-values.js","sourceRoot":"","sources":["../../../src/frontend/lowering/lower-builtin-values.ts"],"names":[],"mappings":"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"}
@@ -50,9 +50,9 @@ export declare function lowerPromiseMethodCall(lowerer: Lowerer, call: ts.CallEx
50
50
  export declare function lowerFilterNarrowCall(lowerer: Lowerer, call: ts.CallExpression, access: ts.PropertyAccessExpression): IrExpr | null;
51
51
  /** The interned keys-array helper over a FIXED record shape: a call of a
52
52
  * lifted helper whose body pushes each declared field name in first-seen
53
- * DECLARATION order, skipping fields currently holding the undefined arm
54
- * of their union at runtime (Node's missing key — an unset optional
55
- * never made it into the object; SEMANTICS.md 37's rules). ONE
53
+ * DECLARATION order, skipping optional fields that are currently absent
54
+ * (omitted or deleted — Node's missing key; a field explicitly holding
55
+ * undefined is present and listed). ONE
56
56
  * construction, interned per shape, shared by Object.keys and for-in —
57
57
  * for-in iterates exactly the keys Object.keys answers. */
58
58
  export declare function recordKeysArrayCall(lowerer: Lowerer, receiver: IrExpr, argIr: IrType & {
@@ -1,3 +1,5 @@
1
+ import { lowerUnionEquality, tagEqualityMayMissAlias } from "./strict-equality.js";
2
+ import { lowerArrayCallbackCall } from "./containers/array-callback-call.js";
1
3
  /** Dispatch source calls, builtin members and receiver-specific operations.
2
4
  * Signature collection, argument completion and function bodies have their
3
5
  * own owners; this module selects the applicable call path. */
@@ -24,6 +26,7 @@ import { lowerGroupByStaticCall } from "./containers/collection-grouping.js";
24
26
  import { lowerIteratorHelperCall } from "./containers/iterator-helpers.js";
25
27
  import { lowerObjectAssignIndexShape, lowerObjectConstructor, lowerObjectFromEntriesCall, lowerObjectIterOverIndexShape, } from "./containers/indexed-objects.js";
26
28
  import { lowerTupleReadMethodCall } from "./containers/array-methods.js";
29
+ import { tryFuseIndexRead } from "./array-values.js";
27
30
  import { lowerBytesStaticCall } from "./containers/bytes.js";
28
31
  import { lowerRegexMethodCall, lowerStringIndexCall, lowerStringMethodCall, lowerStringPaddingCall, lowerStringSplitCall, } from "./containers/string-and-regexp.js";
29
32
  import { createRequireSpecOf } from "./builtins/module-bindings.js";
@@ -1143,6 +1146,23 @@ export function lowerCall(lowerer, expr) {
1143
1146
  if (sig && !(jsSpreadArgs && spreadNeedsRuntimeArity(lowerer, sig.params, expr.arguments))) {
1144
1147
  lowerer.noteEdge(sig.name);
1145
1148
  const args = lowerer.completeArgs(expr.arguments, sig.params, loc, expr);
1149
+ const symbol = lowerer.resolveValueSymbol(expr.expression);
1150
+ const declaration = symbol ? lowerer.checker.valueDeclarationOf(symbol) : undefined;
1151
+ // A bare call supplies undefined as this, even inside a callback
1152
+ // currently carrying a receiver. The value-call ABI saves and
1153
+ // restores that ambient receiver around the function invocation.
1154
+ if (declaration &&
1155
+ ts.isFunctionDeclaration(declaration) &&
1156
+ declaration.parameters.some(isThisParameter)) {
1157
+ const callee = lowerer.lowerExpr(expr.expression);
1158
+ return reconcileOverloadReturn(lowerer, expr, {
1159
+ kind: "callValue",
1160
+ callee,
1161
+ args,
1162
+ type: sig.returnType,
1163
+ loc,
1164
+ });
1165
+ }
1146
1166
  return reconcileOverloadReturn(lowerer, expr, {
1147
1167
  kind: "call",
1148
1168
  callee: sig.name,
@@ -1573,6 +1593,11 @@ export function lowerCall(lowerer, expr) {
1573
1593
  !symbolFieldInfo(lowerer, expr.expression)) {
1574
1594
  const access = expr.expression;
1575
1595
  const value = tryLowerExpression(lowerer, access.expression);
1596
+ if (value?.type.kind === "array" && !isJsSourceFile(expr.getSourceFile())) {
1597
+ const callback = lowerArrayCallbackCall(lowerer, expr, access, value);
1598
+ if (callback)
1599
+ return callback;
1600
+ }
1576
1601
  if (value?.type.kind === "dyn" ||
1577
1602
  value?.type.kind === "generator" ||
1578
1603
  (value &&
@@ -1996,6 +2021,23 @@ function lowerNumberConstructorValue(lowerer, argNode, loc) {
1996
2021
  return { kind: "libCall", fn: "num.fromString", args: [arg], type: F64, loc };
1997
2022
  if (arg.type.kind === "dyn")
1998
2023
  return { kind: "libCall", fn: "dyn.numberConstructor", args: [arg], type: F64, loc };
2024
+ // Number(strings[i]) without boxing `string | undefined`: a missing slot
2025
+ // converts like undefined, to NaN.
2026
+ const indexedString = arg.type.kind === "union" &&
2027
+ arg.kind === "call" &&
2028
+ arg.args[0]?.type.kind === "array" &&
2029
+ arg.args[0].type.elem.kind === "string"
2030
+ ? tryFuseIndexRead(lowerer, arg, F64, (read) => ({ kind: "libCall", fn: "num.fromString", args: [read], type: F64, loc }), {
2031
+ kind: "bin",
2032
+ op: "/",
2033
+ left: { kind: "numLit", value: 0, type: F64, loc },
2034
+ right: { kind: "numLit", value: 0, type: F64, loc },
2035
+ type: F64,
2036
+ loc,
2037
+ })
2038
+ : null;
2039
+ if (indexedString)
2040
+ return indexedString;
1999
2041
  if (arg.type.kind === "union" && lowerer.dynConvertible(arg.type))
2000
2042
  return {
2001
2043
  kind: "libCall",
@@ -4199,13 +4241,13 @@ function implicitReceiverOverloadReturn(lowerer, expr) {
4199
4241
  function reconcileOverloadReturn(lowerer, expr, call) {
4200
4242
  const rsig = lowerer.checker.getResolvedSignature(expr);
4201
4243
  const rdecl = rsig ? lowerer.checker.signatureDeclaration(rsig) : undefined;
4202
- // Fluent JS overrides share the base's return ABI, but their result
4203
- // still has the receiver's subclass layout at the call site.
4244
+ // Nominal covariant overrides share the base's return ABI, but retain
4245
+ // their declared subclass result at the call site. Unannotated fluent
4246
+ // JS overrides use the same bridge for their proven receiver result.
4204
4247
  if (call.type.kind === "object" &&
4205
4248
  rdecl &&
4206
4249
  ts.isMethodDeclaration(rdecl) &&
4207
- isJsSourceFile(rdecl.getSourceFile()) &&
4208
- returnsOnlyThis(rdecl)) {
4250
+ (!isJsSourceFile(rdecl.getSourceFile()) || returnsOnlyThis(rdecl))) {
4209
4251
  call = lowerer.maybeNarrow(call, expr);
4210
4252
  }
4211
4253
  const resolvedOverload = rsig &&
@@ -5703,11 +5745,10 @@ function filterNarrowHelper(lowerer, test, elem, outElem, tag, loc) {
5703
5745
  * no runtime walk. ORDER is the shape's first-seen DECLARATION order
5704
5746
  * (threaded through the shape registry), which matches Node whenever
5705
5747
  * objects are constructed in declaration order — the divergence for
5706
- * reordered construction is SEMANTICS.md 36. Fields holding the
5707
- * undefined arm of their union are SKIPPED at runtime (Node's missing
5708
- * key: an unset optional never made it into the object), which also
5709
- * means an EXPLICIT `{ a: undefined }` key is dropped where Node lists
5710
- * it — same rule as jsonStringify, same SEMANTICS entry. Values wrap
5748
+ * reordered construction is SEMANTICS.md 36. Optional fields that are
5749
+ * absent (omitted or deleted) are SKIPPED at runtime, Node's missing key,
5750
+ * while an explicit `{ a: undefined }` is listed with its undefined
5751
+ * value. Values wrap
5711
5752
  * into the checker's result-element type per field; a multi-arm field
5712
5753
  * union that differs from the result union would need a re-tag — fenced.
5713
5754
  * Null when this isn't an Object static over a fixed record (index
@@ -5826,9 +5867,9 @@ function lowerSymbolMethodCall(lowerer, call, access) {
5826
5867
  }
5827
5868
  /** The interned keys-array helper over a FIXED record shape: a call of a
5828
5869
  * lifted helper whose body pushes each declared field name in first-seen
5829
- * DECLARATION order, skipping fields currently holding the undefined arm
5830
- * of their union at runtime (Node's missing key — an unset optional
5831
- * never made it into the object; SEMANTICS.md 37's rules). ONE
5870
+ * DECLARATION order, skipping optional fields that are currently absent
5871
+ * (omitted or deleted — Node's missing key; a field explicitly holding
5872
+ * undefined is present and listed). ONE
5832
5873
  * construction, interned per shape, shared by Object.keys and for-in —
5833
5874
  * for-in iterates exactly the keys Object.keys answers. */
5834
5875
  export function recordKeysArrayCall(lowerer, receiver, argIr, shape, loc) {
@@ -5877,32 +5918,11 @@ export function recordKeysArrayCall(lowerer, receiver, argIr, shape, loc) {
5877
5918
  },
5878
5919
  loc,
5879
5920
  };
5880
- // Undefined-armed fields: the push is guarded by a tag test (the
5921
+ // Fields that can be absent push behind their presence test (the
5881
5922
  // key exists exactly when Object.keys would list it).
5882
- const utag = f.type.kind === "union" ? lowerer.armTag(f.type.unionId, UNDEFINED_T) : -1;
5883
- body.push(utag >= 0 && f.type.kind === "union"
5884
- ? {
5885
- kind: "if",
5886
- cond: {
5887
- kind: "unionIsTag",
5888
- unionId: f.type.unionId,
5889
- tag: utag,
5890
- negated: true,
5891
- value: {
5892
- kind: "recordGet",
5893
- obj: ref,
5894
- shapeId: argIr.shapeId,
5895
- field: f.name,
5896
- type: f.type,
5897
- loc,
5898
- },
5899
- type: BOOL,
5900
- loc,
5901
- },
5902
- then: [pushStmt],
5903
- else_: null,
5904
- loc,
5905
- }
5923
+ const present = lowerer.recordFieldPresent(ref, argIr.shapeId, f.name, loc);
5924
+ body.push(present.kind === "recordHas"
5925
+ ? { kind: "if", cond: present, then: [pushStmt], else_: null, loc }
5906
5926
  : pushStmt);
5907
5927
  }
5908
5928
  body.push({ kind: "return", value: outRef, loc });
@@ -5916,9 +5936,9 @@ export function recordKeysArrayCall(lowerer, receiver, argIr, shape, loc) {
5916
5936
  }
5917
5937
  /** Interned `%obj.hasOwn.<n>(r, k)` — Object.hasOwn's membership walk
5918
5938
  * over a record shape: the key compares against each
5919
- * declared field name, undefined-armed fields answering by their tag
5939
+ * declared field name, optional fields answering by their presence
5920
5940
  * (a key is own exactly when Object.keys would list it — the two share
5921
- * the guard), everything else true. Unmatched keys probe the overflow
5941
+ * the test), everything else true. Unmatched keys probe the overflow
5922
5942
  * map when present, so explicit undefined values remain own keys. */
5923
5943
  function recordHasOwnHelper(lowerer, shapeId, loc) {
5924
5944
  const key = `obj.hasOwn:${shapeId}`;
@@ -5933,18 +5953,7 @@ function recordHasOwnHelper(lowerer, shapeId, loc) {
5933
5953
  const kRef = { kind: "varRef", localId: "k.0", type: STRING, loc };
5934
5954
  const body = [];
5935
5955
  for (const f of shape.fields) {
5936
- const utag = f.type.kind === "union" ? lowerer.armTag(f.type.unionId, UNDEFINED_T) : -1;
5937
- const answer = utag >= 0 && f.type.kind === "union"
5938
- ? {
5939
- kind: "unionIsTag",
5940
- unionId: f.type.unionId,
5941
- tag: utag,
5942
- negated: true,
5943
- value: { kind: "recordGet", obj: rRef, shapeId, field: f.name, type: f.type, loc },
5944
- type: BOOL,
5945
- loc,
5946
- }
5947
- : { kind: "boolLit", value: true, type: BOOL, loc };
5956
+ const answer = lowerer.recordFieldPresent(rRef, shapeId, f.name, loc);
5948
5957
  body.push({
5949
5958
  kind: "if",
5950
5959
  cond: {
@@ -5982,8 +5991,9 @@ function recordHasOwnHelper(lowerer, shapeId, loc) {
5982
5991
  }
5983
5992
  /** Interned `%obj.assign.<n>(t, s)` — Object.assign's per-field copy
5984
5993
  * over signature-free records (every source field lands on a same-named,
5985
- * same-typed target field — the caller's gate): undefined-armed source
5986
- * fields copy behind the not-undefined guard, everything else straight,
5994
+ * same-typed target field — the caller's gate): optional source fields
5995
+ * copy only when present (an explicit undefined copies), everything else
5996
+ * straight,
5987
5997
  * and the TARGET returns (JS's aliasing). */
5988
5998
  function recordAssignHelper(lowerer, targetShapeId, srcShapeId, loc) {
5989
5999
  const key = `obj.assign:${targetShapeId}:${srcShapeId}`;
@@ -6015,23 +6025,9 @@ function recordAssignHelper(lowerer, targetShapeId, srcShapeId, loc) {
6015
6025
  value: get,
6016
6026
  loc,
6017
6027
  };
6018
- const utag = f.type.kind === "union" ? lowerer.armTag(f.type.unionId, UNDEFINED_T) : -1;
6019
- body.push(utag >= 0 && f.type.kind === "union"
6020
- ? {
6021
- kind: "if",
6022
- cond: {
6023
- kind: "unionIsTag",
6024
- unionId: f.type.unionId,
6025
- tag: utag,
6026
- negated: true,
6027
- value: get,
6028
- type: BOOL,
6029
- loc,
6030
- },
6031
- then: [set],
6032
- else_: null,
6033
- loc,
6034
- }
6028
+ const present = lowerer.recordFieldPresent(sRef, srcShapeId, f.name, loc);
6029
+ body.push(present.kind === "recordHas"
6030
+ ? { kind: "if", cond: present, then: [set], else_: null, loc }
6035
6031
  : set);
6036
6032
  }
6037
6033
  body.push({ kind: "return", value: tRef, loc });
@@ -6309,6 +6305,9 @@ function lowerObjectStaticCall(lowerer, call, access) {
6309
6305
  };
6310
6306
  }
6311
6307
  if (left.type.kind === "union" || right.type.kind === "union") {
6308
+ const compared = lowerUnionEquality(lowerer, left, right, false, true, loc);
6309
+ if (compared)
6310
+ return compared;
6312
6311
  const ut = left.type.kind === "union" ? left.type : right.type;
6313
6312
  const bothUnion = left.type.kind === "union" && right.type.kind === "union";
6314
6313
  const sameUnion = bothUnion && typeEquals(left.type, right.type);
@@ -6316,9 +6315,16 @@ function lowerObjectStaticCall(lowerer, call, access) {
6316
6315
  const plain = left.type.kind === "union" ? right : left;
6317
6316
  const arms = lowerer.unions.get(ut.unionId)?.arms ?? [];
6318
6317
  // The plain side wraps into the union exactly like === when the
6319
- // union holds its type; a plain PRIMITIVE the union has no arm
6320
- // for is the disjoint constant false (coercing it would strand).
6321
- if (bothUnion || arms.some((a) => typeEquals(a, plain.type))) {
6318
+ // union holds its type, or when a plain class instance upcasts
6319
+ // into exactly one class arm (the same pointer under a base tag);
6320
+ // a plain PRIMITIVE the union has no arm for is the disjoint
6321
+ // constant false (coercing it would strand).
6322
+ const plainType = plain.type;
6323
+ const upcastArm = plainType.kind === "object" &&
6324
+ arms.filter((a) => a.kind === "object" && lowerer.isSubclassOf(plainType.className, a.className)).length === 1;
6325
+ if (bothUnion || upcastArm || arms.some((a) => typeEquals(a, plain.type))) {
6326
+ if (tagEqualityMayMissAlias(lowerer, ut))
6327
+ lowerer.noLowering("Object.is over related class values beside structural union members", call, NARROW_FIRST);
6322
6328
  const sameValue = arms.some((a) => a.kind === "f64");
6323
6329
  return {
6324
6330
  kind: "unionEq",
@@ -6530,12 +6536,10 @@ function lowerObjectStaticCall(lowerer, call, access) {
6530
6536
  // (the mockable-clock restore: `Object.assign(mocked,
6531
6537
  // implementations)` over one shape): the per-field copy helper,
6532
6538
  // returning the TARGET — JS's aliasing, the target mutates in
6533
- // place. Undefined-armed source fields copy behind the
6534
- // not-undefined guard (an omitted optional field holds the
6535
- // undefined arm and must not erase the target's value — Node
6536
- // copies own keys only; an EXPLICIT `k: undefined` source diverges,
6537
- // the explicit-undefined-is-absent stance). Everything else keeps
6538
- // the spread hint.
6539
+ // place. Optional source fields copy only when present (an omitted
6540
+ // optional field must not erase the target's value — Node copies own
6541
+ // keys only — while an explicit `k: undefined` does). Everything
6542
+ // else keeps the spread hint.
6539
6543
  if (call.arguments.length === 2 && !call.arguments.some((a) => ts.isSpreadElement(a))) {
6540
6544
  const tProbe = tryLowerExpression(lowerer, call.arguments[0]);
6541
6545
  const sProbe = tryLowerExpression(lowerer, call.arguments[1]);
@@ -6912,11 +6916,9 @@ function lowerObjectStaticCall(lowerer, call, access) {
6912
6916
  }
6913
6917
  // `Object.hasOwn(r, k)` over a RECORD receiver: a record's own-key set
6914
6918
  // is its declared field list, so membership is a compare chain against
6915
- // the field names (interned per shape). Undefined-armed (optional)
6916
- // fields answer by their runtime tag — the explicit-undefined-is-absent
6917
- // stance: an omitted optional field holds the undefined arm and reads
6918
- // as NOT own, exactly Node's absent key (an EXPLICIT `k: undefined`
6919
- // diverges — documented next to the child-env/JSON rule). Tuple
6919
+ // the field names (interned per shape). Optional fields answer by
6920
+ // their runtime presence: an omitted or deleted optional field is NOT
6921
+ // own, while an explicit `k: undefined` is, exactly Node's keys. Tuple
6920
6922
  // and accessor-carrying shapes keep the SC2020 fence. Index-signature
6921
6923
  // records additionally probe the overflow map; non-record receivers
6922
6924
  // do too.
@@ -7195,8 +7197,8 @@ function lowerObjectStaticCall(lowerer, call, access) {
7195
7197
  }
7196
7198
  return null;
7197
7199
  };
7198
- // Undefined-armed fields: the push is guarded by a tag test, and
7199
- // the pushed value is the narrowed non-undefined arm.
7200
+ // Undefined-armed fields: the push is guarded by the field's
7201
+ // presence; a narrowed push re-tags the non-undefined arm.
7200
7202
  let guardUndefTag = null;
7201
7203
  let value = raw;
7202
7204
  let vt = f.type;
@@ -7247,46 +7249,83 @@ function lowerObjectStaticCall(lowerer, call, access) {
7247
7249
  lowerer.unsupported("SC1090", call, `Object.${member} over '${lowerer.fmt(argIr)}' (field '${f.name}' of type '${lowerer.fmt(f.type)}' ` +
7248
7250
  `cannot flow into the '${lowerer.fmt(valueT)}' result element — read the fields directly)`);
7249
7251
  }
7250
- const pushed = member === "values"
7251
- ? coerced
7252
- : {
7253
- kind: "recordLit",
7254
- fields: [
7255
- { name: "0", value: { kind: "strLit", value: f.name, type: STRING, loc } },
7256
- { name: "1", value: coerced },
7257
- ],
7258
- type: tupleT,
7259
- loc,
7260
- };
7261
- const pushStmt = {
7252
+ const pushOf = (element) => ({
7262
7253
  kind: "exprStmt",
7263
7254
  expr: {
7264
7255
  kind: "arrIntrinsic",
7265
7256
  method: "push",
7266
7257
  receiver: outRef,
7267
- args: [pushed],
7258
+ args: [
7259
+ member === "values"
7260
+ ? element
7261
+ : {
7262
+ kind: "recordLit",
7263
+ fields: [
7264
+ { name: "0", value: { kind: "strLit", value: f.name, type: STRING, loc } },
7265
+ { name: "1", value: element },
7266
+ ],
7267
+ type: tupleT,
7268
+ loc,
7269
+ },
7270
+ ],
7268
7271
  type: F64,
7269
7272
  loc,
7270
7273
  },
7271
7274
  loc,
7272
- };
7273
- body.push(guardUndefTag !== null && f.type.kind === "union"
7274
- ? {
7275
- kind: "if",
7276
- cond: {
7277
- kind: "unionIsTag",
7278
- unionId: f.type.unionId,
7279
- tag: guardUndefTag,
7280
- negated: true,
7281
- value: raw,
7282
- type: BOOL,
7275
+ });
7276
+ let stmt = pushOf(coerced);
7277
+ if (guardUndefTag !== null && f.type.kind === "union") {
7278
+ if (value !== raw) {
7279
+ // A narrowed push: a present field holding undefined pushes
7280
+ // the result element's own undefined when it has one; a values
7281
+ // array without one stores a present undefined element (a
7282
+ // runtime-optional field the checker typed as required). An
7283
+ // entries tuple slot has no spelling for it.
7284
+ const undefinedElement = valueT ? lowerer.wrappedUndefined(valueT, loc) : null;
7285
+ const undefinedPush = undefinedElement
7286
+ ? pushOf(undefinedElement)
7287
+ : member === "values"
7288
+ ? {
7289
+ kind: "arraySetUndefined",
7290
+ arr: outRef,
7291
+ index: {
7292
+ kind: "arrIntrinsic",
7293
+ method: "length",
7294
+ receiver: outRef,
7295
+ args: [],
7296
+ type: F64,
7297
+ loc,
7298
+ },
7299
+ loc,
7300
+ }
7301
+ : null;
7302
+ stmt = {
7303
+ kind: "if",
7304
+ cond: {
7305
+ kind: "unionIsTag",
7306
+ unionId: f.type.unionId,
7307
+ tag: guardUndefTag,
7308
+ negated: true,
7309
+ value: raw,
7310
+ type: BOOL,
7311
+ loc,
7312
+ },
7313
+ then: [stmt],
7314
+ else_: undefinedPush ? [undefinedPush] : null,
7283
7315
  loc,
7284
- },
7285
- then: [pushStmt],
7316
+ };
7317
+ }
7318
+ // Absent fields contribute nothing; present ones push their
7319
+ // value, undefined included.
7320
+ stmt = {
7321
+ kind: "if",
7322
+ cond: lowerer.recordFieldPresent(ref, argIr.shapeId, f.name, loc),
7323
+ then: [stmt],
7286
7324
  else_: null,
7287
7325
  loc,
7288
- }
7289
- : pushStmt);
7326
+ };
7327
+ }
7328
+ body.push(stmt);
7290
7329
  }
7291
7330
  body.push({ kind: "return", value: outRef, loc });
7292
7331
  fn.body = body;
@@ -7355,7 +7394,7 @@ function lowerObjectAssignHybrid(lowerer, call) {
7355
7394
  for (const f of shape.fields) {
7356
7395
  const v = values.get(f.name);
7357
7396
  if (!v) {
7358
- const absent = lowerer.wrappedUndefined(f.type, loc);
7397
+ const absent = lowerer.absentFieldValue(f.type, loc);
7359
7398
  if (!absent) {
7360
7399
  lowerer.unsupported("SC1090", call, `Object.assign leaving the required field '${f.name}' of '${lowerer.fmt(mapped)}' unfilled`);
7361
7400
  }
@@ -7955,7 +7994,9 @@ export function lowerObjectMethodCall(lowerer, call, access) {
7955
7994
  const receiverLocal = lowerer.declareHiddenLocal("%callReceiver", target.obj.type);
7956
7995
  const init = { kind: "varDecl", localId: receiverLocal.id, init: target.obj, loc };
7957
7996
  target.obj = { kind: "varRef", localId: receiverLocal.id, type: receiverLocal.type, loc };
7958
- const receiver = lowerer.coerceToExpected(target.obj, DYN);
7997
+ const receiver = {};
7998
+ if (!lowerer.receiverFreeCallbackFields.has(access.name.text))
7999
+ receiver.receiver = lowerer.coerceToExpected(target.obj, DYN);
7959
8000
  const finish = (result) => ({
7960
8001
  kind: "seqExpr",
7961
8002
  stmts: [init],
@@ -7984,12 +8025,12 @@ export function lowerObjectMethodCall(lowerer, call, access) {
7984
8025
  const boxed = { kind: "dynFrom", value: callee, type: DYN, loc };
7985
8026
  const spread = lowerSpreadArgsCall(lowerer, call, boxed, loc);
7986
8027
  if (spread?.kind === "dynCall")
7987
- return finish({ ...spread, receiver });
8028
+ return finish({ ...spread, ...receiver });
7988
8029
  const args = call.arguments.map((arg) => lowerer.lowerExprExpecting(arg, DYN));
7989
8030
  return finish({
7990
8031
  kind: "dynCall",
7991
8032
  callee: boxed,
7992
- receiver,
8033
+ ...receiver,
7993
8034
  calleeName: access.getText(),
7994
8035
  args,
7995
8036
  type: DYN,
@@ -7997,7 +8038,7 @@ export function lowerObjectMethodCall(lowerer, call, access) {
7997
8038
  });
7998
8039
  }
7999
8040
  const args = completeFuncValueArgs(lowerer, call, callee.type, locOf(call));
8000
- return finish({ kind: "callValue", callee, receiver, args, type: callee.type.ret, loc });
8041
+ return finish({ kind: "callValue", callee, ...receiver, args, type: callee.type.ret, loc });
8001
8042
  }
8002
8043
  if (callee?.type.kind === "dyn") {
8003
8044
  if (call.arguments.some((a) => ts.isSpreadElement(a))) {
@@ -8007,7 +8048,7 @@ export function lowerObjectMethodCall(lowerer, call, access) {
8007
8048
  return finish({
8008
8049
  kind: "dynCall",
8009
8050
  callee,
8010
- receiver,
8051
+ ...receiver,
8011
8052
  calleeName: access.getText(),
8012
8053
  args,
8013
8054
  type: DYN,
@@ -8089,7 +8130,7 @@ export function lowerObjectMethodCall(lowerer, call, access) {
8089
8130
  type: found.sig.ret,
8090
8131
  loc,
8091
8132
  };
8092
- const result = classCallbackCall(lowerer, value, method, call.arguments.map((arg) => lowerer.lowerExprExpecting(arg, DYN)), fallback, loc, access.getText());
8133
+ const result = classCallbackCall(lowerer, value, method, call.arguments, fallback, loc, access.getText());
8093
8134
  return {
8094
8135
  kind: "seqExpr",
8095
8136
  stmts: [{ kind: "varDecl", localId: local.id, init: receiver, loc }],