@geastack/compiler 1.0.15

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 (966) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +149 -0
  3. package/dist/cli-analyze.d.ts +1 -0
  4. package/dist/cli-analyze.js +61 -0
  5. package/dist/cli-coverage.d.ts +1 -0
  6. package/dist/cli-coverage.js +329 -0
  7. package/dist/cli-emit.d.ts +10 -0
  8. package/dist/cli-emit.js +398 -0
  9. package/dist/cli-module-graph.d.ts +18 -0
  10. package/dist/cli-module-graph.js +123 -0
  11. package/dist/cli-package-source.d.ts +5 -0
  12. package/dist/cli-package-source.js +116 -0
  13. package/dist/cli-project.d.ts +2 -0
  14. package/dist/cli-project.js +60 -0
  15. package/dist/cli.d.ts +2 -0
  16. package/dist/cli.js +199 -0
  17. package/dist/compiler.d.ts +228 -0
  18. package/dist/compiler.js +1029 -0
  19. package/dist/conversion/algebra.d.ts +218 -0
  20. package/dist/conversion/algebra.js +155 -0
  21. package/dist/conversion/build.d.ts +67 -0
  22. package/dist/conversion/build.js +1378 -0
  23. package/dist/conversion/derive.d.ts +37 -0
  24. package/dist/conversion/derive.js +260 -0
  25. package/dist/conversion/graph-validation.d.ts +8 -0
  26. package/dist/conversion/graph-validation.js +97 -0
  27. package/dist/conversion/native-callable-adapter.d.ts +13 -0
  28. package/dist/conversion/native-callable-adapter.js +53 -0
  29. package/dist/conversion/native-class-reference.d.ts +12 -0
  30. package/dist/conversion/native-class-reference.js +39 -0
  31. package/dist/conversion/native-payload-transport.d.ts +25 -0
  32. package/dist/conversion/native-payload-transport.js +33 -0
  33. package/dist/conversion/native-selection.d.ts +49 -0
  34. package/dist/conversion/native-selection.js +135 -0
  35. package/dist/conversion/native-sum.d.ts +42 -0
  36. package/dist/conversion/native-sum.js +115 -0
  37. package/dist/conversion/nodes.d.ts +55 -0
  38. package/dist/conversion/nodes.js +91 -0
  39. package/dist/conversion/operand-view.d.ts +14 -0
  40. package/dist/conversion/operand-view.js +20 -0
  41. package/dist/conversion/record-view.d.ts +157 -0
  42. package/dist/conversion/record-view.js +273 -0
  43. package/dist/conversion/registry.d.ts +217 -0
  44. package/dist/conversion/registry.js +1 -0
  45. package/dist/diagnostics/model.d.ts +76 -0
  46. package/dist/diagnostics/model.js +60 -0
  47. package/dist/diagnostics/sweep.d.ts +31 -0
  48. package/dist/diagnostics/sweep.js +112 -0
  49. package/dist/identity/ids.d.ts +179 -0
  50. package/dist/identity/ids.js +212 -0
  51. package/dist/ir/absent-class-arm.d.ts +48 -0
  52. package/dist/ir/absent-class-arm.js +157 -0
  53. package/dist/ir/borrow-effects.d.ts +23 -0
  54. package/dist/ir/borrow-effects.js +151 -0
  55. package/dist/ir/borrowed-call-arguments.d.ts +40 -0
  56. package/dist/ir/borrowed-call-arguments.js +117 -0
  57. package/dist/ir/build.d.ts +168 -0
  58. package/dist/ir/build.js +459 -0
  59. package/dist/ir/call-dispatch.d.ts +38 -0
  60. package/dist/ir/call-dispatch.js +502 -0
  61. package/dist/ir/call-entry.d.ts +142 -0
  62. package/dist/ir/call-entry.js +386 -0
  63. package/dist/ir/callable-class-flow.d.ts +27 -0
  64. package/dist/ir/callable-class-flow.js +1386 -0
  65. package/dist/ir/callable-field-slots.d.ts +22 -0
  66. package/dist/ir/callable-field-slots.js +166 -0
  67. package/dist/ir/callable-identity-demand.d.ts +52 -0
  68. package/dist/ir/callable-identity-demand.js +460 -0
  69. package/dist/ir/callable-member-candidates.d.ts +9 -0
  70. package/dist/ir/callable-member-candidates.js +39 -0
  71. package/dist/ir/callable-records.d.ts +21 -0
  72. package/dist/ir/callable-records.js +411 -0
  73. package/dist/ir/captures.d.ts +26 -0
  74. package/dist/ir/captures.js +335 -0
  75. package/dist/ir/certificate.d.ts +45 -0
  76. package/dist/ir/certificate.js +47 -0
  77. package/dist/ir/certify/carrier-keys.d.ts +73 -0
  78. package/dist/ir/certify/carrier-keys.js +221 -0
  79. package/dist/ir/certify/function-source.d.ts +4 -0
  80. package/dist/ir/certify/function-source.js +28 -0
  81. package/dist/ir/certify/has-property-key.d.ts +88 -0
  82. package/dist/ir/certify/has-property-key.js +116 -0
  83. package/dist/ir/certify/instanceof-key.d.ts +24 -0
  84. package/dist/ir/certify/instanceof-key.js +35 -0
  85. package/dist/ir/certify/property-access-keys.d.ts +172 -0
  86. package/dist/ir/certify/property-access-keys.js +291 -0
  87. package/dist/ir/certify/property-access.d.ts +3 -0
  88. package/dist/ir/certify/property-access.js +597 -0
  89. package/dist/ir/certify/runtime-helper.d.ts +3 -0
  90. package/dist/ir/certify/runtime-helper.js +326 -0
  91. package/dist/ir/certify/typeof-operand.d.ts +14 -0
  92. package/dist/ir/certify/typeof-operand.js +16 -0
  93. package/dist/ir/certify.d.ts +123 -0
  94. package/dist/ir/certify.js +481 -0
  95. package/dist/ir/class-evaluation.d.ts +26 -0
  96. package/dist/ir/class-evaluation.js +50 -0
  97. package/dist/ir/class-static-fields.d.ts +60 -0
  98. package/dist/ir/class-static-fields.js +108 -0
  99. package/dist/ir/construct-entry.d.ts +26 -0
  100. package/dist/ir/construct-entry.js +117 -0
  101. package/dist/ir/dead-values.d.ts +90 -0
  102. package/dist/ir/dead-values.js +184 -0
  103. package/dist/ir/deferral.d.ts +99 -0
  104. package/dist/ir/deferral.js +409 -0
  105. package/dist/ir/dense-loops.d.ts +230 -0
  106. package/dist/ir/dense-loops.js +697 -0
  107. package/dist/ir/dominance.d.ts +82 -0
  108. package/dist/ir/dominance.js +268 -0
  109. package/dist/ir/emission-representations.d.ts +71 -0
  110. package/dist/ir/emission-representations.js +350 -0
  111. package/dist/ir/facts.d.ts +218 -0
  112. package/dist/ir/facts.js +181 -0
  113. package/dist/ir/fixed-data-definition.d.ts +19 -0
  114. package/dist/ir/fixed-data-definition.js +49 -0
  115. package/dist/ir/generator-split.d.ts +38 -0
  116. package/dist/ir/generator-split.js +329 -0
  117. package/dist/ir/hoist.d.ts +55 -0
  118. package/dist/ir/hoist.js +375 -0
  119. package/dist/ir/instantiation.d.ts +61 -0
  120. package/dist/ir/instantiation.js +137 -0
  121. package/dist/ir/integer-storage.d.ts +170 -0
  122. package/dist/ir/integer-storage.js +822 -0
  123. package/dist/ir/integers.d.ts +161 -0
  124. package/dist/ir/integers.js +539 -0
  125. package/dist/ir/integrity-restrictions.d.ts +50 -0
  126. package/dist/ir/integrity-restrictions.js +118 -0
  127. package/dist/ir/local-iterators.d.ts +4 -0
  128. package/dist/ir/local-iterators.js +27 -0
  129. package/dist/ir/lower-allocation.d.ts +4 -0
  130. package/dist/ir/lower-allocation.js +325 -0
  131. package/dist/ir/lower-completion.d.ts +15 -0
  132. package/dist/ir/lower-completion.js +25 -0
  133. package/dist/ir/lower-destructuring.d.ts +5 -0
  134. package/dist/ir/lower-destructuring.js +693 -0
  135. package/dist/ir/lower-element.d.ts +29 -0
  136. package/dist/ir/lower-element.js +111 -0
  137. package/dist/ir/lower-exceptions.d.ts +47 -0
  138. package/dist/ir/lower-exceptions.js +92 -0
  139. package/dist/ir/lower-flow.d.ts +137 -0
  140. package/dist/ir/lower-flow.js +600 -0
  141. package/dist/ir/lower-graph.d.ts +218 -0
  142. package/dist/ir/lower-graph.js +687 -0
  143. package/dist/ir/lower-invocation.d.ts +4 -0
  144. package/dist/ir/lower-invocation.js +514 -0
  145. package/dist/ir/lower-narrow.d.ts +53 -0
  146. package/dist/ir/lower-narrow.js +320 -0
  147. package/dist/ir/lower-operands.d.ts +272 -0
  148. package/dist/ir/lower-operands.js +461 -0
  149. package/dist/ir/lower-property.d.ts +21 -0
  150. package/dist/ir/lower-property.js +132 -0
  151. package/dist/ir/lower-protocol.d.ts +11 -0
  152. package/dist/ir/lower-protocol.js +118 -0
  153. package/dist/ir/lower-short-circuit.d.ts +41 -0
  154. package/dist/ir/lower-short-circuit.js +63 -0
  155. package/dist/ir/lower.d.ts +82 -0
  156. package/dist/ir/lower.js +1346 -0
  157. package/dist/ir/model.d.ts +1474 -0
  158. package/dist/ir/model.js +6 -0
  159. package/dist/ir/native-absent-property.d.ts +3 -0
  160. package/dist/ir/native-absent-property.js +13 -0
  161. package/dist/ir/native-array-transport.d.ts +7 -0
  162. package/dist/ir/native-array-transport.js +46 -0
  163. package/dist/ir/native-callable-bind.d.ts +9 -0
  164. package/dist/ir/native-callable-bind.js +30 -0
  165. package/dist/ir/native-carrier-predicate.d.ts +34 -0
  166. package/dist/ir/native-carrier-predicate.js +49 -0
  167. package/dist/ir/native-class-accessor.d.ts +18 -0
  168. package/dist/ir/native-class-accessor.js +52 -0
  169. package/dist/ir/native-class-construction.d.ts +16 -0
  170. package/dist/ir/native-class-construction.js +71 -0
  171. package/dist/ir/native-class-initialization.d.ts +15 -0
  172. package/dist/ir/native-class-initialization.js +56 -0
  173. package/dist/ir/native-class-origins.d.ts +13 -0
  174. package/dist/ir/native-class-origins.js +237 -0
  175. package/dist/ir/native-dictionary-transport.d.ts +6 -0
  176. package/dist/ir/native-dictionary-transport.js +37 -0
  177. package/dist/ir/native-enumeration.d.ts +14 -0
  178. package/dist/ir/native-enumeration.js +26 -0
  179. package/dist/ir/native-equality.d.ts +10 -0
  180. package/dist/ir/native-equality.js +18 -0
  181. package/dist/ir/native-field-owner.d.ts +37 -0
  182. package/dist/ir/native-field-owner.js +183 -0
  183. package/dist/ir/native-fixed-layout.d.ts +41 -0
  184. package/dist/ir/native-fixed-layout.js +232 -0
  185. package/dist/ir/native-host-construction.d.ts +53 -0
  186. package/dist/ir/native-host-construction.js +62 -0
  187. package/dist/ir/native-key-query.d.ts +4 -0
  188. package/dist/ir/native-key-query.js +38 -0
  189. package/dist/ir/native-merge-transport.d.ts +25 -0
  190. package/dist/ir/native-merge-transport.js +71 -0
  191. package/dist/ir/native-record-index-transport.d.ts +11 -0
  192. package/dist/ir/native-record-index-transport.js +34 -0
  193. package/dist/ir/native-record-index.d.ts +12 -0
  194. package/dist/ir/native-record-index.js +27 -0
  195. package/dist/ir/native-reflect-field.d.ts +5 -0
  196. package/dist/ir/native-reflect-field.js +33 -0
  197. package/dist/ir/native-sequence-transport.d.ts +7 -0
  198. package/dist/ir/native-sequence-transport.js +53 -0
  199. package/dist/ir/numeric-intrinsics.d.ts +13 -0
  200. package/dist/ir/numeric-intrinsics.js +57 -0
  201. package/dist/ir/object-value-conversions.d.ts +20 -0
  202. package/dist/ir/object-value-conversions.js +50 -0
  203. package/dist/ir/physical-class-reflection.d.ts +9 -0
  204. package/dist/ir/physical-class-reflection.js +57 -0
  205. package/dist/ir/presence-proof.d.ts +42 -0
  206. package/dist/ir/presence-proof.js +490 -0
  207. package/dist/ir/program-facts.d.ts +106 -0
  208. package/dist/ir/program-facts.js +319 -0
  209. package/dist/ir/proven-branches.d.ts +16 -0
  210. package/dist/ir/proven-branches.js +219 -0
  211. package/dist/ir/queries.d.ts +41 -0
  212. package/dist/ir/queries.js +213 -0
  213. package/dist/ir/reflection-demand.d.ts +64 -0
  214. package/dist/ir/reflection-demand.js +1394 -0
  215. package/dist/ir/refusal.d.ts +43 -0
  216. package/dist/ir/refusal.js +28 -0
  217. package/dist/ir/shake.d.ts +37 -0
  218. package/dist/ir/shake.js +1078 -0
  219. package/dist/ir/static-callables.d.ts +11 -0
  220. package/dist/ir/static-callables.js +163 -0
  221. package/dist/ir/string-layout-reuse.d.ts +13 -0
  222. package/dist/ir/string-layout-reuse.js +39 -0
  223. package/dist/ir/string-length-reuse.d.ts +8 -0
  224. package/dist/ir/string-length-reuse.js +47 -0
  225. package/dist/ir/transfer.d.ts +78 -0
  226. package/dist/ir/transfer.js +270 -0
  227. package/dist/ir/type-query-results.d.ts +25 -0
  228. package/dist/ir/type-query-results.js +96 -0
  229. package/dist/ir/typed-property-access.d.ts +100 -0
  230. package/dist/ir/typed-property-access.js +161 -0
  231. package/dist/ir/verify.d.ts +19 -0
  232. package/dist/ir/verify.js +355 -0
  233. package/dist/plugins/apple/constructors.d.ts +112 -0
  234. package/dist/plugins/apple/constructors.js +217 -0
  235. package/dist/plugins/apple/host.d.ts +181 -0
  236. package/dist/plugins/apple/host.js +262 -0
  237. package/dist/plugins/apple/jsx.d.ts +2 -0
  238. package/dist/plugins/apple/jsx.js +293 -0
  239. package/dist/plugins/apple/members.d.ts +16 -0
  240. package/dist/plugins/apple/members.js +190 -0
  241. package/dist/plugins/apple/plugin.d.ts +2 -0
  242. package/dist/plugins/apple/plugin.js +156 -0
  243. package/dist/plugins/gea/component-classes.d.ts +25 -0
  244. package/dist/plugins/gea/component-classes.js +162 -0
  245. package/dist/plugins/gea/component-inline.d.ts +13 -0
  246. package/dist/plugins/gea/component-inline.js +532 -0
  247. package/dist/plugins/gea/constructors.d.ts +23 -0
  248. package/dist/plugins/gea/constructors.js +100 -0
  249. package/dist/plugins/gea/contract.d.ts +150 -0
  250. package/dist/plugins/gea/contract.js +195 -0
  251. package/dist/plugins/gea/element-ref.d.ts +31 -0
  252. package/dist/plugins/gea/element-ref.js +45 -0
  253. package/dist/plugins/gea/host.d.ts +520 -0
  254. package/dist/plugins/gea/host.js +762 -0
  255. package/dist/plugins/gea/lower.d.ts +6 -0
  256. package/dist/plugins/gea/lower.js +195 -0
  257. package/dist/plugins/gea/members.d.ts +22 -0
  258. package/dist/plugins/gea/members.js +221 -0
  259. package/dist/plugins/gea/plugin.d.ts +22 -0
  260. package/dist/plugins/gea/plugin.js +307 -0
  261. package/dist/plugins/gea/prelude.d.ts +78 -0
  262. package/dist/plugins/gea/prelude.js +153 -0
  263. package/dist/plugins/gea/producer.d.ts +5 -0
  264. package/dist/plugins/gea/producer.js +52 -0
  265. package/dist/plugins/gea/reactive-slots.d.ts +49 -0
  266. package/dist/plugins/gea/reactive-slots.js +578 -0
  267. package/dist/plugins/gea/render-bridge.d.ts +6 -0
  268. package/dist/plugins/gea/render-bridge.js +281 -0
  269. package/dist/plugins/gea/slots.d.ts +15 -0
  270. package/dist/plugins/gea/slots.js +36 -0
  271. package/dist/plugins/gea/template-analysis.d.ts +151 -0
  272. package/dist/plugins/gea/template-analysis.js +346 -0
  273. package/dist/plugins/gea/user-agent-styles.d.ts +9 -0
  274. package/dist/plugins/gea/user-agent-styles.js +94 -0
  275. package/dist/plugins/installed.d.ts +19 -0
  276. package/dist/plugins/installed.js +21 -0
  277. package/dist/plugins/load.d.ts +7 -0
  278. package/dist/plugins/load.js +207 -0
  279. package/dist/plugins/model.d.ts +735 -0
  280. package/dist/plugins/model.js +47 -0
  281. package/dist/plugins/webgl/host.d.ts +77 -0
  282. package/dist/plugins/webgl/host.js +162 -0
  283. package/dist/plugins/webgl/plugin.d.ts +40 -0
  284. package/dist/plugins/webgl/plugin.js +99 -0
  285. package/dist/preflight/obligations.d.ts +206 -0
  286. package/dist/preflight/obligations.js +36 -0
  287. package/dist/preflight/report.d.ts +20 -0
  288. package/dist/preflight/report.js +61 -0
  289. package/dist/preflight/run.d.ts +39 -0
  290. package/dist/preflight/run.js +403 -0
  291. package/dist/project-preparation.d.ts +33 -0
  292. package/dist/project-preparation.js +314 -0
  293. package/dist/projection/abi.d.ts +82 -0
  294. package/dist/projection/abi.js +349 -0
  295. package/dist/projection/apply-arguments.d.ts +12 -0
  296. package/dist/projection/apply-arguments.js +20 -0
  297. package/dist/projection/bindings.d.ts +250 -0
  298. package/dist/projection/bindings.js +340 -0
  299. package/dist/projection/callee.d.ts +196 -0
  300. package/dist/projection/callee.js +444 -0
  301. package/dist/projection/class-property-presence.d.ts +28 -0
  302. package/dist/projection/class-property-presence.js +58 -0
  303. package/dist/projection/class-prototype.d.ts +5 -0
  304. package/dist/projection/class-prototype.js +23 -0
  305. package/dist/projection/class-storage.d.ts +26 -0
  306. package/dist/projection/class-storage.js +236 -0
  307. package/dist/projection/classes.d.ts +283 -0
  308. package/dist/projection/classes.js +944 -0
  309. package/dist/projection/coercions.d.ts +20 -0
  310. package/dist/projection/coercions.js +33 -0
  311. package/dist/projection/dispatch.d.ts +167 -0
  312. package/dist/projection/dispatch.js +379 -0
  313. package/dist/projection/fields.d.ts +123 -0
  314. package/dist/projection/fields.js +383 -0
  315. package/dist/projection/instance-test.d.ts +78 -0
  316. package/dist/projection/instance-test.js +156 -0
  317. package/dist/projection/slots.d.ts +146 -0
  318. package/dist/projection/slots.js +663 -0
  319. package/dist/projection/synthesized-abi.d.ts +61 -0
  320. package/dist/projection/synthesized-abi.js +94 -0
  321. package/dist/representation/array-index.d.ts +14 -0
  322. package/dist/representation/array-index.js +17 -0
  323. package/dist/representation/callable-object.d.ts +3 -0
  324. package/dist/representation/callable-object.js +6 -0
  325. package/dist/representation/collections.d.ts +84 -0
  326. package/dist/representation/collections.js +139 -0
  327. package/dist/representation/derive.d.ts +159 -0
  328. package/dist/representation/derive.js +2546 -0
  329. package/dist/representation/difference.d.ts +30 -0
  330. package/dist/representation/difference.js +240 -0
  331. package/dist/representation/field-descriptor-policy.d.ts +19 -0
  332. package/dist/representation/field-descriptor-policy.js +39 -0
  333. package/dist/representation/function-constructor.d.ts +13 -0
  334. package/dist/representation/function-constructor.js +9 -0
  335. package/dist/representation/host-abi.d.ts +32 -0
  336. package/dist/representation/host-abi.js +97 -0
  337. package/dist/representation/host-templates.d.ts +67 -0
  338. package/dist/representation/host-templates.js +94 -0
  339. package/dist/representation/intersection.d.ts +84 -0
  340. package/dist/representation/intersection.js +149 -0
  341. package/dist/representation/literal-destination.d.ts +43 -0
  342. package/dist/representation/literal-destination.js +133 -0
  343. package/dist/representation/merge.d.ts +18 -0
  344. package/dist/representation/merge.js +83 -0
  345. package/dist/representation/model.d.ts +1160 -0
  346. package/dist/representation/model.js +1019 -0
  347. package/dist/representation/numeric-index.d.ts +13 -0
  348. package/dist/representation/numeric-index.js +29 -0
  349. package/dist/representation/object-shape.d.ts +109 -0
  350. package/dist/representation/object-shape.js +123 -0
  351. package/dist/representation/optional.d.ts +12 -0
  352. package/dist/representation/optional.js +87 -0
  353. package/dist/representation/plan.d.ts +60 -0
  354. package/dist/representation/plan.js +78 -0
  355. package/dist/representation/policies.d.ts +589 -0
  356. package/dist/representation/policies.js +107 -0
  357. package/dist/representation/primitive-domain.d.ts +1 -0
  358. package/dist/representation/primitive-domain.js +1 -0
  359. package/dist/representation/primitives.d.ts +44 -0
  360. package/dist/representation/primitives.js +78 -0
  361. package/dist/representation/publish.d.ts +49 -0
  362. package/dist/representation/publish.js +648 -0
  363. package/dist/representation/record-fields.d.ts +96 -0
  364. package/dist/representation/record-fields.js +116 -0
  365. package/dist/representation/template-object.d.ts +11 -0
  366. package/dist/representation/template-object.js +26 -0
  367. package/dist/representation/union.d.ts +30 -0
  368. package/dist/representation/union.js +324 -0
  369. package/dist/representation/value-records.d.ts +3 -0
  370. package/dist/representation/value-records.js +307 -0
  371. package/dist/representation/verify.d.ts +17 -0
  372. package/dist/representation/verify.js +221 -0
  373. package/dist/semantics/alias-this-field-declaration-transform.d.ts +4 -0
  374. package/dist/semantics/alias-this-field-declaration-transform.js +207 -0
  375. package/dist/semantics/ambient-type-realization-transform.d.ts +62 -0
  376. package/dist/semantics/ambient-type-realization-transform.js +168 -0
  377. package/dist/semantics/ambient.d.ts +24 -0
  378. package/dist/semantics/ambient.js +119 -0
  379. package/dist/semantics/borrowed-builtin-call-bind-source-transform.d.ts +4 -0
  380. package/dist/semantics/borrowed-builtin-call-bind-source-transform.js +341 -0
  381. package/dist/semantics/callable-origins.d.ts +46 -0
  382. package/dist/semantics/callable-origins.js +354 -0
  383. package/dist/semantics/class-alias.d.ts +7 -0
  384. package/dist/semantics/class-alias.js +37 -0
  385. package/dist/semantics/class-heritage.d.ts +34 -0
  386. package/dist/semantics/class-heritage.js +104 -0
  387. package/dist/semantics/commonjs-wrapper.d.ts +69 -0
  388. package/dist/semantics/commonjs-wrapper.js +231 -0
  389. package/dist/semantics/constructor-slot-subclasses.d.ts +28 -0
  390. package/dist/semantics/constructor-slot-subclasses.js +112 -0
  391. package/dist/semantics/declaration-overlay-transform.d.ts +35 -0
  392. package/dist/semantics/declaration-overlay-transform.js +2157 -0
  393. package/dist/semantics/define-property-source-transform.d.ts +4 -0
  394. package/dist/semantics/define-property-source-transform.js +437 -0
  395. package/dist/semantics/diagnostic-source-preparation.d.ts +24 -0
  396. package/dist/semantics/diagnostic-source-preparation.js +82 -0
  397. package/dist/semantics/documentation-ranges.d.ts +22 -0
  398. package/dist/semantics/documentation-ranges.js +36 -0
  399. package/dist/semantics/dynamic-fallback.d.ts +86 -0
  400. package/dist/semantics/dynamic-fallback.js +249 -0
  401. package/dist/semantics/frontend-timing.d.ts +6 -0
  402. package/dist/semantics/frontend-timing.js +35 -0
  403. package/dist/semantics/frontend.d.ts +504 -0
  404. package/dist/semantics/frontend.js +1157 -0
  405. package/dist/semantics/host-declaration-provenance.d.ts +11 -0
  406. package/dist/semantics/host-declaration-provenance.js +18 -0
  407. package/dist/semantics/host-methods.d.ts +24 -0
  408. package/dist/semantics/host-methods.js +74 -0
  409. package/dist/semantics/host-protocols.d.ts +429 -0
  410. package/dist/semantics/host-protocols.js +1501 -0
  411. package/dist/semantics/inherited-accessor.d.ts +7 -0
  412. package/dist/semantics/inherited-accessor.js +48 -0
  413. package/dist/semantics/interface-families.d.ts +70 -0
  414. package/dist/semantics/interface-families.js +180 -0
  415. package/dist/semantics/interface-implementors.d.ts +53 -0
  416. package/dist/semantics/interface-implementors.js +87 -0
  417. package/dist/semantics/jsdoc-namepath-transform.d.ts +4 -0
  418. package/dist/semantics/jsdoc-namepath-transform.js +85 -0
  419. package/dist/semantics/model/coverage.d.ts +68 -0
  420. package/dist/semantics/model/coverage.js +73 -0
  421. package/dist/semantics/model/edges.d.ts +103 -0
  422. package/dist/semantics/model/edges.js +20 -0
  423. package/dist/semantics/model/graph.d.ts +55 -0
  424. package/dist/semantics/model/graph.js +129 -0
  425. package/dist/semantics/model/operands.d.ts +159 -0
  426. package/dist/semantics/model/operands.js +26 -0
  427. package/dist/semantics/model/operations.d.ts +496 -0
  428. package/dist/semantics/model/operations.js +2 -0
  429. package/dist/semantics/model/primitive-domain.d.ts +26 -0
  430. package/dist/semantics/model/primitive-domain.js +38 -0
  431. package/dist/semantics/model/selected-signature.d.ts +261 -0
  432. package/dist/semantics/model/selected-signature.js +55 -0
  433. package/dist/semantics/model/structural-type-table.d.ts +93 -0
  434. package/dist/semantics/model/structural-type-table.js +237 -0
  435. package/dist/semantics/model/structural-types.d.ts +367 -0
  436. package/dist/semantics/model/structural-types.js +200 -0
  437. package/dist/semantics/module-resolution.d.ts +23 -0
  438. package/dist/semantics/module-resolution.js +227 -0
  439. package/dist/semantics/new-callee-class-tag-source-transform.d.ts +4 -0
  440. package/dist/semantics/new-callee-class-tag-source-transform.js +64 -0
  441. package/dist/semantics/node-project.d.ts +13 -0
  442. package/dist/semantics/node-project.js +107 -0
  443. package/dist/semantics/node-source-hooks.d.ts +1 -0
  444. package/dist/semantics/node-source-hooks.js +63 -0
  445. package/dist/semantics/normalize/absent-globals.d.ts +143 -0
  446. package/dist/semantics/normalize/absent-globals.js +191 -0
  447. package/dist/semantics/normalize/arguments-objects.d.ts +43 -0
  448. package/dist/semantics/normalize/arguments-objects.js +60 -0
  449. package/dist/semantics/normalize/asserted-arm-absence.d.ts +28 -0
  450. package/dist/semantics/normalize/asserted-arm-absence.js +61 -0
  451. package/dist/semantics/normalize/assignment-patterns.d.ts +70 -0
  452. package/dist/semantics/normalize/assignment-patterns.js +147 -0
  453. package/dist/semantics/normalize/bag-absence.d.ts +8 -0
  454. package/dist/semantics/normalize/bag-absence.js +42 -0
  455. package/dist/semantics/normalize/binding-fixpoint.d.ts +36 -0
  456. package/dist/semantics/normalize/binding-fixpoint.js +140 -0
  457. package/dist/semantics/normalize/callback-parameter-contracts.d.ts +16 -0
  458. package/dist/semantics/normalize/callback-parameter-contracts.js +91 -0
  459. package/dist/semantics/normalize/cells/agreement.d.ts +46 -0
  460. package/dist/semantics/normalize/cells/agreement.js +34 -0
  461. package/dist/semantics/normalize/cells/candidates.d.ts +17 -0
  462. package/dist/semantics/normalize/cells/candidates.js +35 -0
  463. package/dist/semantics/normalize/cells/facts.d.ts +19 -0
  464. package/dist/semantics/normalize/cells/facts.js +90 -0
  465. package/dist/semantics/normalize/cells/index.d.ts +10 -0
  466. package/dist/semantics/normalize/cells/index.js +6 -0
  467. package/dist/semantics/normalize/cells/model.d.ts +98 -0
  468. package/dist/semantics/normalize/cells/model.js +2 -0
  469. package/dist/semantics/normalize/cells/policies/bag.d.ts +44 -0
  470. package/dist/semantics/normalize/cells/policies/bag.js +114 -0
  471. package/dist/semantics/normalize/cells/policies/collection.d.ts +42 -0
  472. package/dist/semantics/normalize/cells/policies/collection.js +218 -0
  473. package/dist/semantics/normalize/cells/policies/field.d.ts +28 -0
  474. package/dist/semantics/normalize/cells/policies/field.js +40 -0
  475. package/dist/semantics/normalize/cells/policies/index.d.ts +49 -0
  476. package/dist/semantics/normalize/cells/policies/index.js +58 -0
  477. package/dist/semantics/normalize/cells/policies/local.d.ts +18 -0
  478. package/dist/semantics/normalize/cells/policies/local.js +37 -0
  479. package/dist/semantics/normalize/cells/policies/parameter.d.ts +28 -0
  480. package/dist/semantics/normalize/cells/policies/parameter.js +39 -0
  481. package/dist/semantics/normalize/cells/policies/return.d.ts +26 -0
  482. package/dist/semantics/normalize/cells/policies/return.js +45 -0
  483. package/dist/semantics/normalize/cells/policies/shared.d.ts +33 -0
  484. package/dist/semantics/normalize/cells/policies/shared.js +45 -0
  485. package/dist/semantics/normalize/cells/policy.d.ts +72 -0
  486. package/dist/semantics/normalize/cells/policy.js +18 -0
  487. package/dist/semantics/normalize/cells/registry.d.ts +14 -0
  488. package/dist/semantics/normalize/cells/registry.js +17 -0
  489. package/dist/semantics/normalize/census-refusal.d.ts +62 -0
  490. package/dist/semantics/normalize/census-refusal.js +27 -0
  491. package/dist/semantics/normalize/census.d.ts +109 -0
  492. package/dist/semantics/normalize/census.js +667 -0
  493. package/dist/semantics/normalize/collection-bindings.d.ts +278 -0
  494. package/dist/semantics/normalize/collection-bindings.js +677 -0
  495. package/dist/semantics/normalize/commonjs-module-record.d.ts +21 -0
  496. package/dist/semantics/normalize/commonjs-module-record.js +289 -0
  497. package/dist/semantics/normalize/commonjs-require.d.ts +13 -0
  498. package/dist/semantics/normalize/commonjs-require.js +1527 -0
  499. package/dist/semantics/normalize/contribution.d.ts +63 -0
  500. package/dist/semantics/normalize/contribution.js +172 -0
  501. package/dist/semantics/normalize/dead-typeof-guards.d.ts +64 -0
  502. package/dist/semantics/normalize/dead-typeof-guards.js +152 -0
  503. package/dist/semantics/normalize/deferred-intrinsic-protocols.d.ts +57 -0
  504. package/dist/semantics/normalize/deferred-intrinsic-protocols.js +109 -0
  505. package/dist/semantics/normalize/derived-expression-type.d.ts +1070 -0
  506. package/dist/semantics/normalize/derived-expression-type.js +3463 -0
  507. package/dist/semantics/normalize/evaluation-order.d.ts +16 -0
  508. package/dist/semantics/normalize/evaluation-order.js +37 -0
  509. package/dist/semantics/normalize/field-bindings.d.ts +167 -0
  510. package/dist/semantics/normalize/field-bindings.js +1125 -0
  511. package/dist/semantics/normalize/flow/array-element-continuation.d.ts +27 -0
  512. package/dist/semantics/normalize/flow/array-element-continuation.js +1452 -0
  513. package/dist/semantics/normalize/flow/callable-array-origins.d.ts +42 -0
  514. package/dist/semantics/normalize/flow/callable-array-origins.js +318 -0
  515. package/dist/semantics/normalize/flow/callable-completions.d.ts +45 -0
  516. package/dist/semantics/normalize/flow/callable-completions.js +82 -0
  517. package/dist/semantics/normalize/flow/callable-reach.d.ts +237 -0
  518. package/dist/semantics/normalize/flow/callable-reach.js +7174 -0
  519. package/dist/semantics/normalize/flow/class-family-member-read.d.ts +16 -0
  520. package/dist/semantics/normalize/flow/class-family-member-read.js +992 -0
  521. package/dist/semantics/normalize/flow/collection-value-continuation.d.ts +21 -0
  522. package/dist/semantics/normalize/flow/collection-value-continuation.js +192 -0
  523. package/dist/semantics/normalize/flow/component-solver.d.ts +199 -0
  524. package/dist/semantics/normalize/flow/component-solver.js +587 -0
  525. package/dist/semantics/normalize/flow/computed-key-set.d.ts +84 -0
  526. package/dist/semantics/normalize/flow/computed-key-set.js +660 -0
  527. package/dist/semantics/normalize/flow/export-importers.d.ts +24 -0
  528. package/dist/semantics/normalize/flow/export-importers.js +269 -0
  529. package/dist/semantics/normalize/flow/host-text-sink.d.ts +25 -0
  530. package/dist/semantics/normalize/flow/host-text-sink.js +87 -0
  531. package/dist/semantics/normalize/flow/intrinsic-array-callback-frames.d.ts +84 -0
  532. package/dist/semantics/normalize/flow/intrinsic-array-callback-frames.js +180 -0
  533. package/dist/semantics/normalize/flow/intrinsic-data-definition.d.ts +35 -0
  534. package/dist/semantics/normalize/flow/intrinsic-data-definition.js +140 -0
  535. package/dist/semantics/normalize/flow/invocation-facts.d.ts +98 -0
  536. package/dist/semantics/normalize/flow/invocation-facts.js +257 -0
  537. package/dist/semantics/normalize/flow/member-call-forwarding.d.ts +122 -0
  538. package/dist/semantics/normalize/flow/member-call-forwarding.js +835 -0
  539. package/dist/semantics/normalize/flow/model.d.ts +357 -0
  540. package/dist/semantics/normalize/flow/model.js +177 -0
  541. package/dist/semantics/normalize/flow/native-collection-protocol.d.ts +24 -0
  542. package/dist/semantics/normalize/flow/native-collection-protocol.js +252 -0
  543. package/dist/semantics/normalize/flow/node-path-token.d.ts +3 -0
  544. package/dist/semantics/normalize/flow/node-path-token.js +53 -0
  545. package/dist/semantics/normalize/flow/object-binding-continuation.d.ts +11 -0
  546. package/dist/semantics/normalize/flow/object-binding-continuation.js +42 -0
  547. package/dist/semantics/normalize/flow/origin-authority.d.ts +56 -0
  548. package/dist/semantics/normalize/flow/origin-authority.js +2 -0
  549. package/dist/semantics/normalize/flow/owned-class-receivers.d.ts +35 -0
  550. package/dist/semantics/normalize/flow/owned-class-receivers.js +191 -0
  551. package/dist/semantics/normalize/flow/parameter-values.d.ts +27 -0
  552. package/dist/semantics/normalize/flow/parameter-values.js +251 -0
  553. package/dist/semantics/normalize/flow/proof-hypotheses.d.ts +66 -0
  554. package/dist/semantics/normalize/flow/proof-hypotheses.js +162 -0
  555. package/dist/semantics/normalize/flow/record-alias-closure.d.ts +27 -0
  556. package/dist/semantics/normalize/flow/record-alias-closure.js +298 -0
  557. package/dist/semantics/normalize/flow/seeded-origins.d.ts +43 -0
  558. package/dist/semantics/normalize/flow/seeded-origins.js +54 -0
  559. package/dist/semantics/normalize/flow/source-class-data.d.ts +132 -0
  560. package/dist/semantics/normalize/flow/source-class-data.js +838 -0
  561. package/dist/semantics/normalize/flow/source-class-instanceof.d.ts +13 -0
  562. package/dist/semantics/normalize/flow/source-class-instanceof.js +37 -0
  563. package/dist/semantics/normalize/flow/source-class-static-data.d.ts +16 -0
  564. package/dist/semantics/normalize/flow/source-class-static-data.js +47 -0
  565. package/dist/semantics/normalize/flow/source-construction-frames.d.ts +12 -0
  566. package/dist/semantics/normalize/flow/source-construction-frames.js +118 -0
  567. package/dist/semantics/normalize/flow/source-invocation-frame-layout.d.ts +34 -0
  568. package/dist/semantics/normalize/flow/source-invocation-frame-layout.js +78 -0
  569. package/dist/semantics/normalize/flow/source-invocation-receiver.d.ts +37 -0
  570. package/dist/semantics/normalize/flow/source-invocation-receiver.js +95 -0
  571. package/dist/semantics/normalize/flow/source-prototype-method-identity.d.ts +23 -0
  572. package/dist/semantics/normalize/flow/source-prototype-method-identity.js +81 -0
  573. package/dist/semantics/normalize/flow/source-record-data.d.ts +29 -0
  574. package/dist/semantics/normalize/flow/source-record-data.js +626 -0
  575. package/dist/semantics/normalize/flow/source-value-session.d.ts +77 -0
  576. package/dist/semantics/normalize/flow/source-value-session.js +3089 -0
  577. package/dist/semantics/normalize/flow/targets.d.ts +118 -0
  578. package/dist/semantics/normalize/flow/targets.js +405 -0
  579. package/dist/semantics/normalize/flow/value-flow.d.ts +36 -0
  580. package/dist/semantics/normalize/flow/value-flow.js +823 -0
  581. package/dist/semantics/normalize/flow/value-provenance.d.ts +31 -0
  582. package/dist/semantics/normalize/flow/value-provenance.js +112 -0
  583. package/dist/semantics/normalize/gating.d.ts +51 -0
  584. package/dist/semantics/normalize/gating.js +560 -0
  585. package/dist/semantics/normalize/generic-function-choice.d.ts +31 -0
  586. package/dist/semantics/normalize/generic-function-choice.js +115 -0
  587. package/dist/semantics/normalize/global-host-mutations.d.ts +51 -0
  588. package/dist/semantics/normalize/global-host-mutations.js +5989 -0
  589. package/dist/semantics/normalize/host-effect-contracts.d.ts +77 -0
  590. package/dist/semantics/normalize/host-effect-contracts.js +143 -0
  591. package/dist/semantics/normalize/host-mutation-computed-keys.d.ts +38 -0
  592. package/dist/semantics/normalize/host-mutation-computed-keys.js +26 -0
  593. package/dist/semantics/normalize/host-mutation-key-reader.d.ts +66 -0
  594. package/dist/semantics/normalize/host-mutation-key-reader.js +192 -0
  595. package/dist/semantics/normalize/host-mutation-keys.d.ts +114 -0
  596. package/dist/semantics/normalize/host-mutation-keys.js +183 -0
  597. package/dist/semantics/normalize/identities.d.ts +172 -0
  598. package/dist/semantics/normalize/identities.js +426 -0
  599. package/dist/semantics/normalize/implicit-arguments-tuple.d.ts +97 -0
  600. package/dist/semantics/normalize/implicit-arguments-tuple.js +197 -0
  601. package/dist/semantics/normalize/implicit-arguments.d.ts +11 -0
  602. package/dist/semantics/normalize/implicit-arguments.js +39 -0
  603. package/dist/semantics/normalize/instantiation.d.ts +73 -0
  604. package/dist/semantics/normalize/instantiation.js +399 -0
  605. package/dist/semantics/normalize/intrinsic-property-call.d.ts +18 -0
  606. package/dist/semantics/normalize/intrinsic-property-call.js +69 -0
  607. package/dist/semantics/normalize/intrinsic-prototype.d.ts +41 -0
  608. package/dist/semantics/normalize/intrinsic-prototype.js +87 -0
  609. package/dist/semantics/normalize/intrinsic-static-member.d.ts +14 -0
  610. package/dist/semantics/normalize/intrinsic-static-member.js +23 -0
  611. package/dist/semantics/normalize/jsdoc-type-names.d.ts +32 -0
  612. package/dist/semantics/normalize/jsdoc-type-names.js +512 -0
  613. package/dist/semantics/normalize/keyof.d.ts +32 -0
  614. package/dist/semantics/normalize/keyof.js +110 -0
  615. package/dist/semantics/normalize/local-bindings.d.ts +176 -0
  616. package/dist/semantics/normalize/local-bindings.js +1826 -0
  617. package/dist/semantics/normalize/logical-result-type.d.ts +16 -0
  618. package/dist/semantics/normalize/logical-result-type.js +102 -0
  619. package/dist/semantics/normalize/namespace-paths.d.ts +57 -0
  620. package/dist/semantics/normalize/namespace-paths.js +108 -0
  621. package/dist/semantics/normalize/normalize.d.ts +57 -0
  622. package/dist/semantics/normalize/normalize.js +68 -0
  623. package/dist/semantics/normalize/object-bag-bindings.d.ts +305 -0
  624. package/dist/semantics/normalize/object-bag-bindings.js +1290 -0
  625. package/dist/semantics/normalize/omitted-stated-parameter.d.ts +53 -0
  626. package/dist/semantics/normalize/omitted-stated-parameter.js +59 -0
  627. package/dist/semantics/normalize/open-type-form.d.ts +10 -0
  628. package/dist/semantics/normalize/open-type-form.js +32 -0
  629. package/dist/semantics/normalize/parameter-bindings.d.ts +361 -0
  630. package/dist/semantics/normalize/parameter-bindings.js +3339 -0
  631. package/dist/semantics/normalize/parameter-slot.d.ts +264 -0
  632. package/dist/semantics/normalize/parameter-slot.js +491 -0
  633. package/dist/semantics/normalize/physical-overload-result.d.ts +77 -0
  634. package/dist/semantics/normalize/physical-overload-result.js +99 -0
  635. package/dist/semantics/normalize/primitive-property-absence.d.ts +12 -0
  636. package/dist/semantics/normalize/primitive-property-absence.js +60 -0
  637. package/dist/semantics/normalize/producer-context.d.ts +376 -0
  638. package/dist/semantics/normalize/producer-context.js +1 -0
  639. package/dist/semantics/normalize/producers/allocations.d.ts +3 -0
  640. package/dist/semantics/normalize/producers/allocations.js +863 -0
  641. package/dist/semantics/normalize/producers/binding-kind.d.ts +37 -0
  642. package/dist/semantics/normalize/producers/binding-kind.js +36 -0
  643. package/dist/semantics/normalize/producers/bindings.d.ts +85 -0
  644. package/dist/semantics/normalize/producers/bindings.js +710 -0
  645. package/dist/semantics/normalize/producers/boundary.d.ts +34 -0
  646. package/dist/semantics/normalize/producers/boundary.js +123 -0
  647. package/dist/semantics/normalize/producers/class-lifecycle.d.ts +3 -0
  648. package/dist/semantics/normalize/producers/class-lifecycle.js +902 -0
  649. package/dist/semantics/normalize/producers/computations.d.ts +3 -0
  650. package/dist/semantics/normalize/producers/computations.js +613 -0
  651. package/dist/semantics/normalize/producers/control-loops.d.ts +30 -0
  652. package/dist/semantics/normalize/producers/control-loops.js +91 -0
  653. package/dist/semantics/normalize/producers/control.d.ts +30 -0
  654. package/dist/semantics/normalize/producers/control.js +923 -0
  655. package/dist/semantics/normalize/producers/declaration-lifecycle.d.ts +3 -0
  656. package/dist/semantics/normalize/producers/declaration-lifecycle.js +390 -0
  657. package/dist/semantics/normalize/producers/destructuring.d.ts +45 -0
  658. package/dist/semantics/normalize/producers/destructuring.js +1180 -0
  659. package/dist/semantics/normalize/producers/dynamic-language.d.ts +3 -0
  660. package/dist/semantics/normalize/producers/dynamic-language.js +70 -0
  661. package/dist/semantics/normalize/producers/erasure.d.ts +51 -0
  662. package/dist/semantics/normalize/producers/erasure.js +90 -0
  663. package/dist/semantics/normalize/producers/installed.d.ts +3 -0
  664. package/dist/semantics/normalize/producers/installed.js +55 -0
  665. package/dist/semantics/normalize/producers/invocations.d.ts +35 -0
  666. package/dist/semantics/normalize/producers/invocations.js +1796 -0
  667. package/dist/semantics/normalize/producers/iteration-yield.d.ts +59 -0
  668. package/dist/semantics/normalize/producers/iteration-yield.js +235 -0
  669. package/dist/semantics/normalize/producers/jsx.d.ts +3 -0
  670. package/dist/semantics/normalize/producers/jsx.js +360 -0
  671. package/dist/semantics/normalize/producers/mint.d.ts +39 -0
  672. package/dist/semantics/normalize/producers/mint.js +44 -0
  673. package/dist/semantics/normalize/producers/nullish.d.ts +16 -0
  674. package/dist/semantics/normalize/producers/nullish.js +27 -0
  675. package/dist/semantics/normalize/producers/object-assignment.d.ts +8 -0
  676. package/dist/semantics/normalize/producers/object-assignment.js +204 -0
  677. package/dist/semantics/normalize/producers/object-tag.d.ts +9 -0
  678. package/dist/semantics/normalize/producers/object-tag.js +119 -0
  679. package/dist/semantics/normalize/producers/optional-chain.d.ts +44 -0
  680. package/dist/semantics/normalize/producers/optional-chain.js +75 -0
  681. package/dist/semantics/normalize/producers/properties.d.ts +21 -0
  682. package/dist/semantics/normalize/producers/properties.js +1053 -0
  683. package/dist/semantics/normalize/producers/protocol.d.ts +67 -0
  684. package/dist/semantics/normalize/producers/protocol.js +695 -0
  685. package/dist/semantics/normalize/producers/references.d.ts +53 -0
  686. package/dist/semantics/normalize/producers/references.js +1027 -0
  687. package/dist/semantics/normalize/producers/shared.d.ts +561 -0
  688. package/dist/semantics/normalize/producers/shared.js +1683 -0
  689. package/dist/semantics/normalize/producers/spread-arguments.d.ts +72 -0
  690. package/dist/semantics/normalize/producers/spread-arguments.js +375 -0
  691. package/dist/semantics/normalize/producers/tagged-template.d.ts +5 -0
  692. package/dist/semantics/normalize/producers/tagged-template.js +307 -0
  693. package/dist/semantics/normalize/producers/tuple-spread.d.ts +189 -0
  694. package/dist/semantics/normalize/producers/tuple-spread.js +279 -0
  695. package/dist/semantics/normalize/property-key-domain.d.ts +36 -0
  696. package/dist/semantics/normalize/property-key-domain.js +150 -0
  697. package/dist/semantics/normalize/reachability.d.ts +189 -0
  698. package/dist/semantics/normalize/reachability.js +1057 -0
  699. package/dist/semantics/normalize/reassigned-bindings.d.ts +13 -0
  700. package/dist/semantics/normalize/reassigned-bindings.js +41 -0
  701. package/dist/semantics/normalize/record-storage-families.d.ts +11 -0
  702. package/dist/semantics/normalize/record-storage-families.js +109 -0
  703. package/dist/semantics/normalize/return-bindings.d.ts +260 -0
  704. package/dist/semantics/normalize/return-bindings.js +1311 -0
  705. package/dist/semantics/normalize/return-paths.d.ts +2 -0
  706. package/dist/semantics/normalize/return-paths.js +28 -0
  707. package/dist/semantics/normalize/script-global-redefinition.d.ts +44 -0
  708. package/dist/semantics/normalize/script-global-redefinition.js +75 -0
  709. package/dist/semantics/normalize/specialization.d.ts +201 -0
  710. package/dist/semantics/normalize/specialization.js +1824 -0
  711. package/dist/semantics/normalize/structural-array-element.d.ts +176 -0
  712. package/dist/semantics/normalize/structural-array-element.js +700 -0
  713. package/dist/semantics/normalize/structural-array-read.d.ts +13 -0
  714. package/dist/semantics/normalize/structural-array-read.js +124 -0
  715. package/dist/semantics/normalize/structural-callable.d.ts +12 -0
  716. package/dist/semantics/normalize/structural-callable.js +82 -0
  717. package/dist/semantics/normalize/structural-creation-order.d.ts +32 -0
  718. package/dist/semantics/normalize/structural-creation-order.js +111 -0
  719. package/dist/semantics/normalize/structural-declarations.d.ts +395 -0
  720. package/dist/semantics/normalize/structural-declarations.js +968 -0
  721. package/dist/semantics/normalize/structural-declared-body.d.ts +25 -0
  722. package/dist/semantics/normalize/structural-declared-body.js +147 -0
  723. package/dist/semantics/normalize/structural-generics.d.ts +56 -0
  724. package/dist/semantics/normalize/structural-generics.js +120 -0
  725. package/dist/semantics/normalize/structural-indexed-access.d.ts +11 -0
  726. package/dist/semantics/normalize/structural-indexed-access.js +126 -0
  727. package/dist/semantics/normalize/structural-instantiated-member.d.ts +64 -0
  728. package/dist/semantics/normalize/structural-instantiated-member.js +407 -0
  729. package/dist/semantics/normalize/structural-joins.d.ts +44 -0
  730. package/dist/semantics/normalize/structural-joins.js +143 -0
  731. package/dist/semantics/normalize/structural-layout-relevance.d.ts +29 -0
  732. package/dist/semantics/normalize/structural-layout-relevance.js +391 -0
  733. package/dist/semantics/normalize/structural-layout-type.d.ts +11 -0
  734. package/dist/semantics/normalize/structural-layout-type.js +1468 -0
  735. package/dist/semantics/normalize/structural-leaves.d.ts +49 -0
  736. package/dist/semantics/normalize/structural-leaves.js +125 -0
  737. package/dist/semantics/normalize/structural-local-union.d.ts +13 -0
  738. package/dist/semantics/normalize/structural-local-union.js +133 -0
  739. package/dist/semantics/normalize/structural-members.d.ts +26 -0
  740. package/dist/semantics/normalize/structural-members.js +84 -0
  741. package/dist/semantics/normalize/structural-mutable-method.d.ts +15 -0
  742. package/dist/semantics/normalize/structural-mutable-method.js +109 -0
  743. package/dist/semantics/normalize/structural-parts.d.ts +131 -0
  744. package/dist/semantics/normalize/structural-parts.js +737 -0
  745. package/dist/semantics/normalize/structural-receiver.d.ts +66 -0
  746. package/dist/semantics/normalize/structural-receiver.js +551 -0
  747. package/dist/semantics/normalize/structural-rules.d.ts +112 -0
  748. package/dist/semantics/normalize/structural-rules.js +93 -0
  749. package/dist/semantics/normalize/structural-self-reference.d.ts +150 -0
  750. package/dist/semantics/normalize/structural-self-reference.js +494 -0
  751. package/dist/semantics/normalize/structural.d.ts +202 -0
  752. package/dist/semantics/normalize/structural.js +4218 -0
  753. package/dist/semantics/normalize/unreduced-type-form.d.ts +41 -0
  754. package/dist/semantics/normalize/unreduced-type-form.js +53 -0
  755. package/dist/semantics/normalize/unresolvable-names.d.ts +56 -0
  756. package/dist/semantics/normalize/unresolvable-names.js +140 -0
  757. package/dist/semantics/package-sources.d.ts +16 -0
  758. package/dist/semantics/package-sources.js +365 -0
  759. package/dist/semantics/program.d.ts +151 -0
  760. package/dist/semantics/program.js +667 -0
  761. package/dist/semantics/prototype-install-source-transform.d.ts +4 -0
  762. package/dist/semantics/prototype-install-source-transform.js +341 -0
  763. package/dist/semantics/prototype-object-class-source-transform.d.ts +4 -0
  764. package/dist/semantics/prototype-object-class-source-transform.js +525 -0
  765. package/dist/semantics/prototype-reparenting.d.ts +50 -0
  766. package/dist/semantics/prototype-reparenting.js +317 -0
  767. package/dist/semantics/stable-checker.d.ts +10 -0
  768. package/dist/semantics/stable-checker.js +148 -0
  769. package/dist/semantics/subclass-member-overlay-transform.d.ts +35 -0
  770. package/dist/semantics/subclass-member-overlay-transform.js +1418 -0
  771. package/dist/semantics/symbol-keyed-expando-source-transform.d.ts +4 -0
  772. package/dist/semantics/symbol-keyed-expando-source-transform.js +66 -0
  773. package/dist/semantics/this-constructor-source-transform.d.ts +4 -0
  774. package/dist/semantics/this-constructor-source-transform.js +122 -0
  775. package/dist/semantics/uninstantiable-classes.d.ts +22 -0
  776. package/dist/semantics/uninstantiable-classes.js +75 -0
  777. package/dist/targets/cpp/balanced-units.d.ts +3 -0
  778. package/dist/targets/cpp/balanced-units.js +58 -0
  779. package/dist/targets/cpp/borrowed-call-entry.d.ts +30 -0
  780. package/dist/targets/cpp/borrowed-call-entry.js +68 -0
  781. package/dist/targets/cpp/captures.d.ts +68 -0
  782. package/dist/targets/cpp/captures.js +269 -0
  783. package/dist/targets/cpp/class-layout.d.ts +313 -0
  784. package/dist/targets/cpp/class-layout.js +483 -0
  785. package/dist/targets/cpp/class-properties/computed-method-value.d.ts +25 -0
  786. package/dist/targets/cpp/class-properties/computed-method-value.js +22 -0
  787. package/dist/targets/cpp/class-properties/emit-class-properties.d.ts +216 -0
  788. package/dist/targets/cpp/class-properties/emit-class-properties.js +917 -0
  789. package/dist/targets/cpp/class-properties/native-prototype.d.ts +11 -0
  790. package/dist/targets/cpp/class-properties/native-prototype.js +101 -0
  791. package/dist/targets/cpp/class-ref-transport.d.ts +12 -0
  792. package/dist/targets/cpp/class-ref-transport.js +32 -0
  793. package/dist/targets/cpp/conversions.d.ts +3 -0
  794. package/dist/targets/cpp/conversions.js +2027 -0
  795. package/dist/targets/cpp/deferral-safety.d.ts +82 -0
  796. package/dist/targets/cpp/deferral-safety.js +86 -0
  797. package/dist/targets/cpp/direct-call-receivers.d.ts +37 -0
  798. package/dist/targets/cpp/direct-call-receivers.js +79 -0
  799. package/dist/targets/cpp/document.d.ts +74 -0
  800. package/dist/targets/cpp/document.js +106 -0
  801. package/dist/targets/cpp/emit-allocation.d.ts +60 -0
  802. package/dist/targets/cpp/emit-allocation.js +573 -0
  803. package/dist/targets/cpp/emit-arrays.d.ts +119 -0
  804. package/dist/targets/cpp/emit-arrays.js +1047 -0
  805. package/dist/targets/cpp/emit-binding-reference.d.ts +17 -0
  806. package/dist/targets/cpp/emit-binding-reference.js +120 -0
  807. package/dist/targets/cpp/emit-bindings.d.ts +158 -0
  808. package/dist/targets/cpp/emit-bindings.js +769 -0
  809. package/dist/targets/cpp/emit-buffers.d.ts +156 -0
  810. package/dist/targets/cpp/emit-buffers.js +573 -0
  811. package/dist/targets/cpp/emit-callable.d.ts +230 -0
  812. package/dist/targets/cpp/emit-callable.js +2154 -0
  813. package/dist/targets/cpp/emit-carrier-members.d.ts +406 -0
  814. package/dist/targets/cpp/emit-carrier-members.js +1224 -0
  815. package/dist/targets/cpp/emit-coercion.d.ts +26 -0
  816. package/dist/targets/cpp/emit-coercion.js +39 -0
  817. package/dist/targets/cpp/emit-context.d.ts +1882 -0
  818. package/dist/targets/cpp/emit-context.js +904 -0
  819. package/dist/targets/cpp/emit-dynamic-properties.d.ts +174 -0
  820. package/dist/targets/cpp/emit-dynamic-properties.js +1249 -0
  821. package/dist/targets/cpp/emit-equality.d.ts +39 -0
  822. package/dist/targets/cpp/emit-equality.js +472 -0
  823. package/dist/targets/cpp/emit-exceptions.d.ts +104 -0
  824. package/dist/targets/cpp/emit-exceptions.js +513 -0
  825. package/dist/targets/cpp/emit-field-owner.d.ts +4 -0
  826. package/dist/targets/cpp/emit-field-owner.js +27 -0
  827. package/dist/targets/cpp/emit-in.d.ts +31 -0
  828. package/dist/targets/cpp/emit-in.js +426 -0
  829. package/dist/targets/cpp/emit-instanceof.d.ts +19 -0
  830. package/dist/targets/cpp/emit-instanceof.js +601 -0
  831. package/dist/targets/cpp/emit-integers.d.ts +68 -0
  832. package/dist/targets/cpp/emit-integers.js +184 -0
  833. package/dist/targets/cpp/emit-iterator.d.ts +100 -0
  834. package/dist/targets/cpp/emit-iterator.js +1137 -0
  835. package/dist/targets/cpp/emit-json.d.ts +73 -0
  836. package/dist/targets/cpp/emit-json.js +823 -0
  837. package/dist/targets/cpp/emit-jsx.d.ts +74 -0
  838. package/dist/targets/cpp/emit-jsx.js +806 -0
  839. package/dist/targets/cpp/emit-mixed-binary.d.ts +51 -0
  840. package/dist/targets/cpp/emit-mixed-binary.js +60 -0
  841. package/dist/targets/cpp/emit-namespaces.d.ts +101 -0
  842. package/dist/targets/cpp/emit-namespaces.js +133 -0
  843. package/dist/targets/cpp/emit-narrowing.d.ts +738 -0
  844. package/dist/targets/cpp/emit-narrowing.js +3967 -0
  845. package/dist/targets/cpp/emit-native-equality.d.ts +3 -0
  846. package/dist/targets/cpp/emit-native-equality.js +14 -0
  847. package/dist/targets/cpp/emit-native-selection.d.ts +5 -0
  848. package/dist/targets/cpp/emit-native-selection.js +37 -0
  849. package/dist/targets/cpp/emit-object-tag.d.ts +4 -0
  850. package/dist/targets/cpp/emit-object-tag.js +108 -0
  851. package/dist/targets/cpp/emit-owned-record.d.ts +2 -0
  852. package/dist/targets/cpp/emit-owned-record.js +15 -0
  853. package/dist/targets/cpp/emit-presence.d.ts +78 -0
  854. package/dist/targets/cpp/emit-presence.js +376 -0
  855. package/dist/targets/cpp/emit-properties.d.ts +105 -0
  856. package/dist/targets/cpp/emit-properties.js +1640 -0
  857. package/dist/targets/cpp/emit-record-view.d.ts +20 -0
  858. package/dist/targets/cpp/emit-record-view.js +354 -0
  859. package/dist/targets/cpp/emit-return.d.ts +5 -0
  860. package/dist/targets/cpp/emit-return.js +237 -0
  861. package/dist/targets/cpp/emit-sum-widening.d.ts +10 -0
  862. package/dist/targets/cpp/emit-sum-widening.js +69 -0
  863. package/dist/targets/cpp/emit-tonumber.d.ts +38 -0
  864. package/dist/targets/cpp/emit-tonumber.js +177 -0
  865. package/dist/targets/cpp/emit-tostring.d.ts +92 -0
  866. package/dist/targets/cpp/emit-tostring.js +556 -0
  867. package/dist/targets/cpp/emit-typeof.d.ts +49 -0
  868. package/dist/targets/cpp/emit-typeof.js +317 -0
  869. package/dist/targets/cpp/emit-union-properties.d.ts +181 -0
  870. package/dist/targets/cpp/emit-union-properties.js +1281 -0
  871. package/dist/targets/cpp/emit.d.ts +45 -0
  872. package/dist/targets/cpp/emit.js +2225 -0
  873. package/dist/targets/cpp/error-types.d.ts +4 -0
  874. package/dist/targets/cpp/error-types.js +11 -0
  875. package/dist/targets/cpp/function-source-reads.d.ts +72 -0
  876. package/dist/targets/cpp/function-source-reads.js +148 -0
  877. package/dist/targets/cpp/host/atomics.d.ts +25 -0
  878. package/dist/targets/cpp/host/atomics.js +63 -0
  879. package/dist/targets/cpp/host/core-globals.d.ts +108 -0
  880. package/dist/targets/cpp/host/core-globals.js +158 -0
  881. package/dist/targets/cpp/host/dynamic-argument-members.d.ts +42 -0
  882. package/dist/targets/cpp/host/dynamic-argument-members.js +61 -0
  883. package/dist/targets/cpp/host/emit-host-arity.d.ts +139 -0
  884. package/dist/targets/cpp/host/emit-host-arity.js +232 -0
  885. package/dist/targets/cpp/host/emit-host-invoke.d.ts +91 -0
  886. package/dist/targets/cpp/host/emit-host-invoke.js +1105 -0
  887. package/dist/targets/cpp/host/emit-host-object.d.ts +55 -0
  888. package/dist/targets/cpp/host/emit-host-object.js +2206 -0
  889. package/dist/targets/cpp/host/emit-host-properties.d.ts +69 -0
  890. package/dist/targets/cpp/host/emit-host-properties.js +533 -0
  891. package/dist/targets/cpp/host/emit-host-reflect.d.ts +4 -0
  892. package/dist/targets/cpp/host/emit-host-reflect.js +180 -0
  893. package/dist/targets/cpp/host/emit-host-value.d.ts +120 -0
  894. package/dist/targets/cpp/host/emit-host-value.js +392 -0
  895. package/dist/targets/cpp/host/host-members.d.ts +505 -0
  896. package/dist/targets/cpp/host/host-members.js +819 -0
  897. package/dist/targets/cpp/host/host-method-aliases.d.ts +30 -0
  898. package/dist/targets/cpp/host/host-method-aliases.js +76 -0
  899. package/dist/targets/cpp/host/native-protocols.d.ts +47 -0
  900. package/dist/targets/cpp/host/native-protocols.js +183 -0
  901. package/dist/targets/cpp/host/object-protocol.d.ts +351 -0
  902. package/dist/targets/cpp/host/object-protocol.js +671 -0
  903. package/dist/targets/cpp/host-namespace-reads.d.ts +83 -0
  904. package/dist/targets/cpp/host-namespace-reads.js +113 -0
  905. package/dist/targets/cpp/manifest/capabilities.d.ts +39 -0
  906. package/dist/targets/cpp/manifest/capabilities.js +1484 -0
  907. package/dist/targets/cpp/manifest.d.ts +23 -0
  908. package/dist/targets/cpp/manifest.js +113 -0
  909. package/dist/targets/cpp/native-error-base.d.ts +38 -0
  910. package/dist/targets/cpp/native-error-base.js +74 -0
  911. package/dist/targets/cpp/native-narrowing-transport.d.ts +12 -0
  912. package/dist/targets/cpp/native-narrowing-transport.js +151 -0
  913. package/dist/targets/cpp/native-selection-helpers.d.ts +11 -0
  914. package/dist/targets/cpp/native-selection-helpers.js +46 -0
  915. package/dist/targets/cpp/native-symbol-keys.d.ts +8 -0
  916. package/dist/targets/cpp/native-symbol-keys.js +34 -0
  917. package/dist/targets/cpp/ownership.d.ts +43 -0
  918. package/dist/targets/cpp/ownership.js +38 -0
  919. package/dist/targets/cpp/owning-conversion-input.d.ts +14 -0
  920. package/dist/targets/cpp/owning-conversion-input.js +12 -0
  921. package/dist/targets/cpp/property-read-claims.d.ts +62 -0
  922. package/dist/targets/cpp/property-read-claims.js +23 -0
  923. package/dist/targets/cpp/property-store-claims.d.ts +62 -0
  924. package/dist/targets/cpp/property-store-claims.js +26 -0
  925. package/dist/targets/cpp/prototype/emit-prototype-array.d.ts +111 -0
  926. package/dist/targets/cpp/prototype/emit-prototype-array.js +602 -0
  927. package/dist/targets/cpp/prototype/emit-prototype-date.d.ts +133 -0
  928. package/dist/targets/cpp/prototype/emit-prototype-date.js +515 -0
  929. package/dist/targets/cpp/prototype/emit-prototype-error.d.ts +13 -0
  930. package/dist/targets/cpp/prototype/emit-prototype-error.js +54 -0
  931. package/dist/targets/cpp/prototype/emit-prototype-invoke.d.ts +34 -0
  932. package/dist/targets/cpp/prototype/emit-prototype-invoke.js +1003 -0
  933. package/dist/targets/cpp/prototype/emit-prototype-iterator.d.ts +47 -0
  934. package/dist/targets/cpp/prototype/emit-prototype-iterator.js +250 -0
  935. package/dist/targets/cpp/prototype/emit-prototype-promise.d.ts +46 -0
  936. package/dist/targets/cpp/prototype/emit-prototype-promise.js +143 -0
  937. package/dist/targets/cpp/prototype/emit-prototype-regexp.d.ts +335 -0
  938. package/dist/targets/cpp/prototype/emit-prototype-regexp.js +853 -0
  939. package/dist/targets/cpp/prototype/emit-prototype-string.d.ts +42 -0
  940. package/dist/targets/cpp/prototype/emit-prototype-string.js +252 -0
  941. package/dist/targets/cpp/prototype/prototype-method-reads.d.ts +25 -0
  942. package/dist/targets/cpp/prototype/prototype-method-reads.js +182 -0
  943. package/dist/targets/cpp/reactive-dependencies.d.ts +140 -0
  944. package/dist/targets/cpp/reactive-dependencies.js +432 -0
  945. package/dist/targets/cpp/reactive-origins.d.ts +44 -0
  946. package/dist/targets/cpp/reactive-origins.js +82 -0
  947. package/dist/targets/cpp/records.d.ts +277 -0
  948. package/dist/targets/cpp/records.js +2427 -0
  949. package/dist/targets/cpp/recursive-containers.d.ts +43 -0
  950. package/dist/targets/cpp/recursive-containers.js +144 -0
  951. package/dist/targets/cpp/regexp-types.d.ts +56 -0
  952. package/dist/targets/cpp/regexp-types.js +59 -0
  953. package/dist/targets/cpp/substrate.d.ts +125 -0
  954. package/dist/targets/cpp/substrate.js +12 -0
  955. package/dist/targets/cpp/translation-unit.d.ts +219 -0
  956. package/dist/targets/cpp/translation-unit.js +2063 -0
  957. package/dist/targets/cpp/types.d.ts +280 -0
  958. package/dist/targets/cpp/types.js +1135 -0
  959. package/dist/targets/cpp/virtual-methods.d.ts +95 -0
  960. package/dist/targets/cpp/virtual-methods.js +264 -0
  961. package/package.json +95 -0
  962. package/src/targets/cpp/runtime/gea_dynamic_proxy.h +824 -0
  963. package/src/targets/cpp/runtime/gea_eval.h +1376 -0
  964. package/src/targets/cpp/runtime/gea_native_class_prototype.h +44 -0
  965. package/src/targets/cpp/runtime/gea_runtime.h +29222 -0
  966. package/src/targets/cpp/runtime/gea_runtime_builtins.cpp +55 -0
