@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,142 @@
1
+ import type { DeclarationId, FunctionId, IrValueId } from '../identity/ids.js';
2
+ import { type ConversionCensus } from '../conversion/nodes.js';
3
+ import type { Representation } from '../representation/model.js';
4
+ import type { RepresentationDeriver } from '../representation/derive.js';
5
+ import type { ClassLayout } from '../projection/classes.js';
6
+ import { type CallableAbi } from '../representation/model.js';
7
+ import type { CallCalleeIdentity, CallOperation, ConstructOperation, IrOperand } from './model.js';
8
+ /**
9
+ * A fixed frame receives only its declared formals. Normalization publishes a
10
+ * rest parameter for bodies that observe `arguments`, so those frames retain
11
+ * every supplied argument. Argument evaluation lives in preceding IR and is
12
+ * never removed by selecting the received values.
13
+ */
14
+ export declare const receivableArguments: <T>(abi: CallableAbi, args: readonly T[]) => readonly T[];
15
+ /** Inputs observable through this call's held convention, even before its
16
+ * implementation is known. Dynamic and spread frames retain every input. */
17
+ export declare const receivedCallArguments: (operation: CallOperation) => readonly IrOperand[];
18
+ /**
19
+ * The frame a construction through a bare host constructor fills: the handle's
20
+ * own `[[Construct]]` convention when its overloads join into one, else the
21
+ * overload the checker selected at this site (`ConstructOperation.hostFrame`).
22
+ * `null` for any other callee, and for a construction whose new-target is not
23
+ * its own callee, which emission refuses.
24
+ *
25
+ * A `native-handle` states no convention `constructAbiOfCallee` can read, so
26
+ * without this a host construction published no default-slot conversion and
27
+ * `new Error(message)` -- `options` omitted -- read as an open frame.
28
+ */
29
+ export declare const hostConstructFrameOf: (operation: ConstructOperation) => CallableAbi | null;
30
+ /**
31
+ * Publish default-slot conversions before carrier closure and read-only
32
+ * reflection census, together with the sum selection a union receiver enters
33
+ * its convention through (`publishSumReceiverSelection`). A host construction
34
+ * publishes its omitted formals against `hostConstructFrameOf`.
35
+ */
36
+ export declare const publishOmittedArgumentConversions: (operation: CallOperation | ConstructOperation, conversions: ConversionCensus) => void;
37
+ /**
38
+ * Omitted fixed formals receive undefined through the existing conversion
39
+ * census; trailing arguments are packed into the rest slot's own array.
40
+ *
41
+ * The rest half used to read the frame as though it were fixed: it compared the
42
+ * argument sitting at the rest INDEX against the rest slot's array carrier --
43
+ * which an element never matches -- and refused outright once a call supplied
44
+ * more arguments than the convention declares parameters, which is precisely
45
+ * what a rest parameter exists to accept. Every variadic call was an unmatched
46
+ * frame for that reason alone.
47
+ *
48
+ * A rest slot "is an `array-object` like any other, and what varies is only who
49
+ * builds the array, which is the caller". So the caller's obligation is exactly
50
+ * that each argument it packs is already the array's ELEMENT carrier; packing
51
+ * natively-typed values into a declared array crosses no dynamic boundary.
52
+ */
53
+ export type CallFrameMatch =
54
+ /**
55
+ * Every operand arrives already held in the parameter's own carrier, so the
56
+ * body receives the caller's values themselves. Provenance equates the two,
57
+ * and the native class-initialization entry forwards the received operands
58
+ * into the constructor unchanged -- neither survives a value that has to be
59
+ * converted first, so this is the proof they ask for.
60
+ */
61
+ 'value-identity'
62
+ /**
63
+ * Every operand reaches its parameter through a conversion that keeps both
64
+ * sides in native storage. A weaker proof, and the one the reflection census
65
+ * actually needs: its question is whether any operand crosses a `gea::Value`
66
+ * boundary, not whose value the body ends up holding. Passing a `number` to a
67
+ * `number | undefined` formal publishes nothing -- it constructs an optional
68
+ * -- yet under `value-identity` it reads as an open callable boundary and
69
+ * promotes the receiver and every argument to an unrestricted field protocol.
70
+ *
71
+ * `transfersNativeStorage` is the authority for a single edge; asking the
72
+ * conversion census is deliberate, because the census is what owns the fact
73
+ * and re-deriving it from carrier shapes here would invent a second opinion.
74
+ */
75
+ | 'native-transfer';
76
+ export declare const nativeArgumentsMatch: (abi: CallableAbi, args: readonly IrOperand[], conversions?: Pick<ConversionCensus, "nodeById">, match?: CallFrameMatch) => boolean;
77
+ /** Publish a closed body's exact frame, including arguments it cannot observe. */
78
+ export declare const closedCallFrameOf: (operation: CallOperation, identity: CallCalleeIdentity | undefined, abiOf: (functionId: FunctionId) => CallableAbi | null, observed: ReadonlySet<IrValueId>, conversions?: Pick<ConversionCensus, "nodeById">, match?: CallFrameMatch) => CallOperation["closedFrame"];
79
+ /** Frame selection shared by direct bodies and conversion-census native adapters. */
80
+ export declare const nativeCallFrameOf: (operation: CallOperation, abi: CallableAbi, observed: ReadonlySet<IrValueId>, conversions?: Pick<ConversionCensus, "nodeById">, match?: CallFrameMatch) => CallOperation["closedFrame"];
81
+ /**
82
+ * The frame of a call the printer spells from a HOST TEMPLATE rather than
83
+ * through the callee's declared convention (`CallOperation.hostTemplate`).
84
+ *
85
+ * `true`: the template this call is printed by uses every operand in place, in
86
+ * its own carrier, and puts nothing in a `gea::Value`. `false`: that cannot be
87
+ * stated for these operands, and the call stays the open boundary it was. The
88
+ * declared convention is NOT asked instead, because the printer never fills
89
+ * it: `Object.assign`'s `(target: T, source: U) => T & U` matches a dictionary
90
+ * source exactly while `assignText` walks that dictionary's runtime key table.
91
+ * `undefined`: the call records no template -- or, for `Array.isArray` only,
92
+ * its argument reaches the template's `gea::Value` overload, where the
93
+ * declared `(arg: any)` convention IS what is printed and keeps deciding.
94
+ *
95
+ * Each arm states only what its template prints:
96
+ *
97
+ * - `array-is-array` -- `isArrayText` (emit-host-invoke.ts) answers from the
98
+ * argument's own carrier: a constant by kind, `has_value()` for an optional,
99
+ * the discriminant for a union. Nothing is converted and nothing is read
100
+ * through the carrier, and the C++ `bool` is the result, assigned as it is
101
+ * (`hostResultText`).
102
+ * - `typed-array-set` -- `typedArrayCallText` (emit-buffers.ts):
103
+ * `setFrom(*source, offset)` for a typed-array source, `setFromArray(source,
104
+ * offset)` for an array of numbers, an `is<i>()`/`get<i>()` chain over a
105
+ * union of only those, and the offset operand's own text as the runtime's
106
+ * `double`. The expression's value is `gea::Undefined{}`. A third argument is
107
+ * never read; it is refused here rather than argued about.
108
+ * - `object-assign` -- `assignText` (emit-host-object.ts), which returns the
109
+ * target itself. Into a Function object (`assignIntoCallableText`) each
110
+ * source field is stored through `callableDynamicSet` after the conversion
111
+ * `objectValueConversions` cites for it, so each of those must keep its value
112
+ * in native storage. Into a known struct each field is read off the source's
113
+ * own slot and stored into the target's declared slot through the census's
114
+ * node for that pair (`setOwnText`; `objectAssignFieldPairsOf`). The
115
+ * dictionary and dynamic arms walk runtime key tables through the dynamic
116
+ * protocol, and a key with no declared slot is boxed into the target's
117
+ * sidecar; none of those is stated here.
118
+ */
119
+ export declare const hostTemplateFrameOf: (operation: CallOperation, conversions: Pick<ConversionCensus, "nodeById"> | undefined, deriver: RepresentationDeriver | null, classes: ReadonlyMap<DeclarationId, ClassLayout> | null) => boolean | undefined;
120
+ /**
121
+ * Every store `assignText`'s known-struct arm prints for these operands, as the
122
+ * pair of carriers `setOwnText` reconciles through the conversion census -- or
123
+ * `null` when the target or some source takes another arm, or when a source key
124
+ * has no declared slot on the target (the printer then boxes the value into the
125
+ * target's sidecar, or refuses).
126
+ *
127
+ * A source is copied as `assignOperandText` copies it: `null`/`undefined` copy
128
+ * nothing, an optional copies its payload, and a union copies whichever arm is
129
+ * live -- each arm `null`, `undefined` or a known shape.
130
+ */
131
+ export declare const objectAssignFieldPairsOf: (args: readonly IrOperand[], deriver: RepresentationDeriver, classes: ReadonlyMap<DeclarationId, ClassLayout> | null) => readonly {
132
+ readonly source: Representation;
133
+ readonly target: Representation;
134
+ }[] | null;
135
+ /**
136
+ * Mint the pairs `objectAssignFieldPairsOf` states before the reflection census
137
+ * asks for them. The printer mints each one while printing (`setOwnText`
138
+ * through `alignedValueText`), after that census has already asked `nodeById`
139
+ * and read a native slot copy as an open boundary. Publishing decides nothing:
140
+ * whether the frame closes remains each node's own capability.
141
+ */
142
+ export declare const publishObjectAssignFieldConversions: (args: readonly IrOperand[], deriver: RepresentationDeriver, classes: ReadonlyMap<DeclarationId, ClassLayout> | null, conversions: ConversionCensus) => void;
@@ -0,0 +1,386 @@
1
+ import { conversionNodeIdOf } from '../conversion/nodes.js';
2
+ import { transfersNativeStorage } from '../conversion/algebra.js';
3
+ import { isNativeCallableCarrier } from '../representation/callable-object.js';
4
+ import { isArrayConstantOf, typedArraySetSourceAccepted } from '../representation/host-templates.js';
5
+ import { abiOfCallee, constructAbiOfCallee } from '../projection/callee.js';
6
+ import { declaredFieldRepresentationOf, recordFieldsOfShape } from '../projection/fields.js';
7
+ import { abiKey, representationKey } from '../representation/model.js';
8
+ /**
9
+ * A fixed frame receives only its declared formals. Normalization publishes a
10
+ * rest parameter for bodies that observe `arguments`, so those frames retain
11
+ * every supplied argument. Argument evaluation lives in preceding IR and is
12
+ * never removed by selecting the received values.
13
+ */
14
+ export const receivableArguments = (abi, args) => abi.restFrom !== null ? args : args.slice(0, abi.parameters.length);
15
+ /** Inputs observable through this call's held convention, even before its
16
+ * implementation is known. Dynamic and spread frames retain every input. */
17
+ export const receivedCallArguments = (operation) => {
18
+ const abi = operation.argumentsAreSpread ? null : abiOfCallee(operation.callee.representation);
19
+ return abi === null ? operation.arguments : receivableArguments(abi, operation.arguments);
20
+ };
21
+ /**
22
+ * The frame a construction through a bare host constructor fills: the handle's
23
+ * own `[[Construct]]` convention when its overloads join into one, else the
24
+ * overload the checker selected at this site (`ConstructOperation.hostFrame`).
25
+ * `null` for any other callee, and for a construction whose new-target is not
26
+ * its own callee, which emission refuses.
27
+ *
28
+ * A `native-handle` states no convention `constructAbiOfCallee` can read, so
29
+ * without this a host construction published no default-slot conversion and
30
+ * `new Error(message)` -- `options` omitted -- read as an open frame.
31
+ */
32
+ export const hostConstructFrameOf = (operation) => {
33
+ const callee = operation.callee.representation;
34
+ if (callee.kind !== 'native-handle' || operation.newTarget.value !== operation.callee.value)
35
+ return null;
36
+ return callee.construct ?? operation.hostFrame ?? null;
37
+ };
38
+ /**
39
+ * Publish default-slot conversions before carrier closure and read-only
40
+ * reflection census, together with the sum selection a union receiver enters
41
+ * its convention through (`publishSumReceiverSelection`). A host construction
42
+ * publishes its omitted formals against `hostConstructFrameOf`.
43
+ */
44
+ export const publishOmittedArgumentConversions = (operation, conversions) => {
45
+ if (operation.kind === 'call' && operation.argumentsAreSpread)
46
+ return;
47
+ if (operation.kind === 'call')
48
+ publishSumReceiverSelection(operation, conversions);
49
+ if (operation.kind === 'construct' && operation.callee.representation.kind === 'tagged-union') {
50
+ // A sum invokes the selected arm's convention. Seal its existing native
51
+ // argument/result conversions before provenance and reflection consume
52
+ // them, rather than minting the first citation while printing the arm.
53
+ for (const arm of operation.callee.representation.arms) {
54
+ const abi = constructAbiOfCallee(arm.value);
55
+ if (abi === null || abi.receiver !== null || abi.restFrom !== null)
56
+ continue;
57
+ for (let index = 0; index < abi.parameters.length; index++)
58
+ conversions.nodeFor(operation.arguments[index]?.representation ?? { kind: 'undefined' }, abi.parameters[index].value);
59
+ conversions.nodeFor(abi.result, operation.result.representation);
60
+ }
61
+ return;
62
+ }
63
+ const abi = operation.kind === 'construct'
64
+ ? (hostConstructFrameOf(operation) ?? constructAbiOfCallee(operation.callee.representation))
65
+ : abiOfCallee(operation.callee.representation);
66
+ if (abi === null)
67
+ return;
68
+ for (let index = operation.arguments.length; index < abi.parameters.length; index++) {
69
+ if (abi.restFrom !== null && index >= abi.restFrom)
70
+ break;
71
+ conversions.nodeFor({ kind: 'undefined' }, abi.parameters[index].value);
72
+ }
73
+ };
74
+ /** The default-slot rule, unchanged: an omitted formal's edge under value identity. */
75
+ const nativeDefaultCapability = (capability) => capability?.kind === 'identity' ||
76
+ ((capability?.kind === 'atom' || capability?.kind === 'static' || capability?.kind === 'class-family') &&
77
+ capability.materializer.nativeFieldProtocol === 'unused');
78
+ /** Whether the census carries `source` into `target` under this proof. */
79
+ const carriedNatively = (source, target, proof, conversions) => {
80
+ if (representationKey(source) === representationKey(target))
81
+ return true;
82
+ const node = conversions?.nodeById(conversionNodeIdOf(source, target));
83
+ if (node === undefined || node === null || representationKey(node.source) !== representationKey(source))
84
+ return false;
85
+ if (representationKey(node.target) !== representationKey(target))
86
+ return false;
87
+ return proof === 'native-transfer' ? transfersNativeStorage(node.capability) : nativeDefaultCapability(node.capability);
88
+ };
89
+ export const nativeArgumentsMatch = (abi, args, conversions, match = 'value-identity') => {
90
+ const received = receivableArguments(abi, args);
91
+ const restFrom = abi.restFrom;
92
+ if (restFrom !== null) {
93
+ const slot = abi.parameters[restFrom]?.value;
94
+ if (slot === undefined || slot.kind !== 'array-object')
95
+ return false;
96
+ const element = representationKey(slot.element);
97
+ const rest = received.slice(restFrom);
98
+ // Either the caller hands over the trailing values for this frame to pack,
99
+ // or it hands over the packed array itself -- a spread already materialized
100
+ // into one `array-object` arrives in the slot's own carrier, and reading it
101
+ // as an element is what a lone trailing array would otherwise be mistaken
102
+ // for.
103
+ const carried = rest.length === 1 && representationKey(rest[0].representation) === representationKey(slot);
104
+ if (!carried && !rest.every((argument) => representationKey(argument.representation) === element))
105
+ return false;
106
+ }
107
+ else if (received.length > abi.parameters.length)
108
+ return false;
109
+ return abi.parameters.every((parameter, index) => {
110
+ if (restFrom !== null && index >= restFrom)
111
+ return true;
112
+ const argument = received[index];
113
+ // A supplied argument under value identity must BE the parameter's carrier;
114
+ // an omitted one has always gone through the census, since the default it
115
+ // receives is a conversion from `undefined` by construction.
116
+ if (argument !== undefined && match === 'value-identity')
117
+ return representationKey(argument.representation) === representationKey(parameter.value);
118
+ return carriedNatively(argument?.representation ?? { kind: 'undefined' }, parameter.value, match, conversions);
119
+ });
120
+ };
121
+ /** The carrier a callee's convention is stated on, through the wrappers that hold one. */
122
+ const unwrappedCalleeOf = (representation) => representation.kind === 'optional'
123
+ ? unwrappedCalleeOf(representation.payload)
124
+ : representation.kind === 'borrowed-ref'
125
+ ? unwrappedCalleeOf(representation.referent)
126
+ : representation;
127
+ /**
128
+ * A method read through a union of classes -- `shadowMaterial.dispose()` on a
129
+ * `MeshDepthMaterial | MeshDistanceMaterial` -- reaches a convention whose
130
+ * receiver is the classes' shared ancestor. Lowering leaves such a receiver in
131
+ * its union carrier: the printer either dispatches per arm (each arm an
132
+ * upcast of its own `Ref`) or selects the payload into the stated receiver
133
+ * through this census's node for the pair. The census node is minted there, at
134
+ * print time -- after the reflection census has already asked `nodeById` for
135
+ * it, found nothing, and read a native selection as an open call boundary that
136
+ * promoted every field of both classes.
137
+ *
138
+ * So the pair is published before that census, exactly as the native sum
139
+ * field reads in `call-dispatch.ts` publish theirs. Publishing decides
140
+ * nothing: whether the frame closes remains `carriedNatively`'s question over
141
+ * the node's own capability, and a node no printer asks for renders nothing.
142
+ * A template-rendered call spells its receiver from the template rather than
143
+ * through the frame, so it publishes no pair for one.
144
+ */
145
+ const publishSumReceiverSelection = (operation, conversions) => {
146
+ if (operation.objectValueConversions !== undefined || operation.fixedDataDefinition !== undefined)
147
+ return;
148
+ if (operation.intrinsicReflection !== undefined)
149
+ return;
150
+ const receiver = operation.receiver;
151
+ if (receiver === null || receiver.representation.kind !== 'tagged-union')
152
+ return;
153
+ const abi = abiOfCallee(unwrappedCalleeOf(operation.callee.representation));
154
+ if (abi === null || abi.receiver === null || representationKey(receiver.representation) === representationKey(abi.receiver))
155
+ return;
156
+ conversions.nodeFor(receiver.representation, abi.receiver);
157
+ };
158
+ /** Publish a closed body's exact frame, including arguments it cannot observe. */
159
+ export const closedCallFrameOf = (operation, identity, abiOf, observed, conversions, match = 'value-identity') => {
160
+ if (identity === undefined || operation.argumentsAreSpread)
161
+ return undefined;
162
+ const ids = identity.kind === 'exact' ? [identity.functionId] : identity.functionIds;
163
+ if (identity.nativeEntryAbi !== undefined && ids.length > 0 && ids.every((id) => abiOf(id) !== null))
164
+ return nativeCallFrameOf(operation, identity.nativeEntryAbi, observed, conversions, match);
165
+ const abi = ids[0] === undefined ? null : abiOf(ids[0]);
166
+ if (abi === null ||
167
+ !ids.every((id) => {
168
+ const candidate = abiOf(id);
169
+ return candidate !== null && abiKey(candidate) === abiKey(abi);
170
+ }))
171
+ return undefined;
172
+ return nativeCallFrameOf(operation, abi, observed, conversions, match);
173
+ };
174
+ /** Frame selection shared by direct bodies and conversion-census native adapters. */
175
+ export const nativeCallFrameOf = (operation, abi, observed, conversions, match = 'value-identity') => {
176
+ // A callee held as `optional`/`borrowed-ref` states the same convention its
177
+ // payload does -- `abiOfCallee` answers only for the bare carrier, so the
178
+ // wrapper alone used to read as "no convention at all" while every caller
179
+ // that reaches here has already unwrapped it to find this `abi`.
180
+ const heldAbi = abiOfCallee(unwrappedCalleeOf(operation.callee.representation));
181
+ if (operation.argumentsAreSpread || heldAbi === null || abiKey(heldAbi) !== abiKey(abi))
182
+ return undefined;
183
+ const received = receivableArguments(abi, operation.arguments);
184
+ // The receiver is an operand of this frame like any other, and the same
185
+ // proof applies to it: a `Cat | Dog` narrowed to the `Animal` handle its
186
+ // convention states crosses no dynamic boundary, and refusing it on carrier
187
+ // spelling alone was the second-largest refusal this census reported.
188
+ if (!nativeArgumentsMatch(abi, operation.arguments, conversions, match) ||
189
+ (abi.receiver === null
190
+ ? operation.receiver !== null
191
+ : operation.receiver === null || !carriedNatively(operation.receiver.representation, abi.receiver, match, conversions)))
192
+ return undefined;
193
+ const result = operation.result;
194
+ const disposition = result === null || !observed.has(result.id)
195
+ ? 'ignored'
196
+ : representationKey(result.representation) === representationKey(abi.result)
197
+ ? 'exact'
198
+ : // A void convention returns nothing, and JavaScript reads nothing as
199
+ // `undefined`. The cell that receives it carries `undefined` when the
200
+ // program typed the call, and `dynamic` when it typed it `any` -- the
201
+ // same value either way, so the same disposition describes both. Only
202
+ // the `undefined` spelling was admitted, which left every `any`-typed
203
+ // call of a void body reading as an open boundary and promoting its
204
+ // receiver and every argument.
205
+ abi.result.kind === 'void' && (result.representation.kind === 'undefined' || result.representation.kind === 'dynamic')
206
+ ? 'undefined'
207
+ : null;
208
+ if (disposition === null)
209
+ return undefined;
210
+ return { abi, receivedArguments: received.length, result: disposition };
211
+ };
212
+ /**
213
+ * The frame of a call the printer spells from a HOST TEMPLATE rather than
214
+ * through the callee's declared convention (`CallOperation.hostTemplate`).
215
+ *
216
+ * `true`: the template this call is printed by uses every operand in place, in
217
+ * its own carrier, and puts nothing in a `gea::Value`. `false`: that cannot be
218
+ * stated for these operands, and the call stays the open boundary it was. The
219
+ * declared convention is NOT asked instead, because the printer never fills
220
+ * it: `Object.assign`'s `(target: T, source: U) => T & U` matches a dictionary
221
+ * source exactly while `assignText` walks that dictionary's runtime key table.
222
+ * `undefined`: the call records no template -- or, for `Array.isArray` only,
223
+ * its argument reaches the template's `gea::Value` overload, where the
224
+ * declared `(arg: any)` convention IS what is printed and keeps deciding.
225
+ *
226
+ * Each arm states only what its template prints:
227
+ *
228
+ * - `array-is-array` -- `isArrayText` (emit-host-invoke.ts) answers from the
229
+ * argument's own carrier: a constant by kind, `has_value()` for an optional,
230
+ * the discriminant for a union. Nothing is converted and nothing is read
231
+ * through the carrier, and the C++ `bool` is the result, assigned as it is
232
+ * (`hostResultText`).
233
+ * - `typed-array-set` -- `typedArrayCallText` (emit-buffers.ts):
234
+ * `setFrom(*source, offset)` for a typed-array source, `setFromArray(source,
235
+ * offset)` for an array of numbers, an `is<i>()`/`get<i>()` chain over a
236
+ * union of only those, and the offset operand's own text as the runtime's
237
+ * `double`. The expression's value is `gea::Undefined{}`. A third argument is
238
+ * never read; it is refused here rather than argued about.
239
+ * - `object-assign` -- `assignText` (emit-host-object.ts), which returns the
240
+ * target itself. Into a Function object (`assignIntoCallableText`) each
241
+ * source field is stored through `callableDynamicSet` after the conversion
242
+ * `objectValueConversions` cites for it, so each of those must keep its value
243
+ * in native storage. Into a known struct each field is read off the source's
244
+ * own slot and stored into the target's declared slot through the census's
245
+ * node for that pair (`setOwnText`; `objectAssignFieldPairsOf`). The
246
+ * dictionary and dynamic arms walk runtime key tables through the dynamic
247
+ * protocol, and a key with no declared slot is boxed into the target's
248
+ * sidecar; none of those is stated here.
249
+ */
250
+ export const hostTemplateFrameOf = (operation, conversions, deriver, classes) => {
251
+ const template = operation.hostTemplate;
252
+ if (template === undefined)
253
+ return undefined;
254
+ const result = operation.result?.representation;
255
+ if (template === 'array-is-array') {
256
+ const argument = operation.arguments[0];
257
+ return !operation.argumentsAreSpread &&
258
+ operation.arguments.length === 1 &&
259
+ argument !== undefined &&
260
+ isArrayAnsweredByCarrier(argument.representation) &&
261
+ (result === undefined || (result.kind === 'scalar' && result.domain === 'boolean'))
262
+ ? true
263
+ : undefined;
264
+ }
265
+ if (operation.argumentsAreSpread)
266
+ return false;
267
+ if (template === 'typed-array-set') {
268
+ const [source, offset] = operation.arguments;
269
+ return (source !== undefined &&
270
+ operation.arguments.length <= 2 &&
271
+ typedArraySetSourceAccepted(source.representation) &&
272
+ (offset === undefined || (offset.representation.kind === 'scalar' && offset.representation.domain === 'number')) &&
273
+ (result === undefined || result.kind === 'undefined' || result.kind === 'void'));
274
+ }
275
+ const target = operation.arguments[0]?.representation;
276
+ if (target === undefined || operation.arguments.length < 2 || deriver === null)
277
+ return false;
278
+ if (result !== undefined && representationKey(result) !== representationKey(target))
279
+ return false;
280
+ if (isNativeCallableCarrier(target.kind))
281
+ return callablePropertiesStayNative(operation, conversions, deriver);
282
+ const pairs = objectAssignFieldPairsOf(operation.arguments, deriver, classes);
283
+ return pairs !== null && pairs.every((pair) => carriedNatively(pair.source, pair.target, 'native-transfer', conversions));
284
+ };
285
+ /**
286
+ * Whether `isArrayText` answers this carrier without its `gea::Value` overload,
287
+ * through the optional and union it also answers. The per-kind answer is the
288
+ * printer's own table (`isArrayConstantOf`).
289
+ */
290
+ const isArrayAnsweredByCarrier = (carrier) => carrier.kind === 'optional'
291
+ ? isArrayAnsweredByCarrier(carrier.payload)
292
+ : carrier.kind === 'tagged-union'
293
+ ? carrier.arms.length > 0 && carrier.arms.every((arm) => isArrayAnsweredByCarrier(arm.value))
294
+ : isArrayConstantOf(carrier.kind) !== null;
295
+ /**
296
+ * The fields of a carrier `objectViewFrom` gives a known view whose own keys
297
+ * are exactly those fields: a record, a class, and a record-shaped
298
+ * `native-record-ref` naming no host struct. A `record-with-index` is left out:
299
+ * its index half is not among the fields the copy walks.
300
+ */
301
+ const knownObjectFieldsOf = (carrier, deriver) => {
302
+ if (carrier.kind === 'record')
303
+ return carrier.fields;
304
+ if (carrier.kind === 'class-ref' || (carrier.kind === 'native-record-ref' && carrier.native === null))
305
+ return recordFieldsOfShape(deriver, carrier.shapeId);
306
+ return null;
307
+ };
308
+ /**
309
+ * Every store `assignText`'s known-struct arm prints for these operands, as the
310
+ * pair of carriers `setOwnText` reconciles through the conversion census -- or
311
+ * `null` when the target or some source takes another arm, or when a source key
312
+ * has no declared slot on the target (the printer then boxes the value into the
313
+ * target's sidecar, or refuses).
314
+ *
315
+ * A source is copied as `assignOperandText` copies it: `null`/`undefined` copy
316
+ * nothing, an optional copies its payload, and a union copies whichever arm is
317
+ * live -- each arm `null`, `undefined` or a known shape.
318
+ */
319
+ export const objectAssignFieldPairsOf = (args, deriver, classes) => {
320
+ const target = args[0]?.representation;
321
+ if (target === undefined || args.length < 2 || knownObjectFieldsOf(target, deriver) === null)
322
+ return null;
323
+ const pairs = [];
324
+ const copied = (source) => {
325
+ const fields = knownObjectFieldsOf(source, deriver);
326
+ if (fields === null)
327
+ return false;
328
+ for (const field of fields) {
329
+ const held = declaredFieldRepresentationOf(deriver, target, field.key, classes);
330
+ if (held === null)
331
+ return false;
332
+ pairs.push({ source: field.value, target: held });
333
+ }
334
+ return true;
335
+ };
336
+ const absent = (source) => source.kind === 'null' || source.kind === 'undefined';
337
+ for (const argument of args.slice(1)) {
338
+ const source = argument.representation;
339
+ const copies = absent(source) ||
340
+ (source.kind === 'optional'
341
+ ? copied(source.payload)
342
+ : source.kind === 'tagged-union'
343
+ ? source.arms.every((arm) => absent(arm.value) || copied(arm.value))
344
+ : copied(source));
345
+ if (!copies)
346
+ return null;
347
+ }
348
+ return pairs;
349
+ };
350
+ /**
351
+ * `assignIntoCallableText`'s stores: every field of every source, each through
352
+ * the conversion `objectValueConversions` cites for it. The sources must be the
353
+ * known shapes that arm accepts, and the citations exactly theirs.
354
+ */
355
+ const callablePropertiesStayNative = (operation, conversions, deriver) => {
356
+ const cited = operation.objectValueConversions ?? [];
357
+ let stored = 0;
358
+ for (let index = 1; index < operation.arguments.length; index++) {
359
+ const argument = operation.arguments[index].representation;
360
+ const fields = knownObjectFieldsOf(argument.kind === 'optional' ? argument.payload : argument, deriver);
361
+ if (fields === null)
362
+ return false;
363
+ for (const field of fields) {
364
+ stored++;
365
+ const citation = cited.find((entry) => entry.argument === index && entry.field === field.key);
366
+ if (citation === undefined || representationKey(citation.source) !== representationKey(field.value))
367
+ return false;
368
+ const node = conversions?.nodeById(citation.conversion);
369
+ if (node === undefined || node === null || !transfersNativeStorage(node.capability))
370
+ return false;
371
+ }
372
+ }
373
+ return cited.length === stored;
374
+ };
375
+ /**
376
+ * Mint the pairs `objectAssignFieldPairsOf` states before the reflection census
377
+ * asks for them. The printer mints each one while printing (`setOwnText`
378
+ * through `alignedValueText`), after that census has already asked `nodeById`
379
+ * and read a native slot copy as an open boundary. Publishing decides nothing:
380
+ * whether the frame closes remains each node's own capability.
381
+ */
382
+ export const publishObjectAssignFieldConversions = (args, deriver, classes, conversions) => {
383
+ for (const pair of objectAssignFieldPairsOf(args, deriver, classes) ?? [])
384
+ if (representationKey(pair.source) !== representationKey(pair.target))
385
+ conversions.nodeFor(pair.source, pair.target);
386
+ };
@@ -0,0 +1,27 @@
1
+ import type { DeclarationId, IrValueId, PhysicalBodyId } from '../identity/ids.js';
2
+ import type { RepresentationDeriver } from '../representation/derive.js';
3
+ import type { BindingPlacement } from '../projection/bindings.js';
4
+ import { type ClassLayout } from '../projection/classes.js';
5
+ import type { ConversionCensus } from '../conversion/nodes.js';
6
+ import type { CallCalleeIdentity, IrBody, IrOperation } from './model.js';
7
+ export interface NativeCallableFlow {
8
+ readonly callables: ReadonlyMap<IrValueId, CallCalleeIdentity>;
9
+ /** Includes every implicit or unmodeled entry; only closed, uninvoked allocations are absent. */
10
+ readonly enteredBodies: ReadonlySet<PhysicalBodyId>;
11
+ }
12
+ /**
13
+ * Flow-insensitive native field provenance. A field write contributes
14
+ * every implementation it can store; it never establishes an immutable-field
15
+ * fact. Unknown calls and publications poison the affected heap, including
16
+ * functions written there in a later solver round. Calls are resolved from
17
+ * allocator identities before treating still-unresolved entries as external.
18
+ *
19
+ * This authority does not consume reflection demand: it proves the origins
20
+ * which that demand needs. Unsupported transports fail closed. In particular,
21
+ * an arbitrary matching callable signature is never an implementation source.
22
+ */
23
+ export declare const nativeCallableFlowOf: (bodies: readonly IrBody[], placements: ReadonlyMap<DeclarationId, BindingPlacement>, classes: ReadonlyMap<DeclarationId, ClassLayout>, conversions?: Pick<ConversionCensus, "nodeById"> & Partial<Pick<ConversionCensus, "nodeFor">>, trace?: (read: Extract<IrOperation, {
24
+ kind: "get";
25
+ }>, reason: string) => void, deriver?: Pick<RepresentationDeriver, "layoutOf"> | null) => NativeCallableFlow;
26
+ /** Compatibility view of the same execution/escape census; no second analysis policy. */
27
+ export declare const closedClassFieldCallablesOf: (...args: Parameters<typeof nativeCallableFlowOf>) => ReadonlyMap<IrValueId, CallCalleeIdentity>;