@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,4 @@
1
+ import type { Representation } from '../../representation/model.js';
2
+ export declare const cppErrorNativeType = "gea::runtime::Error";
3
+ export declare const errorConstructorNames: ReadonlyMap<string, string>;
4
+ export declare const isNativeError: (carrier: Representation) => boolean;
@@ -0,0 +1,11 @@
1
+ export const cppErrorNativeType = 'gea::runtime::Error';
2
+ export const errorConstructorNames = new Map([
3
+ ['ErrorConstructor', 'Error'],
4
+ ['EvalErrorConstructor', 'EvalError'],
5
+ ['RangeErrorConstructor', 'RangeError'],
6
+ ['ReferenceErrorConstructor', 'ReferenceError'],
7
+ ['SyntaxErrorConstructor', 'SyntaxError'],
8
+ ['TypeErrorConstructor', 'TypeError'],
9
+ ['URIErrorConstructor', 'URIError']
10
+ ]);
11
+ export const isNativeError = (carrier) => carrier.kind === 'native-record-ref' && carrier.native === cppErrorNativeType && carrier.ownership === 'shared-refcount';
@@ -0,0 +1,72 @@
1
+ import type { IrValueId } from '../../identity/ids.js';
2
+ import { type GetOperation, type IrBody } from '../../ir/model.js';
3
+ /**
4
+ * Which deferred `Function.prototype.toString` shape a GET is.
5
+ *
6
+ * `'direct'` is a single callable receiver reading its own source
7
+ * (`emit-properties.ts`); `'union'` is a tagged union with a
8
+ * `function-value-dispatch` arm dispatching across itself and the union's
9
+ * other, string-typed arms (`emit-union-properties.ts`, the `string |
10
+ * Function` shape `request.ts`'s own `Result<T>` produces). A closed
11
+ * two-member union rather than a boolean because the two SPELLINGS differ --
12
+ * one snapshot of the receiver's own callable type versus one of the whole
13
+ * union's type, feeding a per-arm dispatch -- even though the FACT question,
14
+ * "does this GET need a snapshot before the call that follows can read a
15
+ * source string out of it", is one question both renderers ask.
16
+ */
17
+ export type FunctionSourceReadClaim = 'direct' | 'union';
18
+ /**
19
+ * The claim: is this GET a deferred function-source read, and of which
20
+ * shape.
21
+ *
22
+ * The ONE function with exactly two callers per
23
+ * the single-census architecture rule -- `functionSourceReadsOf`'s
24
+ * prepass walk below, and the two renderers (`emit-properties.ts`,
25
+ * `emit-union-properties.ts`) that ask it again as the gate for the branch
26
+ * that used to duplicate this same test inline. Both callers pass
27
+ * `ctx.staticKeyTexts`, never `ctx.constantTexts`: the latter is empty during
28
+ * the prepass and, at render time, additionally carries the `typeof`-fold
29
+ * results the render mints as it goes, which must never be treated as a
30
+ * property key the program actually wrote (`emit-context.ts`'s own doc on
31
+ * `staticKeyTexts` explains why every claim of this shape asks it instead).
32
+ */
33
+ export declare const functionSourceReadClaimOf: (staticKeyTexts: ReadonlyMap<IrValueId, string>, operation: GetOperation) => FunctionSourceReadClaim | null;
34
+ /** The settled answer for one body: every function-source-read GET's snapshot name, and the text its call reads. */
35
+ export interface FunctionSourceReadCensus {
36
+ readonly names: ReadonlyMap<IrValueId, string>;
37
+ readonly reads: ReadonlyMap<IrValueId, string>;
38
+ }
39
+ /**
40
+ * Every deferred function-source read in this body, settled before anything
41
+ * renders.
42
+ *
43
+ * Walk order is `body.blockOrder` then `allOperationsOf(block)` (operations,
44
+ * then the block's terminator) -- the printer's own block loop
45
+ * (`emit.ts`: `for (const blockId of body.blockOrder)`), so the ordinal this
46
+ * mints matches the order the GETs would be reached in if every block in
47
+ * `blockOrder` rendered unconditionally. That is deliberately NOT the same
48
+ * as "the order the printer actually visits", because the printer also
49
+ * drops blocks a reachability pass proves dead before the first one renders
50
+ * (`emit.ts`'s local BFS inside its label pass) -- exactly like the other
51
+ * prepass censuses beside this one in this file's neighborhood
52
+ * (`virtualCalleesOf`, `unionMethodReadsOf`, the direct-callee walk in
53
+ * `emit.ts`), none of which filter for reachability either. A `toString`
54
+ * read of a callable inside genuinely dead code is rare enough, and each of
55
+ * those siblings has carried the same gap since it was settled, that this
56
+ * walk matches its neighbors rather than inventing a different, one-off
57
+ * answer to a question none of them ask.
58
+ *
59
+ * What this replaces: two writers (`emit-properties.ts`,
60
+ * `emit-union-properties.ts`) minted a name off ONE shared counter --
61
+ * `` `gea_function_source_${ctx.functionSourceReads.size}` `` and
62
+ * `` `gea_union_to_string_source_${ctx.functionSourceReads.size}` `` -- AT
63
+ * THE RENDER SITE. That counted however many claims had already been
64
+ * SPELLED by the time a given GET's line was about to print, which is a
65
+ * property of the render (which branch got there first, whether an
66
+ * unrelated later change made some path stop reaching a GET this walk still
67
+ * sees), not of the program. One counter across both claim kinds is kept
68
+ * here for the same reason it was fine to share before: the two prefixes
69
+ * never collide, and there is no reason for them to interleave differently
70
+ * than they used to.
71
+ */
72
+ export declare const functionSourceReadsOf: (staticKeyTexts: ReadonlyMap<IrValueId, string>, body: IrBody) => FunctionSourceReadCensus;
@@ -0,0 +1,148 @@
1
+ import { allOperationsOf } from '../../ir/model.js';
2
+ import { dispatchedLeafExpression, unionPropertyLeaves } from './emit-union-properties.js';
3
+ const directCallableKinds = new Set([
4
+ 'function',
5
+ 'function-family',
6
+ 'function-value-dispatch',
7
+ 'function-and-constructor'
8
+ ]);
9
+ /**
10
+ * Whether every arm of a tagged union can spell a source string: a `string`
11
+ * arm returns itself, a `dynamic(untyped-callable)` arm asks the call table
12
+ * it retained for the source text it captured when the callable was boxed.
13
+ * Any other arm (a number, a record, ...) has no such spelling, and the
14
+ * whole union is refused by whichever caller finds no claim here -- exactly
15
+ * as an arm this file's `taggedUnionGetText` cannot reconcile refuses the
16
+ * WHOLE union rather than silently dropping one arm's read.
17
+ *
18
+ * Pure in the representation alone: `unionPropertyLeaves` is asked with the
19
+ * placeholder text `''`, because only each leaf's REPRESENTATION KIND
20
+ * decides viability here. The real, receiver-derived text is a render-time
21
+ * detail neither caller of `functionSourceReadClaimOf` needs in order to
22
+ * answer this question, and threading a real name through just to throw it
23
+ * away would make this predicate depend on something it does not need.
24
+ */
25
+ const everyArmHasFunctionSourceText = (receiver) => {
26
+ const leaves = unionPropertyLeaves(receiver, '');
27
+ return (leaves.length > 0 &&
28
+ leaves.every((leaf) => leaf.representation.kind === 'string' ||
29
+ (leaf.representation.kind === 'dynamic' && leaf.representation.reason === 'untyped-callable')));
30
+ };
31
+ /**
32
+ * The claim: is this GET a deferred function-source read, and of which
33
+ * shape.
34
+ *
35
+ * The ONE function with exactly two callers per
36
+ * the single-census architecture rule -- `functionSourceReadsOf`'s
37
+ * prepass walk below, and the two renderers (`emit-properties.ts`,
38
+ * `emit-union-properties.ts`) that ask it again as the gate for the branch
39
+ * that used to duplicate this same test inline. Both callers pass
40
+ * `ctx.staticKeyTexts`, never `ctx.constantTexts`: the latter is empty during
41
+ * the prepass and, at render time, additionally carries the `typeof`-fold
42
+ * results the render mints as it goes, which must never be treated as a
43
+ * property key the program actually wrote (`emit-context.ts`'s own doc on
44
+ * `staticKeyTexts` explains why every claim of this shape asks it instead).
45
+ */
46
+ export const functionSourceReadClaimOf = (staticKeyTexts, operation) => {
47
+ if (staticKeyTexts.get(operation.key.value) !== 'toString')
48
+ return null;
49
+ const receiver = operation.receiver.representation;
50
+ if (directCallableKinds.has(receiver.kind))
51
+ return 'direct';
52
+ if (receiver.kind === 'tagged-union' &&
53
+ operation.result.representation.kind === 'function-value-dispatch' &&
54
+ everyArmHasFunctionSourceText(receiver)) {
55
+ return 'union';
56
+ }
57
+ return null;
58
+ };
59
+ /**
60
+ * The exact C++ expression the following call reads a source string from,
61
+ * for a claim already proved viable by `functionSourceReadClaimOf`.
62
+ *
63
+ * Depends only on the claim kind, the receiver's representation and the
64
+ * snapshot's own name -- never on `operandText` or any other render-time
65
+ * value name -- which is what makes it safe to settle in the prepass
66
+ * alongside the name itself, rather than at the GET's render position where
67
+ * the ordering-sensitive DECLARATION and ASSIGNMENT still have to happen
68
+ * (see `emit-properties.ts`/`emit-union-properties.ts`: a following call
69
+ * argument may replace the binding the receiver came from, so the snapshot
70
+ * must be assigned before that argument runs -- but the STRING this
71
+ * expression reads out of the snapshot afterwards does not care when it was
72
+ * decided).
73
+ */
74
+ const functionSourceReadTextOf = (claim, receiver, name) => {
75
+ if (claim === 'direct')
76
+ return `std::string(${name}.sourceText())`;
77
+ const leaves = unionPropertyLeaves(receiver, name);
78
+ const texts = leaves.map((leaf) => {
79
+ if (leaf.representation.kind === 'string')
80
+ return `std::string(${leaf.text})`;
81
+ if (leaf.representation.kind === 'dynamic' && leaf.representation.reason === 'untyped-callable')
82
+ return `std::string(${leaf.text}.functionSourceText())`;
83
+ return null;
84
+ });
85
+ // `functionSourceReadClaimOf` already proved every leaf has one of the two
86
+ // shapes above (`everyArmHasFunctionSourceText`) before minting this
87
+ // claim, and a non-empty leaf list, so this cannot actually be `null`. The
88
+ // check stays as a fail-closed guard rather than a cast: a future leaf
89
+ // kind added to one side of that proof and not this one must refuse
90
+ // loudly, not silently print a wrong dispatch.
91
+ const dispatched = texts.every((text) => text !== null) ? dispatchedLeafExpression(leaves, texts) : null;
92
+ if (dispatched === null)
93
+ throw new Error(`function-source-reads: 'union' claim proved viable but its dispatch text did not materialize for ${name}`);
94
+ return dispatched;
95
+ };
96
+ /**
97
+ * Every deferred function-source read in this body, settled before anything
98
+ * renders.
99
+ *
100
+ * Walk order is `body.blockOrder` then `allOperationsOf(block)` (operations,
101
+ * then the block's terminator) -- the printer's own block loop
102
+ * (`emit.ts`: `for (const blockId of body.blockOrder)`), so the ordinal this
103
+ * mints matches the order the GETs would be reached in if every block in
104
+ * `blockOrder` rendered unconditionally. That is deliberately NOT the same
105
+ * as "the order the printer actually visits", because the printer also
106
+ * drops blocks a reachability pass proves dead before the first one renders
107
+ * (`emit.ts`'s local BFS inside its label pass) -- exactly like the other
108
+ * prepass censuses beside this one in this file's neighborhood
109
+ * (`virtualCalleesOf`, `unionMethodReadsOf`, the direct-callee walk in
110
+ * `emit.ts`), none of which filter for reachability either. A `toString`
111
+ * read of a callable inside genuinely dead code is rare enough, and each of
112
+ * those siblings has carried the same gap since it was settled, that this
113
+ * walk matches its neighbors rather than inventing a different, one-off
114
+ * answer to a question none of them ask.
115
+ *
116
+ * What this replaces: two writers (`emit-properties.ts`,
117
+ * `emit-union-properties.ts`) minted a name off ONE shared counter --
118
+ * `` `gea_function_source_${ctx.functionSourceReads.size}` `` and
119
+ * `` `gea_union_to_string_source_${ctx.functionSourceReads.size}` `` -- AT
120
+ * THE RENDER SITE. That counted however many claims had already been
121
+ * SPELLED by the time a given GET's line was about to print, which is a
122
+ * property of the render (which branch got there first, whether an
123
+ * unrelated later change made some path stop reaching a GET this walk still
124
+ * sees), not of the program. One counter across both claim kinds is kept
125
+ * here for the same reason it was fine to share before: the two prefixes
126
+ * never collide, and there is no reason for them to interleave differently
127
+ * than they used to.
128
+ */
129
+ export const functionSourceReadsOf = (staticKeyTexts, body) => {
130
+ const names = new Map();
131
+ const reads = new Map();
132
+ for (const blockId of body.blockOrder) {
133
+ const block = body.blocks.get(blockId);
134
+ if (!block)
135
+ continue;
136
+ for (const operation of allOperationsOf(block)) {
137
+ if (operation.kind !== 'get')
138
+ continue;
139
+ const claim = functionSourceReadClaimOf(staticKeyTexts, operation);
140
+ if (claim === null)
141
+ continue;
142
+ const name = `${claim === 'direct' ? 'gea_function_source_' : 'gea_union_to_string_source_'}${names.size}`;
143
+ names.set(operation.result.id, name);
144
+ reads.set(operation.result.id, functionSourceReadTextOf(claim, operation.receiver.representation, name));
145
+ }
146
+ }
147
+ return { names, reads };
148
+ };
@@ -0,0 +1,25 @@
1
+ import type { Representation } from '../../../representation/model.js';
2
+ /**
3
+ * The complete Atomics surface the C++ backend can render. This is deliberately
4
+ * representation-aware: the host-member table grants a syntactic member read,
5
+ * while this authority decides whether that particular call has an emitter.
6
+ * Preflight and emission consume this same predicate so neither can claim a
7
+ * dynamic, non-shared, float, or unsupported wait/notify call is available.
8
+ */
9
+ export type AtomicsCallSupport = {
10
+ readonly supported: true;
11
+ readonly kind: 'is-lock-free';
12
+ readonly runtimeMember: null;
13
+ } | {
14
+ readonly supported: true;
15
+ readonly kind: 'fixed';
16
+ readonly runtimeMember: string;
17
+ } | {
18
+ readonly supported: true;
19
+ readonly kind: 'wait' | 'notify';
20
+ readonly runtimeMember: null;
21
+ } | {
22
+ readonly supported: false;
23
+ readonly reason: string;
24
+ };
25
+ export declare const atomicsCallSupport: (member: string, arguments_: readonly Representation[]) => AtomicsCallSupport;
@@ -0,0 +1,63 @@
1
+ const integerElements = new Set(['int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32']);
2
+ const fixedMembers = new Map([
3
+ ['load', [2, 'load']],
4
+ ['store', [3, 'store']],
5
+ ['add', [3, 'add']],
6
+ ['sub', [3, 'sub']],
7
+ ['and', [3, 'bitAnd']],
8
+ ['or', [3, 'bitOr']],
9
+ ['xor', [3, 'bitXor']],
10
+ ['exchange', [3, 'exchange']],
11
+ ['compareExchange', [4, 'compareExchange']]
12
+ ]);
13
+ const isNumber = (representation) => representation?.kind === 'scalar' && representation.domain === 'number';
14
+ const numberedArguments = (member, arguments_, count) => {
15
+ for (let position = 1; position < count; position += 1) {
16
+ if (!isNumber(arguments_[position])) {
17
+ return { supported: false, reason: `Atomics.${member} argument ${position + 1} must be a statically numeric carrier` };
18
+ }
19
+ }
20
+ return null;
21
+ };
22
+ export const atomicsCallSupport = (member, arguments_) => {
23
+ if (member === 'isLockFree') {
24
+ if (arguments_.length !== 1)
25
+ return { supported: false, reason: 'Atomics.isLockFree takes exactly one size argument' };
26
+ return isNumber(arguments_[0])
27
+ ? { supported: true, kind: 'is-lock-free', runtimeMember: null }
28
+ : { supported: false, reason: 'Atomics.isLockFree argument 1 must be a statically numeric carrier' };
29
+ }
30
+ const view = arguments_[0];
31
+ if (view?.kind !== 'typed-array') {
32
+ return { supported: false, reason: `Atomics.${member} requires a concrete typed-array carrier, never an any/dynamic value` };
33
+ }
34
+ if (!integerElements.has(view.element)) {
35
+ return {
36
+ supported: false,
37
+ reason: `Atomics.${member} requires an integer Number typed array; ${view.element} is refused (BigInt arrays have no native BigInt carrier)`
38
+ };
39
+ }
40
+ if (view.buffer !== 'shared-array-buffer') {
41
+ return {
42
+ supported: false,
43
+ reason: `Atomics.${member} requires a SharedArrayBuffer-backed view; this ${view.element} view is backed by ArrayBuffer`
44
+ };
45
+ }
46
+ const fixed = fixedMembers.get(member);
47
+ if (fixed) {
48
+ if (arguments_.length !== fixed[0])
49
+ return { supported: false, reason: `Atomics.${member} takes exactly ${fixed[0]} arguments` };
50
+ return numberedArguments(member, arguments_, fixed[0]) ?? { supported: true, kind: 'fixed', runtimeMember: fixed[1] };
51
+ }
52
+ if (member !== 'wait' && member !== 'notify')
53
+ return { supported: false, reason: `Atomics.${member} is not implemented` };
54
+ if (view.element !== 'int32') {
55
+ return { supported: false, reason: `Atomics.${member} is available only for Int32Array; BigInt64Array is deliberately unsupported` };
56
+ }
57
+ const count = arguments_.length;
58
+ if (member === 'wait' && (count < 3 || count > 4))
59
+ return { supported: false, reason: 'Atomics.wait takes three or four arguments' };
60
+ if (member === 'notify' && (count < 2 || count > 3))
61
+ return { supported: false, reason: 'Atomics.notify takes two or three arguments' };
62
+ return numberedArguments(member, arguments_, count) ?? { supported: true, kind: member, runtimeMember: null };
63
+ };
@@ -0,0 +1,108 @@
1
+ /**
2
+ * The ECMAScript/WHATWG GLOBAL FUNCTIONS this backend implements itself, on
3
+ * the STANDARD-LIBRARY gate.
4
+ *
5
+ * ## Its sibling, and how the two divide
6
+ *
7
+ * `host-members.ts` has `coreHostFunctions`/`coreHostConstants`, which answer
8
+ * the same shape of question for `parseInt`/`parseFloat`/`isNaN`/`isFinite`
9
+ * and for `NaN`/`Infinity`. They are NOT this table: they are unioned into the
10
+ * PLUGIN maps (`compiler.ts`'s `hostFunctions`/`hostConstants`) and so are
11
+ * consulted for any declaration of that name, while every row here is gated on
12
+ * `standardLibraryExternals` -- the declaration's own file carrying
13
+ * `/// <reference no-default-lib="true"/>`.
14
+ *
15
+ * A NAME BELONGS IN EXACTLY ONE OF THE TWO. Two rows for one name would be two
16
+ * authorities over one question, and `hostStorageOf` consults the ungated pair
17
+ * first, so the gated row would silently never be reached. `NaN` and
18
+ * `Infinity` were briefly stated in both and are stated only in
19
+ * `coreHostConstants` now.
20
+ *
21
+ * `btoa`, `encodeURIComponent` and the rest are not a host's protocol: nothing
22
+ * installs them, no plugin declares them, and no target may decline them --
23
+ * they are part of the language surface the standard library declares, in
24
+ * exactly the same category as `Math`, `JSON` and the eight typed-array
25
+ * constructors (`native-protocols.ts`'s own comment says so of `JSON@1`). So
26
+ * their C++ spellings belong here, in the compiler's own table, and never in
27
+ * the gea plugin package: a plugin row would make an ECMAScript builtin
28
+ * conditional on which host happens to be installed.
29
+ *
30
+ * The table is the same shape a plugin's `hostFunctions` is -- an ambient NAME
31
+ * to the C++ path a call renders -- and `compiler.ts` unions it into the same
32
+ * `hostFunctions` map, so a name here reaches `projection/bindings.ts`'s
33
+ * `host-function` storage and `emit-callable.ts`'s host-call path with no
34
+ * second mechanism.
35
+ *
36
+ * ## Why a name is safe to key on here
37
+ *
38
+ * It is not, on its own. `projection/bindings.ts` consults this table ONLY for
39
+ * a declaration the frontend recorded in `standardLibraryBindings` -- an
40
+ * ambient declaration whose source file carries
41
+ * `/// <reference no-default-lib="true"/>`, which is the checker's own
42
+ * "this file IS a standard library" flag. A program that declares its own
43
+ * `btoa` keeps its own cell, both because it introduces one (the first
44
+ * placement loop wins) and because, if it merely *declares* one ambiently in
45
+ * its own `.d.ts`, that file is not a default library and this table is never
46
+ * reached.
47
+ *
48
+ * ## What is NOT here, and why
49
+ *
50
+ * `parseInt`, `parseFloat`, `isNaN` and `isFinite` are the other four
51
+ * ECMAScript global functions. Each has a real implementation available --
52
+ * `gea::host::detail::toNumber` is ECMAScript's own `ToNumber` -- but
53
+ * `parseInt`'s two-argument radix form and `parseFloat`'s prefix-parse rule
54
+ * (ECMA-262 19.2.5/19.2.4) are NOT `ToNumber`, and rendering them as it would
55
+ * be a silently different answer for `parseInt('08')`, `parseInt('0x10')` and
56
+ * `parseFloat('3px')`. They stay absent, which leaves them exactly where they
57
+ * were: an unresolved external cell whose link fails by name.
58
+ *
59
+ * `escape`/`unescape` (ECMA-262 B.2.1) ARE implemented in the runtime
60
+ * (`gea::runtime::uri::escapeImpl`/`unescapeImpl`, ported with the rest of
61
+ * v1's `uri.cpp`) but are deliberately not claimed here: `lib.es5.d.ts` does
62
+ * not declare them at all, so no program this compiler sees can name one, and
63
+ * a row for a name that cannot be reached would claim a surface nothing tests.
64
+ */
65
+ export declare const coreGlobalFunctions: ReadonlyMap<string, string>;
66
+ /**
67
+ * The standard library CLASSES this backend implements itself, and the C++
68
+ * type each one's values are carried in.
69
+ *
70
+ * The same category as the table above and the same reason for living here:
71
+ * `TextEncoder`/`TextDecoder` are the Encoding Standard's, not a host's, so a
72
+ * plugin row would make them conditional on which host is installed. What is
73
+ * different is only the shape of the answer -- a class has values, so what the
74
+ * compiler needs from this table is a CARRIER, not a call spelling.
75
+ *
76
+ * `compiler.ts` unions this into the same `nativeTypes` map a plugin's stated
77
+ * carriers arrive in, which is what gets each spelling to two places at once:
78
+ * `semantics/host-protocols.ts`'s `bindStandardClasses` (so the declared type
79
+ * derives `native-handle` with the spelling on it) and the manifest's
80
+ * `nativeProtocols` claim set, which is keyed by carrier -- so the protocol is
81
+ * claimed exactly where its implementation is, with no second list to drift.
82
+ *
83
+ * Members are stated in `host-members.ts`'s `coreHostMembers`, keyed by these
84
+ * same carrier strings; a member with no row there refuses by name at its own
85
+ * access (`TextEncoder.encodeInto` is the one this applies to today).
86
+ */
87
+ export declare const coreNativeTypes: ReadonlyMap<string, string>;
88
+ /**
89
+ * The same names again, as the CLASS OBJECTS a program reaches by name.
90
+ *
91
+ * `new TextEncoder()` names two different things: the instance type, bound
92
+ * above, and the constructor VALUE. The constructor's type is an anonymous
93
+ * type literal in `lib.dom.d.ts` (`{ prototype: TextEncoder; new(): TextEncoder }`),
94
+ * unlike `Uint8Array`'s named `Uint8ArrayConstructor` -- and an anonymous type
95
+ * has no declaration the representation layer's declaration-keyed binding can
96
+ * reach, so the class object derived a `constructor-family` carrier over the
97
+ * structural body and linked as `extern gea::ConstructorObject<...>` that
98
+ * nothing defines.
99
+ *
100
+ * `projection/bindings.ts` consults this set, on the same
101
+ * `standardLibraryExternals` gate as the two tables above, and gives those
102
+ * names `host-class` storage: no cell, no extern, the read renders nothing,
103
+ * and the construction is spelled whole at the site that performs it
104
+ * (`targets/cpp/emit-buffers.ts`'s `emitTextCodecConstruct`). The other names
105
+ * below have the same physical answer but need it for a different reason:
106
+ * their overloads deliberately have no single construct ABI.
107
+ */
108
+ export declare const coreGlobalClasses: ReadonlySet<string>;
@@ -0,0 +1,158 @@
1
+ /**
2
+ * The ECMAScript/WHATWG GLOBAL FUNCTIONS this backend implements itself, on
3
+ * the STANDARD-LIBRARY gate.
4
+ *
5
+ * ## Its sibling, and how the two divide
6
+ *
7
+ * `host-members.ts` has `coreHostFunctions`/`coreHostConstants`, which answer
8
+ * the same shape of question for `parseInt`/`parseFloat`/`isNaN`/`isFinite`
9
+ * and for `NaN`/`Infinity`. They are NOT this table: they are unioned into the
10
+ * PLUGIN maps (`compiler.ts`'s `hostFunctions`/`hostConstants`) and so are
11
+ * consulted for any declaration of that name, while every row here is gated on
12
+ * `standardLibraryExternals` -- the declaration's own file carrying
13
+ * `/// <reference no-default-lib="true"/>`.
14
+ *
15
+ * A NAME BELONGS IN EXACTLY ONE OF THE TWO. Two rows for one name would be two
16
+ * authorities over one question, and `hostStorageOf` consults the ungated pair
17
+ * first, so the gated row would silently never be reached. `NaN` and
18
+ * `Infinity` were briefly stated in both and are stated only in
19
+ * `coreHostConstants` now.
20
+ *
21
+ * `btoa`, `encodeURIComponent` and the rest are not a host's protocol: nothing
22
+ * installs them, no plugin declares them, and no target may decline them --
23
+ * they are part of the language surface the standard library declares, in
24
+ * exactly the same category as `Math`, `JSON` and the eight typed-array
25
+ * constructors (`native-protocols.ts`'s own comment says so of `JSON@1`). So
26
+ * their C++ spellings belong here, in the compiler's own table, and never in
27
+ * the gea plugin package: a plugin row would make an ECMAScript builtin
28
+ * conditional on which host happens to be installed.
29
+ *
30
+ * The table is the same shape a plugin's `hostFunctions` is -- an ambient NAME
31
+ * to the C++ path a call renders -- and `compiler.ts` unions it into the same
32
+ * `hostFunctions` map, so a name here reaches `projection/bindings.ts`'s
33
+ * `host-function` storage and `emit-callable.ts`'s host-call path with no
34
+ * second mechanism.
35
+ *
36
+ * ## Why a name is safe to key on here
37
+ *
38
+ * It is not, on its own. `projection/bindings.ts` consults this table ONLY for
39
+ * a declaration the frontend recorded in `standardLibraryBindings` -- an
40
+ * ambient declaration whose source file carries
41
+ * `/// <reference no-default-lib="true"/>`, which is the checker's own
42
+ * "this file IS a standard library" flag. A program that declares its own
43
+ * `btoa` keeps its own cell, both because it introduces one (the first
44
+ * placement loop wins) and because, if it merely *declares* one ambiently in
45
+ * its own `.d.ts`, that file is not a default library and this table is never
46
+ * reached.
47
+ *
48
+ * ## What is NOT here, and why
49
+ *
50
+ * `parseInt`, `parseFloat`, `isNaN` and `isFinite` are the other four
51
+ * ECMAScript global functions. Each has a real implementation available --
52
+ * `gea::host::detail::toNumber` is ECMAScript's own `ToNumber` -- but
53
+ * `parseInt`'s two-argument radix form and `parseFloat`'s prefix-parse rule
54
+ * (ECMA-262 19.2.5/19.2.4) are NOT `ToNumber`, and rendering them as it would
55
+ * be a silently different answer for `parseInt('08')`, `parseInt('0x10')` and
56
+ * `parseFloat('3px')`. They stay absent, which leaves them exactly where they
57
+ * were: an unresolved external cell whose link fails by name.
58
+ *
59
+ * `escape`/`unescape` (ECMA-262 B.2.1) ARE implemented in the runtime
60
+ * (`gea::runtime::uri::escapeImpl`/`unescapeImpl`, ported with the rest of
61
+ * v1's `uri.cpp`) but are deliberately not claimed here: `lib.es5.d.ts` does
62
+ * not declare them at all, so no program this compiler sees can name one, and
63
+ * a row for a name that cannot be reached would claim a surface nothing tests.
64
+ */
65
+ export const coreGlobalFunctions = new Map([
66
+ // HTML Standard 8.3. `btoa` is defined over Latin-1 code points and `atob`
67
+ // over the forgiving-base64 grammar; see `gea::runtime::base64` in
68
+ // `runtime/gea_runtime.h` for both, ported from v1's `base64.cpp`.
69
+ ['btoa', 'gea::runtime::base64::encode'],
70
+ ['atob', 'gea::runtime::base64::decode'],
71
+ // ECMA-262 19.2.6.2 / 19.2.6.3 / 19.2.6.1 / 19.2.6.5 -- four spellings of
72
+ // two algorithms (`Encode`/`Decode`) differing only in whether
73
+ // `uriReserved` is preserved. `encodeURIComponent`/`decodeURIComponent`
74
+ // declare `string | number | boolean`, which the program carries as a
75
+ // tagged union; `host/emit-host-arity.ts` picks the live arm at the call
76
+ // and each arm lands on one of the three overloads the runtime states.
77
+ ['encodeURI', 'gea::runtime::uri::encodeUri'],
78
+ ['encodeURIComponent', 'gea::runtime::uri::encodeUriComponent'],
79
+ ['decodeURI', 'gea::runtime::uri::decodeUri'],
80
+ ['decodeURIComponent', 'gea::runtime::uri::decodeUriComponent']
81
+ ]);
82
+ /**
83
+ * The standard library CLASSES this backend implements itself, and the C++
84
+ * type each one's values are carried in.
85
+ *
86
+ * The same category as the table above and the same reason for living here:
87
+ * `TextEncoder`/`TextDecoder` are the Encoding Standard's, not a host's, so a
88
+ * plugin row would make them conditional on which host is installed. What is
89
+ * different is only the shape of the answer -- a class has values, so what the
90
+ * compiler needs from this table is a CARRIER, not a call spelling.
91
+ *
92
+ * `compiler.ts` unions this into the same `nativeTypes` map a plugin's stated
93
+ * carriers arrive in, which is what gets each spelling to two places at once:
94
+ * `semantics/host-protocols.ts`'s `bindStandardClasses` (so the declared type
95
+ * derives `native-handle` with the spelling on it) and the manifest's
96
+ * `nativeProtocols` claim set, which is keyed by carrier -- so the protocol is
97
+ * claimed exactly where its implementation is, with no second list to drift.
98
+ *
99
+ * Members are stated in `host-members.ts`'s `coreHostMembers`, keyed by these
100
+ * same carrier strings; a member with no row there refuses by name at its own
101
+ * access (`TextEncoder.encodeInto` is the one this applies to today).
102
+ */
103
+ export const coreNativeTypes = new Map([
104
+ ['TextEncoder', 'gea::runtime::textcodec::TextEncoder'],
105
+ ['TextDecoder', 'gea::runtime::textcodec::TextDecoder']
106
+ ]);
107
+ /**
108
+ * The same names again, as the CLASS OBJECTS a program reaches by name.
109
+ *
110
+ * `new TextEncoder()` names two different things: the instance type, bound
111
+ * above, and the constructor VALUE. The constructor's type is an anonymous
112
+ * type literal in `lib.dom.d.ts` (`{ prototype: TextEncoder; new(): TextEncoder }`),
113
+ * unlike `Uint8Array`'s named `Uint8ArrayConstructor` -- and an anonymous type
114
+ * has no declaration the representation layer's declaration-keyed binding can
115
+ * reach, so the class object derived a `constructor-family` carrier over the
116
+ * structural body and linked as `extern gea::ConstructorObject<...>` that
117
+ * nothing defines.
118
+ *
119
+ * `projection/bindings.ts` consults this set, on the same
120
+ * `standardLibraryExternals` gate as the two tables above, and gives those
121
+ * names `host-class` storage: no cell, no extern, the read renders nothing,
122
+ * and the construction is spelled whole at the site that performs it
123
+ * (`targets/cpp/emit-buffers.ts`'s `emitTextCodecConstruct`). The other names
124
+ * below have the same physical answer but need it for a different reason:
125
+ * their overloads deliberately have no single construct ABI.
126
+ */
127
+ export const coreGlobalClasses = new Set([
128
+ ...coreNativeTypes.keys(),
129
+ // These constructor protocols deliberately have no joined [[Construct]]
130
+ // ABI: their overloads take physically different first arguments, and the
131
+ // construct emitter dispatches from the already-selected result and
132
+ // argument carriers instead. That means the native-handle representation
133
+ // cannot be used as the test for whether the global is a class object. A
134
+ // constructor read that flows through an intersection or generic can lose
135
+ // even the partial construct convention and would otherwise become an
136
+ // `extern Uint8Array`-style cell that no runtime defines. The standard-lib
137
+ // identity gate in `projection/bindings.ts` keeps program declarations with
138
+ // the same names ordinary cells.
139
+ 'Int8Array',
140
+ 'Uint8Array',
141
+ 'Uint8ClampedArray',
142
+ 'Int16Array',
143
+ 'Uint16Array',
144
+ 'Int32Array',
145
+ 'Uint32Array',
146
+ 'Float32Array',
147
+ 'Float64Array',
148
+ 'ArrayBuffer',
149
+ 'SharedArrayBuffer',
150
+ 'DataView',
151
+ 'Array',
152
+ 'Map',
153
+ 'Set',
154
+ 'WeakMap',
155
+ 'WeakSet',
156
+ 'RegExp',
157
+ 'Date'
158
+ ]);
@@ -0,0 +1,42 @@
1
+ /**
2
+ * The host members whose call-site renderer takes a `dynamic` argument through
3
+ * unconditionally -- the C++ backend's half of
4
+ * `TargetRuntimeManifest.dynamicArgumentHostParameters`
5
+ * (preflight/obligations.ts), which states what listing one WAIVES and why
6
+ * the key includes member, argument role and ordinal.
7
+ *
8
+ * Here rather than in `manifest.ts` because the fact is a property of the
9
+ * renderers, not of the manifest: every entry below is an `objectMemberText`
10
+ * arm (`emit-host-object.ts`), and a member added there without a row here --
11
+ * or a row here whose arm was deleted -- is a drift best noticed by the two
12
+ * living side by side. `manifest.ts` cites this set; it does not own it.
13
+ *
14
+ * ## Why each of these needs the waiver and the others do not
15
+ *
16
+ * Each row passes that one argument's box straight into a host call-site
17
+ * renderer. So there is no conversion for the emitted line to perform and
18
+ * none for preflight to demand at that position. No row grants anything to a
19
+ * sibling parameter of the same member.
20
+ *
21
+ * `Object.keys`, `getOwnPropertyNames`, `freeze` and `isFrozen` are
22
+ * deliberately ABSENT even though they take the same dynamic receiver. Their
23
+ * declared parameter is `object` / `T`, which already derives a carrier a
24
+ * `dynamic` converts into, so the ordinary obligation is satisfied on its own
25
+ * -- and waiving a check that passes hides a real one for no gain.
26
+ *
27
+ * What these positions have in common is a declared parameter nothing
28
+ * converts into:
29
+ * `{ [s: string]: T } | ArrayLike<T>` for `values`/`entries`, which derives a
30
+ * `tagged-union(dictionary | native-record-ref)`; and `PropertyKey` -- a
31
+ * `string | number | symbol` union -- for the key parameter of `hasOwn`,
32
+ * `defineProperty` and `getOwnPropertyDescriptor`. `assign`'s variadic source
33
+ * parameter is the same shape as `values`'.
34
+ *
35
+ * `Object.defineProperty:argument:2` is deliberately absent. The emitter
36
+ * materializes descriptors only from an exact descriptor carrier; a dynamic
37
+ * box does not state which descriptor fields and attributes are present.
38
+ * `Object.defineProperties` is absent wholesale: its source transform accepts
39
+ * only a closed descriptor-map literal and lowers it to singular operations,
40
+ * while an open/dynamic map must remain fail-closed.
41
+ */
42
+ export declare const cppDynamicArgumentHostParameters: ReadonlySet<string>;