@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,349 @@
1
+ import { declarationOfFunction } from '../identity/ids.js';
2
+ import { abiKey, representationKey } from '../representation/model.js';
3
+ import { callableMutationFactsOf, callableOriginsOf } from '../semantics/callable-origins.js';
4
+ import { resultOf } from '../semantics/model/operands.js';
5
+ /**
6
+ * The carrier the plan selected for one parameter binding's published value.
7
+ *
8
+ * Read through the plan rather than re-derived, for the same reason the ABI is:
9
+ * a parameter's carrier is a fixed-point output, and a second derivation of it
10
+ * would be a second answer.
11
+ */
12
+ const parameterCarrierKeys = (input, functionId, bodies) => {
13
+ const keys = new Map();
14
+ for (const operation of bodies.get(functionId) ?? []) {
15
+ // A defaulted parameter's own `binding.initialize` operand no longer cites
16
+ // `{kind: 'parameter'}` directly -- it cites the `default-value` merge's
17
+ // result instead, because what it binds is the post-default value, not
18
+ // the raw argument. The raw argument is what the new `parameter-value`
19
+ // reference operation cites, so that operation is equally valid evidence
20
+ // that this ABI position is bound, for the one case the original scan
21
+ // alone can no longer see.
22
+ const isDefaultedParameterSource = operation.family === 'reference' && operation.form === 'parameter-value';
23
+ if (!isDefaultedParameterSource && (operation.family !== 'binding' || operation.action !== 'initialize'))
24
+ continue;
25
+ const initializer = operation.operands.find((operand) => operand.source.kind === 'parameter');
26
+ if (!initializer || initializer.source.kind !== 'parameter')
27
+ continue;
28
+ const published = resultOf(operation, 'value');
29
+ const carrier = published ? input.plan.selected.get(published.id) : undefined;
30
+ keys.set(initializer.source.ordinal, carrier ? representationKey(carrier) : 'unselected');
31
+ }
32
+ return keys;
33
+ };
34
+ const abiOfCarrier = (input, functionId, allocations) => {
35
+ for (const operation of allocations.get(functionId) ?? []) {
36
+ const published = resultOf(operation, 'value');
37
+ const carrier = published ? input.plan.selected.get(published.id) : undefined;
38
+ if (!carrier)
39
+ continue;
40
+ if (carrier.kind === 'function' || carrier.kind === 'function-value-dispatch')
41
+ return { call: carrier.abi, construct: null };
42
+ if (carrier.kind === 'function-family' || carrier.kind === 'function-value-family')
43
+ return { call: carrier.abi, construct: null };
44
+ // A JS CONSTRUCTOR FUNCTION: one `function F( a, b ) {}` that is both
45
+ // called and `new`ed, which is how three.js writes almost every internal
46
+ // module -- `WebGLTextures`, `WebGLProgram`, `WebGLShadowMap`, ten of them
47
+ // in one program, each blocked here with "no function-object allocation
48
+ // published a callable carrier" while its allocation had published a
49
+ // perfectly good one this function had no arm for.
50
+ //
51
+ // One body serves both conventions, and its FORMALS are the shared half:
52
+ // the same parameter list is read whichever way it was entered. The result
53
+ // is not shared -- `new F()` evaluates to the instance and `F()` to what
54
+ // the body returns -- and the body's own is the call one, since a
55
+ // construction takes the instance from `.construct` (`emit-callable.ts`),
56
+ // never from the body's return value.
57
+ //
58
+ // Only when the two frames agree. Where they do not, the two entry points
59
+ // would need two bodies, and this projection has one to state.
60
+ if (carrier.kind === 'function-and-constructor' && argumentFrameKey(carrier.call) === argumentFrameKey(carrier.construct)) {
61
+ return { call: carrier.call, construct: carrier.construct };
62
+ }
63
+ // A function boxed to `dynamic` under `--dynamic-fallback` (its own
64
+ // `.prototype` read or written, `prototypeMutatedConstructorTypes` in
65
+ // dynamic-fallback.ts) still has to bind a real parameter frame when its
66
+ // body runs -- a fact about the DECLARATION, never about which carrier a
67
+ // later census chose for the value. `nativeCallableConventions` answers
68
+ // exactly that, keyed by the allocation's checker-authenticated FunctionId.
69
+ // Its structural shape is deliberately not accepted: unrelated functions
70
+ // with the same signature share that id and may not borrow this frame.
71
+ if (carrier.kind === 'dynamic' &&
72
+ operation.family === 'allocation' &&
73
+ operation.allocated === 'function-object' &&
74
+ operation.callable === functionId &&
75
+ input.deriver) {
76
+ const native = input.deriver.nativeCallableConventions(functionId);
77
+ if (native)
78
+ return native;
79
+ }
80
+ }
81
+ return null;
82
+ };
83
+ /**
84
+ * A convention's ARGUMENT half, as a key -- the part two entry points into one
85
+ * body have to share, with the result and the receiver deliberately left out.
86
+ *
87
+ * The receiver is left out because it is the one slot the two conventions into
88
+ * a JS constructor function legitimately DISAGREE in, and neither answer is
89
+ * wrong: `[[Construct]]` manufactures the receiver (ECMA-262 10.2.2, so
90
+ * `representation/derive.ts` states none for it) while `[[Call]]` is handed
91
+ * one. Keying on it made every such function's frames compare unequal and
92
+ * blocked the body -- which is the whole of three.js's renderer -- for a
93
+ * disagreement that is the language's own.
94
+ */
95
+ const argumentFrameKey = (abi) => [abi.parameters.map((parameter) => `${representationKey(parameter.value)}/${parameter.ownership}`).join(','), abi.restFrom ?? '-'].join(';');
96
+ /**
97
+ * The calling convention a Representation states, when it states one -- the
98
+ * same set of callable carrier kinds `abiOfCarrier` above reads off a
99
+ * `function-object` allocation, asked instead of an arbitrary published
100
+ * value. `function-and-constructor` contributes its `call` half alone: unlike
101
+ * `abiOfCarrier`'s own use of that carrier (which is *becoming* the two-entry
102
+ * function and so needs both frames to agree), a forwarding candidate is only
103
+ * ever borrowed as a callee, and a call site only ever needs `[[Call]]`.
104
+ */
105
+ const callConventionOf = (representation) => {
106
+ switch (representation.kind) {
107
+ case 'function':
108
+ case 'function-family':
109
+ case 'function-value-dispatch':
110
+ case 'function-value-family':
111
+ return representation.abi;
112
+ case 'native-handle':
113
+ return representation.call;
114
+ case 'function-and-constructor':
115
+ return representation.call;
116
+ default:
117
+ return null;
118
+ }
119
+ };
120
+ /**
121
+ * Whether a convention is the fiction a checker synthesizes for a JavaScript
122
+ * function that declares no parameters but reads the `arguments` object --
123
+ * three.js's `function texImage2D() { gl.texImage2D( ...arguments ) }`, one
124
+ * of ~2,315 functions across a real application and the majority shape behind
125
+ * this projection's blockers.
126
+ *
127
+ * There is no declared parameter for `structural-parts.ts`'s `parameterOf` to
128
+ * read a `ts.ParameterDeclaration` from, so the checker's own inferred
129
+ * signature is the only source that layer has, and what it publishes is one
130
+ * parameter shaped like the whole `arguments` object: a plain dynamic array,
131
+ * with no rest marker (a real `...args: T[]` parameter has a declaration, and
132
+ * derives to whatever `T` is, not to this specific undeclared shape). Naming
133
+ * the shape precisely -- one parameter, no `restFrom`, an `array-object` of
134
+ * `dynamic(declared-any-never-narrowed)` -- is what keeps this from ever
135
+ * matching a real single-parameter function whose declared type happens to be
136
+ * `any[]`: that function has a `ts.ParameterDeclaration`, and its body binds
137
+ * one physical parameter the standard check below already accepts.
138
+ */
139
+ const isArgumentsObjectFiction = (abi) => {
140
+ if (abi.restFrom !== null || abi.parameters.length !== 1)
141
+ return false;
142
+ const value = abi.parameters[0]?.value;
143
+ return value?.kind === 'array-object' && value.element.kind === 'dynamic' && value.element.reason === 'declared-any-never-narrowed';
144
+ };
145
+ /**
146
+ * The one other callable this shim forwards its whole `arguments` object to,
147
+ * when there is exactly one.
148
+ *
149
+ * A forwarding shim's entire body is `callee( ...arguments )`, so the
150
+ * `callee` sub-expression is READ (a `property` or `reference` operation
151
+ * publishes it) but never itself an operand of anything else in the body --
152
+ * the spread call that would consume it is exactly the call this compiler has
153
+ * no primitive to build (`producers/spread-arguments.ts` refuses spreading an
154
+ * `arguments` object into a callee with no rest formal), so it leaves no
155
+ * `invocation` operation behind and the read sits unconsumed. That is the
156
+ * signal: among this body's operations, the callable-valued one nothing else
157
+ * cites is the callee the source forwarded to. A body with zero or with more
158
+ * than one such candidate states nothing this projection can act on, and
159
+ * returns `null` rather than guess between them -- `console.error`'s own
160
+ * receiver read is exactly this shape's other common case (see the shim
161
+ * bodies in `.scratch/threejs/abi-arity.mjs`'s output), and is excluded by
162
+ * being consumed by its own call.
163
+ *
164
+ * `isArgumentsObjectFiction` is asked of every candidate too, not only of
165
+ * this function's own ABI, so a chain of two shims never borrows the nearer
166
+ * one's fiction instead of walking to the real callee underneath it.
167
+ */
168
+ const forwardingCalleeAbi = (input, functionId, bodies) => {
169
+ const operations = bodies.get(functionId) ?? [];
170
+ const consumed = new Set();
171
+ for (const operation of operations) {
172
+ for (const operand of operation.operands) {
173
+ if (operand.source.kind === 'result')
174
+ consumed.add(operand.source.result);
175
+ }
176
+ }
177
+ let found = null;
178
+ for (const operation of operations) {
179
+ const published = resultOf(operation, 'value');
180
+ if (!published || consumed.has(published.id))
181
+ continue;
182
+ const carrier = input.plan.selected.get(published.id);
183
+ const abi = carrier ? callConventionOf(carrier) : null;
184
+ if (!abi || isArgumentsObjectFiction(abi))
185
+ continue;
186
+ if (found)
187
+ return null;
188
+ found = abi;
189
+ }
190
+ return found;
191
+ };
192
+ /**
193
+ * The `[[Construct]]` convention each call frame is asked for, over the whole
194
+ * plan, computed once.
195
+ *
196
+ * A cast that asserts a construct signature onto a call-only function puts the
197
+ * second convention on the CAST's carrier; nothing links it back to the
198
+ * declaration except the call frame the two share. This is that link, read by
199
+ * the demand test below. Deliberately keyed by the call frame and not by a
200
+ * declaration: the plan has no declaration to offer here, and matching two
201
+ * declarations that share one frame costs an unused thunk, never a wrong
202
+ * construction -- the runtime looks the entry up by the value's own invoke
203
+ * pointer.
204
+ *
205
+ * A carrier nested inside a container is not reached. That is the fail-closed
206
+ * direction: the conversion then finds no entry and refuses by name.
207
+ */
208
+ const demandedConstructAbis = (plan) => {
209
+ const abis = new Map();
210
+ // Two different construct conventions over one call frame name no single
211
+ // second entry point for the body, so neither is published. That is the same
212
+ // "one body states one convention" rule `abiOfCarrier` applies to the
213
+ // allocation's own carrier, and the conversion then refuses by name.
214
+ const ambiguous = new Set();
215
+ for (const carrier of plan.selected.values()) {
216
+ const payload = carrier.kind === 'optional' ? carrier.payload : carrier;
217
+ if (payload.kind !== 'function-and-constructor')
218
+ continue;
219
+ const key = abiKey(payload.call);
220
+ const seen = abis.get(key);
221
+ if (seen !== undefined && abiKey(seen) !== abiKey(payload.construct))
222
+ ambiguous.add(key);
223
+ abis.set(key, payload.construct);
224
+ }
225
+ for (const key of ambiguous)
226
+ abis.delete(key);
227
+ return abis;
228
+ };
229
+ const indexOperations = (graph) => {
230
+ const bodies = new Map();
231
+ const allocations = new Map();
232
+ const add = (into, key, operation) => {
233
+ const bucket = into.get(key);
234
+ if (bucket)
235
+ bucket.push(operation);
236
+ else
237
+ into.set(key, [operation]);
238
+ };
239
+ for (const operation of graph.operations.values()) {
240
+ if (operation.caller.kind === 'function')
241
+ add(bodies, operation.caller.functionId, operation);
242
+ if (operation.family === 'allocation' && operation.allocated === 'function-object' && operation.callable) {
243
+ add(allocations, operation.callable, operation);
244
+ }
245
+ }
246
+ return { bodies, allocations };
247
+ };
248
+ export const projectAbis = (input) => {
249
+ const abis = new Map();
250
+ const constructs = new Map();
251
+ const blocked = [];
252
+ const callableOrigins = callableOriginsOf(input.graph);
253
+ const callableMutations = callableMutationFactsOf(input.graph, input.plan, callableOrigins);
254
+ const { bodies, allocations } = indexOperations(input.graph);
255
+ const demandedConstructs = demandedConstructAbis(input.plan);
256
+ const functions = new Set();
257
+ for (const operation of input.graph.operations.values()) {
258
+ if (operation.caller.kind === 'function')
259
+ functions.add(operation.caller.functionId);
260
+ if (operation.family === 'allocation' && operation.callable)
261
+ functions.add(operation.callable);
262
+ }
263
+ // Resolved once per blocked function rather than inline at each push site:
264
+ // every blocker below names the SAME `functionId`, and `declarationOfFunction`
265
+ // plus the lookup is one answer, not three.
266
+ const locationOf = (functionId) => input.locationOfDeclaration?.(declarationOfFunction(functionId)) ?? null;
267
+ for (const functionId of [...functions].sort()) {
268
+ const conventions = abiOfCarrier(input, functionId, allocations);
269
+ if (!conventions) {
270
+ blocked.push({
271
+ functionId,
272
+ reason: 'no function-object allocation published a callable carrier for this function, so it has no stated calling convention',
273
+ location: locationOf(functionId)
274
+ });
275
+ continue;
276
+ }
277
+ const abi = conventions.call;
278
+ const carriers = parameterCarrierKeys(input, functionId, bodies);
279
+ // A forwarding shim declares no `ts.ParameterDeclaration` at all, so
280
+ // `carriers` is legitimately empty by source, not by defect -- there is no
281
+ // named binding the standard check below could ever find. Its checker-
282
+ // published ABI is not a second, disagreeing authority either: it is a
283
+ // fiction the checker states for lack of anything better, over a value
284
+ // this compiler's own plan already carries the real convention for, one
285
+ // step away at the callee the shim forwards to. Adopting that convention
286
+ // here is not the reconciliation this file's own module comment refuses --
287
+ // there was never a real disagreement to reconcile, only one authority
288
+ // (the checker, over an undeclared parameter) that had nothing to publish
289
+ // and said so with a fiction.
290
+ if (carriers.size === 0 && isArgumentsObjectFiction(abi)) {
291
+ const forwarded = forwardingCalleeAbi(input, functionId, bodies);
292
+ if (forwarded) {
293
+ abis.set(functionId, forwarded);
294
+ continue;
295
+ }
296
+ }
297
+ if (carriers.size !== abi.parameters.length) {
298
+ blocked.push({
299
+ functionId,
300
+ reason: `the body binds ${carriers.size} physical parameter(s) but the ABI declares ${abi.parameters.length}`,
301
+ location: locationOf(functionId)
302
+ });
303
+ continue;
304
+ }
305
+ const mismatch = abi.parameters.findIndex((parameter, ordinal) => carriers.get(ordinal) !== representationKey(parameter.value));
306
+ const declared = abi.parameters[mismatch];
307
+ if (mismatch >= 0 && declared) {
308
+ blocked.push({
309
+ functionId,
310
+ reason: `parameter ${mismatch} is bound as "${carriers.get(mismatch) ?? 'absent'}" but the ABI declares ` +
311
+ `"${representationKey(declared.value)}"`,
312
+ location: locationOf(functionId)
313
+ });
314
+ continue;
315
+ }
316
+ abis.set(functionId, abi);
317
+ if (conventions.construct)
318
+ constructs.set(functionId, conventions.construct);
319
+ else {
320
+ // The allocation published only a `[[Call]]` carrier, and somewhere the
321
+ // program still names this declaration's `[[Construct]]`: `Factory as
322
+ // typeof Factory & (new (v: number) => T)` puts the construct half on
323
+ // the CAST's carrier, never on the allocation's. ECMA-262 gives a
324
+ // pre-`class` constructor function both internal methods when it is
325
+ // created, so the second convention is not invented here -- it is taken
326
+ // from the carrier that demanded it, matched to this declaration by its
327
+ // call frame, and only where the two entry points share one argument
328
+ // frame the single body can bind.
329
+ //
330
+ // Demand-driven, so a function that is only ever called still emits one
331
+ // thunk. Two declarations sharing one call frame both get one, and that
332
+ // costs an unused thunk rather than a wrong answer: the runtime looks
333
+ // the entry up by the value's own invoke pointer
334
+ // (`gea::withConstructEntry`), so a construction can never enter another
335
+ // declaration's body.
336
+ const demanded = demandedConstructs.get(abiKey(abi));
337
+ if (demanded && argumentFrameKey(abi) === argumentFrameKey(demanded))
338
+ constructs.set(functionId, demanded);
339
+ }
340
+ }
341
+ return {
342
+ abis,
343
+ constructs,
344
+ callableOrigins,
345
+ callableOwnPropertyWrites: callableMutations.ownProperties,
346
+ functionPrototypePropertyWrites: callableMutations.functionPrototypeProperties,
347
+ blocked: Object.freeze(blocked)
348
+ };
349
+ };
@@ -0,0 +1,12 @@
1
+ import type { StructuralTypeId } from '../identity/ids.js';
2
+ import type { RepresentationDeriver } from '../representation/derive.js';
3
+ import type { RecordField, Representation } from '../representation/model.js';
4
+ import type { StructuralType } from '../semantics/model/structural-types.js';
5
+ /**
6
+ * The positions CreateListFromArrayLike reads from a closed typed tuple.
7
+ * Arity comes from the semantic type; payload carriers come from physical
8
+ * storage. Homogeneous tuples can use ArrayObject storage, while heterogeneous
9
+ * tuples use positional records. Neither changes the tuple's stated arity.
10
+ * Optional/open tuples retain the runtime-sized path.
11
+ */
12
+ export declare const fixedApplyArgumentFieldsOf: (types: ReadonlyMap<StructuralTypeId, StructuralType>, type: StructuralTypeId, carrier: Representation, deriver: RepresentationDeriver) => readonly RecordField[] | null;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * The positions CreateListFromArrayLike reads from a closed typed tuple.
3
+ * Arity comes from the semantic type; payload carriers come from physical
4
+ * storage. Homogeneous tuples can use ArrayObject storage, while heterogeneous
5
+ * tuples use positional records. Neither changes the tuple's stated arity.
6
+ * Optional/open tuples retain the runtime-sized path.
7
+ */
8
+ export const fixedApplyArgumentFieldsOf = (types, type, carrier, deriver) => {
9
+ const shape = types.get(type)?.shape;
10
+ if (shape?.kind !== 'tuple' || shape.elements.some((element) => element.optional || element.rest || element.variadic))
11
+ return null;
12
+ if (carrier.kind === 'array-object') {
13
+ return shape.elements.map((_, index) => ({ key: String(index), value: carrier.element, required: true }));
14
+ }
15
+ const layout = carrier.kind === 'native-record-ref' ? deriver.layoutOf(carrier.shapeId) : carrier;
16
+ if (layout.kind !== 'record')
17
+ return null;
18
+ const fields = shape.elements.map((_, index) => layout.fields.find((field) => field.key === String(index)));
19
+ return fields.every((field) => field !== undefined && field.required) ? fields : null;
20
+ };
@@ -0,0 +1,250 @@
1
+ import type { DeclarationId, FunctionId, RegionId } from '../identity/ids.js';
2
+ import type { Representation } from '../representation/model.js';
3
+ import type { SealedRepresentationPlan } from '../representation/plan.js';
4
+ import type { HostNamespaceTable } from '../targets/cpp/host/host-members.js';
5
+ import type { SemanticGraph } from '../semantics/model/graph.js';
6
+ /**
7
+ * Where each binding cell physically lives.
8
+ *
9
+ * A binding is introduced by exactly one operation, and that operation's caller
10
+ * is the execution context the cell belongs to. Nothing else in the compiler
11
+ * knows this: the IR carries a `DeclarationId` on every read and write, and a
12
+ * body seeing one has no way to tell a local of its own from a module-level
13
+ * cell it merely refers to. Without this projection the emitter treats every
14
+ * cell as a local, which turns a perfectly ordinary module-scope `const` read
15
+ * from inside a function into either a capture it must refuse or -- worse -- a
16
+ * reference to a variable no enclosing block declares.
17
+ *
18
+ * A binding introduced with `BindingOperation.external` set is `external`
19
+ * storage instead of `local`/`region`: `declare const x` names a cell the
20
+ * *host* defines, not this program, so there is no callable frame or run-once
21
+ * region that owns it. That is not a defect to route around -- it is a
22
+ * different, legitimate ownership, gated by its own preflight obligation
23
+ * (`buildExternalBindingObligation`, preflight/run.ts) rather than by the
24
+ * carrier-selection one every other binding raises. A declaration with no
25
+ * introducing operation at all -- an import this program's semantic graph
26
+ * does not yet model, for instance -- has no entry in the map rather than an
27
+ * explicit `external` placement; a consumer sees the same absence either way
28
+ * and refuses by name (`bindingReference`, targets/cpp/emit-context.ts).
29
+ */
30
+ export type BindingStorage =
31
+ /** A cell owned by one callable frame. */
32
+ {
33
+ readonly kind: 'local';
34
+ readonly owner: FunctionId;
35
+ }
36
+ /** A cell owned by a region that runs once: a module body, an initializer, a static block. */
37
+ | {
38
+ readonly kind: 'region';
39
+ readonly owner: RegionId;
40
+ }
41
+ /**
42
+ * Named by this program, defined by a host. `linkageName` is the ABI
43
+ * contract the two sides agree on, carried verbatim from
44
+ * `BindingOperation.external` (semantics/model/operations.ts) -- the one
45
+ * place that string is read from the declaration's own spelling.
46
+ */
47
+ | {
48
+ readonly kind: 'external';
49
+ readonly linkageName: string;
50
+ }
51
+ /**
52
+ * Named by this program, and defined by NOBODY -- an ambient global an
53
+ * installed host declared it does not provide
54
+ * (`PluginCapabilities.absentGlobals`).
55
+ *
56
+ * A cell, not an `extern`, and the difference is the whole point. The program
57
+ * still reads the name, so there has to be something to read; but no object
58
+ * file defines it, so `extern` would compile and never link. The unit defines
59
+ * it itself, holding the one value it can have -- `undefined`, which is also
60
+ * the carrier the type census gave it, so the storage and the value agree by
61
+ * construction rather than by coincidence.
62
+ *
63
+ * `linkageName` is kept for diagnostics only. Nothing links against it.
64
+ */
65
+ | {
66
+ readonly kind: 'absent';
67
+ readonly linkageName: string;
68
+ }
69
+ /**
70
+ * A host's class object: named by this program, and no cell anywhere.
71
+ *
72
+ * `NSColor` is not a variable a host defines. It is a class, and the only
73
+ * things a program reaches through it -- constructing one, and its own class
74
+ * members -- are spelled by the host by naming the class outright
75
+ * (`[[::NSStackView alloc] init]`, `[::NSColor clearColor]`). Declaring an
76
+ * `extern` for it invents a C++ global nothing defines, and in Objective-C++
77
+ * it does worse than fail to link: the ObjC class of the same name is already
78
+ * a type at global scope, so `extern gea::apple::AppKit::NSColor NSColor;` is
79
+ * a redefinition as a different kind of symbol and the file does not compile.
80
+ *
81
+ * So the read of one produces no C++ at all, exactly as a host METHOD access
82
+ * does (`emit-host-properties.ts` returns the empty rendering and the call
83
+ * site spells the whole thing). Anything that genuinely needs a value here
84
+ * is refused by name rather than handed a cell that does not exist.
85
+ */
86
+ | {
87
+ readonly kind: 'host-class';
88
+ readonly linkageName: string;
89
+ }
90
+ /**
91
+ * A host's SINGLETON: one object the host owns, reached by its own name
92
+ * rather than loaded from a cell.
93
+ *
94
+ * `document` is the case. The engine's `gea::embedded::ui::Document` has a
95
+ * private default constructor and one instance behind `Document::instance()`,
96
+ * and the member table the host ships spells every call through that -- no
97
+ * template names a receiver. So there is nothing for a read of the global to
98
+ * load: `extern gea::embedded::ui::Document document;` names a cell the
99
+ * engine never defines and would not link, and the local it was copied into
100
+ * (`gea::embedded::ui::Document v1;`) calls a constructor that is private.
101
+ *
102
+ * Physically identical to `host-class` -- the read renders nothing and the
103
+ * member site spells the whole thing -- and named apart from it because the
104
+ * two are recognized differently: a class object is one this program can
105
+ * `new`, and a singleton is one the host states members for and no program
106
+ * ever constructs.
107
+ */
108
+ | {
109
+ readonly kind: 'host-singleton';
110
+ readonly linkageName: string;
111
+ }
112
+ /**
113
+ * A host's constant: named by this program, and the host states the text.
114
+ *
115
+ * `NSBoxCustom` is an Objective-C enumerator, not a C++ global, so there is
116
+ * no cell for it and an `extern` naming one is ill-formed where the
117
+ * enumerator is already in scope. The host answers with the value instead,
118
+ * and every read renders that text.
119
+ */
120
+ | {
121
+ readonly kind: 'host-constant';
122
+ readonly linkageName: string;
123
+ readonly emit: string;
124
+ }
125
+ /**
126
+ * A name the host defines as a FUNCTION.
127
+ *
128
+ * `installRootViewController` is not a cell -- there is nothing to read and
129
+ * nothing to declare `extern`, because the host exports a function of that
130
+ * name and a C++ `extern <callable-carrier> installRootViewController;` would
131
+ * be a global variable that no object file defines. The read renders
132
+ * nothing; the call it feeds renders the host's own spelling.
133
+ */
134
+ | {
135
+ readonly kind: 'host-function';
136
+ readonly linkageName: string;
137
+ readonly emit: string;
138
+ }
139
+ /**
140
+ * A name the host defines as a NAMESPACE: a path, not a value.
141
+ *
142
+ * `deviceInfo`, `Display` and `navigator` are global objects to the
143
+ * checker and paths to the host: `deviceInfo.deviceId(...)` is
144
+ * `gea::host::device_info::deviceId(...)`, and no object of that name exists at run
145
+ * time. Reading one produces no C++ -- `host-class`'s own convention, for
146
+ * the same reason -- and what is done THROUGH it renders the host's
147
+ * spelling. Without this the cell is an ordinary external and the unit
148
+ * declares `extern std::shared_ptr<gea_record_type_801> deviceInfo;`,
149
+ * which compiles and never links.
150
+ */
151
+ | {
152
+ readonly kind: 'host-namespace';
153
+ readonly linkageName: string;
154
+ };
155
+ export interface BindingPlacement {
156
+ readonly storage: BindingStorage;
157
+ /** The carrier the plan selected for the value this cell holds, or `null` when the introduction published none. */
158
+ readonly representation: Representation | null;
159
+ }
160
+ export interface BindingPlacementInput {
161
+ readonly graph: SemanticGraph;
162
+ readonly plan: SealedRepresentationPlan;
163
+ /**
164
+ * The ABI name a host defines a cell under, for declarations this program
165
+ * reads but never introduces (`FrontendResult.externalBindings`).
166
+ *
167
+ * Only the frontend can produce this, because deciding it means asking the
168
+ * checker which declaration a name resolves to and whether that declaration
169
+ * is ambient. Omitted, every such cell simply has no placement -- which is
170
+ * what it had before this existed.
171
+ */
172
+ readonly externals?: ReadonlyMap<DeclarationId, string>;
173
+ /** Which of those an installed host denied (`FrontendResult.absentBindings`) -- see `absent` storage. */
174
+ readonly absentBindings?: ReadonlySet<DeclarationId>;
175
+ /**
176
+ * The ambient names an installed host defines as constants, to the text each
177
+ * one is (`PluginCapabilities.nativeConstants`).
178
+ *
179
+ * Consulted only for a declaration this program never introduces, and only by
180
+ * the name the frontend resolved it to -- a program that declares its own
181
+ * `NSBoxCustom` keeps its own cell, because the loop below runs second and
182
+ * skips anything already placed.
183
+ */
184
+ readonly hostConstants?: ReadonlyMap<string, string>;
185
+ /** The ambient names this program's hosts define as free functions, to the C++ each is. */
186
+ readonly hostFunctions?: ReadonlyMap<string, string>;
187
+ /**
188
+ * The ECMAScript/WHATWG GLOBAL FUNCTIONS the backend implements itself, to
189
+ * the C++ each is (`targets/cpp/host/core-globals.ts`).
190
+ *
191
+ * Held apart from `hostFunctions` above rather than merged into it, because
192
+ * the two are admitted differently: a host's name is the host's whatever
193
+ * declares it, while a language builtin's name is only the language's when
194
+ * the STANDARD LIBRARY declared it -- see `standardLibraryExternals`.
195
+ */
196
+ readonly coreGlobalFunctions?: ReadonlyMap<string, string>;
197
+ /**
198
+ * The language's own CLASS OBJECTS -- names whose value is a constructor
199
+ * this backend spells the construction of, with no cell behind the name.
200
+ * See `coreGlobalClasses` (targets/cpp/host/core-globals.ts). Same
201
+ * `standardLibraryExternals` gate as its two siblings.
202
+ */
203
+ readonly coreGlobalClasses?: ReadonlySet<string>;
204
+ /**
205
+ * The declarations the standard library declares
206
+ * (`FrontendResult.standardLibraryBindings`).
207
+ *
208
+ * The gate on `coreGlobalFunctions`: without it, a program's own ambient
209
+ * `declare function btoa(...)` would be silently redirected to this
210
+ * backend's base64 codec by name alone.
211
+ */
212
+ readonly standardLibraryExternals?: ReadonlySet<DeclarationId>;
213
+ /**
214
+ * The same, for the names one host declares in more than one of its own files
215
+ * (`PluginCapabilities.hostFunctionsByDeclaration`), keyed by that file.
216
+ */
217
+ readonly hostFunctionsByDeclaration?: ReadonlyMap<string, ReadonlyMap<string, string>>;
218
+ /** The file each external declaration lives in (`FrontendResult.externalBindingFiles`). */
219
+ readonly externalFiles?: ReadonlyMap<DeclarationId, string>;
220
+ /**
221
+ * The same disambiguation `hostFunctionsByDeclaration` gives constants: two
222
+ * of a host's own files can declare one name as a different ambient
223
+ * constant, and only the declaration this program actually resolved to says
224
+ * which was meant.
225
+ */
226
+ readonly hostConstantsByDeclaration?: ReadonlyMap<string, ReadonlyMap<string, string>>;
227
+ /** The ambient names this program's hosts own as namespace paths rather than as values. */
228
+ readonly hostNamespaces?: HostNamespaceTable;
229
+ /** The same disambiguation, for a namespace root two of a host's own files both claim. */
230
+ readonly hostNamespaceRootsByDeclaration?: ReadonlyMap<string, ReadonlySet<string>>;
231
+ /** Namespace roots authenticated by the frontend against a complete declaration set. */
232
+ readonly hostNamespaceBindings?: ReadonlySet<DeclarationId>;
233
+ /** Names with exact declaration rows; these may not fall back to name-only admission. */
234
+ readonly exactHostNamespaceNames?: ReadonlySet<string>;
235
+ /** The ambient names this program's hosts own as singleton objects reached by name -- see `host-singleton`. */
236
+ readonly hostSingletons?: ReadonlySet<string>;
237
+ /** The same disambiguation, for a singleton name two of a host's own files both claim. */
238
+ readonly hostSingletonsByDeclaration?: ReadonlyMap<string, ReadonlySet<string>>;
239
+ /** Singleton values the frontend authenticated from an exact host declaration. */
240
+ readonly hostSingletonBindings?: ReadonlySet<DeclarationId>;
241
+ }
242
+ /**
243
+ * Every cell a program introduces, keyed by declaration.
244
+ *
245
+ * `initialize`, `declare`, and the `module-link`/`initialize` events of the
246
+ * declaration-lifecycle family are all introductions, and they are collected
247
+ * together on purpose: a consumer asking "where does this cell live" must get
248
+ * one answer regardless of which family happened to introduce it.
249
+ */
250
+ export declare const projectBindingPlacements: (input: BindingPlacementInput) => ReadonlyMap<DeclarationId, BindingPlacement>;