@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,738 @@
1
+ import type { NativeSelectionHelper } from './native-selection-helpers.js';
2
+ import type { CallableAbi, Representation, TaggedUnionArm } from '../../representation/model.js';
3
+ import type { IrOperand, MergeLiveArmRebuildOperation } from '../../ir/model.js';
4
+ import type { DeclarationId, FunctionId } from '../../identity/ids.js';
5
+ import type { ConversionNode } from '../../conversion/algebra.js';
6
+ import type { ConversionCensus } from '../../conversion/nodes.js';
7
+ import type { RecordLayoutPolicy } from '../../representation/policies.js';
8
+ import type { ClassLayout } from '../../projection/classes.js';
9
+ import type { CaptureIndex } from './emit-context.js';
10
+ import { type EmitContext } from './emit-context.js';
11
+ /**
12
+ * Whether the C++ backend has a concrete reconciliation recipe for a promise
13
+ * payload. Promise-to-promise conversion is state adoption plus this payload
14
+ * conversion, so preflight and emission must ask the same authority rather
15
+ * than maintaining a second, inevitably drifting list of payload pairs.
16
+ */
17
+ export declare const promisePayloadConvertible: (source: Representation, target: Representation) => boolean;
18
+ /**
19
+ * A base-class carrier narrowed to a union of descendant classes.
20
+ *
21
+ * The physical carrier intentionally remains one `Ref<Base>`: allocation
22
+ * identity supplies the target union's discriminant, and checked class-family
23
+ * downcasts preserve the same native object. This is shared by cell and field
24
+ * reads because both are projections out of wider storage. An optional target
25
+ * preserves the source's absence around the projected descendant union.
26
+ */
27
+ export declare const classFamilyLoadText: (ctx: ConversionSite, held: Representation, read: Representation, text: string) => string | null;
28
+ /**
29
+ * The load a narrowing licenses, or `null` when the two carriers are the same
30
+ * and there is nothing to load.
31
+ *
32
+ * Returning `null` for "no narrowing needed" and throwing for "no narrowing
33
+ * possible" keeps the two apart: the first is the ordinary case, the second is
34
+ * a program this compiler already knows is wrong.
35
+ */
36
+ export declare const narrowedLoadText: (held: Representation, read: Representation, text: string) => string | null;
37
+ /**
38
+ * The store a widening needs, or `null` when the value can be assigned as it
39
+ * stands.
40
+ *
41
+ * This is the mirror of `narrowedLoadText` and it exists for the same reason:
42
+ * `const x: string | number = 3` puts a `double` into a `TaggedUnion`, and the
43
+ * language really does widen there -- the union is the declared carrier and the
44
+ * initializer is one arm of it.
45
+ *
46
+ * `gea::Optional<T>` needs nothing: it declares a converting assignment from
47
+ * `T`, so a present value assigns straight in and the presence flag follows.
48
+ * `gea::TaggedUnion` deliberately declares no such thing, because there is no
49
+ * one answer -- two arms can share a C++ type, and an implicit conversion would
50
+ * have to pick one silently. `ofArm<Index>` is where that choice is stated, and
51
+ * the index is the arm's position in the checker's own order, the same order
52
+ * the load reads back.
53
+ *
54
+ * The first arm carrying the written carrier is the one chosen. When several
55
+ * do, they are indistinguishable at runtime by construction -- the load
56
+ * dispatches over exactly that set and reads the same C++ type from any of them
57
+ * -- so the choice is not observable. What would be observable is choosing an
58
+ * arm that does *not* carry it, which is what returning `null` prevents.
59
+ */
60
+ /**
61
+ * The `gea::Value::Tag` a concrete representation boxes under when it is
62
+ * written into a `dynamic` cell -- the widening direction `conversion/
63
+ * derive.ts`'s narrowing-only algebra has no answer for (see citations.md
64
+ * finding 1). `null` for a carrier this compiler does not yet box (a
65
+ * container, a proxy, an existing `dynamic` itself, which the
66
+ * `representationKey` equality check above already short-circuits): an
67
+ * omission to extend deliberately later, not to guess at here.
68
+ *
69
+ * Exported so `targets/cpp/conversions.ts`'s `widening` registry entry can
70
+ * ask the identical question when the conversion graph -- not just a
71
+ * `convert` this function already renders -- needs to know whether boxing a
72
+ * given carrier is a real, installed capability. One answer, asked from both
73
+ * the preflight authority and the emission authority, rather than a second
74
+ * table naming the same tags that could drift from this one.
75
+ */
76
+ export declare const dynamicTagFor: (representation: Representation) => string | null;
77
+ /**
78
+ * One value, boxed.
79
+ *
80
+ * A CALLABLE with a rest parameter takes the ABI-stating form: which formal
81
+ * absorbs the trailing arguments is invisible in the C++ type -- `(a, xs: T[])`
82
+ * and `(a, ...xs: T[])` are the same `CallableObject` -- so a dynamic call
83
+ * through the box would hand the first trailing argument to a slot expecting
84
+ * the packed array (10.2.11 binds a rest parameter to an Array of ALL the
85
+ * remaining ones). The emitter is the only reader of the ABI, so it states the
86
+ * position here and `gea::Value::boxCallable` records the matching thunk.
87
+ * hono's `this[method] = (args1, ...args) => ...` is every `app.get(path,
88
+ * handler)` in the program.
89
+ */
90
+ export declare const boxedText: (representation: Representation, tag: string, text: string) => string;
91
+ /**
92
+ * How a native carrier boxes into a dynamic cell, rendered over an arbitrary
93
+ * text naming the storage.
94
+ *
95
+ * The dynamic reason is stated HERE rather than at each caller because it is
96
+ * not a choice: `widenedStoreText` records below that no `DynamicReason` is
97
+ * consulted on this edge -- every boundary a reason names admits any concrete
98
+ * value the checker lets reach it -- so a caller asking "box this carrier"
99
+ * asks this one question and must not be free to spell a different reason for
100
+ * it.
101
+ *
102
+ * `storage` is a TEXT, not a member. The recipe is a function of the
103
+ * representation and that text alone: no field key, no struct name, no
104
+ * surrounding statement. So two fields spelling the same carrier spell the
105
+ * same recipe, and the native field table's read hook can render an optional
106
+ * or union carrier's arms ONCE over a slot its key chain selects into
107
+ * (`records.ts`) instead of once per field. `null` is the renderer's own
108
+ * answer that this carrier needs no widening at all.
109
+ */
110
+ export declare const dynamicCarrierBoxText: (carrier: Representation, storage: string) => string | null;
111
+ /**
112
+ * A `dynamic` value an async body returns, settled into its `Promise<V>`
113
+ * result. The value may itself be a promise, which the return ADOPTS rather
114
+ * than fulfils with (ECMA-262 27.2.1.3.2), so the choice is made at run time
115
+ * by `gea::detail::promiseFromDynamic` -- the store-direction recipe below.
116
+ */
117
+ export declare const dynamicPromiseAdoptionText: (result: Extract<Representation, {
118
+ kind: "promise";
119
+ }>, text: string) => string | null;
120
+ export declare const widenedStoreText: (held: Representation, written: Representation, text: string) => string | null;
121
+ /**
122
+ * Rebuilding a tagged union at a different arm ordering than the one it was
123
+ * built with.
124
+ *
125
+ * Two declared unions with the same member set do not have to agree on tag
126
+ * order -- `boolean | number` and `number | boolean` are two unrelated C++
127
+ * template instantiations (`gea::TaggedUnion<bool, double>` vs
128
+ * `gea::TaggedUnion<double, bool>`), which is exactly what a control-flow merge
129
+ * produces when its two branches arrive through independently-declared unions.
130
+ * Neither `narrowedLoadText` nor `widenedStoreText` covers it: the target is
131
+ * not one arm of the source, and the source is not one arm of the target. What
132
+ * it needs is the same discriminant `narrowedLoadText` reads, dispatched into
133
+ * the same constructor `widenedStoreText` calls -- read the live arm by
134
+ * whichever tag the source actually holds, and rebuild it at the target's tag
135
+ * for that same value type. `null` when some source arm has no same-typed home
136
+ * in the target: that is a real hole in the target's arm set, not a spelling
137
+ * gap, and inventing a fallback there would silently drop a live value.
138
+ */
139
+ /**
140
+ * A sum converted ARM BY ARM into one payload, or `null` when an arm has no
141
+ * way there.
142
+ *
143
+ * tsc's `visitEachChild<T>` returns `fn === undefined ? node : fn(node, ...)`
144
+ * where `fn` is a `VisitEachChildFunction<any>`: the conditional merges `T`
145
+ * with a declared `any` into `tagged-union(native-record-ref | dynamic)`, and
146
+ * the function returns `T | undefined`. The typed arm IS the payload; the
147
+ * dynamic arm is the checked unbox every read of a declared-`any` value into
148
+ * a typed cell already performs (`unboxedLoadText`, which aborts naming the
149
+ * carrier on a mismatch). So the load dispatches on the live arm, exactly as
150
+ * `recastedUnionText` does for a sum whose home is another sum. Only a sum
151
+ * WITH a dynamic arm is answered: without one, a same-keyed arm beside
152
+ * others is a narrowing (`narrowedLoadText`), which selects an arm and
153
+ * proves nothing about the rest, and this must not stand in for it.
154
+ * `targets/cpp/conversions.ts`'s `recasting` admits the pair on the same
155
+ * predicate -- through this function -- so the admission and the render
156
+ * cannot drift.
157
+ */
158
+ export declare const sumIntoPayloadText: (source: Extract<Representation, {
159
+ kind: "tagged-union";
160
+ }>, payload: Representation, text: string, wrap: (armText: string) => string) => string | null;
161
+ export declare const recastedUnionText: (source: Extract<Representation, {
162
+ kind: "tagged-union";
163
+ }>, target: Extract<Representation, {
164
+ kind: "tagged-union";
165
+ }>, text: string, viaLayout?: (source: Representation, target: Representation, text: string) => string | null) => string | null;
166
+ export interface RecastUnionHome {
167
+ readonly index: number;
168
+ readonly text: string;
169
+ /** `text` is already a complete value of the target union (a nested union arm homed as a whole), not an arm payload to wrap in `ofArm`. */
170
+ readonly whole?: true;
171
+ }
172
+ /** The text an arm of a multi-arm source is read through, bound by `recastedUnionFromHomes`; a single-arm source reads the value itself. */
173
+ export declare const recastUnionArmText: (source: Extract<Representation, {
174
+ kind: "tagged-union";
175
+ }>, text: string, index: number) => string;
176
+ /**
177
+ * The dispatch over a sum's arms, given each arm's home in the target: the
178
+ * discriminant read and the `ofArm` rebuild are one answer, whoever decided
179
+ * the homes -- the chain probe above or a plan the census owns
180
+ * (`conversion/record-view.ts`).
181
+ */
182
+ export declare const recastedUnionFromHomes: (source: Extract<Representation, {
183
+ kind: "tagged-union";
184
+ }>, target: Extract<Representation, {
185
+ kind: "tagged-union";
186
+ }>, text: string, homes: readonly RecastUnionHome[]) => string | null;
187
+ /** Two array carriers of one element and ownership whose only difference is the extension an interface adds -- one C++ type. */
188
+ export declare const sameArrayUpToExtension: (left: Representation, right: Representation) => boolean;
189
+ export declare const recordsRecastable: (source: Representation, target: Representation) => boolean;
190
+ /**
191
+ * Whether an admitted record recast moves any field across the dynamic
192
+ * boundary: boxes a native field into a `dynamic` destination (the
193
+ * `to.kind === 'dynamic'` admission of `recastableFieldValue`) or unboxes a
194
+ * `dynamic` source field into a native one -- through an optional's payload,
195
+ * a nested record, or a container's element.
196
+ *
197
+ * `targets/cpp/conversions.ts` states `nativeFieldProtocol: 'unused'` for a
198
+ * record recast, which `ir/reflection-demand.ts` reads as "this copy asks no
199
+ * dynamic field table, so the fields it copies keep their sealed keys-only
200
+ * protocol". That is true of a recast that only copies native storage. A
201
+ * recast that boxes a field hands the boxed payload to every later dynamic
202
+ * read, and those reads DO go through the payload's field protocol -- so the
203
+ * claim must not be made for it, or the boxed child is emitted without the
204
+ * protocol the box needs (`reflection-demand.test.ts`, "a boxed destination
205
+ * still exposes its payload").
206
+ */
207
+ export declare const recordRecastCrossesDynamic: (source: Representation, target: Representation) => boolean;
208
+ /**
209
+ * A record recast into a dictionary, one level out from `recordsRecastable`
210
+ * above.
211
+ *
212
+ * A `record`'s field set is CLOSED and known at compile time; a `dictionary`'s
213
+ * is open and string/number-keyed. Going from the closed shape to the open one
214
+ * loses no information -- every field the record has, the dictionary can hold
215
+ * -- so the direction is always sound, unlike the reverse (`derive.ts`'s own
216
+ * `dictionary` case: "Product needs a complete frozen field list", never
217
+ * derivable from an open one). Concretely this is `return {}` reaching a
218
+ * function whose declared result is `Record<string, V>`: TypeScript types the
219
+ * empty literal as the record with zero fields it is, not as the dictionary
220
+ * its ABI slot wants, and the two carriers stay genuinely different even
221
+ * though the empty case rebuilds to zero inserts.
222
+ *
223
+ * Every field's own value must have an installed conversion into the
224
+ * dictionary's declared value carrier. This is the same store each field
225
+ * would perform if the source literal had been contextualized as the index
226
+ * signature in the first place: a scalar into a declared `any` slot boxes at
227
+ * that explicit dynamic boundary, and a typed slot keeps its ordinary native
228
+ * conversion. A field with no such conversion refuses the whole recast before
229
+ * any output is rendered.
230
+ */
231
+ export declare const recordCastableToDictionary: (source: Extract<Representation, {
232
+ kind: "record";
233
+ }>, target: Extract<Representation, {
234
+ kind: "dictionary";
235
+ }>) => boolean;
236
+ /**
237
+ * An open dictionary recast into another open dictionary over the same key
238
+ * domain whose VALUES it widens into -- `Record<string, string>` reaching a
239
+ * slot declared `OutgoingHttpHeaders` (`{ [name: string]: string | number |
240
+ * boolean | readonly string[] | undefined }`). TypeScript's `||` typing
241
+ * subtype-reduces the two into the wider one, so `@hono/node-server`'s `get
242
+ * headers()` -- `cache[2] || { 'content-type': defaultContentType }` where
243
+ * the slot is `Record<string, string> | [string, string][] |
244
+ * OutgoingHttpHeaders | undefined` -- publishes ONLY the wider dictionary as
245
+ * the merge's arm, and both the literal and the slot's own string-dictionary
246
+ * arm have to reach it. Nothing between the two carriers is a view: a
247
+ * `gea::Dictionary<std::string>` and a `gea::Dictionary<gea::Optional<...>>`
248
+ * are two template instantiations.
249
+ *
250
+ * One level out from `recordCastableToDictionary` above and admitted on the
251
+ * same terms: every value the source holds converts into the target's value
252
+ * carrier by the store it would have performed had the entry been written
253
+ * against the wider index signature in the first place, and the rebuild is a
254
+ * fresh table -- the same fresh table the record pour builds, with the same
255
+ * consequence, that a program which keeps writing the SOURCE afterwards and
256
+ * reads the widened copy does not see the write. The record pour already
257
+ * stands on that ground for the identical pair one shape narrower; this does
258
+ * not extend it further.
259
+ *
260
+ * String keys only. `gea::NumericDictionary` and `gea::SymbolDictionary` are
261
+ * different containers with their own iteration, and nothing has asked for
262
+ * them; a pair over either refuses by name rather than guessing a spelling.
263
+ */
264
+ export declare const dictionaryCastableToDictionary: (source: Extract<Representation, {
265
+ kind: "dictionary";
266
+ }>, target: Extract<Representation, {
267
+ kind: "dictionary";
268
+ }>) => boolean;
269
+ /**
270
+ * The text a `convert` renders to, or `null` when nothing installed performs it.
271
+ *
272
+ * A convert is a carrier change the graph asked for by name -- a merge that
273
+ * keeps one side, an optional chain's absent arm -- so unlike a narrowing read
274
+ * it may widen, and unlike a widening store it may be handed an absence rather
275
+ * than a payload.
276
+ *
277
+ * The absence cases are not spelled here. They used to be, and that private
278
+ * copy was the defect: `widenedStoreText` -- which every ordinary store site
279
+ * asks, and which this function's own tail already delegates to -- carried no
280
+ * absence rule, so a `null` reaching a binding, a field or a return came out
281
+ * unconverted while the same `null` reaching an explicit `convert` came out
282
+ * right. One question, two answers, and only the quieter one was wrong. The
283
+ * rule now lives once, on the store side, and this function reaches it through
284
+ * the same tail it already used for every other widening.
285
+ */
286
+ /**
287
+ * The calling convention of a carrier the backend spells
288
+ * `gea::CallableObject<...>`, or `null` for anything else.
289
+ *
290
+ * The constructor carriers are deliberately absent even though they also state
291
+ * one convention: they spell `gea::ConstructorObject<...>`, which declares no
292
+ * converting constructor, so the rule below does not hold for them.
293
+ * `function-and-constructor` is absent for a different reason -- it states two
294
+ * conventions, and picking one here would answer a question the value does not.
295
+ */
296
+ export declare const callableObjectAbi: (representation: Representation) => CallableAbi | null;
297
+ /**
298
+ * An object the program asserts (`env as unknown as Bindings`) or narrows
299
+ * (`body instanceof Uint8Array` over a declared `string | ReadableStream`)
300
+ * into a union none of whose arms it can become, even as a structural view. The
301
+ * assertion went through `unknown`, so it is carried as that: boxed, then
302
+ * read back out with the exact-type check every box read makes, which aborts
303
+ * by name when the value is not what the program claimed rather than
304
+ * inventing a layout. The last resort after `structuralRecordViewText`, and
305
+ * asked only there and in the census's matching fallback.
306
+ */
307
+ export declare const boxedAssertionText: (source: Representation, target: Representation, text: string) => string | null;
308
+ /** Whether `source` reaches `target` through a result adapter -- see `resultAdapterOf`. Exported so `conversions.ts` asks the identical question the render below answers. */
309
+ export declare const adaptsResultIntoTarget: (source: Representation, target: Representation) => boolean;
310
+ /** The same adapter selection used by the printer publishes its transport facts to the conversion census. */
311
+ export declare const resultAdapterTransportOf: (source: Representation, target: Representation) => {
312
+ readonly nativeConventions: {
313
+ readonly from: CallableAbi;
314
+ readonly to: CallableAbi;
315
+ } | null;
316
+ } | null;
317
+ /** The adapter itself, or `null` for a pair that needs none -- see `resultAdapterOf`. */
318
+ export declare const resultAdaptedCallableText: (source: Representation, target: Representation, text: string) => string | null;
319
+ /**
320
+ * A callable filling a slot that declares MORE parameters than it does, the
321
+ * extra ones landing after every one the source itself names./**
322
+ * A callable filling a slot that declares MORE parameters than it does, the
323
+ * extra ones landing after every one the source itself names.
324
+ *
325
+ * ECMA-262 does not bind the extra arguments, so `() => void` really is a
326
+ * `(time: number) => void` and TypeScript accepts it everywhere, and the same
327
+ * is true one prefix over: hono's `Hono.getPath` merges two
328
+ * `(request: Request) => string` values into a field declared
329
+ * `(request: Request, options?: {env?}) => string` -- one shared leading
330
+ * parameter, one trailing parameter neither physical function looks at.
331
+ * `gea::CallableObject`'s own converting constructor (gea_runtime.h) performs
332
+ * both shapes, so the value converts by being written where the wider one is
333
+ * expected and needs no text of its own.
334
+ *
335
+ * The source's own parameters must be a TYPE-MATCHING PREFIX of the target's,
336
+ * not merely a shorter count: converting an arbitrary prefix without proving
337
+ * each shared position's type matches would let a wrong guess pass a value
338
+ * into a slot expecting something else, which is what the runtime
339
+ * constructor's own `IsTypePrefix` proves at compile time rather than
340
+ * assumes, and this predicate re-asks the identical question so the two
341
+ * cannot disagree about which pairs the constructor actually accepts. Every
342
+ * position through the source's own last one has to agree, not only the
343
+ * first -- `(a: string) => void` is not a sound stand-in for
344
+ * `(a: string, b: number, c: string) => void` merely because position 0
345
+ * matches; every position the source declares has to. The result and the
346
+ * receiver must still agree exactly -- neither is dropped by a call, so a
347
+ * difference in either is a real mismatch, not a binding the language elides.
348
+ */
349
+ /**
350
+ * A method value -- its receiver first in its physical convention -- filling
351
+ * a slot that declares the same convention WITHOUT one: `gea_runtime.h`'s
352
+ * `CallableObject::bindReceiver`, which packs the receiver the property read
353
+ * went through in with the value. Everything but the receiver has to agree
354
+ * exactly, in the C++ spelling the runtime's own signature matching sees
355
+ * (`cppAbiType`, the one authority on that spelling), so the adapter's
356
+ * `Result(Receiver, Arguments...)` is the source's own type and nothing is
357
+ * coerced on the way through.
358
+ *
359
+ * Only the SHAPE is decided here; whether the pair can actually be rendered
360
+ * -- the read's receiver has to be recoverable at the site, and the body must
361
+ * never read `this` -- is `emit-callable.ts`'s `receiverBoundCallableText`'s
362
+ * question, a fact of the emitter's context and not of the two carriers.
363
+ */
364
+ /**
365
+ * A `this`-TYPED function value, stored in a field and read through the object
366
+ * whose `this` it names: `gea_runtime.h`'s `CallableObject::bindReceiver`
367
+ * again, but reached from a fact about the two DECLARATIONS rather than from a
368
+ * method body.
369
+ *
370
+ * hono's `RegExpRouter` writes `match: typeof match<Router<T>, T> = match`
371
+ * over `function match<R extends Router<T>, T>(this: R, method, path)`, while
372
+ * `TrieRouter` and `SmartRouter` declare `match` as an ordinary method -- and
373
+ * `Router<T>` itself declares it as a method, with no `this` at all. So the
374
+ * field's carrier names a receiver and every read through the interface (or
375
+ * through the union of the three implementors) publishes one that does not,
376
+ * and nothing converted between them.
377
+ *
378
+ * Binding the read's own receiver is the only call the language admits here,
379
+ * which is what makes this sound where the detached-METHOD case next door
380
+ * needs `readsReceiver` to hold: a `this` parameter is a parameter, and
381
+ * TypeScript refuses a call through the value that does not supply one
382
+ * (`The 'this' context of type 'void' is not assignable...`). A method has no
383
+ * such annotation, so a detached call really can reach it with `this`
384
+ * undefined, and binding there would answer where the program would have
385
+ * thrown.
386
+ */
387
+ export declare const receiverBoundFieldText: (ctx: ConversionSite, stored: Representation, published: Representation, storedText: string, receiver: Representation, receiverText: string) => string | null;
388
+ export declare const bindsReceiver: (source: Representation, target: Representation) => boolean;
389
+ export declare const dropsUnboundParameters: (source: Representation, target: Representation) => boolean;
390
+ /**
391
+ * A zero-parameter callable filling a slot that declares at least one
392
+ * parameter AND whose result is a tagged union naming the source's own
393
+ * result as one of its arms -- `dropsUnboundParameters`'s zero-arity special
394
+ * case (`gea_runtime.h`'s `dropArguments`) composed with
395
+ * `gea::TaggedUnion::ofArm`, for a source neither alone accepts:
396
+ * `dropsUnboundParameters` requires an IDENTICAL result, and a bare `ofArm`
397
+ * conversion has no arity adaptation of its own.
398
+ *
399
+ * hono's `Context.notFound`: `this.#notFoundHandler ??=
400
+ * () => createResponseInstance()` merges a `() => Response` into a field
401
+ * declared `(c: Context) => Response | Promise<Response>`.
402
+ * `gea_runtime.h`'s `ResultWidensIntoArm` proves the identical pairing at
403
+ * the type level; this re-asks the same two-part question so the two cannot
404
+ * disagree about which pairs the runtime constructor actually accepts.
405
+ *
406
+ * Deliberately narrower than `dropsUnboundParameters`: a nonzero source
407
+ * arity is left entirely to that function (its PREFIX proof does not carry
408
+ * over once the result itself also changes), and a target result that is
409
+ * not a tagged union, or a source result that is not EXACTLY one of its
410
+ * arms, is refused -- the same fail-closed discipline `ResultWidensIntoArm`
411
+ * documents in the runtime.
412
+ */
413
+ export declare const dropsAllParametersIntoResultArm: (source: Representation, target: Representation) => boolean;
414
+ /**
415
+ * A callable filling a slot whose declared result is `void`, its own result
416
+ * being anything else -- same parameters, in the same order, with the same
417
+ * types; only the RESULT differs, and only in the direction of being
418
+ * discarded.
419
+ *
420
+ * ECMA-262 makes this sound for a reason distinct from the other two
421
+ * predicates above: a call's result is simply not read unless something
422
+ * reads it, so a function returning `T` really is a valid `() => void` (or
423
+ * any arity's `void`-returning form) wherever the caller never names the
424
+ * result -- `Array.prototype.forEach`'s callback contract is the textbook
425
+ * case, and this port's own is `node:http`'s `RequestListener = (req, res)
426
+ * => void`: `createServer(async (req, res) => { ... })` is an everyday Node
427
+ * idiom (`apps/hono-hello/server.ts` is one), and TypeScript accepts a
428
+ * `Promise<void>`-returning callback there for the identical reason -- a
429
+ * `void`-returning function TYPE is satisfied by ANY return type, precisely
430
+ * so a caller who ignores the result is never forced to wrap it.
431
+ *
432
+ * `gea_runtime.h`'s `CallableObject` composed converting constructor this
433
+ * asks for discards whatever the source returns; see that constructor's own
434
+ * comment for why doing so is never lossy for an async body specifically --
435
+ * this runtime's `Promise<V>` is a settled-value box, never a coroutine
436
+ * frame, so by the time a call returns here its entire body, `await`s
437
+ * included, has already run to completion.
438
+ *
439
+ * Gated the mirror of `dropsAllParametersIntoResultArm` above: parameters
440
+ * must agree in COUNT and in every position's TYPE (this is not an arity
441
+ * change, `dropsUnboundParameters`'s own axis -- it is a pure result
442
+ * change), the receiver must agree exactly on both sides (a call's receiver
443
+ * is never dropped), and the target's result must actually BE `void` --
444
+ * anything else stays a hard compile error, this file's shared fail-closed
445
+ * rule. Source and target already sharing `void` needs no constructor at
446
+ * all: `cppTypeOf` equality above already renders that as the identity
447
+ * text, so this predicate is never even asked.
448
+ *
449
+ * Zero parameters is excluded on the runtime constructor's own account, not
450
+ * this predicate's: `gea_runtime.h`'s matching constructor collapses to the
451
+ * textually identical signature the `ResultWidensIntoArm`-gated one above it
452
+ * already declares once `Arguments...` is empty, which fails to COMPILE
453
+ * (every zero-arity `CallableObject<Result()>` in the header, `Result=void`
454
+ * or not) rather than merely fails to be selected -- see that constructor's
455
+ * own comment. Asking this predicate to answer `false` there keeps the two
456
+ * files agreeing about which pairs the runtime actually accepts, the same
457
+ * discipline `dropsUnboundParameters` and `dropsAllParametersIntoResultArm`
458
+ * both already state for their own exclusions.
459
+ */
460
+ /**
461
+ * A callable whose parameters already agree with the slot's, position for
462
+ * position, and whose RESULT is exactly one arm of the tagged union the slot
463
+ * declares -- `dropsAllParametersIntoResultArm` with the arity change taken
464
+ * back out, leaving only the widening half.
465
+ *
466
+ * That predicate requires a ZERO-parameter source and `dropsUnboundParameters`
467
+ * an IDENTICAL result, so a pair moving along only the result axis at a nonzero
468
+ * arity satisfies neither -- hono's `Hono.fetch` is one, a `(Context) =>
469
+ * Response` assigned into a field declared `(Context) => Response |
470
+ * Promise<Response>`. Sound for exactly the reason `gea_runtime.h`'s
471
+ * `ResultWidensIntoArm` states, and asked in the same terms so the two cannot
472
+ * disagree: the result must equal one arm EXACTLY and every other position --
473
+ * receiver, arity, each parameter's carrier, the rest slot -- exactly, none
474
+ * being adapted here. `widenResultIntoArm` is the constructor performing it.
475
+ */
476
+ export declare const widensResultIntoArm: (source: Representation, target: Representation) => boolean;
477
+ /**
478
+ * A source whose rest parameter sits at a LATER position than the target's.
479
+ *
480
+ * ECMAScript has one calling convention, so `(base?: string, sub?: string,
481
+ * ...rest: string[]) => string` and `(...paths: string[]) => string` are the
482
+ * same function -- hono's `utils/url.ts` declares exactly that pair on one
483
+ * `const mergePath`, the annotation stating the second and the initializer
484
+ * being the first. C++ sees two unrelated function types, and the store
485
+ * refused.
486
+ *
487
+ * The target has to be a single rest parameter, because that array is the
488
+ * whole of what the thunk has to unpack. Every leading source parameter has
489
+ * to be `optional(E, undefined)` over the same element the rest carries: a
490
+ * position the call never reached has to be ABSENT, and a leading slot must
491
+ * never be handed an element of a type it did not declare. The source's own
492
+ * rest must sit exactly after its leading run, since the tail is what is
493
+ * left when those are taken.
494
+ *
495
+ * `gea_runtime.h`'s `RestRebaseAdmits` states the identical conditions over
496
+ * the C++ types, so a pair this admits and that one does not is a compile
497
+ * error rather than a wrong call -- the same fail-closed pairing every other
498
+ * predicate here has with its constructor.
499
+ */
500
+ export declare const rebasesRestOverLeadingParameters: (source: Representation, target: Representation) => boolean;
501
+ export declare const discardsResultIntoVoid: (source: Representation, target: Representation) => boolean;
502
+ /**
503
+ * Reading a concrete value back OUT of a box -- the direction this backend did
504
+ * not have.
505
+ *
506
+ * `x as unknown as string` is an ASSERTION, not a coercion: the program states
507
+ * what the value is and TypeScript erases the statement, so what has to happen
508
+ * at runtime is a read of the payload the box holds, not a `ToString` of
509
+ * whatever it happens to be. `gea::unboxValue` (gea_runtime.h) is exactly that
510
+ * read -- it checks the box's tag AND its payload type and aborts by name when
511
+ * either disagrees, which is where the consequence of a wrong assertion
512
+ * belongs. The identical primitive `emit-dynamic-properties.ts` already reads
513
+ * a dynamic property back through; this states the same fact for an ordinary
514
+ * carrier reconciliation.
515
+ *
516
+ * Every tag that has a payload to read, not only the three primitive ones.
517
+ * This paragraph used to say the opposite -- that a record, a class instance,
518
+ * a callable or an array was a box whose payload type the target carrier does
519
+ * not determine, so there was no `T` to name -- and that premise is false: the
520
+ * target carrier is exactly what determines the `T`, because `cppTypeOf`
521
+ * spells it and `Value::box` recorded that same spelling's address in
522
+ * `payloadType()`. `unboxValue` compares the two, so naming the wrong one
523
+ * refuses by name instead of reinterpreting bytes.
524
+ *
525
+ * The stale claim outlived the code it described and was still being cited as
526
+ * settled by `targets/cpp/conversions.ts`'s own header, which is how that
527
+ * file's `classRefMaterializer` stayed uninstalled while the load it needed
528
+ * was already being rendered right here.
529
+ */
530
+ /**
531
+ * Every `(tag, payload type)` pair a box can carry for this carrier.
532
+ *
533
+ * `dynamicTagFor` answers ONE tag and `null` for a sum, which is the right
534
+ * answer to "what tag does `Value::box` write for this" and the wrong one to
535
+ * "which tags could a box holding this carrier have". A union arm, and an
536
+ * optional's two states, each answer to several. `payload` is `null` where the
537
+ * tag IS the whole value (`undefined`, `null`) and there is therefore no
538
+ * recorded payload type to tiebreak a tag collision with -- two such arms under
539
+ * one tag are genuinely indistinguishable, and compare equal here so the
540
+ * caller refuses rather than guessing.
541
+ */
542
+ export type BoxDiscriminant = {
543
+ tag: string;
544
+ payload: string | null;
545
+ nominal: string | null;
546
+ /** Exact checker-closed FunctionId membership; null for a non-callable discriminator. */
547
+ callableMembers: readonly FunctionId[] | null;
548
+ };
549
+ export declare const boxDiscriminantsOf: (carrier: Representation) => BoxDiscriminant[] | null;
550
+ /** The representation arm's carried discriminator and the executable classifier must agree. */
551
+ export declare const boxDiscriminantsOfArm: (arm: TaggedUnionArm) => BoxDiscriminant[] | null;
552
+ export declare const unboxedLoadText: (target: Representation, text: string) => string | null;
553
+ /**
554
+ * `generic-function-set` into a superset: each source index becomes the
555
+ * target's index of the same member. A one-member source is a constant; a
556
+ * wider one is a table lookup. `null` when the pair is not a set widening
557
+ * (a member the target lacks is a narrowing, and no store performs one).
558
+ */
559
+ export declare const genericFunctionSetWideningText: (source: Representation, target: Representation, text: string) => string | null;
560
+ /**
561
+ * `never[]` read where `E[]` is wanted: the one empty array of `E`. See
562
+ * `conversions.ts`'s `gea::emptyArraySentinel` recipe for why identity, not a
563
+ * fresh `[]`, is the answer, and which pairs it admits. The dynamic target
564
+ * decides at runtime (`emptyArraySentinelOrBoxed`): an empty source is the
565
+ * sentinel, a populated one -- a real `undefined[]`, which the carrier cannot
566
+ * tell apart -- is boxed element by element.
567
+ */
568
+ export declare const emptyArraySentinelText: (source: Representation, target: Representation, text: string) => string | null;
569
+ /**
570
+ * One step of the conversion chain. `undefined` means the step does not
571
+ * claim the pair and the chain continues; `null` means it claims the pair
572
+ * and cannot render it, which ends the chain with no rendering (the chain's
573
+ * original early returns); a string is the rendering.
574
+ */
575
+ export interface ConversionStep {
576
+ readonly id: string;
577
+ readonly apply: (source: Representation, target: Representation, text: string) => string | null | undefined;
578
+ }
579
+ /**
580
+ * The chain, in the order it has always run. Each entry is one recipe with a
581
+ * stable id; `conversionRecipeOf` names the entry that claims a pair without
582
+ * rendering it, so the conversion census (`conversion/nodes.ts`) can state
583
+ * the same answer this printer gives, from the same table.
584
+ */
585
+ export declare const conversionChain: readonly ConversionStep[];
586
+ /**
587
+ * One chain call the printer still makes on a pair the IR did not already
588
+ * align: after Phase 1.3 every operand that enters a slot arrives converted
589
+ * by lowering, so a printer site that finds its source and target differing
590
+ * is a decision the census does not own yet. Recorded per site so the 1.4
591
+ * work list is measured, not guessed; the row names the site, the body and
592
+ * the pair, and the chain still renders it.
593
+ */
594
+ export interface PrinterDrift {
595
+ readonly owner: string;
596
+ readonly site: string;
597
+ /**
598
+ * `refused`: the census has no recipe for the pair and the chain rendered
599
+ * it (or refused it too). `converted`: the census answered and the printer
600
+ * rendered its node -- a site that still converts at all, which after
601
+ * Phase 1.3 is a decision lowering should have made; the by-category
602
+ * deletion of chain callers (1.4) works this list down.
603
+ */
604
+ readonly kind: 'refused' | 'converted';
605
+ readonly source: string;
606
+ readonly target: string;
607
+ /** The census's stated reason the pair has no recipe (`refused`), or the node's capability kind (`converted`). */
608
+ readonly reason: string;
609
+ readonly sourceRepresentation: Representation;
610
+ readonly targetRepresentation: Representation;
611
+ }
612
+ /**
613
+ * A printer site's conversion, answered by the census: the node `nodeFor`
614
+ * mints for the pair, rendered by the recipe it names. The site is a
615
+ * RESULT-side one -- a call's result into the operation's carrier, a union
616
+ * arm's field into what the read publishes, a host template's value into
617
+ * the slot -- where the value is produced inside this printer's own
618
+ * expression and lowering had nothing to convert; every operand-side pair
619
+ * already arrived converted (`ir/lower-operands.ts`'s `enter`).
620
+ *
621
+ * A pair the census has no recipe for is recorded as printer drift with the
622
+ * census's reason and STILL handed to the chain, because the chain renders
623
+ * some pairs the census does not yet own (a `dynamic` source the eager
624
+ * derivation refused, a callable adapter) and refusing them here would
625
+ * uncertify programs that run. The drift rows are the list of pairs the
626
+ * census still has to learn; a row whose chain rendering is also `null` is
627
+ * the refusal the site reports.
628
+ */
629
+ /**
630
+ * What a conversion site needs from its context: the census, the drift list
631
+ * it reports to, and what the record view renders from. A body's
632
+ * `EmitContext` is one; the program-level renderers with no body (construct
633
+ * thunks, field initializers, virtual dispatch adapters in
634
+ * `translation-unit.ts`) build one over the same census.
635
+ */
636
+ export interface ConversionSite {
637
+ readonly conversions: ConversionCensus;
638
+ readonly nativeSelectionHelpers?: ReadonlyMap<string, NativeSelectionHelper>;
639
+ readonly printerDrift: PrinterDrift[];
640
+ readonly owner: string;
641
+ readonly layouts: RecordLayoutPolicy;
642
+ readonly classes: ReadonlyMap<DeclarationId, ClassLayout>;
643
+ readonly captures: CaptureIndex;
644
+ /** The dispatch members this unit emitted; absent where a site has none to name. */
645
+ readonly virtualDispatch?: ReadonlyMap<string, CallableAbi>;
646
+ }
647
+ export declare const alignedValueText: (ctx: ConversionSite, site: string, source: Representation, target: Representation, text: string) => string | null;
648
+ /**
649
+ * A census node's recipe, rendered by one of the two renderers the census
650
+ * owns. The chain first: the registry's atoms ARE its narrowing, widening
651
+ * and recasting steps, and its static recipes are named by the step that
652
+ * claimed the pair (`conversions.ts`'s `staticRecipe`). Then the structural
653
+ * record view (`conversion/record-view.ts`), which renders both the
654
+ * `view:structural-record` recipe and the registry's `gea::record::recast`
655
+ * atom -- the eager graph minted that atom for a by-value record entering
656
+ * an interface's shared shape before the view plan existed, and the chain's
657
+ * `record-recast` step spells only the by-reference recast, so the view is
658
+ * that atom's renderer. Keyed by capability KIND rather than by materializer
659
+ * id on purpose: a node's id says which table answered, not which text
660
+ * spells it, and every non-`never` node has exactly one of these two.
661
+ *
662
+ * `class-family` is a third renderer, asked before the chain rather than
663
+ * folded into it: `classFamilyLoadText` orders its cascade over
664
+ * `ctx.classes`, the whole-program class table, and the chain
665
+ * (`convertedValueText`) is deliberately ctx-free -- see `algebra.ts`'s doc
666
+ * on the kind for why an `atom` cannot carry this recipe.
667
+ */
668
+ export declare const recipeText: (ctx: ConversionSite, node: ConversionNode, text: string) => string | null;
669
+ /**
670
+ * The text of a node a `convert` instruction NAMES, rather than of the pair
671
+ * it spans: a coercion node shares its (source, target) pair with the store
672
+ * node `alignedValueText` would look up -- `string -> scalar(number)` is an
673
+ * exact tag read as a store and StringToNumber as a coercion -- so the
674
+ * instruction's own node id is the only thing that says which one runs.
675
+ */
676
+ export declare const namedConversionText: (ctx: ConversionSite, site: string, node: ConversionNode, text: string) => string | null;
677
+ export declare const convertedValueText: (source: Representation, target: Representation, text: string) => string | null;
678
+ export declare const isSpellable: (representation: Representation) => boolean;
679
+ /**
680
+ * The chain's answer for a pair, as a predicate: the registry's static recipe
681
+ * and a record view's field and arm pairs (`conversion/record-view.ts`) ask
682
+ * this one question, so a view the census admits is a view the printer
683
+ * renders.
684
+ */
685
+ export declare const chainConverts: (source: Representation, target: Representation) => boolean;
686
+ export declare const conversionRecipeOf: (source: Representation, target: Representation) => {
687
+ readonly id: string;
688
+ readonly renders: boolean;
689
+ } | null;
690
+ /**
691
+ * A DYING refcounted value moves into the slot that takes it rather than being
692
+ * copied into it -- see `ir/transfer.ts`'s `buildDyingArgumentIndex` for what
693
+ * makes a value dying, which is the whole of the safety argument.
694
+ *
695
+ * Two conditions here, both about the CARRIER rather than the value's life:
696
+ * only a carrier that owns a count has anything to hand over, and the slot must
697
+ * hold exactly what the value already holds. `gea::Ref` has no converting move
698
+ * constructor, so an upcast to a base class binds `std::move(x)` right back to
699
+ * the copying `Ref(const Ref<Other>&)` -- and any slot needing a real
700
+ * conversion has already built a temporary of its own, which moving cannot
701
+ * make cheaper.
702
+ */
703
+ export declare const movedValueText: (ctx: EmitContext, value: IrOperand, held: Representation | null, text: string) => string;
704
+ /**
705
+ * The proven-partial-dead-arm sibling of `emit.ts`'s `emitConvert` -- see
706
+ * `MergeLiveArmRebuildOperation`'s doc comment (`ir/model.ts`) for why a
707
+ * general `convert` cannot express this.
708
+ *
709
+ * `operation.liveArms` is the proof: which of the source's (optional-
710
+ * unwrapped) tagged-union arms are not proven dead at this merge, computed
711
+ * once by the control-flow lowering that owns the guard and carried here
712
+ * unchanged -- never recomputed. `ir/lower-narrow.ts` derives it from
713
+ * `partialDeadMergeArms` for `&&`; `ir/lower-destructuring.ts` derives it from
714
+ * the top-level arms surviving a default's `is-defined` guard. Only those
715
+ * indices are tested, in source-arm order, on the source's own discriminant
716
+ * (`.is<N>()`/`.get<N>()`, the
717
+ * identical accessors this file already renders for a narrowed tagged
718
+ * union above), and the chain falls through to the last live index without
719
+ * testing it -- sound because reaching this expression at all already proves
720
+ * the held arm is one of them. The source's own absence (if it is optional)
721
+ * reads the result's own absent value instead of testing any arm at all.
722
+ *
723
+ * Each live arm converts into the result's carrier through `convertedValueText`
724
+ * (below) FIRST, unmodified, and only when that finds no installed load AND
725
+ * the result is boolean-shaped (`isBooleanShapedMergeTarget`) does it fall
726
+ * back to `ToBoolean` (`emit-presence.ts`'s `booleanTestText`) instead. That
727
+ * fallback is not a general "any carrier converts to boolean" capability -- it
728
+ * is not added to `convertedValueText`'s own representation-keyed dispatch,
729
+ * which would let it fire for any unrelated occurrence of the same
730
+ * representation pair. It fires only here, for an arm THIS merge's own
731
+ * partial-dead-arm proof already marked live, because a `&&` merge's own
732
+ * published type collapsing to `boolean | undefined` is the checker having
733
+ * already proven the kept contribution meaningful only as its truthiness:
734
+ * ECMA-262's `&&` picks its kept operand by `ToBoolean` in the first place, so
735
+ * restating that answer as a plain `bool` is not a new fact about the arm's
736
+ * carrier, it is the exact question this merge already asked of it.
737
+ */
738
+ export declare const emitMergeLiveArmRebuild: (ctx: EmitContext, lines: string[], operation: MergeLiveArmRebuildOperation) => void;