@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,23 @@
1
+ import type { SealedRepresentationPlan } from '../../representation/plan.js';
2
+ import type { Representation } from '../../representation/model.js';
3
+ import type { TargetRuntimeManifest } from '../../preflight/obligations.js';
4
+ import type { CppRuntimeCapabilities } from './manifest/capabilities.js';
5
+ import type { HostMemberTable } from './host/host-members.js';
6
+ /**
7
+ * What the C++ backend can actually do, stated as a manifest preflight censuses
8
+ * against.
9
+ *
10
+ * The manifest is computed, not declared. A hand-written list of capabilities
11
+ * drifts from the emitter the moment either changes, and a manifest that claims
12
+ * more than the emitter implements turns a preflight pass into a crash during
13
+ * rendering -- which is precisely the failure preflight exists to prevent.
14
+ *
15
+ * So the physical-type rows are derived by asking the one authoritative type
16
+ * mapping whether it can spell each carrier the plan actually selected. Every
17
+ * other row reports what the emitter has been written to render, and the sets
18
+ * are small on purpose: reporting empty where nothing is built is the honest
19
+ * answer, and it makes each gap measurable instead of invisible.
20
+ */
21
+ export type { CppRuntimeCapabilities } from './manifest/capabilities.js';
22
+ export { currentCppRuntimeCapabilities } from './manifest/capabilities.js';
23
+ export declare const createCppTargetManifest: (plan: SealedRepresentationPlan, capabilities?: CppRuntimeCapabilities, typeofOperandRepresentations?: Iterable<Representation>, hostMembers?: HostMemberTable, objectTagOperands?: Iterable<Representation>, hostInstanceTests?: ReadonlyMap<string, string>) => TargetRuntimeManifest;
@@ -0,0 +1,113 @@
1
+ import { objectTagExpression, objectTagCapability } from './emit-object-tag.js';
2
+ import { representationKey } from '../../representation/model.js';
3
+ import { cppTypeOf } from './types.js';
4
+ import { presenceIsAnswerable } from './emit-presence.js';
5
+ import { typeofIsAnswerable } from './emit-typeof.js';
6
+ import { currentCppRuntimeCapabilities } from './manifest/capabilities.js';
7
+ import { coreHostMembers } from './host/host-members.js';
8
+ import { cppNativeProtocolsOf } from './host/native-protocols.js';
9
+ import { cppInstanceofLeftKinds } from './emit-instanceof.js';
10
+ export { currentCppRuntimeCapabilities } from './manifest/capabilities.js';
11
+ /** Whether the one authoritative type mapping can spell this carrier. */
12
+ const isSpellable = (representation) => {
13
+ // `void` is spellable even though it has no storage: a result that occupies
14
+ // nothing still lowers, as an absent slot or a `void` return.
15
+ if (representation.kind === 'void')
16
+ return true;
17
+ try {
18
+ cppTypeOf(representation);
19
+ return true;
20
+ }
21
+ catch {
22
+ // The mapping throws for exactly the carriers it cannot spell. Treating the
23
+ // throw as the answer keeps one authority instead of a second predicate
24
+ // that could disagree with it.
25
+ return false;
26
+ }
27
+ };
28
+ export const createCppTargetManifest = (plan, capabilities = currentCppRuntimeCapabilities, typeofOperandRepresentations = [],
29
+ // The host member table this compilation's native-boundary claims are
30
+ // derived from -- defaulted to the core, plugin-independent table so every
31
+ // existing caller (tests included) keeps computing the same answer
32
+ // `capabilities.nativeProtocols` already states, without having to learn
33
+ // about this parameter. `compiler.ts`'s own call passes `coreHostMembers`
34
+ // explicitly, from the one place in that file it is already imported,
35
+ // which is what lets this manifest's claim stay tied to the same table the
36
+ // emitter renders from rather than to a frozen capabilities snapshot taken
37
+ // before any host tables for THIS compilation existed.
38
+ hostMembers = coreHostMembers, objectTagOperands = [],
39
+ // The installed hosts' own `[[HasInstance]]` predicates, keyed by the native
40
+ // type the right-hand operand of `instanceof` carries -- see
41
+ // `PluginCapabilities.hostInstanceTests`. A row here is a claim for EVERY
42
+ // left carrier kind, which is what that capability's contract states the
43
+ // spelling must accept; `emit-instanceof.ts`'s `hostInstanceTestText`
44
+ // unwraps an optional or a union first and calls the predicate on each leaf.
45
+ hostInstanceTests = new Map()) => {
46
+ const spellable = new Set();
47
+ for (const representation of plan.selected.values()) {
48
+ if (isSpellable(representation))
49
+ spellable.add(representationKey(representation));
50
+ }
51
+ // `typeof` is answerable over a complete carrier, not its outer kind. An
52
+ // optional and a tagged union recurse into their payloads and arms, so two
53
+ // values with the same outer kind may have different answers. Keying the
54
+ // claim by kind made one unsupported union withdraw the capability for every
55
+ // other union in the program, including unions this emitter could render.
56
+ // The representation key is the same complete carrier the emitter receives;
57
+ // an unsupported shape remains absent without vetoing an unrelated one.
58
+ const typeofRepresentations = new Set();
59
+ // This is deliberately NOT every selected carrier: a target capability
60
+ // claim is evidence that this particular compilation has an emitted
61
+ // `typeof` over that carrier. Results, constants, and null all arrive here
62
+ // through the same operand resolver in `runtime-helper-key.ts`, so the
63
+ // manifest and obligation census have exactly one set to compare.
64
+ for (const representation of typeofOperandRepresentations) {
65
+ if (typeofIsAnswerable(representation))
66
+ typeofRepresentations.add(representationKey(representation));
67
+ }
68
+ const runtimeHelpers = new Set(capabilities.runtimeHelpers);
69
+ for (const key of typeofRepresentations)
70
+ runtimeHelpers.add(`computation:typeof:${key}`);
71
+ // Tag lookup support is keyed by the complete carrier, including constants
72
+ // that publish no result in the selected representation plan.
73
+ for (const representation of objectTagOperands) {
74
+ if (objectTagExpression(representation, 'value') !== null)
75
+ runtimeHelpers.add(objectTagCapability(representation));
76
+ }
77
+ // The nullish test is likewise derived from the actual carrier contents.
78
+ const presenceKinds = new Map();
79
+ for (const representation of plan.selected.values()) {
80
+ const answerable = presenceIsAnswerable(representation);
81
+ presenceKinds.set(representation.kind, (presenceKinds.get(representation.kind) ?? true) && answerable);
82
+ }
83
+ for (const [kind, answerable] of presenceKinds)
84
+ if (answerable)
85
+ runtimeHelpers.add(`conversion:is-present:${kind}`);
86
+ for (const native of hostInstanceTests.keys()) {
87
+ for (const left of cppInstanceofLeftKinds)
88
+ runtimeHelpers.add(`computation:instanceof:${left}:native-record-ref(${native})`);
89
+ }
90
+ return {
91
+ hasGenericCallPath: capabilities.hasGenericCallPath,
92
+ hasDynamicCallPath: capabilities.hasDynamicCallPath,
93
+ // No devirtualization fast path is registered: without one, preflight takes
94
+ // the mandatory generic path, which is a slower answer and not a wrong one.
95
+ functionAbis: new Set(),
96
+ implicitConstructorAbis: new Set(),
97
+ propertyRecipes: capabilities.propertyRecipes,
98
+ captureOwnershipSupport: capabilities.captureOwnershipSupport,
99
+ nativeProtocols: cppNativeProtocolsOf(hostMembers),
100
+ hostMembers: new Set(hostMembers.keys()),
101
+ dynamicArgumentHostParameters: capabilities.dynamicArgumentHostParameters,
102
+ runtimeHelpers,
103
+ unsupportedRuntimeHelpers: capabilities.unsupportedRuntimeHelpers,
104
+ physicalTypes: spellable,
105
+ spellable: isSpellable,
106
+ // A carrier this backend can spell is one it can verify and emit: all three
107
+ // come from the same mapping, so publishing different sets would claim a
108
+ // distinction that does not exist.
109
+ verifierRecipes: spellable,
110
+ emitterRecipes: spellable,
111
+ abruptEdgeHandlers: capabilities.abruptEdgeHandlers
112
+ };
113
+ };
@@ -0,0 +1,38 @@
1
+ import type { Representation } from '../../representation/model.js';
2
+ import type { RepresentationDeriver } from '../../representation/derive.js';
3
+ /** One argument reaching the native `Error` base, already rendered as C++. */
4
+ export interface NativeErrorBaseArgument {
5
+ readonly representation: Representation;
6
+ readonly text: string;
7
+ }
8
+ /** Why a native-`Error` base could not be initialized, in the two shapes the two call sites need. */
9
+ export type NativeErrorBaseRefusal = {
10
+ readonly refusal: 'conversion';
11
+ readonly conversion: string;
12
+ readonly reason: string;
13
+ } | {
14
+ readonly refusal: 'super-initialize';
15
+ readonly reason: string;
16
+ };
17
+ export declare const isNativeErrorBaseRefusal: (value: readonly string[] | NativeErrorBaseRefusal) => value is NativeErrorBaseRefusal;
18
+ /**
19
+ * `super(message, options)` against the intrinsic `Error` layout, as statements
20
+ * run on a receiver that already exists.
21
+ *
22
+ * This is shared by the two ways a program reaches it, because they are the
23
+ * same language step and must not drift: a written `constructor` reaches it
24
+ * through the `super(...)` operation, and a derived class that writes *no*
25
+ * constructor reaches it through the implicit `constructor(...args) {
26
+ * super(...args) }`, which the construct wrapper renders directly. A second
27
+ * copy of this for the implicit case would be a second answer to "what does
28
+ * ECMA-262 20.5.1.1 do", and the two would disagree the first time either
29
+ * grew a case.
30
+ *
31
+ * The receiver is `static_cast` to the native base rather than reached through
32
+ * a field: the class layout gives a derived class the base's layout as its own
33
+ * prefix (`records.ts`'s native-base linking), so the base subobject IS the
34
+ * receiver's front, and `initialize` writes it in place. Constructing a second
35
+ * `gea::runtime::Error` and copying it would give the throw site a different
36
+ * object than the one `instanceof` sees.
37
+ */
38
+ export declare const nativeErrorBaseInitializeStatements: (deriver: RepresentationDeriver, receiverName: string, args: readonly (NativeErrorBaseArgument | undefined)[]) => readonly string[] | NativeErrorBaseRefusal;
@@ -0,0 +1,74 @@
1
+ import { representationKey } from '../../representation/model.js';
2
+ import { recordFieldsOfShape } from '../../projection/fields.js';
3
+ import { cppRecordFieldName, cppRecordFieldPresenceName } from './types.js';
4
+ import { cppErrorNativeType } from './error-types.js';
5
+ const isRefusal = (value) => !Array.isArray(value);
6
+ export const isNativeErrorBaseRefusal = isRefusal;
7
+ /**
8
+ * `super(message, options)` against the intrinsic `Error` layout, as statements
9
+ * run on a receiver that already exists.
10
+ *
11
+ * This is shared by the two ways a program reaches it, because they are the
12
+ * same language step and must not drift: a written `constructor` reaches it
13
+ * through the `super(...)` operation, and a derived class that writes *no*
14
+ * constructor reaches it through the implicit `constructor(...args) {
15
+ * super(...args) }`, which the construct wrapper renders directly. A second
16
+ * copy of this for the implicit case would be a second answer to "what does
17
+ * ECMA-262 20.5.1.1 do", and the two would disagree the first time either
18
+ * grew a case.
19
+ *
20
+ * The receiver is `static_cast` to the native base rather than reached through
21
+ * a field: the class layout gives a derived class the base's layout as its own
22
+ * prefix (`records.ts`'s native-base linking), so the base subobject IS the
23
+ * receiver's front, and `initialize` writes it in place. Constructing a second
24
+ * `gea::runtime::Error` and copying it would give the throw site a different
25
+ * object than the one `instanceof` sees.
26
+ */
27
+ export const nativeErrorBaseInitializeStatements = (deriver, receiverName, args) => {
28
+ const lines = [];
29
+ const message = args[0];
30
+ let messageText = 'std::string()';
31
+ if (message) {
32
+ if (message.representation.kind === 'string')
33
+ messageText = message.text;
34
+ else if (message.representation.kind === 'optional' && message.representation.payload.kind === 'string') {
35
+ messageText = `(${message.text}.has_value() ? *${message.text} : std::string())`;
36
+ }
37
+ else if (message.representation.kind !== 'undefined') {
38
+ return {
39
+ refusal: 'conversion',
40
+ conversion: `${representationKey(message.representation)}->string`,
41
+ reason: `intrinsic Error message carries "${representationKey(message.representation)}", not string or optional string`
42
+ };
43
+ }
44
+ }
45
+ const base = `static_cast<${cppErrorNativeType}&>(*${receiverName})`;
46
+ lines.push(`${base}.initialize(${messageText});`);
47
+ const options = args[1];
48
+ if (options && options.representation.kind !== 'undefined') {
49
+ const optionsText = options.text;
50
+ const outerGuard = options.representation.kind === 'optional' ? `${optionsText}.has_value()` : null;
51
+ const payload = options.representation.kind === 'optional' ? options.representation.payload : options.representation;
52
+ const payloadText = options.representation.kind === 'optional' ? `(*${optionsText})` : optionsText;
53
+ if (payload.kind !== 'record' && payload.kind !== 'record-with-index' && payload.kind !== 'native-record-ref') {
54
+ return {
55
+ refusal: 'conversion',
56
+ conversion: `${representationKey(options.representation)}->record`,
57
+ reason: `intrinsic Error options carry "${representationKey(options.representation)}", not a static options record`
58
+ };
59
+ }
60
+ const fields = payload.kind === 'record' || payload.kind === 'record-with-index' ? payload.fields : recordFieldsOfShape(deriver, payload.shapeId);
61
+ const cause = fields?.find((field) => field.key === 'cause');
62
+ if (!cause || cause.value.kind !== 'dynamic') {
63
+ return {
64
+ refusal: 'super-initialize',
65
+ reason: `intrinsic Error options carry "${representationKey(options.representation)}" without a dynamic cause field`
66
+ };
67
+ }
68
+ const access = payload.ownership === 'shared-refcount' ? '->' : '.';
69
+ const causeText = `${payloadText}${access}${cppRecordFieldName('cause')}`;
70
+ const guards = [outerGuard, cause.required ? null : `${payloadText}${access}${cppRecordFieldPresenceName('cause')}`].filter((guard) => guard !== null);
71
+ lines.push(`${guards.length > 0 ? `if (${guards.join(' && ')}) ` : ''}${base}.setCause(${causeText});`);
72
+ }
73
+ return lines;
74
+ };
@@ -0,0 +1,12 @@
1
+ import type { ConversionRuntimeRegistry } from '../../conversion/registry.js';
2
+ import { type Representation } from '../../representation/model.js';
3
+ /**
4
+ * Whether the census's own answer for one pair, asked in its order as
5
+ * `leafTransports` asks, states that the text the conversion chain spells for
6
+ * that pair (`convertedValueText`) reads no dynamic field protocol. Only a
7
+ * node the chain renders qualifies (`emit-narrowing.ts`'s `recipeText`): a
8
+ * class-family cascade or a sealed native selection is spelled by its own
9
+ * renderer, so its contract says nothing about the chain's text for the pair.
10
+ */
11
+ export declare const chainFieldProtocolUnused: (registry: ConversionRuntimeRegistry, source: Representation, target: Representation) => boolean;
12
+ export declare const nativeSumNarrowingTransports: (registry: ConversionRuntimeRegistry, source: Representation, target: Representation) => boolean;
@@ -0,0 +1,151 @@
1
+ import { narrowsToDescendantClassUnion } from '../../conversion/build.js';
2
+ import { representationKey } from '../../representation/model.js';
3
+ import { conversionRecipeOf } from './emit-narrowing.js';
4
+ /**
5
+ * The native contract of a narrowing out of a SUM, composed from the contracts
6
+ * this registry already states for its leaf pairs.
7
+ *
8
+ * `emit-narrowing.ts` renders a sum narrowing structurally: tag tests,
9
+ * `get<I>` loads, `*` presence loads, `ofArm<I>` injections and optional
10
+ * wraps, around one leaf conversion per candidate alternative
11
+ * (`taggedUnionArmText`, `nestedArmLoadText`, `narrowedUnionSubsetText`,
12
+ * `recastedUnionText`). None of that structure reads a field or rebuilds a
13
+ * payload. So the whole narrowing transfers native payloads exactly when every
14
+ * leaf conversion the renderer can emit does.
15
+ *
16
+ * The renderer only ever converts a source LEAF into the target or one of the
17
+ * target's own nested alternatives, and it emits a leaf candidate only when
18
+ * the conversion chain spells that pair. This asks the chain for every such
19
+ * pair -- a superset of the pairs any render uses -- and requires the
20
+ * registry's own answer for each one to be a certified native transfer
21
+ * (`nativePayloadTransportMatches`' statement: non-allocating, field protocol
22
+ * unused, payload preserved). A leaf pair the chain cannot spell is never a
23
+ * candidate: the discriminant selects among the remaining alternatives, which
24
+ * is the narrowing authority's own proof. Callable and dynamic alternatives
25
+ * are refused outright: their sets and adapters convert as a whole rather than
26
+ * leaf by leaf.
27
+ */
28
+ const opaqueKinds = new Set([
29
+ 'dynamic',
30
+ 'function',
31
+ 'function-family',
32
+ 'function-value-family',
33
+ 'function-value-dispatch',
34
+ 'function-and-constructor',
35
+ 'generic-function-set',
36
+ 'callable-identity',
37
+ 'constructor-value-dispatch',
38
+ 'borrowed-ref',
39
+ 'proxy-object',
40
+ 'unresolved',
41
+ 'void'
42
+ ]);
43
+ const isSum = (value) => value.kind === 'optional' || value.kind === 'tagged-union';
44
+ const alternativesOf = (value) => value.kind === 'optional'
45
+ ? [value.payload, { kind: value.absence }]
46
+ : value.kind === 'tagged-union'
47
+ ? value.arms.map((arm) => arm.value)
48
+ : [];
49
+ /** Leaves and (with `sums`) the nested sums themselves, deduplicated by carrier key; representations may be cyclic. */
50
+ const collect = (root, sums) => {
51
+ const seen = new Map();
52
+ const pending = [root];
53
+ while (pending.length > 0) {
54
+ const next = pending.pop();
55
+ const key = representationKey(next);
56
+ if (seen.has(key))
57
+ continue;
58
+ const sum = isSum(next);
59
+ seen.set(key, next);
60
+ if (sum)
61
+ pending.push(...alternativesOf(next));
62
+ }
63
+ return [...seen.values()].filter((value) => sums || !isSum(value));
64
+ };
65
+ const statesNativeTransport = (materializer) => materializer !== null &&
66
+ materializer !== undefined &&
67
+ !materializer.allocates &&
68
+ materializer.nativeFieldProtocol === 'unused' &&
69
+ materializer.nativePayloadTransport === 'preserved';
70
+ const chainSpells = new WeakMap();
71
+ const chainSpellsPair = (source, target) => {
72
+ let targets = chainSpells.get(source);
73
+ if (!targets)
74
+ chainSpells.set(source, (targets = new Map()));
75
+ const key = representationKey(target);
76
+ const known = targets.get(key);
77
+ if (known !== undefined)
78
+ return known;
79
+ const spelled = conversionRecipeOf(source, target)?.renders ?? false;
80
+ targets.set(key, spelled);
81
+ return spelled;
82
+ };
83
+ const verdictsByRegistry = new WeakMap();
84
+ const verdictsOf = (registry) => {
85
+ let verdicts = verdictsByRegistry.get(registry);
86
+ if (!verdicts)
87
+ verdictsByRegistry.set(registry, (verdicts = { leaf: new Map(), sum: new Map() }));
88
+ return verdicts;
89
+ };
90
+ /**
91
+ * The registry's answer for one leaf pair, asked in the census's own order
92
+ * (`conversion/nodes.ts`'s `capabilityOf`). A leaf source never reaches the
93
+ * sum composite below, so this cannot recurse into it. A descendant-union
94
+ * narrowing is a `class-family` capability, which payload consumers exclude,
95
+ * so it is refused here as well.
96
+ */
97
+ const leafTransports = (registry, source, target) => {
98
+ const sourceKey = representationKey(source);
99
+ const targetKey = representationKey(target);
100
+ if (sourceKey === targetKey)
101
+ return true;
102
+ const verdicts = verdictsOf(registry).leaf;
103
+ const pair = `${sourceKey}->${targetKey}`;
104
+ const known = verdicts.get(pair);
105
+ if (known !== undefined)
106
+ return known;
107
+ let native;
108
+ if (narrowsToDescendantClassUnion(source, target))
109
+ native = false;
110
+ else {
111
+ const installed = registry.narrowing(source, target) ?? registry.widening(source, target) ?? registry.recasting(source, target);
112
+ native = statesNativeTransport(installed ? installed.materializer : registry.staticRecipe(source, target));
113
+ }
114
+ verdicts.set(pair, native);
115
+ return native;
116
+ };
117
+ /**
118
+ * Whether the census's own answer for one pair, asked in its order as
119
+ * `leafTransports` asks, states that the text the conversion chain spells for
120
+ * that pair (`convertedValueText`) reads no dynamic field protocol. Only a
121
+ * node the chain renders qualifies (`emit-narrowing.ts`'s `recipeText`): a
122
+ * class-family cascade or a sealed native selection is spelled by its own
123
+ * renderer, so its contract says nothing about the chain's text for the pair.
124
+ */
125
+ export const chainFieldProtocolUnused = (registry, source, target) => {
126
+ if (representationKey(source) === representationKey(target))
127
+ return true;
128
+ if (narrowsToDescendantClassUnion(source, target))
129
+ return false;
130
+ const installed = registry.narrowing(source, target) ?? registry.widening(source, target) ?? registry.recasting(source, target);
131
+ const materializer = installed ? installed.materializer : registry.staticRecipe(source, target);
132
+ return (materializer !== null &&
133
+ materializer !== undefined &&
134
+ materializer.nativeSelection === undefined &&
135
+ materializer.nativeFieldProtocol === 'unused');
136
+ };
137
+ export const nativeSumNarrowingTransports = (registry, source, target) => {
138
+ if (!isSum(source))
139
+ return false;
140
+ const verdicts = verdictsOf(registry).sum;
141
+ const pair = `${representationKey(source)}->${representationKey(target)}`;
142
+ const known = verdicts.get(pair);
143
+ if (known !== undefined)
144
+ return known;
145
+ const leaves = collect(source, false);
146
+ const parts = collect(target, true);
147
+ const native = ![...leaves, ...parts].some((value) => opaqueKinds.has(value.kind)) &&
148
+ leaves.every((leaf) => parts.every((part) => representationKey(leaf) === representationKey(part) || !chainSpellsPair(leaf, part) || leafTransports(registry, leaf, part)));
149
+ verdicts.set(pair, native);
150
+ return native;
151
+ };
@@ -0,0 +1,11 @@
1
+ import { type IrBody } from '../../ir/model.js';
2
+ import type { ConversionCensus } from '../../conversion/nodes.js';
3
+ import type { ConversionNode, ConversionNodeId } from '../../conversion/algebra.js';
4
+ export interface NativeSelectionHelper {
5
+ readonly name: string;
6
+ readonly declaration: string;
7
+ readonly definition: string;
8
+ }
9
+ /** Count certified IR uses before rendering; helper selection never changes conversion authority. */
10
+ export declare const nativeSelectionHelpersForUses: (nodes: Iterable<ConversionNode>) => ReadonlyMap<ConversionNodeId, NativeSelectionHelper>;
11
+ export declare const nativeSelectionHelpers: (bodies: readonly IrBody[], census: ConversionCensus) => ReadonlyMap<ConversionNodeId, NativeSelectionHelper>;
@@ -0,0 +1,46 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { allOperationsOf } from '../../ir/model.js';
3
+ import { nativeSelectionBody } from './emit-native-selection.js';
4
+ import { cppTypeOf } from './types.js';
5
+ /** Count certified IR uses before rendering; helper selection never changes conversion authority. */
6
+ export const nativeSelectionHelpersForUses = (nodes) => {
7
+ const uses = new Map();
8
+ for (const node of nodes) {
9
+ const existing = uses.get(node.id);
10
+ if (existing)
11
+ existing.count++;
12
+ else
13
+ uses.set(node.id, { node, count: 1 });
14
+ }
15
+ const result = new Map();
16
+ for (const { node, count } of uses.values()) {
17
+ if (count < 2 || (node.capability.kind !== 'atom' && node.capability.kind !== 'static'))
18
+ continue;
19
+ const recipe = node.capability.materializer.nativeSelection;
20
+ if (!recipe)
21
+ continue;
22
+ const body = nativeSelectionBody(recipe, node.source, node.target);
23
+ if (body === null || body.length < 1024)
24
+ continue;
25
+ const name = `gea_native_selection_${createHash('sha256').update(node.id).digest('hex')}`;
26
+ const signature = `${cppTypeOf(node.target)} ${name}(const ${cppTypeOf(node.source)}& gea_selection)`;
27
+ result.set(node.id, { name, declaration: `${signature};`, definition: `${signature} { ${body} }` });
28
+ }
29
+ return result;
30
+ };
31
+ export const nativeSelectionHelpers = (bodies, census) => {
32
+ function* nodes() {
33
+ for (const body of bodies) {
34
+ for (const block of body.blocks.values()) {
35
+ for (const operation of allOperationsOf(block)) {
36
+ if (operation.kind !== 'convert')
37
+ continue;
38
+ const node = census.nodeById(operation.conversionUse);
39
+ if (node)
40
+ yield node;
41
+ }
42
+ }
43
+ }
44
+ }
45
+ return nativeSelectionHelpersForUses(nodes());
46
+ };
@@ -0,0 +1,8 @@
1
+ import type { Representation } from '../../representation/model.js';
2
+ import { type EmitContext } from './emit-context.js';
3
+ /** A fixed symbol key needs a known runtime identity to participate in own-key
4
+ * enumeration. Typed symbol indexes already retain their actual evaluated keys.
5
+ * This checks the same sealed layouts used to emit the protocol, including base
6
+ * storage, so unsupported class/accessor keys cannot disappear from ownKeys.
7
+ */
8
+ export declare const unaddressableNativeSymbolKeyOf: (ctx: EmitContext, representation: Representation) => string | null;
@@ -0,0 +1,34 @@
1
+ import { wellKnownSymbolMemberOfKey } from './emit-context.js';
2
+ import { cppRecordFieldKeyIsSymbol } from './types.js';
3
+ /** A fixed symbol key needs a known runtime identity to participate in own-key
4
+ * enumeration. Typed symbol indexes already retain their actual evaluated keys.
5
+ * This checks the same sealed layouts used to emit the protocol, including base
6
+ * storage, so unsupported class/accessor keys cannot disappear from ownKeys.
7
+ */
8
+ export const unaddressableNativeSymbolKeyOf = (ctx, representation) => {
9
+ const unsupported = (keys) => keys.find((entry) => cppRecordFieldKeyIsSymbol(entry.key) && wellKnownSymbolMemberOfKey(ctx.wellKnownSymbols, entry.key) === null)
10
+ ?.key ?? null;
11
+ const shape = (id) => unsupported(ctx.layouts.forShape(id) ?? []) ?? unsupported(ctx.layouts.accessorsForShape?.(id) ?? []);
12
+ const visited = new Set();
13
+ const classKey = (declaration) => {
14
+ if (visited.has(declaration))
15
+ return null;
16
+ visited.add(declaration);
17
+ const layout = ctx.classes.get(declaration);
18
+ if (!layout)
19
+ return null;
20
+ return ((layout.instance?.kind === 'class-ref' ? shape(layout.instance.shapeId) : null) ??
21
+ unsupported(layout.accessors) ??
22
+ (layout.base ? classKey(layout.base) : null) ??
23
+ (layout.nativeBase ? shape(layout.nativeBase.instance.shapeId) : null));
24
+ };
25
+ if (representation.kind === 'class-ref')
26
+ return classKey(representation.declaration);
27
+ if (representation.kind === 'record')
28
+ return unsupported(representation.fields) ?? unsupported(representation.accessors);
29
+ if (representation.kind === 'record-with-index')
30
+ return unsupported(representation.fields);
31
+ if (representation.kind === 'native-record-ref' && representation.native === null)
32
+ return shape(representation.shapeId);
33
+ return null;
34
+ };
@@ -0,0 +1,43 @@
1
+ import type { FunctionId, RegionId } from '../../identity/ids.js';
2
+ /**
3
+ * The sealed `ExecutableBodyOwnershipReport` (architecture.md, "Definition of
4
+ * done"). Every source executable region must be recorded exactly once before
5
+ * any class header or module body renders: a legacy class method, accessor,
6
+ * constructor, static-field initializer, or static block acquires its exact
7
+ * lease before it emits source AST as C++, and a typed-IR member forwarder or
8
+ * elided/structural region never competes for the same lease. This module is
9
+ * the only place that lease bookkeeping happens.
10
+ */
11
+ /**
12
+ * A source executable region eligible to emit: a callable member keyed by its
13
+ * checker-stable `FunctionId`, or a class static-lifecycle region keyed by its
14
+ * censused `RegionId`. There is no third owner kind -- widening this union is
15
+ * how a region could be recorded that admits no exact identity.
16
+ */
17
+ export type ExecutableBodyOwner = FunctionId | RegionId;
18
+ /**
19
+ * An opaque handle. The real ledger lives in a module-private `WeakMap`, not
20
+ * on the handle itself, so no caller can inspect, copy, or reconstruct
21
+ * ownership state by holding a reference to the report -- the only way to
22
+ * affect a lease is through `acquireLease`/`spendLease` below. In particular,
23
+ * there is no function here that derives a lease or an owner from generated
24
+ * C++ text: ownership is recorded once, from the identity that authored the
25
+ * region, and never re-discovered from what that region rendered.
26
+ */
27
+ export interface ExecutableBodyOwnershipReport {
28
+ readonly brand: 'ExecutableBodyOwnershipReport';
29
+ }
30
+ export declare const createOwnershipReport: () => ExecutableBodyOwnershipReport;
31
+ /**
32
+ * Records a region exactly once. A second acquisition for the same owner --
33
+ * even after its lease has already been spent -- means two emission sites
34
+ * believe they own one source region, which the sealed boundary must never
35
+ * allow silently.
36
+ */
37
+ export declare const acquireLease: (report: ExecutableBodyOwnershipReport, owner: ExecutableBodyOwner) => void;
38
+ /**
39
+ * Consumes the lease immediately before the owner's C++ actually renders.
40
+ * Spending an unacquired or already-spent lease names the exact owner, so the
41
+ * defect is traceable to one region instead of a class of them.
42
+ */
43
+ export declare const spendLease: (report: ExecutableBodyOwnershipReport, owner: ExecutableBodyOwner) => void;
@@ -0,0 +1,38 @@
1
+ const ledgers = new WeakMap();
2
+ export const createOwnershipReport = () => {
3
+ const report = { brand: 'ExecutableBodyOwnershipReport' };
4
+ ledgers.set(report, new Map());
5
+ return report;
6
+ };
7
+ const ledgerOf = (report) => {
8
+ const ledger = ledgers.get(report);
9
+ if (!ledger)
10
+ throw new Error('ownership report was not created by createOwnershipReport');
11
+ return ledger;
12
+ };
13
+ /**
14
+ * Records a region exactly once. A second acquisition for the same owner --
15
+ * even after its lease has already been spent -- means two emission sites
16
+ * believe they own one source region, which the sealed boundary must never
17
+ * allow silently.
18
+ */
19
+ export const acquireLease = (report, owner) => {
20
+ const ledger = ledgerOf(report);
21
+ if (ledger.has(owner))
22
+ throw new Error(`executable body owner ${owner} already recorded; a region may acquire its lease exactly once`);
23
+ ledger.set(owner, 'acquired');
24
+ };
25
+ /**
26
+ * Consumes the lease immediately before the owner's C++ actually renders.
27
+ * Spending an unacquired or already-spent lease names the exact owner, so the
28
+ * defect is traceable to one region instead of a class of them.
29
+ */
30
+ export const spendLease = (report, owner) => {
31
+ const ledger = ledgerOf(report);
32
+ const state = ledger.get(owner);
33
+ if (state === undefined)
34
+ throw new Error(`executable body owner ${owner} has no acquired lease to spend`);
35
+ if (state === 'spent')
36
+ throw new Error(`executable body owner ${owner} lease was already spent`);
37
+ ledger.set(owner, 'spent');
38
+ };
@@ -0,0 +1,14 @@
1
+ import type { IrOperand } from '../../ir/model.js';
2
+ import type { Representation } from '../../representation/model.js';
3
+ import type { EmitContext } from './emit-context.js';
4
+ /** The string-to-dynamic recipe constructs one owned payload from its input.
5
+ * Moving the finished conversion is too late: its static_cast<std::string>
6
+ * already copied the input. Transfer a dying input into that same certified
7
+ * recipe instead. This changes ownership, never which conversion is selected.
8
+ *
9
+ * Do not generalize this to arbitrary recipes: sum classification, structural
10
+ * projection and user-visible conversions may inspect their input repeatedly.
11
+ * Use the same liveness/physical-storage proof as ordinary moves: deferred
12
+ * expressions and values needed by later iterations cannot be donated, and
13
+ * a const borrowed formal still copies when bound to the owning payload. */
14
+ export declare const owningConversionInputText: (ctx: EmitContext, source: IrOperand, target: Representation, text: string) => string;
@@ -0,0 +1,12 @@
1
+ import { movedValueText } from './emit-narrowing.js';
2
+ /** The string-to-dynamic recipe constructs one owned payload from its input.
3
+ * Moving the finished conversion is too late: its static_cast<std::string>
4
+ * already copied the input. Transfer a dying input into that same certified
5
+ * recipe instead. This changes ownership, never which conversion is selected.
6
+ *
7
+ * Do not generalize this to arbitrary recipes: sum classification, structural
8
+ * projection and user-visible conversions may inspect their input repeatedly.
9
+ * Use the same liveness/physical-storage proof as ordinary moves: deferred
10
+ * expressions and values needed by later iterations cannot be donated, and
11
+ * a const borrowed formal still copies when bound to the owning payload. */
12
+ export const owningConversionInputText = (ctx, source, target, text) => source.representation.kind === 'string' && target.kind === 'dynamic' ? movedValueText(ctx, source, source.representation, text) : text;