@@ -0,0 +1,350 @@
1
+ import { allOperationsOf } from './model.js';
2
+ import { operandsOfIrOperation, resultOfIrOperation } from './queries.js';
3
+ import { recursiveCarrierOf, representationKey, walkRepresentation } from '../representation/model.js';
4
+ const abiCarriersOf = (abi) => [
5
+ ...abi.parameters.map((parameter) => parameter.value),
6
+ abi.result,
7
+ ...(abi.receiver ? [abi.receiver] : [])
8
+ ];
9
+ const operationOwnerOf = (body, operation) => `${String(body.owner)}:${operation.kind}`;
10
+ const classBodyOwnersOf = (layout) => [
11
+ layout.constructor,
12
+ ...layout.fields.map((field) => field.initializer),
13
+ ...layout.methods.map((method) => method.callable),
14
+ ...layout.accessors.flatMap((accessor) => [accessor.getter, accessor.setter]),
15
+ ...layout.staticFields.map((field) => field.initializer),
16
+ ...layout.staticMethods.map((method) => method.callable),
17
+ ...layout.staticAccessors.flatMap((accessor) => [accessor.getter, accessor.setter])
18
+ ];
19
+ /** Recursive definition/reference carriers intentionally share representationKey. */
20
+ const closureKeyOf = (representation) => {
21
+ const recursive = recursiveCarrierOf(representation);
22
+ return recursive ? `${representationKey(representation)}#${recursive.role}` : representationKey(representation);
23
+ };
24
+ /**
25
+ * Publish the carrier closure consumed by emission.
26
+ *
27
+ * The input is deliberately the final IR/projection set. This function never
28
+ * scans the sealed plan as a convenience: doing so would retain carriers for
29
+ * dropped bodies and recreate the phantom-struct defect this census exists to
30
+ * remove. `fallbackRoots` is the explicit fail-closed escape for an incomplete
31
+ * shake, where a subset cannot safely stand in for the program.
32
+ */
33
+ export const publishEmissionRepresentationsOf = (input) => {
34
+ const entries = new Map();
35
+ const rootEntries = new Map();
36
+ const queue = [];
37
+ const queued = new Set();
38
+ let queueCursor = 0;
39
+ const expanded = new Set();
40
+ const retainedClassReasons = new Map();
41
+ const queuedClasses = new Set();
42
+ const retainedPlacementDeclarations = new Set();
43
+ const citedConversionIds = new Set();
44
+ const missingConversions = new Set();
45
+ const missingDefinitions = new Set();
46
+ const reasonKeyOf = (reason) => `${reason.kind}|${reason.owner}|${reason.detail}`;
47
+ const addReason = (table, representation, reason) => {
48
+ const key = closureKeyOf(representation);
49
+ const existing = table.get(key);
50
+ if (!existing) {
51
+ table.set(key, { representation, reasons: new Map([[reasonKeyOf(reason), reason]]) });
52
+ return;
53
+ }
54
+ existing.reasons.set(reasonKeyOf(reason), reason);
55
+ };
56
+ const enqueue = (representation, reason, root = false) => {
57
+ addReason(root ? rootEntries : entries, representation, reason);
58
+ const key = closureKeyOf(representation);
59
+ if (expanded.has(key) || queued.has(key))
60
+ return;
61
+ queued.add(key);
62
+ queue.push({ representation, reason, root });
63
+ };
64
+ const citeConversion = (id, owner) => {
65
+ if (citedConversionIds.has(id))
66
+ return;
67
+ citedConversionIds.add(id);
68
+ const node = input.conversions.nodeById(id);
69
+ if (!node) {
70
+ missingConversions.add(id);
71
+ return;
72
+ }
73
+ enqueue(node.source, { kind: 'conversion-source', owner, detail: id });
74
+ enqueue(node.target, { kind: 'conversion-target', owner, detail: id });
75
+ };
76
+ const citeOperand = (body, operation, operand, kind) => {
77
+ enqueue(operand.representation, { kind, owner: operationOwnerOf(body, operation), detail: String(operand.value) }, true);
78
+ };
79
+ // First collect the direct IR roots. Values and operation operands overlap
80
+ // intentionally: their separate reasons tell target consumers whether a
81
+ // carrier is needed by an emitted slot or by an operation's ABI.
82
+ for (const body of input.bodies.values()) {
83
+ for (const [value, representation] of body.values) {
84
+ enqueue(representation, { kind: 'body-value', owner: String(body.owner), detail: String(value) }, true);
85
+ }
86
+ if (body.abi)
87
+ for (const representation of abiCarriersOf(body.abi))
88
+ enqueue(representation, { kind: 'body-abi', owner: String(body.owner), detail: 'call ABI' }, true);
89
+ if (body.construct)
90
+ for (const representation of abiCarriersOf(body.construct))
91
+ enqueue(representation, { kind: 'body-abi', owner: String(body.owner), detail: 'construct ABI' }, true);
92
+ if (body.facts?.capturedReceiver)
93
+ enqueue(body.facts.capturedReceiver, { kind: 'capture-receiver', owner: String(body.owner), detail: 'captured receiver' }, true);
94
+ for (const declaration of [
95
+ ...(body.facts?.capturedDeclarations ?? []),
96
+ ...(body.facts ? [...body.facts.boxed] : []),
97
+ ...(body.facts ? [...body.facts.requiresEarlyBox] : [])
98
+ ]) {
99
+ retainedPlacementDeclarations.add(declaration);
100
+ const placement = input.placements.get(declaration);
101
+ if (placement?.representation && !input.omitGlobals?.has(declaration))
102
+ enqueue(placement.representation, { kind: 'capture-cell', owner: String(body.owner), detail: String(declaration) }, true);
103
+ }
104
+ for (const blockId of body.blockOrder) {
105
+ const block = body.blocks.get(blockId);
106
+ if (!block)
107
+ continue;
108
+ for (const operation of allOperationsOf(block)) {
109
+ for (const operand of operandsOfIrOperation(operation))
110
+ citeOperand(body, operation, operand, 'operation-operand');
111
+ const result = resultOfIrOperation(operation);
112
+ if (result)
113
+ citeOperand(body, operation, { value: result.id, representation: result.representation }, 'operation-result');
114
+ if (operation.kind === 'convert')
115
+ citeConversion(operation.conversionUse, operationOwnerOf(body, operation));
116
+ if (operation.kind === 'get' && operation.nativeFieldOwnerRead) {
117
+ const recipe = operation.nativeFieldOwnerRead;
118
+ citeConversion(recipe.missing, operationOwnerOf(body, operation));
119
+ for (const arm of recipe.arms)
120
+ citeConversion(arm.conversion, operationOwnerOf(body, operation));
121
+ for (const member of recipe.members)
122
+ enqueue(member, { kind: 'operation-operand', owner: operationOwnerOf(body, operation), detail: 'native field-owner class identity' }, true);
123
+ }
124
+ if (operation.kind === 'merge-live-arm-rebuild' && operation.nativeTransport) {
125
+ for (const arm of operation.nativeTransport.arms)
126
+ citeConversion(arm.conversion, operationOwnerOf(body, operation));
127
+ if (operation.nativeTransport.absence)
128
+ citeConversion(operation.nativeTransport.absence, operationOwnerOf(body, operation));
129
+ }
130
+ if (operation.kind === 'call' && operation.fixedDataDefinition)
131
+ citeConversion(operation.fixedDataDefinition.conversion, operationOwnerOf(body, operation));
132
+ if (operation.kind === 'call')
133
+ for (const value of operation.objectValueConversions ?? [])
134
+ citeConversion(value.conversion, operationOwnerOf(body, operation));
135
+ if (operation.kind === 'get' && operation.typedComputedRead) {
136
+ for (const arm of operation.typedComputedRead.arms)
137
+ citeConversion(arm.conversion, operationOwnerOf(body, operation));
138
+ if (operation.typedComputedRead.receiverBounded)
139
+ citeConversion(operation.typedComputedRead.receiverBounded.missing, operationOwnerOf(body, operation));
140
+ }
141
+ if (operation.kind === 'binding-read' || operation.kind === 'binding-write')
142
+ retainedPlacementDeclarations.add(operation.declaration);
143
+ }
144
+ }
145
+ }
146
+ // The target emits every non-local placement (region/global and host
147
+ // boundaries) from its placement tables. Local cells are emitted only when
148
+ // the final IR or capture facts name them; otherwise there is no frame slot
149
+ // to materialize. `omitGlobals` applies only to the local liveness set here:
150
+ // global storage, externs, and absent definitions remain target declarations.
151
+ const retainedPlacements = new Map();
152
+ for (const [declaration, placement] of input.placements) {
153
+ if (input.omitGlobals?.has(declaration) && (placement.storage.kind === 'local' || placement.storage.kind === 'region'))
154
+ continue;
155
+ if (placement.storage.kind === 'local' && !retainedPlacementDeclarations.has(declaration))
156
+ continue;
157
+ retainedPlacements.set(declaration, placement);
158
+ if (placement.representation)
159
+ enqueue(placement.representation, { kind: 'retained-placement', owner: String(declaration), detail: placement.storage.kind }, true);
160
+ }
161
+ // Every class in the final shaken class map is rendered by the target. Seed
162
+ // them all; class-ref discovery below still feeds the same queue so nominal
163
+ // layouts reached through nested carriers cannot be missed.
164
+ const bodyOwners = new Set([...input.bodies.values()].map((body) => String(body.sourceOwner)));
165
+ for (const [declaration, layout] of input.classes) {
166
+ const memberBodyRetained = classBodyOwnersOf(layout).some((owner) => owner !== null && bodyOwners.has(String(owner)));
167
+ retainedClassReasons.set(declaration, {
168
+ kind: 'retained-class',
169
+ owner: String(declaration),
170
+ detail: memberBodyRetained ? 'retained member body' : 'final class layout'
171
+ });
172
+ }
173
+ const classQueue = [];
174
+ const markClass = (declaration, detail) => {
175
+ if (retainedClassReasons.has(declaration)) {
176
+ if (!queuedClasses.has(declaration) && !expandedClasses.has(declaration)) {
177
+ queuedClasses.add(declaration);
178
+ classQueue.push(declaration);
179
+ }
180
+ return;
181
+ }
182
+ retainedClassReasons.set(declaration, { kind: 'retained-class', owner: String(declaration), detail });
183
+ queuedClasses.add(declaration);
184
+ classQueue.push(declaration);
185
+ };
186
+ const expandedClasses = new Set();
187
+ for (const declaration of retainedClassReasons.keys())
188
+ markClass(declaration, 'final class layout');
189
+ const expandClassQueue = () => {
190
+ while (classQueue.length > 0) {
191
+ const declaration = classQueue.pop();
192
+ if (!declaration || expandedClasses.has(declaration))
193
+ continue;
194
+ expandedClasses.add(declaration);
195
+ const layout = input.classes.get(declaration);
196
+ if (!layout)
197
+ continue;
198
+ if (layout.instance)
199
+ enqueue(layout.instance, { kind: 'class-instance', owner: String(declaration), detail: 'class instance carrier' }, true);
200
+ if (layout.construct)
201
+ for (const representation of abiCarriersOf(layout.construct))
202
+ enqueue(representation, { kind: 'class-construct', owner: String(declaration), detail: 'class construct ABI' }, true);
203
+ for (const field of layout.nativeStorage?.fields.map((field) => ({ key: field.key, representation: field.value })) ?? layout.fields)
204
+ if (field.representation)
205
+ enqueue(field.representation, { kind: 'class-field', owner: String(declaration), detail: field.key }, true);
206
+ for (const field of layout.staticFields)
207
+ if (field.representation)
208
+ enqueue(field.representation, { kind: 'class-static-field', owner: String(declaration), detail: field.key }, true);
209
+ if (layout.nativeBase)
210
+ enqueue(layout.nativeBase.instance, { kind: 'class-instance', owner: String(declaration), detail: 'native base instance carrier' }, true);
211
+ if (layout.base)
212
+ markClass(layout.base, `base of ${String(declaration)}`);
213
+ }
214
+ };
215
+ expandClassQueue();
216
+ // Complete the representation closure. walkRepresentation covers all
217
+ // ordinary nested carriers; nominal layout expansion above is the only
218
+ // compiler-context-dependent extension.
219
+ const ordered = new Map();
220
+ const drainRepresentations = () => {
221
+ while (queueCursor < queue.length) {
222
+ const item = queue[queueCursor++];
223
+ if (!item)
224
+ continue;
225
+ const key = closureKeyOf(item.representation);
226
+ const entry = entries.get(key) ?? rootEntries.get(key);
227
+ if (entry && !entries.has(key))
228
+ entries.set(key, entry);
229
+ if (!ordered.has(key))
230
+ ordered.set(key, item.representation);
231
+ if (expanded.has(key))
232
+ continue;
233
+ expanded.add(key);
234
+ for (const child of walkRepresentation(item.representation)) {
235
+ if (child === item.representation)
236
+ continue;
237
+ if (child.kind === 'class-ref')
238
+ markClass(child.declaration, `carrier ${representationKey(child)}`);
239
+ const childReason = {
240
+ kind: item.root ? item.reason.kind : 'operation-result',
241
+ owner: item.reason.owner,
242
+ detail: `nested in ${key}`
243
+ };
244
+ enqueue(child, childReason);
245
+ }
246
+ if (item.representation.kind === 'class-ref') {
247
+ markClass(item.representation.declaration, `carrier ${representationKey(item.representation)}`);
248
+ const runtimeLayout = input.classes.get(item.representation.declaration);
249
+ const base = runtimeLayout ? runtimeLayout.base : (item.representation.ancestors[0] ?? null);
250
+ if (base !== null && !runtimeLayout?.nativeBase) {
251
+ const instance = input.classes.get(base)?.instance ?? input.resolveClassRef?.(base);
252
+ if (instance?.kind === 'class-ref')
253
+ enqueue(instance, { kind: 'class-instance', owner: String(base), detail: 'retained physical base' });
254
+ }
255
+ }
256
+ if (item.representation.kind === 'native-record-ref' && item.representation.recursive?.role === 'reference') {
257
+ const layout = input.deriver.layoutOf(item.representation.recursive.type);
258
+ const recursive = recursiveCarrierOf(layout);
259
+ const isDefinition = recursive?.type === item.representation.recursive.type &&
260
+ recursive.role === 'definition' &&
261
+ (layout.kind === 'array-object' ||
262
+ layout.kind === 'keyed-collection' ||
263
+ layout.kind === 'dictionary' ||
264
+ layout.kind === 'function-value-dispatch');
265
+ if (isDefinition) {
266
+ const reason = {
267
+ kind: 'native-layout',
268
+ owner: item.reason.owner,
269
+ detail: `recursive definition ${item.representation.recursive.type}`
270
+ };
271
+ enqueue(layout, reason);
272
+ }
273
+ else {
274
+ missingDefinitions.add(String(item.representation.recursive.type));
275
+ }
276
+ }
277
+ else if ((item.representation.kind === 'native-record-ref' || item.representation.kind === 'class-ref') &&
278
+ (item.representation.kind !== 'native-record-ref' ||
279
+ (item.representation.native === null && item.representation.recursive === undefined))) {
280
+ const rawLayout = input.deriver.layoutOf(item.representation.shapeId);
281
+ const nativeStorage = item.representation.kind === 'class-ref' ? input.classes.get(item.representation.declaration)?.nativeStorage : undefined;
282
+ const layout = nativeStorage !== undefined && (rawLayout.kind === 'record' || rawLayout.kind === 'record-with-index')
283
+ ? { ...rawLayout, fields: nativeStorage.fields }
284
+ : rawLayout;
285
+ const reason = {
286
+ kind: 'native-layout',
287
+ owner: item.reason.owner,
288
+ detail: item.representation.shapeId
289
+ };
290
+ for (const child of walkRepresentation(layout)) {
291
+ if (child === layout)
292
+ continue;
293
+ enqueue(child, reason);
294
+ }
295
+ }
296
+ }
297
+ };
298
+ drainRepresentations();
299
+ while (classQueue.length > 0) {
300
+ expandClassQueue();
301
+ drainRepresentations();
302
+ }
303
+ // Incomplete shake or an IR that cites a conversion the authority cannot
304
+ // resolve cannot safely drive a reduced target closure. Reintroduce the
305
+ // caller-supplied plan roots and report the incomplete status; never guess.
306
+ const complete = input.complete && missingConversions.size === 0 && missingDefinitions.size === 0;
307
+ if (!complete) {
308
+ for (const representation of input.fallbackRoots ?? [])
309
+ enqueue(representation, { kind: 'fallback-plan-root', owner: 'sealed-plan', detail: 'incomplete emission census' }, true);
310
+ drainRepresentations();
311
+ while (classQueue.length > 0) {
312
+ expandClassQueue();
313
+ drainRepresentations();
314
+ }
315
+ }
316
+ const closure = new Map();
317
+ const publishedEntryOf = (entry) => ({
318
+ representation: entry.representation,
319
+ reasons: Object.freeze([...entry.reasons.values()])
320
+ });
321
+ for (const [key, representation] of ordered) {
322
+ const nested = entries.get(key);
323
+ const direct = rootEntries.get(key);
324
+ if (!nested && !direct) {
325
+ closure.set(key, { representation, reasons: [] });
326
+ continue;
327
+ }
328
+ const unique = new Map();
329
+ for (const reason of [...(nested?.reasons.values() ?? []), ...(direct?.reasons.values() ?? [])])
330
+ unique.set(reasonKeyOf(reason), reason);
331
+ closure.set(key, { representation: nested?.representation ?? direct.representation, reasons: Object.freeze([...unique.values()]) });
332
+ }
333
+ const reasons = new Map();
334
+ for (const [key, entry] of closure)
335
+ reasons.set(key, entry.reasons);
336
+ return Object.freeze({
337
+ representations: Object.freeze([...ordered.values()]),
338
+ complete,
339
+ roots: Object.freeze([...rootEntries.values()].map(publishedEntryOf)),
340
+ closure,
341
+ reasons,
342
+ retainedClasses: new Set(retainedClassReasons.keys()),
343
+ retainedPlacements,
344
+ conversions: new Map([...citedConversionIds]
345
+ .map((id) => [id, input.conversions.nodeById(id)])
346
+ .filter((row) => row[1] !== null)),
347
+ missingConversions: Object.freeze([...missingConversions]),
348
+ missingDefinitions: Object.freeze([...missingDefinitions])
349
+ });
350
+ };
@@ -0,0 +1,218 @@
1
+ import type { DeclarationId, FunctionId, IrValueId } from '../identity/ids.js';
2
+ import { type DeadValueRules } from './dead-values.js';
3
+ import type { ForwardedBinding, ForwardingPolicy } from './deferral.js';
4
+ import { type HoistPlan } from './hoist.js';
5
+ import { type IntegerStorageFacts } from './integers.js';
6
+ import { type CallOperation, type ComputeOperation, type GetOperation, type IrBody, type IrOperand } from './model.js';
7
+ import { type NumericIntrinsic } from './numeric-intrinsics.js';
8
+ import { type SharedStringLayout } from './string-layout-reuse.js';
9
+ import { type TypeQueryComparison } from './type-query-results.js';
10
+ /**
11
+ * Every per-body census the printer needs before it renders a line, computed
12
+ * in one place, in the one order they depend on each other in.
13
+ *
14
+ * Distinct from `IrBody.facts` (`ir/captures.ts`), which is the whole-program
15
+ * capture answer sealed onto the body before rendering starts. These are the
16
+ * per-body questions, asked once per body at render entry; the two converge
17
+ * when the remaining Phase 3 rows land.
18
+ *
19
+ * These thirteen analyses used to run inline in `targets/cpp/emit.ts`, each
20
+ * copying its answer into the emit context. Nothing about them is C++: they ask
21
+ * what a body does -- which results nothing reads, which reads may be deferred
22
+ * to their single use, which numbers fit a `long long`, which loop-invariant
23
+ * reads may be hoisted -- and the printer only spells the answers. What made
24
+ * them live in the target was the ORDER, which is real and subtle and was
25
+ * recorded only as comments between the calls: the type-query census removes
26
+ * values from the deferral census, the hoists remove more, and the string
27
+ * length reuse removes more still, so reading the deferral set at the wrong
28
+ * point in the sequence silently answers a question with a set that is about
29
+ * to shrink. Here that order is the body of one function, stated once, and a
30
+ * reader who needs to know why a step sits where it does finds the reason at
31
+ * the step rather than in a comment beside a call site.
32
+ *
33
+ * The target still owns two decisions inside the sequence, because both are
34
+ * about C++ storage rather than about the program, and both are needed
35
+ * mid-order. They arrive as `IrBodyCensusPolicy` hooks, invoked exactly where
36
+ * the inline pipeline invoked them.
37
+ */
38
+ export interface IrBodyCensus {
39
+ /** Protocol cursors that never escape their `get-iterator`, so the printer may hold them by value. */
40
+ readonly localIterators: ReadonlySet<IrValueId>;
41
+ /** Values with exactly one reader, renderable at that reader -- already shrunk by every later census that claims one. */
42
+ readonly deferrable: ReadonlySet<IrValueId>;
43
+ readonly callArgumentOnly: ReadonlySet<IrValueId>;
44
+ /** Cells whose one write renders nothing and whose one read spells the written value -- see `deferral.ts`'s `ForwardedBinding`. Shrunk with `deferrable`: a forwarding whose value or read stopped deferring is withdrawn. */
45
+ readonly forwardedBindings: ReadonlyMap<DeclarationId, ForwardedBinding>;
46
+ /** Results nothing reads and whose producer has no other effect. Disjoint from `deferrable` by construction. */
47
+ readonly dead: ReadonlySet<IrValueId>;
48
+ /** Results nothing reads, whatever their producer does. */
49
+ readonly unread: ReadonlySet<IrValueId>;
50
+ readonly booleanConstants: ReadonlyMap<IrValueId, boolean>;
51
+ readonly typeQueryValues: ReadonlySet<IrValueId>;
52
+ readonly typeQueryBindings: ReadonlySet<DeclarationId>;
53
+ readonly typeQueryComparisons: ReadonlyMap<ComputeOperation, TypeQueryComparison>;
54
+ readonly integerValues: ReadonlySet<IrValueId>;
55
+ readonly integerBindings: ReadonlySet<DeclarationId>;
56
+ readonly remainderForms: ReadonlyMap<IrValueId, 'restated' | 'dynamic'>;
57
+ readonly numericCalls: ReadonlyMap<CallOperation, NumericIntrinsic>;
58
+ readonly numericCallOnly: ReadonlySet<IrValueId>;
59
+ readonly loopInvariantValues: ReadonlySet<IrValueId>;
60
+ readonly hoists: HoistPlan;
61
+ readonly hoistedResults: ReadonlySet<IrValueId>;
62
+ readonly sharedStringLayouts: ReadonlyMap<IrValueId, SharedStringLayout>;
63
+ readonly reusedStringLengths: ReadonlyMap<IrValueId, IrOperand>;
64
+ }
65
+ /**
66
+ * What the target answers for its own carriers, plus the two points in the
67
+ * order where it must act.
68
+ *
69
+ * Every field here is a question the IR genuinely cannot answer for itself: it
70
+ * is about how this backend spells or stores a thing, and a second answer
71
+ * derived from the IR would be a second authority over the printer's own
72
+ * storage decisions.
73
+ */
74
+ export interface IrBodyCensusPolicy {
75
+ /** Whether this member read is a plain load the printer can move to its single use (not, for instance, a reactive cell whose spelling differs inline). */
76
+ readonly deferrableMemberRead: (operation: GetOperation) => boolean;
77
+ /** Which renderings spell a forwarded call once, and which cells are private enough to forward -- see `deferral.ts`'s `ForwardingPolicy`. */
78
+ readonly forwarding: ForwardingPolicy;
79
+ /** What counts as a pure or by-name-reached producer, so a result nothing reads may be deleted with it. */
80
+ readonly deadValues: DeadValueRules;
81
+ /** Whether this cell is a private local `string` whose `typeof` result may be saved rather than recomputed. */
82
+ readonly stringQueryCell: (declaration: DeclarationId) => boolean;
83
+ /** What a whole-program census already settled about this body's integer storage. */
84
+ readonly integerStorage: IntegerStorageFacts;
85
+ /**
86
+ * The target's constant spelling, which runs after the dead/unread censuses
87
+ * and before the type-query census.
88
+ *
89
+ * Position is the whole contract: the spellings are read by the predicates
90
+ * this sequence calls later, and the dead set is what decides which of them
91
+ * are worth minting at all.
92
+ */
93
+ readonly spellConstants: () => void;
94
+ /**
95
+ * The target's formal-cell and capacity decisions, which run after the
96
+ * integer census -- the one thing that can make a cell and its own formal
97
+ * two different storages -- and before the hoists, whose relocations this
98
+ * step is allowed to name. Returns the values that ended up carried by a
99
+ * formal cell, which is what the string-length reuse census treats as stable.
100
+ *
101
+ * It is handed the facts settled so far, because the deferral set it reads
102
+ * is still the one the hoists have not yet claimed from: a bound this step
103
+ * declines to name because a deferred value already withholds it must go on
104
+ * declining after that value is relocated, and a step reading the final set
105
+ * would name it a second time.
106
+ */
107
+ readonly formalStorage: (settled: IrBodyCensusBeforeHoists) => ReadonlySet<DeclarationId>;
108
+ }
109
+ /** What is known when `formalStorage` runs: everything except the hoists and the two censuses that read them. */
110
+ export type IrBodyCensusBeforeHoists = Pick<IrBodyCensus, 'localIterators' | 'deferrable' | 'callArgumentOnly' | 'forwardedBindings' | 'dead' | 'unread' | 'booleanConstants' | 'typeQueryValues' | 'typeQueryBindings' | 'typeQueryComparisons' | 'integerValues' | 'integerBindings' | 'remainderForms' | 'numericCalls' | 'numericCallOnly'>;
111
+ export declare const irBodyCensusOf: (body: IrBody, policy: IrBodyCensusPolicy) => IrBodyCensus;
112
+ /**
113
+ * Where every value in this body came from -- purely syntactic indices over
114
+ * the IR, with no C++ in the answer at all.
115
+ *
116
+ * The no-write-during-render rule, which moved these facts out of the target:
117
+ * `targets/cpp/emit.ts`'s `emitCompute`, `targets/cpp/emit-properties.ts`'s
118
+ * `emitGet` and `targets/cpp/emit-bindings.ts`'s `emitBindingRead` used to
119
+ * record `computeOrigins`/`propertyReadOrigins`/`bindingReadDeclarations` as a
120
+ * SIDE EFFECT of rendering the very operation each map is keyed by -- "the
121
+ * compute operation that defined this value" needs nothing about what has
122
+ * been printed, or in what order; it is answered by the operation's own
123
+ * `result.id`, which exists before any statement is emitted. Recording it at
124
+ * print time made the printer a second authority over a fact the IR already
125
+ * settles, and meant a value visited twice (`ir/dead-values.ts`'s dead-value
126
+ * short-circuit skipped `emitCompute` entirely, so `emit.ts`'s
127
+ * `registerDirectCalleeOfDeadValue` had its OWN, independent
128
+ * `bindingReadDeclarations.set` to avoid a hole) was one fact filled from two
129
+ * places instead of one.
130
+ *
131
+ * `valueCellReads` (`targets/cpp/deferral-safety.ts`'s former
132
+ * `collectValueCellReads`) is the fixed-point closure of `bindingReadDeclarations`
133
+ * over every operand a value derives from -- also purely a property of the
134
+ * operand graph, also unrelated to render order.
135
+ */
136
+ export interface BodyValueOrigins {
137
+ /** Every `compute` operation's own definition, by the value it produced. */
138
+ readonly computeOrigins: ReadonlyMap<IrValueId, ComputeOperation>;
139
+ /** Every `get` operation's own definition, by the value it produced. */
140
+ readonly propertyReadOrigins: ReadonlyMap<IrValueId, GetOperation>;
141
+ /**
142
+ * Every `constant` operation's own literal text, by the value it defined.
143
+ *
144
+ * The same table the printer builds for itself in `spellConstants`, stated
145
+ * here because a census that has to ask "is this property key a literal, and
146
+ * which one" needs the answer before any spelling exists -- a static member
147
+ * name is a fact about the operation, not about the line it becomes.
148
+ *
149
+ * Named for what it ANSWERS rather than for how it is built, because there
150
+ * is a second map that would otherwise share the name and must never be
151
+ * confused with it: `EmitContext.constantTexts` starts EMPTY at the point
152
+ * this one is already complete, and then grows during the render as a
153
+ * `typeof` whose operand's tag is known folds to a literal. Feeding that one
154
+ * to a claim lets a fold decide a key the program computed. Both are
155
+ * `ReadonlyMap<IrValueId, string>`, so only the name stands between them --
156
+ * which is why `scripts/architecture.mjs` now also refuses to let
157
+ * `ctx.constantTexts` be passed as an argument at all.
158
+ */
159
+ readonly staticKeyTexts: ReadonlyMap<IrValueId, string>;
160
+ /** The declaration every `binding-read` value loaded from, live or dead. */
161
+ readonly bindingReadDeclarations: ReadonlyMap<IrValueId, DeclarationId>;
162
+ /** The operand every `convert` result was converted FROM, so a consumer can walk a value's history through a carrier change. */
163
+ readonly conversionSources: ReadonlyMap<IrValueId, IrOperand>;
164
+ /**
165
+ * The callee value behind every call's result -- which value it CALLED,
166
+ * which is the same fact whichever of the printer's dispatch paths spells
167
+ * the call.
168
+ */
169
+ readonly callCallees: ReadonlyMap<IrValueId, IrValueId>;
170
+ /**
171
+ * Every value whose EVERY read in this body is as a call's callee -- a host
172
+ * function read and called on the spot (`Math.pow(x)`), never compared,
173
+ * stored, passed or returned. Counted over the operands and terminators the
174
+ * body states, so a read that also feeds a binding write (`(f = Math.pow)(x)`)
175
+ * is not in it. The printer uses it to leave the hot call path alone: the
176
+ * identity a value read of a host builtin must carry (`emit-host-properties.ts`)
177
+ * is only observable where the value goes somewhere other than a call.
178
+ */
179
+ readonly calleeOnlyValues: ReadonlySet<IrValueId>;
180
+ /**
181
+ * Where each member of a record-shaped value came FROM, by member key, so a
182
+ * consumer can still see a member's expression after it has become struct
183
+ * storage.
184
+ *
185
+ * Two producers, and the accumulation between them is why this is a walk in
186
+ * block order rather than a map comprehension: an `allocate-record` states
187
+ * every member at once, while an object literal that installs its members
188
+ * by STORE builds the same answer one `set` at a time, each carrying the
189
+ * accumulated map onto the receiver and onto its own result (a store
190
+ * threads its receiver onward).
191
+ *
192
+ * A store counts only when its key is a `constant` -- the same test the
193
+ * printer made against its own constant table, restated against the IR the
194
+ * table is filled from.
195
+ *
196
+ * BOTH store kinds, because `emit-properties.ts`'s `emitPropertyStore`
197
+ * serves both and accumulated for both: an object literal whose members are
198
+ * installed by `define-own-property` (which is what a descriptor literal
199
+ * is) builds its answer exactly the way a `set`-installed one does, and
200
+ * covering only `set` loses the descriptor `Object.defineProperty` on a
201
+ * dictionary reads its typed `value` operand out of.
202
+ */
203
+ readonly recordFieldSources: ReadonlyMap<IrValueId, ReadonlyMap<string, IrOperand>>;
204
+ /**
205
+ * Every callable this body allocated as a THUNK -- a zero-parameter,
206
+ * receiver-less `function-value-dispatch` -- to the function whose body it
207
+ * runs.
208
+ *
209
+ * The carrier is unwrapped through `optional` first, because a thunk stored
210
+ * into an absence-capable slot is still a thunk; that is the shape the
211
+ * printer's own two write sites tested, one of them on the unwrapped
212
+ * carrier and one on the bare one.
213
+ */
214
+ readonly thunkValues: ReadonlyMap<IrValueId, FunctionId>;
215
+ /** Every cell a value transitively reads, over the whole body -- see `targets/cpp/deferral-safety.ts`'s `readsCell`. */
216
+ readonly valueCellReads: ReadonlyMap<IrValueId, ReadonlySet<DeclarationId>>;
217
+ }
218
+ export declare const bodyValueOriginsOf: (body: IrBody) => BodyValueOrigins;