@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,30 @@
1
+ import type { Representation } from './model.js';
2
+ /**
3
+ * WHERE two carriers disagree, as a path a person can act on.
4
+ *
5
+ * A refusal that says only "writes a function-value-dispatch into a cell placed
6
+ * as function-value-dispatch, and no conversion is installed between them" names
7
+ * a contradiction rather than a defect: both sides print the same, so whatever
8
+ * differs is *inside* the carrier, and the message withheld the one fact that
9
+ * would say what to fix. The same is true one level up of the field-read
10
+ * refusal, whose two keys are printed in full and are then several hundred
11
+ * characters that differ in one nested position.
12
+ *
13
+ * So this walks the two carriers together and reports the FIRST position where
14
+ * they part, spelled as the path that reaches it -- `parameter 1 -> payload:
15
+ * record(type|2924,...) vs record#type|3604@4627...`. One position is enough:
16
+ * a carrier mismatch this compiler cannot convert is almost always one
17
+ * disagreement propagated upward by `nestedKey`'s digest, and a report that
18
+ * dumped every leaf would bury it.
19
+ *
20
+ * ⛔ Not a verdict, and never consulted to DECIDE anything. Two carriers that
21
+ * differ nowhere this walk can see still are not interchangeable -- the walk
22
+ * knows the shape of a carrier, not the semantics of a conversion -- so callers
23
+ * ask it only after they have already refused, to say why.
24
+ */
25
+ export declare const carrierDifference: (left: Representation, right: Representation) => string;
26
+ /**
27
+ * A one-line rendering of a carrier for a refusal message: the full key, capped,
28
+ * so a refusal stays readable next to the difference path that points into it.
29
+ */
30
+ export declare const shortCarrierText: (representation: Representation) => string;
@@ -0,0 +1,240 @@
1
+ import { representationKey } from './model.js';
2
+ /**
3
+ * WHERE two carriers disagree, as a path a person can act on.
4
+ *
5
+ * A refusal that says only "writes a function-value-dispatch into a cell placed
6
+ * as function-value-dispatch, and no conversion is installed between them" names
7
+ * a contradiction rather than a defect: both sides print the same, so whatever
8
+ * differs is *inside* the carrier, and the message withheld the one fact that
9
+ * would say what to fix. The same is true one level up of the field-read
10
+ * refusal, whose two keys are printed in full and are then several hundred
11
+ * characters that differ in one nested position.
12
+ *
13
+ * So this walks the two carriers together and reports the FIRST position where
14
+ * they part, spelled as the path that reaches it -- `parameter 1 -> payload:
15
+ * record(type|2924,...) vs record#type|3604@4627...`. One position is enough:
16
+ * a carrier mismatch this compiler cannot convert is almost always one
17
+ * disagreement propagated upward by `nestedKey`'s digest, and a report that
18
+ * dumped every leaf would bury it.
19
+ *
20
+ * ⛔ Not a verdict, and never consulted to DECIDE anything. Two carriers that
21
+ * differ nowhere this walk can see still are not interchangeable -- the walk
22
+ * knows the shape of a carrier, not the semantics of a conversion -- so callers
23
+ * ask it only after they have already refused, to say why.
24
+ */
25
+ export const carrierDifference = (left, right) => {
26
+ const found = differenceAt(left, right, '', new Set());
27
+ if (found !== null)
28
+ return found;
29
+ // Structurally identical by this walk, yet the caller refused. That is worth
30
+ // saying out loud rather than papering over: it means the two carriers are
31
+ // distinct OBJECTS with equal shape, which is a monomorphization identity
32
+ // question, not a conversion one.
33
+ return `the two carriers differ in no position this walk can see; they are distinct objects of one shape`;
34
+ };
35
+ const differenceAt = (left, right, path, seen) => {
36
+ if (left === right)
37
+ return null;
38
+ const leftShallow = shallowSignature(left);
39
+ const rightShallow = shallowSignature(right);
40
+ if (leftShallow !== rightShallow)
41
+ return report(path, leftShallow, rightShallow);
42
+ // A carrier graph can be cyclic (`structural-self-reference.ts` closes the
43
+ // cycles that survive), and this pair has already been entered above.
44
+ const pair = `${path} :: ${leftShallow}`;
45
+ if (seen.has(pair))
46
+ return null;
47
+ seen.add(pair);
48
+ const leftChildren = children(left);
49
+ const rightChildren = children(right);
50
+ if (leftChildren.length !== rightChildren.length) {
51
+ return report(path, `${leftChildren.length} position(s)`, `${rightChildren.length} position(s)`);
52
+ }
53
+ for (const [index, entry] of leftChildren.entries()) {
54
+ const other = rightChildren[index];
55
+ if (other === undefined)
56
+ continue;
57
+ const [label, leftChild] = entry;
58
+ const found = differenceAt(leftChild, other[1], path === '' ? label : `${path} -> ${label}`, seen);
59
+ if (found !== null)
60
+ return found;
61
+ }
62
+ return null;
63
+ };
64
+ const report = (path, left, right) => `at ${path === '' ? 'the carrier itself' : path}: ${left} vs ${right}`;
65
+ /**
66
+ * A carrier's OWN identity, with every nested carrier omitted.
67
+ *
68
+ * Everything `representationKey` folds in that is not a child: the kind, and
69
+ * the leaf attributes that make two carriers of that kind different things --
70
+ * a shape id, a declaration, an ownership, an absence tag, a protocol version.
71
+ * Comparing these before descending is what lets the walk say "at parameter 1
72
+ * -> payload" instead of reporting the whole subtree, and it is also what makes
73
+ * a difference in a leaf attribute (`record(type|2924)` vs `record(type|3038)`)
74
+ * a first-class answer rather than a silent equality.
75
+ */
76
+ const shallowSignature = (representation) => {
77
+ switch (representation.kind) {
78
+ case 'unresolved':
79
+ return `unresolved(${representation.reason})`;
80
+ case 'callable-identity':
81
+ case 'void':
82
+ case 'string':
83
+ case 'symbol':
84
+ case 'null':
85
+ case 'undefined':
86
+ return representation.kind;
87
+ case 'scalar':
88
+ return `scalar(${representation.domain})`;
89
+ case 'class-ref':
90
+ return `class-ref(${representation.declaration},${representation.shapeId},${representation.ownership})`;
91
+ case 'native-handle':
92
+ return `native-handle(${representation.protocol}@${representation.version})`;
93
+ case 'record':
94
+ return (`record(${representation.shapeId},${representation.ownership},` +
95
+ `${representation.fields.map((field) => `${field.key}${field.required ? '' : '?'}`).join(',')};` +
96
+ `${representation.accessors.map((accessor) => `${accessor.key}=${accessor.getter ?? '-'}/${accessor.setter ?? '-'}`).join(',')})`);
97
+ case 'record-with-index':
98
+ return (`record-with-index(${representation.shapeId},${representation.ownership},` +
99
+ `${representation.fields.map((field) => `${field.key}${field.required ? '' : '?'}`).join(',')};` +
100
+ `${representation.indexes.map((index) => `index[${index.key}]`).join(',')})`);
101
+ case 'proxy-object':
102
+ return 'proxy-object';
103
+ case 'native-record-ref':
104
+ return `native-record-ref(${representation.shapeId},${representation.ownership},${representation.native ?? ''})`;
105
+ case 'borrowed-ref':
106
+ return 'borrowed-ref';
107
+ case 'array-object':
108
+ return `array-object(${representation.ownership})`;
109
+ case 'dense-buffer':
110
+ return 'dense-buffer';
111
+ case 'typed-array':
112
+ return `typed-array(${representation.element},${representation.buffer},${representation.ownership})`;
113
+ case 'array-buffer':
114
+ return `array-buffer(${representation.ownership})`;
115
+ case 'shared-array-buffer':
116
+ return `shared-array-buffer(${representation.ownership})`;
117
+ case 'data-view':
118
+ return `data-view(${representation.ownership})`;
119
+ case 'native-sequence':
120
+ return 'native-sequence';
121
+ case 'iterator':
122
+ return 'iterator';
123
+ case 'promise':
124
+ return 'promise';
125
+ case 'keyed-collection':
126
+ return `keyed-collection(${representation.family},${representation.ownership},${representation.value ? 'keyed' : 'set'})`;
127
+ case 'dictionary':
128
+ return `dictionary(${representation.key},${representation.ownership})`;
129
+ case 'function':
130
+ return `function(${representation.functionId},${abiSignature(representation.abi)})`;
131
+ case 'function-family':
132
+ return `function-family(${[...representation.members].sort().join('+')},${abiSignature(representation.abi)})`;
133
+ case 'constructor-family':
134
+ return `constructor-family(${[...representation.members].sort().join('+')},${abiSignature(representation.abi)})`;
135
+ case 'constructor-value-dispatch':
136
+ return `constructor-value-dispatch(${abiSignature(representation.abi)})`;
137
+ case 'function-and-constructor':
138
+ return `function-and-constructor(${abiSignature(representation.call)};${abiSignature(representation.construct)})`;
139
+ case 'function-value-family':
140
+ return (`function-value-family(${[...representation.members].sort().join('+')},` +
141
+ `${abiSignature(representation.abi)},${representation.optional})`);
142
+ case 'function-value-dispatch':
143
+ return `function-value-dispatch(${abiSignature(representation.abi)})`;
144
+ case 'generic-function-set':
145
+ return `generic-function-set(${representation.members.join('+')})`;
146
+ case 'optional':
147
+ return `optional(${representation.absence})`;
148
+ case 'tagged-union':
149
+ return `tagged-union(${representation.arms.map((arm) => arm.tag).join('|')})`;
150
+ case 'dynamic':
151
+ return `dynamic(${representation.reason})`;
152
+ }
153
+ };
154
+ /** An ABI's own identity: arity, ownerships, and where the rest slot starts. */
155
+ const abiSignature = (abi) => `${abi.parameters.map((parameter) => parameter.ownership).join(',')}` +
156
+ `${abi.restFrom === null ? '' : `|rest@${abi.restFrom}`}${abi.receiver ? '+receiver' : ''}`;
157
+ /**
158
+ * The nested carriers of one carrier, each with the name of the position it
159
+ * occupies. The order is fixed per kind, so two carriers with the same shallow
160
+ * signature always enumerate the same positions in the same order.
161
+ */
162
+ const children = (representation) => {
163
+ switch (representation.kind) {
164
+ case 'callable-identity':
165
+ case 'unresolved':
166
+ case 'void':
167
+ case 'string':
168
+ case 'symbol':
169
+ case 'null':
170
+ case 'undefined':
171
+ case 'scalar':
172
+ case 'class-ref':
173
+ case 'typed-array':
174
+ case 'array-buffer':
175
+ case 'shared-array-buffer':
176
+ case 'data-view':
177
+ case 'dynamic':
178
+ return [];
179
+ case 'native-handle':
180
+ return [
181
+ ...(representation.call ? abiChildren('call', representation.call) : []),
182
+ ...(representation.construct ? abiChildren('construct', representation.construct) : [])
183
+ ];
184
+ case 'record':
185
+ return representation.fields.map((field) => [`field "${field.key}"`, field.value]);
186
+ case 'record-with-index':
187
+ return [
188
+ ...representation.fields.map((field) => [`field "${field.key}"`, field.value]),
189
+ ...representation.indexes.map((index) => [`${index.key} index`, index.value])
190
+ ];
191
+ case 'proxy-object':
192
+ return [['target', representation.target], ['handler', representation.handler]];
193
+ case 'native-record-ref':
194
+ return [];
195
+ case 'borrowed-ref':
196
+ return [['referent', representation.referent]];
197
+ case 'array-object':
198
+ case 'dense-buffer':
199
+ case 'native-sequence':
200
+ case 'iterator':
201
+ return [['element', representation.element]];
202
+ case 'promise':
203
+ return [['value', representation.value]];
204
+ case 'keyed-collection':
205
+ return [['key', representation.key], ...(representation.value ? [['value', representation.value]] : [])];
206
+ case 'dictionary':
207
+ return [['value', representation.value]];
208
+ case 'function':
209
+ case 'function-family':
210
+ case 'constructor-family':
211
+ case 'constructor-value-dispatch':
212
+ case 'function-value-family':
213
+ case 'function-value-dispatch':
214
+ return abiChildren('', representation.abi);
215
+ case 'function-and-constructor':
216
+ return [...abiChildren('call', representation.call), ...abiChildren('construct', representation.construct)];
217
+ case 'optional':
218
+ return [['payload', representation.payload]];
219
+ case 'tagged-union':
220
+ return representation.arms.map((arm) => [`arm "${arm.tag}"`, arm.value]);
221
+ case 'generic-function-set':
222
+ return [];
223
+ }
224
+ };
225
+ const abiChildren = (prefix, abi) => {
226
+ const at = (label) => (prefix === '' ? label : `${prefix} ${label}`);
227
+ return [
228
+ ...(abi.receiver ? [[at('receiver'), abi.receiver]] : []),
229
+ ...abi.parameters.map((parameter, index) => [at(`parameter ${index}`), parameter.value]),
230
+ [at('result'), abi.result]
231
+ ];
232
+ };
233
+ /**
234
+ * A one-line rendering of a carrier for a refusal message: the full key, capped,
235
+ * so a refusal stays readable next to the difference path that points into it.
236
+ */
237
+ export const shortCarrierText = (representation) => {
238
+ const key = representationKey(representation);
239
+ return key.length <= 160 ? key : `${key.slice(0, 157)}...`;
240
+ };
@@ -0,0 +1,19 @@
1
+ import type { Representation } from './model.js';
2
+ /**
3
+ * The source-level absence admissions a native dynamic-field descriptor
4
+ * adapter must preserve. A native Optional has one absence bit, so an outer
5
+ * Optional around another absence-bearing carrier is deliberately unsupported
6
+ * here: lowering it without a recursive policy could collapse two distinct
7
+ * source states. Tagged unions retain their arm discriminator and can publish
8
+ * direct absence arms safely.
9
+ */
10
+ export interface DynamicFieldAbsencePolicy {
11
+ readonly allowsNull: boolean;
12
+ readonly allowsUndefined: boolean;
13
+ }
14
+ /**
15
+ * Describe the null/undefined admissions of a representation tree, or return
16
+ * null when the tree needs a richer recursive policy and must remain on the
17
+ * existing descriptor route.
18
+ */
19
+ export declare const dynamicFieldAbsencePolicy: (representation: Representation) => DynamicFieldAbsencePolicy | null;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Describe the null/undefined admissions of a representation tree, or return
3
+ * null when the tree needs a richer recursive policy and must remain on the
4
+ * existing descriptor route.
5
+ */
6
+ export const dynamicFieldAbsencePolicy = (representation) => {
7
+ switch (representation.kind) {
8
+ case 'optional': {
9
+ if (representation.payload.kind === 'optional')
10
+ return null;
11
+ const nested = dynamicFieldAbsencePolicy(representation.payload);
12
+ if (nested === null || nested.allowsNull || nested.allowsUndefined)
13
+ return null;
14
+ return { allowsNull: representation.absence === 'null', allowsUndefined: representation.absence === 'undefined' };
15
+ }
16
+ case 'tagged-union': {
17
+ let allowsNull = false;
18
+ let allowsUndefined = false;
19
+ for (const arm of representation.arms) {
20
+ if (arm.value.kind === 'optional' && arm.value.absence === 'null')
21
+ return null;
22
+ const nested = dynamicFieldAbsencePolicy(arm.value);
23
+ if (nested === null)
24
+ return null;
25
+ allowsNull = allowsNull || nested.allowsNull;
26
+ allowsUndefined = allowsUndefined || nested.allowsUndefined;
27
+ }
28
+ return { allowsNull, allowsUndefined };
29
+ }
30
+ case 'undefined':
31
+ return { allowsNull: false, allowsUndefined: true };
32
+ case 'null':
33
+ return { allowsNull: true, allowsUndefined: false };
34
+ case 'dynamic':
35
+ return null;
36
+ default:
37
+ return { allowsNull: false, allowsUndefined: false };
38
+ }
39
+ };
@@ -0,0 +1,13 @@
1
+ import type { Representation } from './model.js';
2
+ /**
3
+ * The only argument carriers the Function constructor can transport without
4
+ * turning a native value into the dynamic evaluator carrier. A string is
5
+ * already its own ToString result; a dynamic value is already owned by the
6
+ * evaluator boundary and must retain its runtime coercion behaviour.
7
+ */
8
+ export type FunctionConstructorArgumentKind = 'native-string' | 'dynamic-value';
9
+ /**
10
+ * This is a generic ECMAScript boundary, not a guessed callable ABI. The
11
+ * returned Function remains dynamic because its source controls its frame.
12
+ */
13
+ export declare const functionConstructorArgumentKindOf: (representation: Representation) => FunctionConstructorArgumentKind | null;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * This is a generic ECMAScript boundary, not a guessed callable ABI. The
3
+ * returned Function remains dynamic because its source controls its frame.
4
+ */
5
+ export const functionConstructorArgumentKindOf = (representation) => {
6
+ if (representation.kind === 'string')
7
+ return 'native-string';
8
+ return representation.kind === 'dynamic' ? 'dynamic-value' : null;
9
+ };
@@ -0,0 +1,32 @@
1
+ import type { CallableAbi } from './model.js';
2
+ /**
3
+ * The convention that subsumes every ABI in a host handle's own overload set,
4
+ * when one exists.
5
+ *
6
+ * `derive.ts`'s `sharedAbiOf` requires every overload to share one identical
7
+ * frame, which is correct for an ordinary program-defined callable: a caller
8
+ * reaching one overload through another's frame passes the wrong arguments.
9
+ * A host handle's overload set is commonly shaped differently: TypeScript's
10
+ * own `ErrorConstructor` carries `new(message?: string): Error` from
11
+ * `lib.es5.d.ts` AND `new(message?: string, options?: ErrorOptions): Error`
12
+ * from `lib.es2022.error.d.ts`'s declaration merge, kept side by side rather
13
+ * than replaced. These are not two incompatible frames -- they are one frame
14
+ * with a trailing optional parameter, spelled as two overloads instead of
15
+ * one signature -- so the WIDEST overload's own ABI already accepts every
16
+ * call the narrower ones do: an absent trailing optional argument is exactly
17
+ * what a shorter call site passes. The join is position-wise: at each slot
18
+ * every overload must carry the same representation, except that one may
19
+ * spell it optional (or, past its own length, omit it) where another
20
+ * requires it, and the joined slot is then the optional one; the results
21
+ * must agree, and no overload may have a receiver or a rest parameter. A
22
+ * genuine incompatibility -- a different parameter type at a shared
23
+ * position, not just a different presence -- still refuses: this is a
24
+ * widening test, never a coercion this layer invents.
25
+ *
26
+ * A refusal is returned as the REASON rather than as `null`, because
27
+ * "no primitive joining 4 overload signatures into one calling convention"
28
+ * names a count and not a defect: four different walls read as one family and
29
+ * the next lever cannot be ranked from it. The reason text is deliberately
30
+ * short and free of carrier keys so equal walls group together.
31
+ */
32
+ export declare const widestSubsumingAbi: (abis: readonly CallableAbi[]) => CallableAbi | string;
@@ -0,0 +1,97 @@
1
+ import { passingOf, representationKey } from './model.js';
2
+ import { optionalOf } from './optional.js';
3
+ /**
4
+ * The convention that subsumes every ABI in a host handle's own overload set,
5
+ * when one exists.
6
+ *
7
+ * `derive.ts`'s `sharedAbiOf` requires every overload to share one identical
8
+ * frame, which is correct for an ordinary program-defined callable: a caller
9
+ * reaching one overload through another's frame passes the wrong arguments.
10
+ * A host handle's overload set is commonly shaped differently: TypeScript's
11
+ * own `ErrorConstructor` carries `new(message?: string): Error` from
12
+ * `lib.es5.d.ts` AND `new(message?: string, options?: ErrorOptions): Error`
13
+ * from `lib.es2022.error.d.ts`'s declaration merge, kept side by side rather
14
+ * than replaced. These are not two incompatible frames -- they are one frame
15
+ * with a trailing optional parameter, spelled as two overloads instead of
16
+ * one signature -- so the WIDEST overload's own ABI already accepts every
17
+ * call the narrower ones do: an absent trailing optional argument is exactly
18
+ * what a shorter call site passes. The join is position-wise: at each slot
19
+ * every overload must carry the same representation, except that one may
20
+ * spell it optional (or, past its own length, omit it) where another
21
+ * requires it, and the joined slot is then the optional one; the results
22
+ * must agree, and no overload may have a receiver or a rest parameter. A
23
+ * genuine incompatibility -- a different parameter type at a shared
24
+ * position, not just a different presence -- still refuses: this is a
25
+ * widening test, never a coercion this layer invents.
26
+ *
27
+ * A refusal is returned as the REASON rather than as `null`, because
28
+ * "no primitive joining 4 overload signatures into one calling convention"
29
+ * names a count and not a defect: four different walls read as one family and
30
+ * the next lever cannot be ranked from it. The reason text is deliberately
31
+ * short and free of carrier keys so equal walls group together.
32
+ */
33
+ export const widestSubsumingAbi = (abis) => {
34
+ const first = abis[0];
35
+ if (!first)
36
+ return 'the set is empty';
37
+ if (abis.some((abi) => abi.receiver !== null))
38
+ return 'an overload declares a receiver';
39
+ if (abis.some((abi) => abi.restFrom !== null))
40
+ return 'an overload is variadic';
41
+ const resultKey = representationKey(first.result);
42
+ if (abis.some((abi) => representationKey(abi.result) !== resultKey))
43
+ return 'the overloads disagree about the result';
44
+ const length = Math.max(...abis.map((abi) => abi.parameters.length));
45
+ const parameters = [];
46
+ for (let position = 0; position < length; position += 1) {
47
+ // The one carrier every overload agrees on at this position, widened to
48
+ // its optional form when any overload spells it optional -- or omits it,
49
+ // since a shorter overload's absent trailing parameter is the same
50
+ // "the caller did not supply it" the optional carrier already holds.
51
+ // `test: (node: Node) => node is TOut` beside `test?: (node: Node) =>
52
+ // boolean` (TypeScript's own `NodeVisitor`) is one slot, not two frames:
53
+ // every call through the set that omits it reaches the value through the
54
+ // optional slot, and every call that passes it fills the same slot.
55
+ let joined = null;
56
+ let omitted = false;
57
+ for (const abi of abis) {
58
+ const own = abi.parameters[position];
59
+ if (own === undefined) {
60
+ omitted = true;
61
+ continue;
62
+ }
63
+ if (joined === null || sameCarrier(own.value, joined.value)) {
64
+ joined ??= own;
65
+ continue;
66
+ }
67
+ if (widensTo(joined.value, own.value)) {
68
+ joined = own;
69
+ continue;
70
+ }
71
+ if (!widensTo(own.value, joined.value))
72
+ return `the overloads disagree at parameter ${position}`;
73
+ }
74
+ if (joined === null)
75
+ return `parameter ${position} is declared by no overload`;
76
+ // A position some overload OMITS is optional in the physical sense even
77
+ // where the overload that declares it spells it required. The set is one
78
+ // runtime function and the declaration itself says a call without this
79
+ // argument is legal, so the convention that holds both calls is the
80
+ // widened one -- `realpathSync(path)` beside `realpathSync(path, options)`
81
+ // is node's own spelling of a single entry point, and refusing it left
82
+ // every value read of such a set with no calling convention at all (288
83
+ // rows in tsc's self-compile, concentrated in `sys.ts`, `checker.ts` and
84
+ // `tracing.ts`). Only the ARITY widens: every shared position must already
85
+ // agree, and so must the result, which the checks above enforce.
86
+ if (omitted && joined.value.kind !== 'optional') {
87
+ const widened = optionalOf(joined.value, 'undefined');
88
+ parameters.push(widened === joined.value ? joined : { value: widened, ownership: 'owned', passing: passingOf(widened, 'owned') });
89
+ continue;
90
+ }
91
+ parameters.push(joined);
92
+ }
93
+ return { ...first, parameters };
94
+ };
95
+ const sameCarrier = (left, right) => representationKey(left) === representationKey(right);
96
+ /** Whether `wider` is exactly `narrower` behind an optional -- the one widening this layer admits. */
97
+ const widensTo = (narrower, wider) => wider.kind === 'optional' && wider.absence === 'undefined' && sameCarrier(wider.payload, narrower);
@@ -0,0 +1,67 @@
1
+ import type { Representation } from './model.js';
2
+ /**
3
+ * The host templates whose native frame the IR states
4
+ * (`ir/call-entry.ts`'s `hostTemplateFrameOf`), and the one authority for when
5
+ * the printer spells a call from one of them and what each accepts.
6
+ *
7
+ * Every predicate here has exactly two kinds of caller: the C++ printer, which
8
+ * routes a call to the template and renders it (`emit-host-properties.ts`'s
9
+ * `hostMemberReadsOf`, `emit-host-invoke.ts`'s `isArrayText`,
10
+ * `emit-host-object.ts`'s `objectMemberText`, `emit-buffers.ts`'s
11
+ * `typedArrayCallText`), and the IR, which records the template on the call
12
+ * (`ir/lower-invocation.ts`) and states its frame. A rule that lived on only
13
+ * one side could drift from the other, and the frame would then describe C++
14
+ * the printer no longer emits.
15
+ */
16
+ export type HostTemplate = 'object-assign' | 'array-is-array' | 'typed-array-set';
17
+ /**
18
+ * The host protocol a member read off this receiver is looked up on, or `null`.
19
+ *
20
+ * A non-null native name can only enter a `native-record-ref` through the
21
+ * declaration-authenticated host-type seam. The compiler does not lay that
22
+ * record out, so a host member table is the only authority allowed to spell
23
+ * one of its properties.
24
+ */
25
+ export declare const hostReceiverProtocolOf: (representation: Representation) => {
26
+ readonly protocol: string;
27
+ readonly strict: boolean;
28
+ } | null;
29
+ /**
30
+ * Whether a host method read whose row is spelled at the call site is deferred
31
+ * to that call. A read held `dynamic` has no native convention to fuse with and
32
+ * is boxed as a function value instead (`dynamicHostFunctionValueText`).
33
+ */
34
+ export declare const callSiteHostReadIsDeferred: (read: Representation) => boolean;
35
+ /** The template a deferred host member's call is spelled from, for the members this file names. */
36
+ export declare const hostMemberTemplateOf: (protocol: string, member: string) => HostTemplate | null;
37
+ /** A union whose every arm is a typed array: one `%TypedArray%.prototype` receiver whose arm the invoker dispatches. */
38
+ export declare const typedArrayUnionOnly: (representation: Representation) => boolean;
39
+ /** The template a deferred `%TypedArray%.prototype` member's call is spelled from, for the members this file names. */
40
+ export declare const typedArrayMemberTemplateOf: (member: string) => HostTemplate | null;
41
+ /**
42
+ * Which template here prints a call through `member` read off `receiver`, the
43
+ * read itself held as `read`; `null` for every other call.
44
+ *
45
+ * The receiver is the read's proven-present view, as both deferral walks take
46
+ * it: an `optional` receiver's payload.
47
+ */
48
+ export declare const hostTemplateOfRead: (receiver: Representation, member: string, read: Representation) => HostTemplate | null;
49
+ /**
50
+ * What `Array.isArray` -- ECMA-262 23.1.2.2 -- answers for a carrier of this
51
+ * kind from the kind alone, or `null` for a kind that states neither that it is
52
+ * an Array nor that it cannot be one (`dynamic`, whose box carries the answer,
53
+ * and the wrappers `optional`/`tagged-union`, answered per state and per arm).
54
+ *
55
+ * `false` is stated by KIND rather than as a default, so a carrier nobody has
56
+ * thought about refuses instead of being answered wrongly. A typed array is
57
+ * one of the `false`s on purpose: a `Uint8Array` is not an Array exotic object.
58
+ */
59
+ export declare const isArrayConstantOf: (kind: Representation["kind"]) => boolean | null;
60
+ /**
61
+ * A single `%TypedArray%.prototype.set` source: a typed array, read through its
62
+ * own element type, or an Array of numbers, whose holes read as `undefined`
63
+ * (ECMA-262 23.2.3.26 steps 5 and 6). `null` for anything else.
64
+ */
65
+ export declare const typedArraySetSourceOf: (carrier: Representation) => "typed-array" | "number-array" | null;
66
+ /** Whether `set` copies from this source: a single source, or a union whose every arm is one. */
67
+ export declare const typedArraySetSourceAccepted: (carrier: Representation) => boolean;
@@ -0,0 +1,94 @@
1
+ /**
2
+ * The host protocol a member read off this receiver is looked up on, or `null`.
3
+ *
4
+ * A non-null native name can only enter a `native-record-ref` through the
5
+ * declaration-authenticated host-type seam. The compiler does not lay that
6
+ * record out, so a host member table is the only authority allowed to spell
7
+ * one of its properties.
8
+ */
9
+ export const hostReceiverProtocolOf = (representation) => {
10
+ if (representation.kind === 'native-handle')
11
+ return { protocol: representation.native ?? representation.protocol, strict: true };
12
+ if (representation.kind === 'native-record-ref' && representation.native !== null)
13
+ return { protocol: representation.native, strict: false };
14
+ return null;
15
+ };
16
+ /**
17
+ * Whether a host method read whose row is spelled at the call site is deferred
18
+ * to that call. A read held `dynamic` has no native convention to fuse with and
19
+ * is boxed as a function value instead (`dynamicHostFunctionValueText`).
20
+ */
21
+ export const callSiteHostReadIsDeferred = (read) => read.kind !== 'dynamic';
22
+ /** The template a deferred host member's call is spelled from, for the members this file names. */
23
+ export const hostMemberTemplateOf = (protocol, member) => protocol === 'ArrayConstructor' && member === 'isArray'
24
+ ? 'array-is-array'
25
+ : protocol === 'ObjectConstructor' && member === 'assign'
26
+ ? 'object-assign'
27
+ : null;
28
+ /** A union whose every arm is a typed array: one `%TypedArray%.prototype` receiver whose arm the invoker dispatches. */
29
+ export const typedArrayUnionOnly = (representation) => representation.kind === 'tagged-union' && representation.arms.every((arm) => arm.value.kind === 'typed-array');
30
+ /** The template a deferred `%TypedArray%.prototype` member's call is spelled from, for the members this file names. */
31
+ export const typedArrayMemberTemplateOf = (member) => (member === 'set' ? 'typed-array-set' : null);
32
+ /**
33
+ * Which template here prints a call through `member` read off `receiver`, the
34
+ * read itself held as `read`; `null` for every other call.
35
+ *
36
+ * The receiver is the read's proven-present view, as both deferral walks take
37
+ * it: an `optional` receiver's payload.
38
+ */
39
+ export const hostTemplateOfRead = (receiver, member, read) => {
40
+ const present = receiver.kind === 'optional' ? receiver.payload : receiver;
41
+ const host = hostReceiverProtocolOf(present);
42
+ if (host !== null)
43
+ return callSiteHostReadIsDeferred(read) ? hostMemberTemplateOf(host.protocol, member) : null;
44
+ return present.kind === 'typed-array' || typedArrayUnionOnly(present) ? typedArrayMemberTemplateOf(member) : null;
45
+ };
46
+ /** The kinds `Array.isArray` answers `false` for from the kind alone: each states it is not an Array exotic object. */
47
+ const notArrayKinds = new Set([
48
+ 'record',
49
+ 'record-with-index',
50
+ 'dictionary',
51
+ 'class-ref',
52
+ 'native-record-ref',
53
+ 'native-handle',
54
+ 'keyed-collection',
55
+ 'dense-buffer',
56
+ 'typed-array',
57
+ 'array-buffer',
58
+ 'shared-array-buffer',
59
+ 'data-view',
60
+ 'promise',
61
+ 'scalar',
62
+ 'string',
63
+ 'symbol',
64
+ 'null',
65
+ 'undefined',
66
+ 'function',
67
+ 'function-family',
68
+ 'function-value-family',
69
+ 'function-value-dispatch'
70
+ ]);
71
+ /**
72
+ * What `Array.isArray` -- ECMA-262 23.1.2.2 -- answers for a carrier of this
73
+ * kind from the kind alone, or `null` for a kind that states neither that it is
74
+ * an Array nor that it cannot be one (`dynamic`, whose box carries the answer,
75
+ * and the wrappers `optional`/`tagged-union`, answered per state and per arm).
76
+ *
77
+ * `false` is stated by KIND rather than as a default, so a carrier nobody has
78
+ * thought about refuses instead of being answered wrongly. A typed array is
79
+ * one of the `false`s on purpose: a `Uint8Array` is not an Array exotic object.
80
+ */
81
+ export const isArrayConstantOf = (kind) => kind === 'array-object' ? true : notArrayKinds.has(kind) ? false : null;
82
+ /**
83
+ * A single `%TypedArray%.prototype.set` source: a typed array, read through its
84
+ * own element type, or an Array of numbers, whose holes read as `undefined`
85
+ * (ECMA-262 23.2.3.26 steps 5 and 6). `null` for anything else.
86
+ */
87
+ export const typedArraySetSourceOf = (carrier) => carrier.kind === 'typed-array'
88
+ ? 'typed-array'
89
+ : carrier.kind === 'array-object' && carrier.element.kind === 'scalar' && carrier.element.domain === 'number'
90
+ ? 'number-array'
91
+ : null;
92
+ /** Whether `set` copies from this source: a single source, or a union whose every arm is one. */
93
+ export const typedArraySetSourceAccepted = (carrier) => typedArraySetSourceOf(carrier) !== null ||
94
+ (carrier.kind === 'tagged-union' && carrier.arms.every((arm) => typedArraySetSourceOf(arm.value) !== null));