@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,61 @@
1
+ import type { DeclarationId, FunctionId } from '../identity/ids.js';
2
+ import type { CallableAbi } from '../representation/model.js';
3
+ /**
4
+ * The identity of one extra calling convention over `declaration`.
5
+ *
6
+ * `identity/ids.ts` mints every real `FunctionId` from a declaration alone
7
+ * (`functionId`), because an ordinary function has exactly one: the
8
+ * convention its own parameter list states. An extra convention is not that
9
+ * function -- calling it with the ordinary convention's frame would read
10
+ * arguments nobody pushed -- so it needs its own identity, and this compiler
11
+ * has no declaration to mint one from: nothing in the checked program is the
12
+ * extra convention. What it does have is the declaration the convention is
13
+ * *about*, which is real and already sealed, plus whatever the caller uses to
14
+ * tell two extra conventions on one declaration apart. Keying on both is what
15
+ * makes the result stable (the same inputs always mint the same identity),
16
+ * reproducible (any later reader with the same two facts can recompute it
17
+ * independently), and collision-free with the declaration's own convention:
18
+ * `functionId(declaration)` alone is never a valid identity here, because
19
+ * `synthesizedFunctionId` always appends a field after it, and an ordinary
20
+ * `FunctionId` never has one.
21
+ *
22
+ * Built from a file path, a source position, or generated text, this would
23
+ * silently change identity every time the program was reformatted or a
24
+ * function moved in the file -- the exact failure this compiler's identity
25
+ * scheme (`identity/ids.ts`'s own module comment) exists to rule out
26
+ * everywhere else. `declaration` and `discriminator` are the only two inputs
27
+ * to guarantee that outcome cannot happen here either.
28
+ */
29
+ export declare const synthesizedFunctionId: (declaration: DeclarationId, discriminator: string) => FunctionId;
30
+ /** One caller-supplied statement: "this declaration also has this convention, distinguished by this discriminator". */
31
+ export interface SynthesizedAbiRequest {
32
+ readonly declaration: DeclarationId;
33
+ /** Distinguishes two extra conventions the caller wants on the same declaration; opaque to this file. */
34
+ readonly discriminator: string;
35
+ readonly abi: CallableAbi;
36
+ }
37
+ /** Two requests named the same declaration and discriminator but disagreed about the convention. */
38
+ export interface SynthesizedAbiConflict {
39
+ readonly declaration: DeclarationId;
40
+ readonly discriminator: string;
41
+ readonly reason: string;
42
+ }
43
+ export interface SynthesizedAbiProjection {
44
+ readonly abis: ReadonlyMap<FunctionId, CallableAbi>;
45
+ readonly conflicts: readonly SynthesizedAbiConflict[];
46
+ }
47
+ /**
48
+ * Keys every request by its identity and publishes the map.
49
+ *
50
+ * A repeated `(declaration, discriminator)` pair is not an error by itself --
51
+ * two callers, or one caller building its request list twice, may legitimately
52
+ * agree -- so it is accepted silently when the two `CallableAbi`s are the same
53
+ * convention (`abiKey` equal). Two *different* conventions asking to be the
54
+ * same identity is the one case this must not let through in silence: the
55
+ * `FunctionId` the map ends up publishing for that identity would depend on
56
+ * request order, which is exactly the "one operation, one authoritative
57
+ * result" invariant every other publication step in this compiler enforces,
58
+ * so a conflict is reported here rather than resolved by whichever request
59
+ * happened to run last.
60
+ */
61
+ export declare const projectSynthesizedAbis: (requests: readonly SynthesizedAbiRequest[]) => SynthesizedAbiProjection;
@@ -0,0 +1,94 @@
1
+ import { functionId } from '../identity/ids.js';
2
+ import { abiKey } from '../representation/model.js';
3
+ /**
4
+ * Publishing an extra calling convention for a declaration that already has
5
+ * one.
6
+ *
7
+ * An ordinary function's calling convention is derived, not stated: the plan
8
+ * selects a carrier for its `function-object` allocation, and `projectAbis`
9
+ * (`projection/abi.ts`) reads that carrier back as the one true ABI for the
10
+ * one identity `functionId` mints from its declaration. That is correct for
11
+ * every convention the program itself wrote, and it is exactly why it cannot
12
+ * be the whole answer: nothing in a checked program is obligated to write
13
+ * every convention a caller of this compiler might need. Something composing
14
+ * this compiler into a larger tool may know -- from information this compiler
15
+ * has no way to see, because it is not TypeScript -- that a given declaration
16
+ * is also reachable through one or more *additional* conventions the checked
17
+ * source never spells out. This compiler cannot derive such a convention
18
+ * (there is nothing in the program to derive it from), cannot name why it
19
+ * exists (that reason lives entirely outside a checked program), and must not
20
+ * guess at one either -- so it does neither. It only does the one part that
21
+ * is genuinely generic: given a convention already built by the caller, key
22
+ * it so it is addressable, stable across runs, and never confusable with the
23
+ * declaration's own ordinary convention or with a different caller's.
24
+ *
25
+ * That is the whole of this file. It has no notion of what an extra
26
+ * convention is *for*, does not decide which declarations get one, and does
27
+ * not build one from a declaration's shape -- all three are the caller's
28
+ * business, supplied as data (a `DeclarationId`, a `discriminator`, and an
29
+ * already-built `CallableAbi`) rather than inferred here. Nothing here is
30
+ * called during an ordinary compilation; it exists to be called by whichever
31
+ * later caller has that information, unconditionally on it, if any ever does.
32
+ */
33
+ /** Escapes this identity's own field separator, exactly as `identity/ids.ts`'s own (unexported) `encode` does. */
34
+ const encode = (part) => part.replace(/[|]/g, '%7C');
35
+ /**
36
+ * The identity of one extra calling convention over `declaration`.
37
+ *
38
+ * `identity/ids.ts` mints every real `FunctionId` from a declaration alone
39
+ * (`functionId`), because an ordinary function has exactly one: the
40
+ * convention its own parameter list states. An extra convention is not that
41
+ * function -- calling it with the ordinary convention's frame would read
42
+ * arguments nobody pushed -- so it needs its own identity, and this compiler
43
+ * has no declaration to mint one from: nothing in the checked program is the
44
+ * extra convention. What it does have is the declaration the convention is
45
+ * *about*, which is real and already sealed, plus whatever the caller uses to
46
+ * tell two extra conventions on one declaration apart. Keying on both is what
47
+ * makes the result stable (the same inputs always mint the same identity),
48
+ * reproducible (any later reader with the same two facts can recompute it
49
+ * independently), and collision-free with the declaration's own convention:
50
+ * `functionId(declaration)` alone is never a valid identity here, because
51
+ * `synthesizedFunctionId` always appends a field after it, and an ordinary
52
+ * `FunctionId` never has one.
53
+ *
54
+ * Built from a file path, a source position, or generated text, this would
55
+ * silently change identity every time the program was reformatted or a
56
+ * function moved in the file -- the exact failure this compiler's identity
57
+ * scheme (`identity/ids.ts`'s own module comment) exists to rule out
58
+ * everywhere else. `declaration` and `discriminator` are the only two inputs
59
+ * to guarantee that outcome cannot happen here either.
60
+ */
61
+ export const synthesizedFunctionId = (declaration, discriminator) => `${functionId(declaration)}|${encode(discriminator)}`;
62
+ /**
63
+ * Keys every request by its identity and publishes the map.
64
+ *
65
+ * A repeated `(declaration, discriminator)` pair is not an error by itself --
66
+ * two callers, or one caller building its request list twice, may legitimately
67
+ * agree -- so it is accepted silently when the two `CallableAbi`s are the same
68
+ * convention (`abiKey` equal). Two *different* conventions asking to be the
69
+ * same identity is the one case this must not let through in silence: the
70
+ * `FunctionId` the map ends up publishing for that identity would depend on
71
+ * request order, which is exactly the "one operation, one authoritative
72
+ * result" invariant every other publication step in this compiler enforces,
73
+ * so a conflict is reported here rather than resolved by whichever request
74
+ * happened to run last.
75
+ */
76
+ export const projectSynthesizedAbis = (requests) => {
77
+ const abis = new Map();
78
+ const conflicts = [];
79
+ for (const request of requests) {
80
+ const id = synthesizedFunctionId(request.declaration, request.discriminator);
81
+ const existing = abis.get(id);
82
+ if (existing && abiKey(existing) !== abiKey(request.abi)) {
83
+ conflicts.push({
84
+ declaration: request.declaration,
85
+ discriminator: request.discriminator,
86
+ reason: `two requests name declaration ${request.declaration} under discriminator "${request.discriminator}" with different ` +
87
+ `calling conventions: "${abiKey(existing)}" and "${abiKey(request.abi)}"`
88
+ });
89
+ continue;
90
+ }
91
+ abis.set(id, request.abi);
92
+ }
93
+ return { abis, conflicts: Object.freeze(conflicts) };
94
+ };
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Whether a key's known constant text spells a canonical array index --
3
+ * ECMA-262 6.1.7's own definition, the same one `gea::ArrayObject::isIndex`
4
+ * applies at runtime for a key that is not a compile-time constant.
5
+ *
6
+ * `keyOf` (semantics/normalize/producers/properties.ts) records a numeric
7
+ * *and* a string literal key identically -- `ToPropertyKey` turns `0` into the
8
+ * String `"0"`, so `a[0]` and `a["0"]` reach here as the same constant text --
9
+ * which means a constant key on an Array is never provably "not an index" by
10
+ * its syntax alone; the value has to be parsed the same way a computed key's
11
+ * runtime value would be, so a literal and a computed key never disagree on
12
+ * whether the same value is an index.
13
+ */
14
+ export declare const canonicalIndexLiteral: (text: string) => string | null;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Whether a key's known constant text spells a canonical array index --
3
+ * ECMA-262 6.1.7's own definition, the same one `gea::ArrayObject::isIndex`
4
+ * applies at runtime for a key that is not a compile-time constant.
5
+ *
6
+ * `keyOf` (semantics/normalize/producers/properties.ts) records a numeric
7
+ * *and* a string literal key identically -- `ToPropertyKey` turns `0` into the
8
+ * String `"0"`, so `a[0]` and `a["0"]` reach here as the same constant text --
9
+ * which means a constant key on an Array is never provably "not an index" by
10
+ * its syntax alone; the value has to be parsed the same way a computed key's
11
+ * runtime value would be, so a literal and a computed key never disagree on
12
+ * whether the same value is an index.
13
+ */
14
+ export const canonicalIndexLiteral = (text) => {
15
+ const value = Number(text);
16
+ return Number.isInteger(value) && value >= 0 && value < 4294967295 && String(value) === text ? text : null;
17
+ };
@@ -0,0 +1,3 @@
1
+ import type { Representation } from './model.js';
2
+ /** These carriers preserve a Function object's shared property-table identity. */
3
+ export declare const isNativeCallableCarrier: (kind: Representation["kind"]) => boolean;
@@ -0,0 +1,6 @@
1
+ /** These carriers preserve a Function object's shared property-table identity. */
2
+ export const isNativeCallableCarrier = (kind) => kind === 'function' ||
3
+ kind === 'function-family' ||
4
+ kind === 'function-value-family' ||
5
+ kind === 'function-value-dispatch' ||
6
+ kind === 'function-and-constructor';
@@ -0,0 +1,84 @@
1
+ import type { StructuralTypeId } from '../identity/ids.js';
2
+ import type { StructuralShape } from '../semantics/model/structural-types.js';
3
+ import type { Representation } from './model.js';
4
+ import type { KeyedCollectionFamily, OwnershipPolicy } from './policies.js';
5
+ /**
6
+ * The carrier for the language's four keyed collections.
7
+ *
8
+ * Its own module rather than a case inside `derive.ts` for the architecture
9
+ * gate's 800-line ceiling, and it stays one function: `derive.ts`'s
10
+ * `'declared'` case hands it the already-resolved family plus the two things
11
+ * it cannot compute for itself -- the deriver's stored-position carrier (which
12
+ * is recursive, and belongs to the deriver's own memo/cycle bookkeeping) and
13
+ * the ownership policy.
14
+ */
15
+ /**
16
+ * Whether a carrier is physically a POINTER, so two values of it can be
17
+ * compared by reference identity.
18
+ *
19
+ * The question a weak collection asks of its key, and the only honest way to
20
+ * ask it here: `targets/cpp/types.ts`'s `cppOwnershipWrap` spells exactly
21
+ * these kinds as `std::shared_ptr<...>` when their own ownership is
22
+ * `shared-refcount`, and spells them as a bare value otherwise -- so the
23
+ * ownership is as load-bearing as the kind. A `record` held `owned` is a
24
+ * struct by value, and two copies of it are two objects with two addresses;
25
+ * using one as a weak key would look up a different entry every time.
26
+ * A tagged union qualifies only when every arm qualifies: its discriminant
27
+ * selects one arm's pointer without changing that object's identity.
28
+ *
29
+ * Stated here rather than in `model.ts` beside `alwaysTruthyKinds` because it
30
+ * is a fact about one BACKEND's spelling, and a target that carried these
31
+ * kinds differently would need a different answer. It is enforced at
32
+ * derivation rather than at emission for the ordinary fail-closed reason: a
33
+ * `WeakMap<number, T>` has no correct lowering at all, so it must never reach
34
+ * a certificate.
35
+ */
36
+ export declare const hasReferenceIdentity: (representation: Representation) => boolean;
37
+ /**
38
+ * `Map<K, V>` / `Set<T>` / `WeakMap<K, V>` / `WeakSet<T>` over the concrete
39
+ * key and value carriers, or a NAMED refusal.
40
+ *
41
+ * This is the port of v1's `typedJsCollectionCarrierRule`
42
+ * (`compiler/packages/geatsc/src/targets/cpp/driver/type-carriers/typed-js-collections.ts`),
43
+ * and it keeps that rule's three real decisions:
44
+ *
45
+ * - all-or-nothing over the type arguments, exactly like `records.ts` /
46
+ * `unions.ts` / `arrays.ts` there and `deriveTuple` here: one argument
47
+ * that proves no carrier refuses the whole collection rather than
48
+ * half-sealing it;
49
+ * - the key is the strict position. It participates in the collection's own
50
+ * SameValueZero comparison, so a key with no proven equality has no
51
+ * proven lookup;
52
+ * - a Set/WeakSet's element is a key, not a payload, and is held to the
53
+ * same standard.
54
+ *
55
+ * A `dynamic` key or value RESOLVES here, and that is deliberate. `dynamic`
56
+ * is not a box over a static type -- `deriveStored` reaches it only for a
57
+ * position the program itself declared `any`/`unknown` and never narrowed,
58
+ * which is a genuine dynamic boundary and gets the real dynamic carrier. The
59
+ * one thing that must never happen is the reverse: a key or value the program
60
+ * DID give a type to must stay that type, and it does, because nothing here
61
+ * widens. Refusing the declared-`any` case instead was measurably wrong --
62
+ * `unresolved` is lattice bottom ("normalization could not name the shape"),
63
+ * so stating it for a shape that is perfectly well named made every consumer
64
+ * downstream fail closed on a carrier that had an answer; it accounted for
65
+ * 107 of 133 unmet obligations in the reactive runtime on its own. The C++
66
+ * side of admitting it is three explicit specializations in
67
+ * `runtime/gea_runtime.h` -- `sameValueZero<Value>`, `canonicalKey<Value>`
68
+ * and `weakKeySame<Value>` -- so a dynamic key is compared by the SAME
69
+ * ECMA-262 rules a static one is, not by a looser stand-in.
70
+ *
71
+ * The type-argument COUNT is checked against the family rather than assumed:
72
+ * a `Map` reached in its open generic form (the library's own declaration,
73
+ * which has type PARAMETERS and no arguments) has nothing concrete to
74
+ * specialize over, and mistaking that for a zero-argument instantiation is
75
+ * how a carrier for "some Map" would get minted. Same guard as v1's
76
+ * `checkerArguments.length !== TYPE_ARGUMENT_COUNT[family]`.
77
+ */
78
+ export declare const deriveKeyedCollection: (family: KeyedCollectionFamily, shape: Extract<StructuralShape, {
79
+ kind: "declared";
80
+ }>,
81
+ /** The interned identity of `shape`, which the ownership policy is keyed by. */
82
+ id: StructuralTypeId,
83
+ /** The deriver's own stored-position carrier for one type id -- see `derive.ts`'s `deriveStored`. */
84
+ deriveStored: (id: StructuralTypeId) => Representation, ownership: OwnershipPolicy) => Representation;
@@ -0,0 +1,139 @@
1
+ import { representationKey } from './model.js';
2
+ import { unresolved } from './primitives.js';
3
+ /**
4
+ * The carrier for the language's four keyed collections.
5
+ *
6
+ * Its own module rather than a case inside `derive.ts` for the architecture
7
+ * gate's 800-line ceiling, and it stays one function: `derive.ts`'s
8
+ * `'declared'` case hands it the already-resolved family plus the two things
9
+ * it cannot compute for itself -- the deriver's stored-position carrier (which
10
+ * is recursive, and belongs to the deriver's own memo/cycle bookkeeping) and
11
+ * the ownership policy.
12
+ */
13
+ /**
14
+ * Whether a carrier is physically a POINTER, so two values of it can be
15
+ * compared by reference identity.
16
+ *
17
+ * The question a weak collection asks of its key, and the only honest way to
18
+ * ask it here: `targets/cpp/types.ts`'s `cppOwnershipWrap` spells exactly
19
+ * these kinds as `std::shared_ptr<...>` when their own ownership is
20
+ * `shared-refcount`, and spells them as a bare value otherwise -- so the
21
+ * ownership is as load-bearing as the kind. A `record` held `owned` is a
22
+ * struct by value, and two copies of it are two objects with two addresses;
23
+ * using one as a weak key would look up a different entry every time.
24
+ * A tagged union qualifies only when every arm qualifies: its discriminant
25
+ * selects one arm's pointer without changing that object's identity.
26
+ *
27
+ * Stated here rather than in `model.ts` beside `alwaysTruthyKinds` because it
28
+ * is a fact about one BACKEND's spelling, and a target that carried these
29
+ * kinds differently would need a different answer. It is enforced at
30
+ * derivation rather than at emission for the ordinary fail-closed reason: a
31
+ * `WeakMap<number, T>` has no correct lowering at all, so it must never reach
32
+ * a certificate.
33
+ */
34
+ export const hasReferenceIdentity = (representation) => {
35
+ if (representation.kind === 'tagged-union')
36
+ return representation.arms.every((arm) => hasReferenceIdentity(arm.value));
37
+ switch (representation.kind) {
38
+ case 'class-ref':
39
+ case 'record':
40
+ case 'record-with-index':
41
+ case 'native-record-ref':
42
+ case 'array-object':
43
+ case 'dictionary':
44
+ case 'typed-array':
45
+ case 'array-buffer':
46
+ case 'shared-array-buffer':
47
+ case 'data-view':
48
+ case 'keyed-collection':
49
+ return representation.ownership === 'shared-refcount';
50
+ // A `dynamic` key is admitted, and `gea::Value::identity()` is why: it is
51
+ // the address of the held payload, which for an object-tagged box is
52
+ // exactly the reference identity ECMA-262 asks for, shared by every box
53
+ // of that same object. `weakKeySame<Value>` in `runtime/gea_runtime.h`
54
+ // reads it. The divergence, stated rather than hidden: a box holding a
55
+ // PRIMITIVE has a per-box address, so `weakMap.has(1)` answers `false`
56
+ // where ECMA-262 24.3.3.3 throws a TypeError -- a wrong answer only for a
57
+ // program that is already illegal, and the alternative was to refuse
58
+ // `WeakMap<object, T>` outright, since `object` carries dynamically.
59
+ case 'dynamic':
60
+ return true;
61
+ default:
62
+ return false;
63
+ }
64
+ };
65
+ /**
66
+ * `Map<K, V>` / `Set<T>` / `WeakMap<K, V>` / `WeakSet<T>` over the concrete
67
+ * key and value carriers, or a NAMED refusal.
68
+ *
69
+ * This is the port of v1's `typedJsCollectionCarrierRule`
70
+ * (`compiler/packages/geatsc/src/targets/cpp/driver/type-carriers/typed-js-collections.ts`),
71
+ * and it keeps that rule's three real decisions:
72
+ *
73
+ * - all-or-nothing over the type arguments, exactly like `records.ts` /
74
+ * `unions.ts` / `arrays.ts` there and `deriveTuple` here: one argument
75
+ * that proves no carrier refuses the whole collection rather than
76
+ * half-sealing it;
77
+ * - the key is the strict position. It participates in the collection's own
78
+ * SameValueZero comparison, so a key with no proven equality has no
79
+ * proven lookup;
80
+ * - a Set/WeakSet's element is a key, not a payload, and is held to the
81
+ * same standard.
82
+ *
83
+ * A `dynamic` key or value RESOLVES here, and that is deliberate. `dynamic`
84
+ * is not a box over a static type -- `deriveStored` reaches it only for a
85
+ * position the program itself declared `any`/`unknown` and never narrowed,
86
+ * which is a genuine dynamic boundary and gets the real dynamic carrier. The
87
+ * one thing that must never happen is the reverse: a key or value the program
88
+ * DID give a type to must stay that type, and it does, because nothing here
89
+ * widens. Refusing the declared-`any` case instead was measurably wrong --
90
+ * `unresolved` is lattice bottom ("normalization could not name the shape"),
91
+ * so stating it for a shape that is perfectly well named made every consumer
92
+ * downstream fail closed on a carrier that had an answer; it accounted for
93
+ * 107 of 133 unmet obligations in the reactive runtime on its own. The C++
94
+ * side of admitting it is three explicit specializations in
95
+ * `runtime/gea_runtime.h` -- `sameValueZero<Value>`, `canonicalKey<Value>`
96
+ * and `weakKeySame<Value>` -- so a dynamic key is compared by the SAME
97
+ * ECMA-262 rules a static one is, not by a looser stand-in.
98
+ *
99
+ * The type-argument COUNT is checked against the family rather than assumed:
100
+ * a `Map` reached in its open generic form (the library's own declaration,
101
+ * which has type PARAMETERS and no arguments) has nothing concrete to
102
+ * specialize over, and mistaking that for a zero-argument instantiation is
103
+ * how a carrier for "some Map" would get minted. Same guard as v1's
104
+ * `checkerArguments.length !== TYPE_ARGUMENT_COUNT[family]`.
105
+ */
106
+ export const deriveKeyedCollection = (family, shape,
107
+ /** The interned identity of `shape`, which the ownership policy is keyed by. */
108
+ id,
109
+ /** The deriver's own stored-position carrier for one type id -- see `derive.ts`'s `deriveStored`. */
110
+ deriveStored, ownership) => {
111
+ const pair = family === 'map' || family === 'weak-map';
112
+ const expected = pair ? 2 : 1;
113
+ if (shape.typeArguments.length !== expected) {
114
+ return unresolved(`${family} reached representation with ${shape.typeArguments.length} type argument(s) and needs exactly ${expected}`);
115
+ }
116
+ // `deriveStored`, not `derive`: both positions are STORED inside the
117
+ // collection, so they take the same storage promotion every record field
118
+ // and array element takes. v1 spelled this as its own
119
+ // `typedJsCollectionMapValueCarrier`/`typedJsCollectionSetElementCarrier`
120
+ // promotion for the identical reason (a record or callable held in a
121
+ // collection has exactly one legal physical storage form).
122
+ const key = deriveStored(shape.typeArguments[0]);
123
+ const value = pair ? deriveStored(shape.typeArguments[1]) : null;
124
+ if (key.kind === 'unresolved')
125
+ return unresolved(`a ${family} key carries no representation: ${key.reason}`);
126
+ if (value?.kind === 'unresolved')
127
+ return unresolved(`a ${family} value carries no representation: ${value.reason}`);
128
+ // A weak collection's key must be a REFERENCE. ECMA-262 24.3/24.4 admit
129
+ // only objects (and, since ES2023, unregistered symbols) as weak keys, and
130
+ // this runtime's weak families compare keys by pointer identity -- so a
131
+ // key carried by value (a `double`, a `std::string`) has no pointer to
132
+ // compare and would silently become an ordinary equality map wearing the
133
+ // weak name. See `gea::WeakMap` in `runtime/gea_runtime.h`.
134
+ if ((family === 'weak-map' || family === 'weak-set') && !hasReferenceIdentity(key)) {
135
+ return unresolved(`a ${family} key carried as "${representationKey(key)}" has no reference identity; ECMA-262 24.3/24.4 admit only ` +
136
+ 'objects as weak keys, and this runtime compares a weak key by pointer');
137
+ }
138
+ return { kind: 'keyed-collection', family, key, value, ownership: ownership.forShape(shape, id) };
139
+ };
@@ -0,0 +1,159 @@
1
+ import type { FunctionId, StructuralTypeId } from '../identity/ids.js';
2
+ import { type SelectedSignature } from '../semantics/model/selected-signature.js';
3
+ import type { SignatureShape, StructuralType } from '../semantics/model/structural-types.js';
4
+ import type { CallableAbi, Representation } from './model.js';
5
+ import type { DateDeclarationPolicy, HostBindingPolicy, HostNamespaceRootPolicy, KeyedCollectionPolicy, OwnershipPolicy, PromiseDeclarationPolicy, GeneratorDeclarationPolicy, RegExpDeclarationPolicy, StandardBufferPolicy, StringObjectDeclarationPolicy, ErrorDeclarationPolicy, FunctionDeclarationPolicy, ClassHeritagePolicy, ClassCopyPolicy, InterfaceImplementorPolicy, TypedArrayElementPolicy, ValueRecordPolicy } from './policies.js';
6
+ import { defaultClassCopyPolicy, defaultDateDeclarationPolicy, defaultHostBindingPolicy, defaultHostNamespaceRootPolicy, defaultKeyedCollectionPolicy, defaultOwnershipPolicy, defaultPromiseDeclarationPolicy, defaultGeneratorDeclarationPolicy, defaultRegExpDeclarationPolicy, defaultStandardBufferPolicy, defaultStringObjectDeclarationPolicy, defaultErrorDeclarationPolicy, defaultFunctionDeclarationPolicy, defaultClassHeritagePolicy, defaultInterfaceImplementorPolicy, defaultTypedArrayElementPolicy, defaultValueRecordPolicy } from './policies.js';
7
+ export type { DateDeclarationPolicy, HostBindingPolicy, HostNamespaceRootPolicy, HostProtocolBinding, KeyedCollectionFamily, KeyedCollectionPolicy, OwnershipPolicy, PromiseDeclarationPolicy, GeneratorDeclarationPolicy, RegExpDeclarationBinding, RegExpDeclarationKind, RegExpDeclarationPolicy, StandardBufferKind, StandardBufferPolicy, StringObjectDeclarationPolicy, ErrorDeclarationPolicy, FunctionDeclarationPolicy, ClassHeritagePolicy, ClassCopyPolicy, InterfaceImplementorPolicy, TypedArrayElementPolicy, ValueRecordPolicy } from './policies.js';
8
+ export { defaultClassCopyPolicy, defaultDateDeclarationPolicy, defaultHostBindingPolicy, defaultHostNamespaceRootPolicy, defaultKeyedCollectionPolicy, defaultOwnershipPolicy, defaultPromiseDeclarationPolicy, defaultGeneratorDeclarationPolicy, defaultRegExpDeclarationPolicy, defaultStandardBufferPolicy, defaultStringObjectDeclarationPolicy, defaultErrorDeclarationPolicy, defaultFunctionDeclarationPolicy, defaultClassHeritagePolicy, defaultInterfaceImplementorPolicy, defaultTypedArrayElementPolicy, defaultValueRecordPolicy };
9
+ /**
10
+ * Selecting a physical carrier for a canonical structural shape.
11
+ *
12
+ * This is the only place a shape becomes a carrier, and it reads nothing but the
13
+ * sealed structural table. It never consults the AST, a name, or a print form:
14
+ * if a carrier cannot be selected from the shape alone, the shape did not carry
15
+ * enough and the answer is `unresolved` with a reason, never a guess.
16
+ * `unresolved` here is not failure -- it is the fail-closed answer that stops a
17
+ * half-known value from reaching materialization. The opt-in fallback also
18
+ * admits runtime-erased type expressions and proxy-connected types, selected
19
+ * before publication. Missing structure remains unresolved in both modes.
20
+ */
21
+ export interface RepresentationDeriver {
22
+ readonly dynamicFallback?: boolean;
23
+ readonly derive: (type: StructuralTypeId) => Representation;
24
+ /**
25
+ * The LAYOUT a shape id names, for a lookup that holds a `native-record-ref`
26
+ * (or a `class-ref`, or a tuple's shape) and needs its fields -- as opposed
27
+ * to `derive`, which is the carrier a VALUE of that type occupies. For every
28
+ * shape but one the two are the same answer. The exception is an anonymous
29
+ * record that contains itself (`nameSelfReferencedRecord`): `derive` spells
30
+ * it by name at every value position so its key does not depend on walk
31
+ * order, and this is where its record definition is still served from.
32
+ * Every "what fields does this shape have" question must ask here, never
33
+ * `derive`, or it reads the name back and finds no fields.
34
+ */
35
+ readonly layoutOf: (type: StructuralTypeId) => Representation;
36
+ /** The ABI of one signature shape, or `null` when its arity is not physical. */
37
+ readonly abiOf: (signature: SignatureShape) => CallableAbi | null;
38
+ /**
39
+ * The carrier a *stored* position holds -- see `primitives.ts`'s
40
+ * `storedCarrier`. Exposed alongside `derive` because a stored position is
41
+ * not only something this deriver builds internally (a record field, an
42
+ * array element, a parameter's ABI slot): any external caller asking "what
43
+ * does this cell physically hold" -- a binding's own storage, not a
44
+ * transient expression result -- needs the identical `void`-is-`undefined`
45
+ * correction `abiOf` already applies to every parameter slot, and had no
46
+ * way to ask for it before this was added.
47
+ */
48
+ readonly deriveStored: (type: StructuralTypeId) => Representation;
49
+ /**
50
+ * Whether a structural type's own shape is the primitive `never` --
51
+ * distinct from asking whether its *carrier* is `{kind:'void'}`, which
52
+ * `never` and a genuine completed-void evaluation share on purpose
53
+ * (`primitives.ts`'s own comment: "physically both occupy no storage").
54
+ * That equivalence is correct for storage and wrong for reachability: a
55
+ * position whose structural type is `never` is provably never reached, so
56
+ * an operation performed on it (a property read, an `instanceof` test, a
57
+ * conversion) is dead code, while an operation on a genuine `void` result
58
+ * is not. Consumers that need to tell "unreachable" from "a completed
59
+ * evaluation with no result" must ask this, not compare carrier kinds.
60
+ */
61
+ readonly isNeverType: (type: StructuralTypeId) => boolean;
62
+ /**
63
+ * Whether a shape is a CLOSED TUPLE -- the one record layout whose values
64
+ * are Array exotic objects in the language.
65
+ *
66
+ * "There is deliberately no tuple carrier: a closed tuple is a record whose
67
+ * keys are its indices", which is the right physical answer and loses the
68
+ * one non-physical fact 23.1.2.2 asks for. `Array.isArray` is decided from
69
+ * the carrier's kind alone (`isArrayConstantOf`), and `record` is in that
70
+ * table's `false` set because an object literal is not an Array -- so a
71
+ * tuple, whose record is indistinguishable from one, was answered `false`
72
+ * for a value the language says `true` for. hono's trie router is the
73
+ * measured case: `Pattern = readonly [string, string, RegExp | true] | '*'`
74
+ * and `Array.isArray(pattern) ? pattern[0] : p` folded to the string arm at
75
+ * compile time, so no parameterized route would ever have been registered.
76
+ *
77
+ * Asked of the SHAPE rather than carried on the carrier on purpose: the
78
+ * record's layout is genuinely the same either way, and a flag on the
79
+ * representation would make two physically identical carriers compare
80
+ * unequal everywhere conversions and the certificate key them.
81
+ */
82
+ readonly isTupleShape: (type: StructuralTypeId) => boolean;
83
+ /**
84
+ * The calling convention of one checker-authenticated source function that
85
+ * semantic publication registered for dynamic Function-object storage.
86
+ * StructuralTypeId is intentionally not accepted: unrelated functions can
87
+ * share one signature shape and may never borrow each other's ABI.
88
+ */
89
+ readonly nativeCallableConventions: (functionId: FunctionId) => {
90
+ call: CallableAbi;
91
+ construct: CallableAbi | null;
92
+ } | null;
93
+ /**
94
+ * Whether a carrier is the standard `Date`. The C++ spelling a Date is
95
+ * carried in is a fact this layer only carries (`DateDeclarationPolicy`),
96
+ * so the one place that can say "this `native-record-ref` is a Date" is
97
+ * the deriver that stamped the spelling on. The slot census asks, because
98
+ * ECMA-262 ToPrimitive of a Date prefers `valueOf` where every other object
99
+ * this compiler carries has only `toString` to fall through to -- a
100
+ * mixed-carrier `+`/`<` over a Date is not the ToString answer.
101
+ */
102
+ readonly isDateCarrier?: (representation: Representation) => boolean;
103
+ }
104
+ /**
105
+ * The `SignatureShape` a checker-resolved invocation actually calls.
106
+ *
107
+ * A callee's own declared type is an overload *set*, and `sharedAbiOf` below
108
+ * correctly refuses to join it into one convention when the overloads are not
109
+ * physically identical -- that is not a gap, it is the honest fact that one
110
+ * value's general-purpose carrier has no single calling convention to state.
111
+ * A call site is a different question: the checker already resolved it to
112
+ * exactly one signature (`InvocationOperation.selectedSignature`,
113
+ * `semantics/model/selected-signature.ts`), with no sibling overload left to
114
+ * disagree with it, and `SelectedSignature` already carries every field
115
+ * `abiOf` needs to answer that question -- it is a `SignatureShape` under
116
+ * `returnType` instead of `result`. Naming that correspondence here, instead
117
+ * of leaving it as an unstated coincidence two field lists happen to share, is
118
+ * what makes it the one thing an invocation lowering has to reach for instead
119
+ * of a joined lowest-common-denominator carrier it was never going to get.
120
+ */
121
+ export declare const signatureShapeOfSelectedSignature: (signature: SelectedSignature) => SignatureShape;
122
+ /**
123
+ * The frame one `new` of a host constructor fills, read off the overload the
124
+ * checker selected at that site -- the construct-side use of
125
+ * `signatureShapeOfSelectedSignature` above.
126
+ *
127
+ * `hostInvocationAbiOf` answers for the constructor VALUE, and for
128
+ * `MapConstructor` (`new ()` beside `new <K, V>(entries?)`),
129
+ * `WeakMapConstructor` (generic, plus an `Iterable` overload) and every
130
+ * typed-array constructor (`length` / `ArrayLike<number>` / `buffer,
131
+ * byteOffset?, length?`) it correctly answers "no single convention". Yet
132
+ * every three.js renderer module builds its cache as `new WeakMap()` or
133
+ * `new Map()` (`WebGLProperties`, `WebGLRenderStates`, `WebGLShaderCache`,
134
+ * `WebGLGeometries`, ...), and each of those SITES resolved to exactly one
135
+ * overload. Without a frame to test, the reflection census read each of them
136
+ * as an unknown construction and published the new collection's key and
137
+ * value carriers -- every field of every render-state record they hold.
138
+ *
139
+ * Only the formals the site FILLS are laid out. A formal the site omits is
140
+ * optional by the checker's own resolution (`minimumArity`), the host
141
+ * construction reads its absence itself (`emitKeyedCollectionConstruct`'s
142
+ * zero-argument `gea::makeRef<T>()`), and no value is transported into it --
143
+ * so it states nothing about the frame and, for a generic overload, never has
144
+ * to be instantiated. A FILLED formal of a generic overload whose type
145
+ * arguments the checker inferred is refused: `instantiatedParameterTypes`
146
+ * withholds those on purpose, and reconstructing them here would be the
147
+ * rediscovery that authority exists to prevent. A rest formal has no fixed
148
+ * position to lay out and is refused with it.
149
+ *
150
+ * The result is the carrier the construction itself holds, not the
151
+ * signature's return type: the checker defaults `new WeakMap()` to
152
+ * `WeakMap<WeakKey, any>` while the collection census bound the key and value
153
+ * the program actually stores (`collection-construct-type-inference`), and the
154
+ * host renderer mints the held carrier directly. That is how a generic
155
+ * overload's K/V are instantiated here -- from the construction's own result,
156
+ * never from argument syntax.
157
+ */
158
+ export declare const selectedHostConstructFrameOf: (deriver: Pick<RepresentationDeriver, "abiOf">, signature: SelectedSignature, received: number, result: Representation) => CallableAbi | null;
159
+ export declare const createRepresentationDeriver: (types: ReadonlyMap<StructuralTypeId, StructuralType>, ownership?: OwnershipPolicy, binding?: HostBindingPolicy, elements?: TypedArrayElementPolicy, promise?: PromiseDeclarationPolicy, collections?: KeyedCollectionPolicy, buffers?: StandardBufferPolicy, namespaceRoots?: HostNamespaceRootPolicy, date?: DateDeclarationPolicy, generator?: GeneratorDeclarationPolicy, regexp?: RegExpDeclarationPolicy, stringObject?: StringObjectDeclarationPolicy, functionType?: FunctionDeclarationPolicy, heritage?: ClassHeritagePolicy, valueRecords?: ValueRecordPolicy, implementors?: InterfaceImplementorPolicy, errors?: ErrorDeclarationPolicy, dynamicFallback?: boolean, dynamicFallbackTypes?: ReadonlySet<StructuralTypeId>, dynamicCallableShapes?: ReadonlyMap<FunctionId, StructuralTypeId>, dynamicWrittenTypes?: ReadonlySet<StructuralTypeId>, classCopies?: ClassCopyPolicy) => RepresentationDeriver;