@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,597 @@
1
+ import { disjointNativeRecordIndexOf } from '../native-record-index.js';
2
+ import { recordIndexForKeyCarrier, representationKey } from '../../representation/model.js';
3
+ import { hasNativeNumericIndexArms } from '../../representation/numeric-index.js';
4
+ import { objectPrototypeMemberNames } from '../../representation/record-fields.js';
5
+ import { classPrototypeMemberIsPresent, symbolKeyedMemberIsDeclared } from '../../projection/class-property-presence.js';
6
+ import { objectShapePrototypeMethods } from '../../projection/callee.js';
7
+ import { callableOwnPrototypeAt } from '../../semantics/callable-origins.js';
8
+ import { isDirectFunctionSourceRead } from './function-source.js';
9
+ import { callableBuiltinRecipeKey, classDeclarationsWithLifecycleEvents, functionValueOwnPropertyWrite, nativeRecordRefHasIndexSidecar, nonExpandoFunctionMemberNames, receiverIsUnreachable, recordIndexesOf, taggedUnionArmsAreAllArrayObjects, taggedUnionArmsAreAllDictionaries, taggedUnionArmsAreAllTypedArrays, taggedUnionArmsHaveNativeSidecar } from './property-access-keys.js';
10
+ import { generatedObjectCarrier, generatedSharedObjectCarrier, generatedSharedRecordCarrier, layoutAnswerSuffix, recordAnswerFor, resolvedLayoutOf } from './has-property-key.js';
11
+ import { definitelyPrimitive, mapTestable } from './instanceof-key.js';
12
+ import { atomicsCallSupport } from '../../targets/cpp/host/atomics.js';
13
+ import { regexpRoleOf } from '../../targets/cpp/prototype/emit-prototype-regexp.js';
14
+ import { nativeRecordIndexHasPropertyOf } from '../native-record-index-transport.js';
15
+ /**
16
+ * The `property-access`, `host-member-call` and (for `has-property`/
17
+ * `instanceof`) `runtime-helper` families of `ir/certify.ts`, ported from
18
+ * `preflight/property-access.ts`, `preflight/has-property-key.ts`,
19
+ * `preflight/instanceof-key.ts` and `preflight/invocation-arguments.ts`'s
20
+ * Atomics builder.
21
+ *
22
+ * The manifest's tables (`targets/cpp/manifest/capabilities.ts`) spell a
23
+ * receiver's recipe with the SAME refinements the old builders computed from
24
+ * the semantic graph and plan -- `record-with-index(unmatched-key)`,
25
+ * `iterator(next)`, `function-value-dispatch(bind-direct)`, and the rest.
26
+ * Dropping any one of those parenthetical refinements here would certify a
27
+ * program the printer still refuses, because the manifest never claims the
28
+ * unrefined, flatter key. So this module re-derives every refinement the old
29
+ * builders derived, using the IR's own already-resolved fields wherever one
30
+ * is available (`IrOperand.representation` needs no plan lookup: lowering
31
+ * already narrowed a receiver's view and left a key's carrier raw, exactly
32
+ * the two facts the old builders read off the plan) and falling back to the
33
+ * semantic operation via `ctx.semanticOperationOf(operation.lineage)` only
34
+ * for the handful of genuinely whole-program facts the IR does not carry
35
+ * (a callable's `.call`/`.apply`/`.bind` mutation census, a class's
36
+ * lifecycle census) -- exactly the two `CertifyContext`'s own doc comment
37
+ * names as still graph-derived pending Phase 3.
38
+ *
39
+ * `property-value.ts` and `array-literal-elements.ts` need no port: both
40
+ * obligations existed only to check that a `dynamic`-sourced value converts
41
+ * into its receiver's declared field/element type, and on the IR that
42
+ * conversion is an explicit `convert` op lowering already emits before the
43
+ * store (`ir/lower-property.ts`'s `enterRequiredOperand` on both `set` and
44
+ * `define-own-property`'s value operand, `ir/lower-allocation.ts`'s
45
+ * `enterRequiredOperand` in both the array-object and tuple-record branches)
46
+ * -- the spine's own conversion census in `ir/certify.ts` already certifies
47
+ * it, so restating it here would be a second, redundant obligation.
48
+ */
49
+ // ---------------------------------------------------------------------------
50
+ // Shared IR-level key helpers
51
+ // ---------------------------------------------------------------------------
52
+ /** The constant text a property-access key operand states, or `null` for a genuinely computed one. A key is a raw role: its representation is never converted, so this is the whole of what the old builders' `keyIsComputed`/`source.kind === 'constant'` pair asked. */
53
+ const constantKeyTextOf = (ctx, key) => {
54
+ const definition = ctx.definitionOf(key.value);
55
+ return definition?.kind === 'constant' ? definition.text : null;
56
+ };
57
+ /** Property-access keys are always constant-folded to a `literal: 'string'` text at normalize time (`producers/properties.ts`'s `keyOf`), so "computed" is exactly "not a constant". */
58
+ const isComputedKey = (ctx, key) => ctx.definitionOf(key.value)?.kind !== 'constant';
59
+ /** The six object internal methods' own key/receiver shape, uniform across the five that carry a key. `own-property-keys` has none, and is never actually reached (see below) but is handled the same trivial way. */
60
+ const receiverAndKeyOf = (operation) => {
61
+ if (operation.kind === 'own-property-keys')
62
+ return { receiver: operation.receiver, key: null };
63
+ return { receiver: operation.receiver, key: operation.key };
64
+ };
65
+ // ---------------------------------------------------------------------------
66
+ // Per-site refinements the old builders derived from a semantic operand;
67
+ // restated here against the IR's own key text/representation instead of an
68
+ // `operandOf(operation, 'key')` lookup, since the operand model itself
69
+ // differs (no `SemanticOperand.source` tri-state to switch on).
70
+ // ---------------------------------------------------------------------------
71
+ const constructorFamilyIsCensused = (representation, censusedClasses) => representation.kind === 'constructor-family' && representation.members.some((member) => censusedClasses.has(member));
72
+ const recordWithIndexKeyNamesAField = (representation, keyText) => {
73
+ if (representation.kind !== 'record-with-index' || keyText === null)
74
+ return false;
75
+ return representation.fields.some((field) => field.key === keyText);
76
+ };
77
+ /** The declared fields of a generated record layout, or `null` for a carrier that has none. */
78
+ const generatedFieldsOf = (representation, deriver) => {
79
+ if (representation.kind === 'record' || representation.kind === 'record-with-index')
80
+ return representation.fields;
81
+ if (representation.kind === 'class-ref' || (representation.kind === 'native-record-ref' && representation.native === null)) {
82
+ const layout = deriver.layoutOf(representation.shapeId);
83
+ return layout.kind === 'record' || layout.kind === 'record-with-index' ? layout.fields : null;
84
+ }
85
+ return null;
86
+ };
87
+ const deleteNamesOptionalGeneratedField = (representation, keyText, deriver) => {
88
+ if (keyText === null)
89
+ return false;
90
+ return generatedFieldsOf(representation, deriver)?.some((field) => field.key === keyText && !field.required) === true;
91
+ };
92
+ /**
93
+ * A constant delete key naming NO declared field of a plain record: the key
94
+ * lives in the record's expando sidecar (one `Object.defineProperty` added
95
+ * after the fact), the one table `emitNativeSidecarDelete` can actually erase
96
+ * from. Refined by name so that the plain `record:delete:false` -- a constant
97
+ * key naming a REQUIRED field -- stays unclaimed: a required field has no
98
+ * presence its typed reads consult, so its deletion cannot be honoured, and
99
+ * the manifest must not say otherwise.
100
+ */
101
+ const deleteNamesRecordExpandoKey = (representation, keyText, deriver) => {
102
+ if (keyText === null || representation.kind !== 'record')
103
+ return false;
104
+ const fields = generatedFieldsOf(representation, deriver);
105
+ return fields !== null && !fields.some((field) => field.key === keyText);
106
+ };
107
+ const deleteNamesNativeIndexEntry = (representation, keyText, deriver) => {
108
+ if (!nativeRecordRefHasIndexSidecar(representation, deriver) || keyText === null)
109
+ return false;
110
+ const layout = deriver.layoutOf(representation.shapeId);
111
+ if (layout.kind !== 'record-with-index')
112
+ return false;
113
+ return !layout.fields.some((field) => field.key === keyText);
114
+ };
115
+ const callableMemberIs = (keyText, member) => keyText === member;
116
+ const iteratorMemberNameOf = (keyText) => keyText ?? 'non-constant-key';
117
+ const callableComputedOwnSymbolRead = (access, keyRepresentation) => access.method === 'get' && access.computed && keyRepresentation?.kind === 'symbol';
118
+ const callableComputedOwnSymbolWrite = (access, keyRepresentation) => access.method === 'set' && access.computed && keyRepresentation?.kind === 'symbol';
119
+ const callableOwnPropertyRead = (receiver, access, keyText) => {
120
+ if (access.method !== 'get' || access.computed || keyText === null)
121
+ return false;
122
+ if (keyText === 'name' || keyText === 'length')
123
+ return true;
124
+ if (receiver === 'function-and-constructor' && keyText === 'prototype')
125
+ return true;
126
+ return !nonExpandoFunctionMemberNames.has(keyText) && keyText !== 'prototype';
127
+ };
128
+ // ---------------------------------------------------------------------------
129
+ // The callable `.call`/`.apply`/`.bind` builtin ladder needs a whole-program
130
+ // own-property-mutation census (`semantics/callable-origins.ts`), which is
131
+ // keyed by a `SealedRepresentationPlan` -- a fact `CertifyContext` does not
132
+ // carry (its own doc comment names this as one of two facts still read off
133
+ // the graph pending Phase 3). `canCarryCallableObject`, the plan's only use
134
+ // inside that census, asks nothing the plan narrows: it distinguishes a
135
+ // callable-shaped result from everything else by KIND, which a value's own
136
+ // declared type already settles before any per-site narrowing runs. So a
137
+ // plan built once here, from each published result's own raw derivation
138
+ // (`deriver.derive`, never the census's per-use narrowing), answers the
139
+ // identical question the real plan would -- and lets `callableBuiltinRecipeKey`
140
+ // run completely unmodified.
141
+ // ---------------------------------------------------------------------------
142
+ const syntheticPlans = new WeakMap();
143
+ const syntheticPlanFor = (graph, deriver) => {
144
+ const cached = syntheticPlans.get(graph);
145
+ if (cached)
146
+ return cached;
147
+ const selected = new Map();
148
+ for (const producer of graph.operations.values()) {
149
+ for (const result of producer.results) {
150
+ if (!selected.has(result.id))
151
+ selected.set(result.id, deriver.derive(result.type));
152
+ }
153
+ }
154
+ const plan = {
155
+ selected,
156
+ evidence: new Map(),
157
+ conflicts: []
158
+ };
159
+ syntheticPlans.set(graph, plan);
160
+ return plan;
161
+ };
162
+ const censusedClassesByGraph = new WeakMap();
163
+ const censusedClassesFor = (graph) => {
164
+ const cached = censusedClassesByGraph.get(graph);
165
+ if (cached)
166
+ return cached;
167
+ const censused = classDeclarationsWithLifecycleEvents(graph);
168
+ censusedClassesByGraph.set(graph, censused);
169
+ return censused;
170
+ };
171
+ // ---------------------------------------------------------------------------
172
+ // `get`/`set`/`delete`/`own-property-keys`/`define-own-property`
173
+ // ---------------------------------------------------------------------------
174
+ /**
175
+ * The receiver key the manifest's `propertyRecipes` set claims, exactly
176
+ * mirroring `preflight/property-access.ts`'s `buildPropertyAccessObligation`
177
+ * ternary ladder in the same precedence order -- first match wins, so the
178
+ * order below is load-bearing and copied line for line.
179
+ */
180
+ const receiverKeyOf = (ctx, access, representation, key, keyText, semanticOp) => {
181
+ const recordIndexes = recordIndexesOf(representation, ctx.deriver);
182
+ const indexCarrier = key ? key.representation : null;
183
+ const indexDomainMatches = indexCarrier !== null && recordIndexForKeyCarrier(recordIndexes, indexCarrier, keyText ?? undefined) !== null;
184
+ if (access.computed &&
185
+ recordIndexes.length > 0 &&
186
+ (access.method === 'get' || access.method === 'set' || access.method === 'define-own-property') &&
187
+ !indexDomainMatches) {
188
+ return `${access.receiver}(no-index-domain)`;
189
+ }
190
+ if (access.method === 'delete' &&
191
+ key &&
192
+ disjointNativeRecordIndexOf(ctx.deriver, representation, key.representation, keyText ?? undefined))
193
+ return 'record(disjoint-index)';
194
+ if (access.method === 'delete' && deleteNamesOptionalGeneratedField(representation, keyText, ctx.deriver))
195
+ return 'record(optional-field)';
196
+ if (access.method === 'delete' && deleteNamesRecordExpandoKey(representation, keyText, ctx.deriver))
197
+ return 'record(expando-key)';
198
+ if (access.method === 'delete' && deleteNamesNativeIndexEntry(representation, keyText, ctx.deriver))
199
+ return 'native-record-ref(index-sidecar)';
200
+ const nativeNumericUnion = indexCarrier?.kind === 'scalar' && indexCarrier.domain === 'number' && hasNativeNumericIndexArms(representation, ctx.deriver.derive);
201
+ if (access.receiver === 'tagged-union' && access.computed && nativeNumericUnion && (access.method === 'get' || access.method === 'set')) {
202
+ return 'tagged-union(numeric-index-arms)';
203
+ }
204
+ if (access.receiver === 'constructor-family' && !constructorFamilyIsCensused(representation, censusedClassesFor(ctx.graph))) {
205
+ return 'constructor-family(uncensused)';
206
+ }
207
+ if (access.receiver === 'native-record-ref' &&
208
+ access.method === 'get' &&
209
+ access.computed &&
210
+ !nativeRecordRefHasIndexSidecar(representation, ctx.deriver)) {
211
+ return 'native-record-ref(no-index-sidecar)';
212
+ }
213
+ if (access.receiver === 'record-with-index' &&
214
+ access.method === 'get' &&
215
+ !access.computed &&
216
+ !recordWithIndexKeyNamesAField(representation, keyText)) {
217
+ return 'record-with-index(unmatched-key)';
218
+ }
219
+ if (access.receiver === 'tagged-union' && access.computed && taggedUnionArmsAreAllTypedArrays(representation))
220
+ return 'tagged-union(typed-array-arms)';
221
+ if (access.receiver === 'tagged-union' &&
222
+ access.method === 'get' &&
223
+ access.computed &&
224
+ taggedUnionArmsAreAllDictionaries(representation)) {
225
+ return 'tagged-union(dictionary-arms)';
226
+ }
227
+ if (access.receiver === 'tagged-union' &&
228
+ access.method === 'get' &&
229
+ access.computed &&
230
+ taggedUnionArmsAreAllArrayObjects(representation)) {
231
+ return 'tagged-union(array-arms)';
232
+ }
233
+ if (access.receiver === 'tagged-union' &&
234
+ (access.method === 'get' || access.method === 'set') &&
235
+ access.computed &&
236
+ taggedUnionArmsHaveNativeSidecar(representation)) {
237
+ return 'tagged-union(native-sidecar-arms)';
238
+ }
239
+ if (access.receiver === 'iterator' && access.method === 'get' && !access.computed)
240
+ return `iterator(${iteratorMemberNameOf(keyText)})`;
241
+ const callableBuiltinRecipe = semanticOp
242
+ ? callableBuiltinRecipeKey(ctx.graph, syntheticPlanFor(ctx.graph, ctx.deriver), semanticOp, access)
243
+ : null;
244
+ if (callableBuiltinRecipe !== null)
245
+ return callableBuiltinRecipe;
246
+ const directFunctionSourceRead = semanticOp !== null && isDirectFunctionSourceRead(ctx.graph, semanticOp);
247
+ if (access.receiver === 'function-value-dispatch' && directFunctionSourceRead)
248
+ return 'function-value-dispatch(toString-direct)';
249
+ // The same two facts off a callable that has NO calling convention. A
250
+ // `callable-identity` is the whole answer for `Array.from`, whose four
251
+ // overloads disagree at parameter 0 (`representation/derive.ts`): the
252
+ // program reads its `name` and `length` and never calls it, and the facts
253
+ // live in the identity's own property table exactly as a dispatching
254
+ // callable's do. Refined per-site by the same `callableMemberIs`, so every
255
+ // other member off this carrier stays correctly unclaimed -- there is no
256
+ // `.call`, `.bind` or expando arm for it, and a call is refused by name.
257
+ if (access.receiver === 'callable-identity' && access.method === 'get' && !access.computed && callableMemberIs(keyText, 'name')) {
258
+ return 'callable-identity(name)';
259
+ }
260
+ if (access.receiver === 'callable-identity' && access.method === 'get' && !access.computed && callableMemberIs(keyText, 'length')) {
261
+ return 'callable-identity(length)';
262
+ }
263
+ if (access.receiver === 'function-value-dispatch' && access.method === 'get' && !access.computed && callableMemberIs(keyText, 'name')) {
264
+ return 'function-value-dispatch(name)';
265
+ }
266
+ if (access.receiver === 'function-value-dispatch' && access.method === 'get' && !access.computed && callableMemberIs(keyText, 'length')) {
267
+ return 'function-value-dispatch(length)';
268
+ }
269
+ // A `prototype` read through a call-only carrier. One recipe for both of the
270
+ // census's answers, because both are the SAME read: a function that ran
271
+ // `MakeConstructor` finds an own `prototype`, and an arrow, a method or an
272
+ // `async function` misses and walks `Function.prototype`, which has none --
273
+ // `undefined`, which is what Node prints. What is refused is the third
274
+ // answer: a generator states nothing and a value with no proven origin
275
+ // proves nothing, and both fall through to the bare receiver key, which the
276
+ // manifest registers nowhere.
277
+ if (access.receiver === 'function-value-dispatch' &&
278
+ access.method === 'get' &&
279
+ !access.computed &&
280
+ callableMemberIs(keyText, 'prototype') &&
281
+ semanticOp !== null &&
282
+ callableOwnPrototypeAt(ctx.graph, semanticOp) !== null) {
283
+ return 'function-value-dispatch(prototype)';
284
+ }
285
+ const keyRepresentation = key ? key.representation : null;
286
+ if (access.receiver === 'function-value-dispatch' && callableComputedOwnSymbolWrite(access, keyRepresentation))
287
+ return 'function-value-dispatch(own-symbol)';
288
+ if (access.receiver === 'function-value-dispatch' && functionValueOwnPropertyWrite(access))
289
+ return 'function-value-dispatch';
290
+ if (access.receiver === 'function-and-constructor' && callableComputedOwnSymbolWrite(access, keyRepresentation))
291
+ return 'function-and-constructor(own-symbol)';
292
+ if (access.receiver === 'function-and-constructor' && functionValueOwnPropertyWrite(access))
293
+ return 'function-and-constructor';
294
+ if (access.receiver === 'function-value-dispatch' && callableOwnPropertyRead(access.receiver, access, keyText))
295
+ return 'function-value-dispatch(expando)';
296
+ if (access.receiver === 'function-value-dispatch' && callableComputedOwnSymbolRead(access, keyRepresentation))
297
+ return 'function-value-dispatch(own-symbol)';
298
+ if (access.receiver === 'function-and-constructor' && directFunctionSourceRead)
299
+ return 'function-and-constructor(toString-direct)';
300
+ if (access.receiver === 'function-and-constructor' && access.method === 'get' && !access.computed && callableMemberIs(keyText, 'name')) {
301
+ return 'function-and-constructor(name)';
302
+ }
303
+ if (access.receiver === 'function-and-constructor' &&
304
+ access.method === 'get' &&
305
+ !access.computed &&
306
+ callableMemberIs(keyText, 'length')) {
307
+ return 'function-and-constructor(length)';
308
+ }
309
+ if (access.receiver === 'function-and-constructor' &&
310
+ access.method === 'get' &&
311
+ !access.computed &&
312
+ callableMemberIs(keyText, 'prototype')) {
313
+ return 'function-and-constructor(prototype)';
314
+ }
315
+ if (access.receiver === 'function-and-constructor' && callableOwnPropertyRead(access.receiver, access, keyText))
316
+ return 'function-and-constructor(expando)';
317
+ if (access.receiver === 'function-and-constructor' && callableComputedOwnSymbolRead(access, keyRepresentation))
318
+ return 'function-and-constructor(own-symbol)';
319
+ return access.receiver;
320
+ };
321
+ const accessDemandOf = (operation, ctx) => {
322
+ // A receiver inside a proven-dead `typeof` guard's consequent, or one whose
323
+ // semantic type is `never`, is never actually accessed on this host --
324
+ // `preflight/property-access.ts`'s own two skip conditions, restated
325
+ // against the IR's `lineage` citation instead of the semantic operation id.
326
+ if (ctx.isDead(operation.lineage))
327
+ return [];
328
+ const semanticOp = ctx.semanticOperationOf(operation.lineage);
329
+ if (semanticOp && receiverIsUnreachable(ctx.graph, semanticOp, ctx.deriver))
330
+ return [];
331
+ const { receiver, key } = receiverAndKeyOf(operation);
332
+ const representation = receiver.representation;
333
+ const computed = key !== null && isComputedKey(ctx, key);
334
+ const keyText = key !== null ? constantKeyTextOf(ctx, key) : null;
335
+ const access = { receiver: representation.kind, method: operation.kind, computed };
336
+ const receiverKey = receiverKeyOf(ctx, access, representation, key, keyText, semanticOp);
337
+ return [
338
+ { key: `property-access:${receiverKey}:${access.method}:${access.computed}` },
339
+ ...(operation.kind === 'get' && !computed && keyText !== null ? hostMemberReadDemandOf(representation, keyText) : [])
340
+ ];
341
+ };
342
+ /**
343
+ * A constant-keyed read off a `native-handle` receiver names one host member,
344
+ * and the printer (`host/emit-host-properties.ts`'s `nativeHostMemberText`)
345
+ * renders it only when a host member table claims `${protocol}.${member}` --
346
+ * every other such read is refused there by name. The manifest publishes
347
+ * exactly those keys (`hostMembers`), so the demand is the same lookup made
348
+ * before a certificate is minted rather than after.
349
+ *
350
+ * Two reads the printer answers without a table row are left undemanded, on
351
+ * purpose: `hasOwnProperty`/`propertyIsEnumerable` off a classified intrinsic
352
+ * (`Math.hasOwnProperty(...)`) are `Object.prototype`'s own and answered from
353
+ * the intrinsic's reflection sidecar, and a `<X>.prototype` protocol's method
354
+ * read as a value is spelled from the checker's own member list. Both are
355
+ * decided by facts (`intrinsicMembers`) this walk does not carry, and a
356
+ * demand that cannot be decided here would refuse programs the printer
357
+ * renders -- the opposite drift from the one this demand closes.
358
+ */
359
+ const hostMemberReadDemandOf = (receiver, member) => {
360
+ if (receiver.kind !== 'native-handle')
361
+ return [];
362
+ const protocol = receiver.native ?? receiver.protocol;
363
+ if (protocol.endsWith('.prototype') || objectShapePrototypeMethods.has(member))
364
+ return [];
365
+ return [{ key: `host-invocation:${protocol}.${member}` }];
366
+ };
367
+ // ---------------------------------------------------------------------------
368
+ // `has-property` (`k in o`) -- `preflight/has-property-key.ts`'s
369
+ // `hasPropertyHelperKey`, restated against the IR's own key/receiver
370
+ // representations. Unlike the five methods above, `has-property` never
371
+ // raises a `property-access` demand: `family: 'property', internalMethod:
372
+ // 'has-property'` is declared in the semantic model but no producer ever
373
+ // builds one (only the `in` computation reaches this IR op), so the old
374
+ // `buildPropertyAccessObligation` -- gated on `operation.family ===
375
+ // 'property'` -- never actually saw one either.
376
+ // ---------------------------------------------------------------------------
377
+ /** A property key's constant is always `literal: 'string'`; the `in` operator's left operand is an ordinary expression, so it keeps whichever literal kind it was written with. */
378
+ const staticInKeyOf = (ctx, key) => {
379
+ const definition = ctx.definitionOf(key.value);
380
+ if (definition?.kind !== 'constant')
381
+ return null;
382
+ if (definition.literal === 'string')
383
+ return { text: definition.text, form: 'static-string' };
384
+ return definition.literal === 'number' ? { text: definition.text, form: 'static-number' } : null;
385
+ };
386
+ const dynamicInKeyFormOf = (key) => {
387
+ const representation = key.representation;
388
+ if (representation.kind !== 'scalar')
389
+ return representation.kind;
390
+ return representation.domain === 'boolean' || representation.domain === 'bigint' ? `scalar(${representation.domain})` : 'number';
391
+ };
392
+ const hasPropertyRuntimeHelperKey = (operation, ctx) => {
393
+ const key = staticInKeyOf(ctx, operation.key);
394
+ const keyForm = key?.form ?? dynamicInKeyFormOf(operation.key);
395
+ const carrier = operation.receiver.representation;
396
+ const payload = carrier.kind === 'optional' ? carrier.payload : carrier;
397
+ const optionalPrefix = (suffix) => (carrier.kind === 'optional' ? `optional(${suffix})` : suffix);
398
+ // Pattern is a `native-record-ref` whose own name is not `null`
399
+ // (`generatedSharedObjectCarrier`/`generatedSharedRecordCarrier` both
400
+ // exclude that on purpose: an arbitrary host struct's C++ members are not
401
+ // thereby its own JS keys), so neither of the two carrier checks below ever
402
+ // answers for it -- every key, static or dynamic, fell through to the
403
+ // generic layout suffix, which named the unclaimed `record(unproven)` this
404
+ // file's own manifest (`emit-in.ts`'s `hasPropertyHelperClaims`) has no row
405
+ // for. `emit-in.ts`'s `layoutAnswerFor` already renders `in` over Pattern
406
+ // unconditionally through its native dynamic-property sidecar
407
+ // (`gea::runtime::regex::dynamicHas`, checked ahead of every other rule
408
+ // there for exactly this reason) -- this claim states the identical answer
409
+ // for the identical receiver, checked at the identical priority, so the
410
+ // two authorities cannot drift back apart.
411
+ if (regexpRoleOf(payload) === 'pattern')
412
+ return `computation:in:${keyForm}:${optionalPrefix('record(pattern)')}`;
413
+ if (key === null && nativeRecordIndexHasPropertyOf(ctx.deriver, payload, operation.key.representation))
414
+ return `computation:in:${keyForm}:${optionalPrefix('record(disjoint-index)')}`;
415
+ if (key && payload.kind === 'class-ref' && classPrototypeMemberIsPresent(ctx.classes, payload.declaration, key.text)) {
416
+ return `computation:in:${keyForm}:${optionalPrefix('class(prototype-member)')}`;
417
+ }
418
+ if (key && generatedObjectCarrier(payload) && objectPrototypeMemberNames.has(key.text)) {
419
+ return `computation:in:${keyForm}:${optionalPrefix('record(object-prototype-member)')}`;
420
+ }
421
+ if (key && generatedSharedObjectCarrier(payload)) {
422
+ const layout = resolvedLayoutOf(payload, ctx.deriver).layout;
423
+ if (recordAnswerFor(layout, key.text) === 'record(unproven)')
424
+ return `computation:in:${keyForm}:${optionalPrefix('record(sidecar)')}`;
425
+ }
426
+ if (key === null && keyForm === 'string' && generatedSharedRecordCarrier(payload)) {
427
+ return `computation:in:${keyForm}:${optionalPrefix('record(sidecar)')}`;
428
+ }
429
+ // A SYMBOL key, which is never a name the program spelled -- `staticInKeyOf`
430
+ // recognizes string and number literals only, because a symbol has no
431
+ // literal form at all; `cacheKey in res` reads a `unique symbol` binding.
432
+ // The receiver's own dynamic-property sidecar answers a runtime key of any
433
+ // kind, and for a symbol it answers COMPLETELY whenever the layout declares
434
+ // no symbol-keyed slot of its own -- see `symbolKeyedMemberIsDeclared` for
435
+ // why the two key spaces make that a proof rather than a guess. Without this
436
+ // row `@hono/node-server`'s three symbol `in` tests fell through to
437
+ // `record(unproven)`, whose whole meaning is "absence is not provable", even
438
+ // though presence AND absence are both provable here.
439
+ if (key === null && keyForm === 'symbol' && generatedSharedObjectCarrier(payload)) {
440
+ const layout = resolvedLayoutOf(payload, ctx.deriver).layout;
441
+ const fields = layout.kind === 'record' || layout.kind === 'record-with-index' ? layout.fields : null;
442
+ const declaration = payload.kind === 'class-ref' ? payload.declaration : null;
443
+ if (!symbolKeyedMemberIsDeclared(ctx.classes, fields, declaration)) {
444
+ return `computation:in:${keyForm}:${optionalPrefix('record(symbol-sidecar)')}`;
445
+ }
446
+ }
447
+ const layout = resolvedLayoutOf(carrier, ctx.deriver).layout;
448
+ return `computation:in:${keyForm}:${layoutAnswerSuffix(layout, key?.text ?? null, ctx.deriver)}`;
449
+ };
450
+ // ---------------------------------------------------------------------------
451
+ // `instanceof` -- `preflight/instanceof-key.ts`'s `instanceofHelperKey`,
452
+ // restated against the two compute operands' own representations.
453
+ // ---------------------------------------------------------------------------
454
+ const instanceofSideKey = (ctx, role, operand, mapTestableAgainst) => {
455
+ if (!operand)
456
+ return 'absent';
457
+ if (ctx.definitionOf(operand.value)?.kind === 'constant')
458
+ return 'constant';
459
+ const representation = operand.representation;
460
+ if (representation.kind === 'tagged-union' && representation.arms.every((arm) => definitelyPrimitive(arm.value))) {
461
+ return 'tagged-union(primitive-only)';
462
+ }
463
+ // Only the LEFT side is refined against the RIGHT: `instanceofHelperKey`'s
464
+ // `mapTestable` special case is keyed on `role === 'left'`, so the right
465
+ // operand's own call passes no counterpart to test against.
466
+ const right = mapTestableAgainst?.representation;
467
+ if (representation.kind === 'tagged-union' &&
468
+ right?.kind === 'native-handle' &&
469
+ right.protocol === 'MapConstructor' &&
470
+ mapTestable(representation)) {
471
+ return 'tagged-union(map-testable)';
472
+ }
473
+ if (representation.kind === 'native-handle')
474
+ return `native-handle(${representation.protocol})`;
475
+ // A RIGHT-hand `native-record-ref` names WHICH host layout, for the same
476
+ // reason the native-handle row above names which protocol: a host's own
477
+ // `[[HasInstance]]` is declared per layout
478
+ // (`PluginCapabilities.hostInstanceTests`), so one flat `native-record-ref`
479
+ // claim would certify `instanceof` against every host struct in the program
480
+ // on the strength of a row written for one of them. Right side only: the LEFT
481
+ // spelling is already claimed bare (`computation:instanceof:native-record-ref:
482
+ // native-handle(ErrorConstructor)`), and there it says how the OPERAND is
483
+ // carried rather than which `[[HasInstance]]` is being asked for.
484
+ if (role === 'right' && representation.kind === 'native-record-ref' && representation.native !== null) {
485
+ return `native-record-ref(${representation.native})`;
486
+ }
487
+ return representation.kind;
488
+ };
489
+ const instanceofRuntimeHelperKey = (operands, ctx) => {
490
+ const left = operands[0];
491
+ const right = operands[1];
492
+ return `computation:instanceof:${instanceofSideKey(ctx, 'left', left, right)}:${instanceofSideKey(ctx, 'right', right, undefined)}`;
493
+ };
494
+ // ---------------------------------------------------------------------------
495
+ // Atomics -- `preflight/invocation-arguments.ts`'s `buildAtomicsInvocationObligation`.
496
+ // `host-member-call` states its own verdict (`ir/certify.ts`'s own doc: an
497
+ // `Atomics` member's admissible argument shapes are a target RULE, not a
498
+ // finite manifest set), so this is the one property-access-module demand
499
+ // that never goes through `verdictOf`'s manifest lookup.
500
+ // ---------------------------------------------------------------------------
501
+ /**
502
+ * The `${protocol}.${member}` a call's callee reads, when that callee is a
503
+ * `get` off a host-bound receiver. Preferring the `get` operation's own
504
+ * `hostMethod` binding (set only when a plugin's `HostMethodBindingTable`
505
+ * explicitly claimed the member) and falling back to reconstructing it from
506
+ * the `get`'s own already-narrowed receiver and its key's defining constant
507
+ * -- the same two facts `preflight/invocation-arguments.ts`'s
508
+ * `hostMemberOfCallee` read off the plan, available here directly off the
509
+ * IR with no plan lookup at all, since `Atomics.*` is a namespace member
510
+ * read this compiler has never routed through a `HostMethodBinding`.
511
+ */
512
+ const hostMemberOfCall = (ctx, operation) => {
513
+ const calleeDefinition = ctx.definitionOf(operation.callee.value);
514
+ if (calleeDefinition?.kind !== 'get')
515
+ return null;
516
+ if (calleeDefinition.hostMethod)
517
+ return `${calleeDefinition.hostMethod.protocol}.${calleeDefinition.hostMethod.member}`;
518
+ const receiver = calleeDefinition.receiver.representation;
519
+ const host = receiver.kind === 'native-handle'
520
+ ? (receiver.native ?? receiver.protocol)
521
+ : receiver.kind === 'native-record-ref'
522
+ ? receiver.native
523
+ : null;
524
+ if (host === null)
525
+ return null;
526
+ const keyText = constantKeyTextOf(ctx, calleeDefinition.key);
527
+ return keyText === null ? null : `${host}.${keyText}`;
528
+ };
529
+ const atomicsDemandOf = (operation, ctx) => {
530
+ const member = hostMemberOfCall(ctx, operation);
531
+ if (!member?.startsWith('Atomics.'))
532
+ return [];
533
+ const name = member.slice('Atomics.'.length);
534
+ const support = atomicsCallSupport(name, operation.arguments.map((argument) => argument.representation));
535
+ return [
536
+ support.supported
537
+ ? { key: `host-member-call:${member}`, verdict: 'installed' }
538
+ : { key: `host-member-call:${member}`, verdict: 'unsupported', detail: support.reason }
539
+ ];
540
+ };
541
+ /**
542
+ * The one intercepted host argument whose declared type is broader than its
543
+ * renderer: `Object.defineProperty`'s descriptor. The declaration says
544
+ * `PropertyDescriptor & ThisType<any>`, so a `dynamic` operand reaches the
545
+ * call's slot unconverted -- there is no conversion to demand -- but the
546
+ * printer materializes a descriptor only from a carrier that states which
547
+ * fields and attributes are present (an object literal record, or the record
548
+ * `getOwnPropertyDescriptor` hands back), and refuses a box by name. The old
549
+ * `preflight/invocation-arguments.ts` stated this rule for the plan; it is
550
+ * restated here for the IR so the refusal is a certification verdict rather
551
+ * than a print-time surprise on a certified program.
552
+ *
553
+ * `dynamicArgumentHostParameters` is the waiver: a member/position listed
554
+ * there takes the box through unconditionally (`defineProperty`'s KEY is
555
+ * listed, its descriptor deliberately is not -- `host/dynamic-argument-
556
+ * members.ts` states why per row), so a waived position is never refused.
557
+ */
558
+ const hostArgumentDemandOf = (operation, ctx) => {
559
+ const member = hostMemberOfCall(ctx, operation);
560
+ if (member !== 'ObjectConstructor.defineProperty')
561
+ return [];
562
+ const waivers = ctx.manifest.dynamicArgumentHostParameters;
563
+ return operation.arguments.flatMap((argument, ordinal) => {
564
+ if (argument.representation.kind !== 'dynamic' || ordinal !== 2)
565
+ return [];
566
+ if (waivers?.has(`${member}:argument:${ordinal}`) || waivers?.has(`${member}:argument:*`))
567
+ return [];
568
+ return [
569
+ {
570
+ key: `host-member-call:${member}`,
571
+ verdict: 'unsupported',
572
+ detail: `"${member}" was passed a "${representationKey(argument.representation)}" descriptor; a descriptor is either one this ` +
573
+ 'program received from Object.getOwnPropertyDescriptor or an object literal whose fields the checker knows, and a box ' +
574
+ 'states neither which attributes it means to set nor with what'
575
+ }
576
+ ];
577
+ });
578
+ };
579
+ // ---------------------------------------------------------------------------
580
+ export const propertyAccessKeysOf = (operation, ctx) => {
581
+ switch (operation.kind) {
582
+ case 'get':
583
+ case 'set':
584
+ case 'delete':
585
+ case 'define-own-property':
586
+ case 'own-property-keys':
587
+ return accessDemandOf(operation, ctx);
588
+ case 'has-property':
589
+ return [{ key: `runtime-helper:${hasPropertyRuntimeHelperKey(operation, ctx)}` }];
590
+ case 'compute':
591
+ return operation.form === 'instanceof' ? [{ key: `runtime-helper:${instanceofRuntimeHelperKey(operation.operands, ctx)}` }] : [];
592
+ case 'call':
593
+ return [...atomicsDemandOf(operation, ctx), ...hostArgumentDemandOf(operation, ctx)];
594
+ default:
595
+ return [];
596
+ }
597
+ };
@@ -0,0 +1,3 @@
1
+ import type { CapabilityDemand, CertifyContext } from '../certify.js';
2
+ import { type IrOperation } from '../model.js';
3
+ export declare const runtimeHelperKeysOf: (operation: IrOperation, ctx: CertifyContext) => readonly CapabilityDemand[];