@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,99 @@
1
+ import ts from 'typescript';
2
+ import { implementationSignatureOf } from './structural-declarations.js';
3
+ /**
4
+ * What a call to an OVERLOAD SET whose one implementation is a GENERATOR
5
+ * physically produces.
6
+ *
7
+ * `implementationSignatureOf` (`structural-declarations.ts`) already states the
8
+ * rule for the callee: an overload set declares several ways to CALL a name and
9
+ * exactly one body, so the one signature that physically exists is the
10
+ * implementation's, and `valueTypeAt` publishes the function object from it.
11
+ * The CALL's result was left out of that, and for a generator the two answers
12
+ * are not interchangeable: a generator's body returns the generator object
13
+ * `EvaluateGeneratorBody` creates, which this compiler carries as `iterator`,
14
+ * while the overload signature above it is free to spell that object as any
15
+ * interface it satisfies. node-compat's `URLSearchParams`
16
+ * (`runtime/node/globals.ts`) spells it `IterableIterator<string>` over
17
+ * `*entries(): Generator<string>`, and an interface is a `native-record-ref` --
18
+ * so the call site asked for a record result from a callee whose convention
19
+ * returns an iterator, and cpp refused the conversion.
20
+ *
21
+ * BOTH halves of an invocation read this, which is why it lives in a module of
22
+ * its own rather than beside either: `structural.ts`'s `typeAt` publishes the
23
+ * call expression's own result through it, and `producers/invocations.ts`'s
24
+ * `buildSelectedSignature` publishes the selected signature's return type
25
+ * through it. Those two are compared by `validateInvocationResult`, which fails
26
+ * the producer closed on any disagreement it has no declared divergence for --
27
+ * correctly, because a producer that answers a question twice has published two
28
+ * answers for one operation. There is no divergence to declare here and there
29
+ * should not be one: this is not a case where the checker and this compiler
30
+ * know different things, it is one physical return type that both sides must
31
+ * read from the same place.
32
+ *
33
+ * Narrow on purpose, to the one disagreement a body can have with its own
34
+ * overloads that the overloads cannot express. The ordinary overload idiom --
35
+ * `f(x: string): string; f(x: number): number; f(x: any): any {...}` -- is the
36
+ * exact opposite case: there the implementation's `any` is the widened frame
37
+ * the several signatures share, and preferring it would box every call result
38
+ * in the program. A generator body states no such widening; `asteriskToken` is
39
+ * the whole gate.
40
+ *
41
+ * A generic implementation is refused rather than guessed at: its own return
42
+ * type still names its signature's type parameters, and this has no call-site
43
+ * instantiation to bind them with, so answering would trade a wrong carrier for
44
+ * an unresolved one. A call anywhere in an OPTIONAL CHAIN is refused for the
45
+ * mirror reason `presentReturnTypeOf` exists: `a?.b()` really is `T |
46
+ * undefined`, and that `undefined` is a fact about the call expression rather
47
+ * than about the callee, so replacing the whole expression's type with the
48
+ * callee's return would strip the absent branch the guard was written for.
49
+ * `ts.isOptionalChain` rather than the call's own `questionDotToken`, because
50
+ * `a?.b()` carries the `?.` on the property access and every later link of the
51
+ * chain publishes the same short circuit.
52
+ *
53
+ * Asked of the callee's SYMBOL rather than of `getResolvedSignature`, which is
54
+ * the answer this wants and the one thing that must not be asked from inside
55
+ * `typeAt`: `structural-callable.ts`'s own comment records resolving every
56
+ * arbitrary call there recursively instantiating hono's conditional route types
57
+ * until the host stack overflowed. Nothing is lost by not asking -- TypeScript
58
+ * never resolves a call to the implementation signature while overloads exist,
59
+ * so a symbol carrying both shapes resolves to a bodiless overload at every call
60
+ * site by construction.
61
+ */
62
+ export const physicalGeneratorOverloadResultAt = (checker, node) => {
63
+ if (!ts.isCallExpression(node) || ts.isOptionalChain(node))
64
+ return null;
65
+ const callee = node.expression;
66
+ if (!ts.isIdentifier(callee) && !ts.isPropertyAccessExpression(callee))
67
+ return null;
68
+ const symbol = checker.getSymbolAtLocation(ts.isIdentifier(callee) ? callee : callee.name);
69
+ return physicalGeneratorOverloadReturnOf(checker, symbol?.getDeclarations() ?? []);
70
+ };
71
+ /**
72
+ * The same answer for a MEMBER SYMBOL rather than a call site.
73
+ *
74
+ * `producers/iteration-yield.ts`'s `iteratorRecordTypesOf` reads what a
75
+ * resolved `[Symbol.iterator]` returns straight off the member symbol's own
76
+ * callable type, and TypeScript shows an overload set's bodiless signatures
77
+ * there and never its implementation -- so `*[Symbol.iterator](): Generator<T>`
78
+ * behind an `[Symbol.iterator](): IterableIterator<T>` overload read back as
79
+ * the interface. `producers/protocol.ts`'s `generatorRecordTypeOf` then failed
80
+ * its `isGeneratorType` test and published the synthetic ECMA-262 `{ next() }`
81
+ * record for a method whose body hands back a native cursor, which is the
82
+ * `method "..." body convention cannot fill its published bound-method
83
+ * convention` refusal (`emit-class-properties.ts`) -- the same one fact
84
+ * disagreeing with itself, one authority over from the call result above.
85
+ */
86
+ export const physicalGeneratorOverloadReturnOf = (checker, declarations) => {
87
+ const generator = declarations.find((declaration) => (ts.isMethodDeclaration(declaration) || ts.isFunctionDeclaration(declaration)) &&
88
+ declaration.asteriskToken !== undefined &&
89
+ declaration.body !== undefined);
90
+ if (!generator)
91
+ return null;
92
+ // `implementationSignatureOf` is what makes this an OVERLOAD set rather than
93
+ // a lone generator: it answers only when some declaration of the same symbol
94
+ // is bodiless, and a lone generator's call result already is its own.
95
+ const implementation = implementationSignatureOf(checker, generator);
96
+ if (!implementation || (implementation.getTypeParameters()?.length ?? 0) > 0)
97
+ return null;
98
+ return checker.getReturnTypeOfSignature(implementation);
99
+ };
@@ -0,0 +1,12 @@
1
+ import ts from 'typescript';
2
+ import type { StructuralTypeId } from '../../identity/ids.js';
3
+ import type { ProducerContext } from './producer-context.js';
4
+ type AbsenceContext = Pick<ProducerContext, 'checker' | 'identities' | 'table' | 'globalHostMutationTaint' | 'isStandardLibraryDeclaration'>;
5
+ /**
6
+ * A primitive wrapper has no own extension storage. A missing named member
7
+ * therefore returns undefined only while its intrinsic prototype chain is
8
+ * authenticated and unmodified. Missing checker properties alone do not prove
9
+ * this: a program can install a property through a prototype alias.
10
+ */
11
+ export declare const primitivePropertyIsAbsent: (receiver: ts.Expression, receiverType: StructuralTypeId, name: string, context: AbsenceContext) => boolean;
12
+ export {};
@@ -0,0 +1,60 @@
1
+ import { objectPrototypeMemberNames } from '../../representation/record-fields.js';
2
+ import { intactIntrinsicPrototypeKeysType } from './intrinsic-prototype.js';
3
+ /**
4
+ * A primitive wrapper has no own extension storage. A missing named member
5
+ * therefore returns undefined only while its intrinsic prototype chain is
6
+ * authenticated and unmodified. Missing checker properties alone do not prove
7
+ * this: a program can install a property through a prototype alias.
8
+ */
9
+ export const primitivePropertyIsAbsent = (receiver, receiverType, name, context) => {
10
+ const { checker, globalHostMutationTaint: mutations } = context;
11
+ if (objectPrototypeMemberNames.has(name))
12
+ return false;
13
+ if (mutations.has('*') || !context.isStandardLibraryDeclaration)
14
+ return false;
15
+ // Read the same canonical receiver type that the property operation uses.
16
+ // rawTypeAt precedes structural rules such as local-union, so asking it
17
+ // here could recover checker `any` after those rules already proved the
18
+ // local holds only primitive configuration values.
19
+ const domains = new Set();
20
+ const collect = (id) => {
21
+ const shape = context.table.get(id).shape;
22
+ if (shape.kind === 'union')
23
+ return shape.members.every(collect);
24
+ if (shape.kind !== 'primitive' && shape.kind !== 'literal')
25
+ return false;
26
+ switch (shape.primitive) {
27
+ case 'undefined':
28
+ case 'null':
29
+ return true; // The proof describes normal completion, not throws.
30
+ case 'string':
31
+ case 'number':
32
+ case 'boolean':
33
+ case 'bigint':
34
+ case 'symbol':
35
+ domains.add(shape.primitive);
36
+ return true;
37
+ default:
38
+ return false;
39
+ }
40
+ };
41
+ if (!collect(receiverType) || domains.size === 0)
42
+ return false;
43
+ // The proof reads exactly one key from each prototype on the chain.
44
+ const intactPrototypeType = (intrinsic) => intactIntrinsicPrototypeKeysType(context, intrinsic, { names: [name] }, receiver);
45
+ const object = intactPrototypeType('Object');
46
+ if (!object || checker.getPropertyOfType(object, name))
47
+ return false;
48
+ const wrappers = { string: 'String', number: 'Number', boolean: 'Boolean', bigint: 'BigInt', symbol: 'Symbol' };
49
+ return [...domains].every((domain) => {
50
+ // Indexed string characters are own properties even though the checker
51
+ // does not publish an individual symbol for each possible character.
52
+ if (domain === 'string' && /^\d+$/.test(name))
53
+ return false;
54
+ const intrinsic = wrappers[domain];
55
+ // A lexical type alias named String/Number does not replace the runtime
56
+ // wrapper. Read the prototype of the authenticated VALUE declaration.
57
+ const prototype = intactPrototypeType(intrinsic);
58
+ return prototype !== null && !checker.getPropertyOfType(prototype, name);
59
+ });
60
+ };
@@ -0,0 +1,376 @@
1
+ import type { AbsentGlobalCensus } from './absent-globals.js';
2
+ import type { ArgumentsObjectCensus } from './arguments-objects.js';
3
+ import type { NamespacePathCensus } from './namespace-paths.js';
4
+ import type { CollectionBindingCensus } from './collection-bindings.js';
5
+ import type { ObjectBagCensus } from './object-bag-bindings.js';
6
+ import type { ParameterBindingCensus } from './parameter-bindings.js';
7
+ import type { UnresolvableNameCensus } from './unresolvable-names.js';
8
+ import type { GlobalHostMutationTaint } from './global-host-mutations.js';
9
+ import type { PrototypeReparentingCensus } from '../prototype-reparenting.js';
10
+ import type ts from 'typescript';
11
+ import type { DeclarationId, StructuralTypeId } from '../../identity/ids.js';
12
+ import type { StructuralTypeTable } from '../model/structural-type-table.js';
13
+ import type { HostProtocolBinding } from '../host-protocols.js';
14
+ import type { KeyedCollectionFamily } from '../../representation/policies.js';
15
+ import type { IdentityTable, SpecializationPath } from './identities.js';
16
+ import type { SpecializationCensus } from './specialization.js';
17
+ import type { StructuralMapper } from './structural.js';
18
+ import type { EvaluationOrdinals, OrdinalCounter } from './producers/mint.js';
19
+ import type { ReturnBindingCensus } from './return-bindings.js';
20
+ import type { ReassignedBindingCensus } from './reassigned-bindings.js';
21
+ import type { HostMethodBinding } from '../host-methods.js';
22
+ import type { CommonJsRequireCensus } from './commonjs-require.js';
23
+ import type { CommonJsModuleRecordCensus } from './commonjs-module-record.js';
24
+ /**
25
+ * What every family producer is given.
26
+ *
27
+ * The context is the complete set of questions a producer may ask. It is
28
+ * deliberately small: a producer that needs something not in here needs a new
29
+ * primitive, and having to widen this interface is the signal that says so.
30
+ *
31
+ * Both counters are shared across every producer on purpose, and they answer
32
+ * different questions. `ordinals` disambiguates the nth operation minted from
33
+ * one (node, family) pair -- it is how a compound assignment's get and set share
34
+ * one node and still get two identities.
35
+ *
36
+ * `evaluationOrdinals` is deliberately *not* the general answer to "when does
37
+ * this run": that is `CensusCandidate.evaluationOrdinal`, because only the walk
38
+ * sees document order, and a counter incremented as producers publish records
39
+ * which family ran first, not which operation runs first. This counter covers
40
+ * the one case the walk cannot: an operation a producer places in a caller it
41
+ * synthesized itself -- a class body, a module region -- where the census
42
+ * assigned no candidate and so no position exists to read.
43
+ *
44
+ * Either counter kept per producer would hand two different operations the same
45
+ * identity as soon as two families published for one caller, silently merging
46
+ * them into one.
47
+ */
48
+ export interface ProducerContext {
49
+ /** Declaration provenance from the one ts.Program; callers must not infer library ownership from names or paths. */
50
+ readonly isStandardLibraryDeclaration?: (declaration: ts.Declaration) => boolean;
51
+ readonly hostMethodOf?: (node: ts.PropertyAccessExpression | ts.ElementAccessExpression) => HostMethodBinding | null;
52
+ /**
53
+ * The finite set of property-name texts a computed key can evaluate to,
54
+ * proven closed forward from every closed caller
55
+ * (`normalize/flow/computed-key-set.ts`'s `computedKeySetOf`) and verified
56
+ * against the SEALED host-mutation census's own obligations -- never the
57
+ * optimistic, mid-fixed-point answer that census's own re-run loop takes as
58
+ * a working assumption. `null` means "not proven" (the key stays fully
59
+ * dynamic), which a caller must treat exactly as if this hook did not
60
+ * exist: this is an upper-bound narrowing, and publishing an unproven guess
61
+ * to make a boxing number move would be the exact defect this field exists
62
+ * to avoid. See `producers/properties.ts`'s one call site.
63
+ */
64
+ readonly computedKeyTextsOf?: (key: ts.Expression) => readonly string[] | null;
65
+ /** A settled proof that a numeric element read misses every reachable class-family slot. */
66
+ readonly numericIndexAbsenceProvenAt?: (receiver: ts.Expression, key: ts.Expression) => boolean;
67
+ /** A settled proof that a NAMED property read misses every instance of a closed object-literal record -- see `closedLiteralMemberAbsenceProven`. */
68
+ readonly closedLiteralMemberAbsenceProvenAt?: (receiver: ts.Expression, name: string) => boolean;
69
+ readonly checker: ts.TypeChecker;
70
+ readonly identities: IdentityTable;
71
+ readonly types: StructuralMapper;
72
+ /**
73
+ * Whether EVERY file in this build evaluates strict regardless of its own
74
+ * syntax. That is `alwaysStrict` (implied by `strict`), which makes tsc parse
75
+ * strict and emit a `'use strict'` prologue into each file -- and nothing
76
+ * else. The `module` setting is NOT this fact: under `module: ESNext` a file
77
+ * with no import and no export is a Script, not a Module, and is strict only
78
+ * if `alwaysStrict` or a prologue says so. `isStrictContext` decides the
79
+ * per-file half.
80
+ */
81
+ readonly buildIsStrict: boolean;
82
+ readonly table: StructuralTypeTable;
83
+ readonly ordinals: OrdinalCounter;
84
+ readonly evaluationOrdinals: EvaluationOrdinals;
85
+ /**
86
+ * The specialization this producer instance is running under -- the same
87
+ * value `identities`/`types` were already narrowed to
88
+ * (`identities.forSpecialization(path)`/`types.forSpecialization(path)`,
89
+ * `frontend.ts`'s own per-candidate rebind), exposed as data because one
90
+ * question needs the raw path and not just a view already bound to it:
91
+ * `identities.prefixFor(declaration, path)`, asked about a declaration
92
+ * that is NOT the one this producer instance's candidate belongs to.
93
+ *
94
+ * `producers/shared.ts`'s `resolvedCalleeSignatureType` is the one caller
95
+ * today. A callee's own declared type is a property of the CALLEE's
96
+ * declaration, not the caller's -- resolving it through the caller's
97
+ * `types` unfiltered mints a nominal class reached inside it under the
98
+ * caller's own specialization frame whenever that class happens to be the
99
+ * SAME declaration as the frame's owner, purely because `identities.ts`'s
100
+ * `contains` is (correctly, and by design -- see `structural.ts`'s
101
+ * `isSelfReference`) self-inclusive. `parseBody(this, options)` inside
102
+ * `HonoRequest.parseBody`'s own body is the concrete case: `parseBody`'s
103
+ * declared parameter type names `HonoRequest`, which is not `HonoRequest`'s
104
+ * own body reaching itself, but `body.ts`'s unrelated parameter type
105
+ * happening to collide in NAME with the enclosing method's class while
106
+ * `this` walk is inside `HonoRequest`'s copy 0 -- and it must not mint
107
+ * `HonoRequest@0` for that reason alone.
108
+ *
109
+ * `producers/invocations.ts`'s `buildSelectedSignature` tried the same
110
+ * narrowing for a `SelectedSignature`'s `thisParameter`/`parameters`/
111
+ * `returnType` and it was reverted: `returnType` there must stay in
112
+ * lockstep with the call EXPRESSION's own separately-computed result type
113
+ * (`context.types.typeAt(node)` at that file's own call-expression
114
+ * producer), and narrowing only one of the two authorities produced a
115
+ * NEW disagreement `validateInvocationResult` correctly caught --
116
+ * one app's `index.tsx` stopped certifying. Do not reapply that
117
+ * change without also reconciling the invocation-result side.
118
+ *
119
+ * The deeper diagnosis, recorded for whoever reconciles it: the question
120
+ * `buildSelectedSignature` needs to ask is not "does the declaration sit
121
+ * inside the caller's frame" (what `prefixFor` alone answers). A resolved
122
+ * signature's RETURN type can carry real, call-dependent generic
123
+ * substitution that this collapse-to-canonical narrowing has no way to
124
+ * tell apart from the `HonoRequest.parseBody`-style name collision above.
125
+ * `hono-base.ts`'s `Object.assign(this, optionsWithoutStrict)`
126
+ * (`Object.assign<T, U>`, `T`/`U` inferred from the call's own arguments)
127
+ * and `this.router.match(method, path)` (`Router<T>.match`, `T` fixed by
128
+ * the RECEIVER `this.router`'s own concrete instantiation, not by
129
+ * anything `match`'s declaration itself states) are both cases where the
130
+ * substituted type arguments originate OUTSIDE the callee's declaration
131
+ * -- from the call site's arguments or receiver -- so interning the
132
+ * result through the callee's canonical frame mints a fresh identity for
133
+ * a class the caller's own frame already has a name for, instead of
134
+ * reusing it: the same disagreement shape as that regression, by a
135
+ * different route. The `HonoRequest.parseBody` case this field's own
136
+ * fix handles carries no substitution at all -- `HonoRequest | Request`
137
+ * is a plain, unconditional union annotation, not a generic instantiation
138
+ * -- which is exactly why narrowing is safe for a callee's own VALUE type
139
+ * (`resolvedCalleeSignatureType`'s `plain`) but is not, in general, safe
140
+ * for a RETURN type that a real substitution touched. A correct fix would
141
+ * have to tell "this signature was substituted from the call site" apart
142
+ * from "this declaration merely collides in name," not assume the second
143
+ * whenever `prefixFor` collapses -- and until someone builds and measures
144
+ * that test, `returnType` (and, by the same argument, any parameter type
145
+ * a real substitution reaches) should keep resolving through the
146
+ * caller's own `types`, unfiltered, exactly as this field's `path` was
147
+ * never threaded into `buildSelectedSignature` to begin with. (Verified
148
+ * 2026-09-03: on a fresh build of the live tree, `hono-base.ts:171`/`:419`
149
+ * raised zero producer failures, and `producers/invocations.ts` carried no
150
+ * uncommitted change -- the two disagreements this paragraph describes as
151
+ * a HAZARD were never actually observed at HEAD. The hypothesis, unconfirmed,
152
+ * is that `resolvedCalleeSignatureType`'s own fix above closed them as a
153
+ * side effect, by making the callee expression's own interning agree with
154
+ * the invocation-result side it used to diverge from. The reasoning above
155
+ * still holds as the reason not to reapply the `buildSelectedSignature`
156
+ * narrowing blind; it no longer describes an active symptom.)
157
+ */
158
+ readonly path: SpecializationPath;
159
+ /**
160
+ * The whole-program census of which declarations are generic and what each
161
+ * is instantiated at. Whole-program by construction -- which declarations
162
+ * are generic and how many distinct type-argument tuples they are called
163
+ * with is a fact about the entire program, not about one copy of it -- so,
164
+ * unlike `identities`/`types`, this is never re-derived per specialization
165
+ * path; every producer instance, in every copy, shares the one census.
166
+ */
167
+ readonly specializations: SpecializationCensus;
168
+ /**
169
+ * The ambient host-protocol census (`semantics/host-protocols.ts`): which
170
+ * declared types this program's own declarations say a host owns.
171
+ *
172
+ * Populated before any producer runs (`frontend.ts` calls
173
+ * `hostProtocolBindings`/`ambientHostBindings` before `normalizeProgram`),
174
+ * so every producer sees the complete, sealed census -- never a partial one
175
+ * that would depend on walk order. Needed by `calleeAwareTypeAt`
176
+ * (`producers/shared.ts`): a bound declaration's protocol identity must
177
+ * survive being read as a call's callee, the same way it survives being
178
+ * read anywhere else, or the callee and a plain member-access read of the
179
+ * same declaration select two representations for one cell.
180
+ */
181
+ readonly hostProtocols: ReadonlyMap<DeclarationId, HostProtocolBinding>;
182
+ /** Ambient singleton bindings authenticated by complete host declaration identity. */
183
+ readonly hostSingletonBindings: ReadonlySet<DeclarationId>;
184
+ /** Ambient namespace roots authenticated by complete host declaration identity. */
185
+ readonly hostNamespaceBindings: ReadonlySet<DeclarationId>;
186
+ /** Host-global properties whose direct binding identity is invalidated by a whole-program write/delete/definition. */
187
+ readonly globalHostMutationTaint: GlobalHostMutationTaint;
188
+ /** The `Object.setPrototypeOf(C.prototype, B.prototype)` calls modelled as `C` inheriting from `B`. */
189
+ readonly prototypeReparentings: PrototypeReparentingCensus;
190
+ /**
191
+ * The structural types `--dynamic-fallback` boxes, sealed before any
192
+ * producer runs (`frontend.ts`'s `dynamicFallbackTypes`).
193
+ *
194
+ * Empty without the flag, which is the only state most producers ever see.
195
+ * It is here for the guards whose PREMISE is the native carrier: an instance
196
+ * of a pre-`class` constructor function has no prototype chain -- unless
197
+ * `prototypeMutatedConstructorTypes` marked it, in which case the instance
198
+ * is a real `DynamicObject` whose chain `Value::construct` links, and a
199
+ * prototype member read finds exactly what the language says it finds. A
200
+ * guard that fires there would refuse a capability this program HAS.
201
+ */
202
+ readonly dynamicFallbackTypes: ReadonlySet<StructuralTypeId>;
203
+ /** Checker-authenticated CommonJS wrapper declarations. */
204
+ readonly commonJsBindings: ReadonlyMap<DeclarationId, 'require' | 'exports' | 'module'>;
205
+ /** Reserved wrapper declarations that failed exact host provenance verification. */
206
+ readonly commonJsProvenanceFailures: ReadonlySet<DeclarationId>;
207
+ /** The shared snapshot proof used by both program discovery and CommonJS invocation admission. */
208
+ readonly commonJsRequire: CommonJsRequireCensus;
209
+ /** Source-local proof for the one CommonJS record shape eligible for native lowering. */
210
+ readonly commonJsModuleRecords: CommonJsModuleRecordCensus;
211
+ /** A host build's exact loader-spelling to canonical builtin-registry mapping. */
212
+ readonly builtinModuleNameOf: (specifier: string) => string | null;
213
+ /** The host-stated implementation source for one canonical builtin registry name. */
214
+ readonly builtinModuleSourceOf: (name: string) => string | null;
215
+ /** The Program host's authoritative runtime-module resolver for static CommonJS specifiers. */
216
+ readonly runtimeModuleTargetOf: (specifier: string, containingFile: string, mode: 'import' | 'require') => string | null;
217
+ /** The Program's canonical source-file object for that resolver's target path. */
218
+ readonly sourceFileOf: (fileName: string) => ts.SourceFile | null;
219
+ /**
220
+ * Which ambient globals an installed host declares it does NOT provide.
221
+ *
222
+ * Read by `contributeVariableDeclaration` for one question: whether to mint
223
+ * an EXTERNAL binding. An ambient declaration is external because some host
224
+ * defines it, and a host that has said it does not is exactly the case where
225
+ * that stops being true -- emitting `extern` for it declares a symbol no
226
+ * object file defines, which compiles and never links.
227
+ *
228
+ * The same census the structural mapper answers the value's TYPE from, shared
229
+ * by reference rather than re-derived, so the cell's storage class and its
230
+ * carrier can never disagree about whether the value is there.
231
+ */
232
+ readonly absentGlobals: AbsentGlobalCensus;
233
+ /**
234
+ * Which identifiers are the magic `arguments` binding, and the shape of
235
+ * each one's value (`normalize/arguments-objects.ts`).
236
+ *
237
+ * Two readers that must agree, which is why it is a census threaded from
238
+ * the frontend rather than a checker question asked twice: the reference
239
+ * producer PUBLISHES an `arguments` site's value from it, and
240
+ * `citeExpressionResult` PREDICTS the result that publication carries. A
241
+ * disagreement between the two is not an error anywhere -- it is a withheld
242
+ * citation, which silently takes the whole enclosing function's operations
243
+ * with it.
244
+ */
245
+ readonly argumentsObjects: ArgumentsObjectCensus;
246
+ /**
247
+ * Which value-position names resolve to no binding at all
248
+ * (`normalize/unresolvable-names.ts`).
249
+ *
250
+ * The same two-readers-must-agree shape as `argumentsObjects` directly
251
+ * above, and threaded for the same reason: the reference producer PUBLISHES
252
+ * an unresolvable name's value and `citeExpressionResult` PREDICTS it, and a
253
+ * disagreement is a silent withholding rather than an error.
254
+ */
255
+ readonly unresolvableNames: UnresolvableNameCensus;
256
+ /**
257
+ * Which module-local `function`/`class` bindings their declaring file
258
+ * writes to (`normalize/reassigned-bindings.ts`), walked once per file.
259
+ * The invocation producer reads it at every bare-identifier call to grant
260
+ * or withhold an `exact` target.
261
+ */
262
+ readonly reassignedBindings: ReassignedBindingCensus;
263
+ /**
264
+ * Which property accesses are source-namespace paths (`Debug.log`) or
265
+ * namespace-qualified members (`Debug.assert`) -- `namespace-paths.ts`. The
266
+ * census, the reference producer, the write producers and the citation
267
+ * rule all read this one answer.
268
+ */
269
+ readonly namespacePaths: NamespacePathCensus;
270
+ /**
271
+ * Which declarations are the standard `Map`/`Set`/`WeakMap`/`WeakSet`
272
+ * interfaces (`semantics/host-protocols.ts`'s
273
+ * `keyedCollectionDeclarationsOf`).
274
+ *
275
+ * Read by the iteration producers to decide whether a `for`-`of` source
276
+ * takes the native-cursor path -- the same question `isPlainArrayType`
277
+ * answers for an array, asked of a shape whose answer is a declaration
278
+ * identity rather than a shape kind. It has to come from the frontend
279
+ * rather than be re-resolved here for the reason every identity in this
280
+ * compiler is threaded rather than recomputed: `representation/derive.ts`
281
+ * selects the collection CARRIER from this same census, and a producer that
282
+ * resolved `Set` independently could skip the `@@iterator` lookup for a
283
+ * declaration the deriver did not recognise -- or the reverse, which is a
284
+ * silently unlowered loop.
285
+ */
286
+ readonly keyedCollections: ReadonlyMap<DeclarationId, KeyedCollectionFamily>;
287
+ /**
288
+ * The whole-program census of what K/(V) a bare `new Map()`/`new Set()`/
289
+ * `new WeakMap()`/`new WeakSet()` allocation, owning declaration, or later
290
+ * read actually stores (`normalize/collection-bindings.ts`).
291
+ *
292
+ * Already the authority `structural.ts`'s `typeAt` substitutes into this
293
+ * call's own published result (`inferredCollectionTypeArgumentsAt`,
294
+ * `structural-array-element.ts`) -- threaded here as well so
295
+ * `producers/invocations.ts`'s `collectionConstructResultOverride` can ask
296
+ * the identical question `typeAt` just asked, rather than re-deriving "did
297
+ * this construct's K/V get narrowed" from a shape comparison. The two
298
+ * readers must agree for the same reason `argumentsObjects`/
299
+ * `unresolvableNames` above do: a call whose result this census bound and a
300
+ * call this census left alone must declare the divergence in lockstep, or
301
+ * `validateInvocationResult` fires for a disagreement neither reader
302
+ * caused.
303
+ */
304
+ readonly collections: CollectionBindingCensus;
305
+ /**
306
+ * The object-bag census, for the one question only a producer can license:
307
+ * a call that RETURNS a bag.
308
+ *
309
+ * `structural.ts`'s `typeAt` publishes the bag as the call's own type
310
+ * (`bagShapeTypeAt` via `callResultShapeAt`), while `buildSelectedSignature`
311
+ * still derives the callee's declared return -- `any`, since nothing in the
312
+ * source states it. Two answers for one call is a WITHHOLDING unless a
313
+ * reason is declared, and `bagResultOverride` is where this one is.
314
+ */
315
+ readonly bags: ObjectBagCensus;
316
+ /**
317
+ * The composed parameter-binding census, for the ONE producer that has to
318
+ * ask a parameter declaration what it holds rather than reading a type off
319
+ * a node the mapper already answered: `contributeDefaultedParameter`.
320
+ *
321
+ * `structural-parts.ts`'s `parameterOf` (the published ABI slot) opens with
322
+ * `parameters.typeAt(declaration)`, and `structural.ts`'s `typeAt` reaches
323
+ * the same answer for every body-side read through
324
+ * `structural-layout-type.ts`'s guarded census fallback. The binding that
325
+ * INITIALIZES the cell those two read through asked
326
+ * `checker.getTypeAtLocation` directly -- deliberately, so that the two
327
+ * spellings of an ANNOTATED default (`p: number | undefined = 0` versus
328
+ * `p = 0`) reach one shape -- and for an UNANNOTATED default that answer is
329
+ * the initializer's own type. `{}` for `options = {}`. Three authorities,
330
+ * one parameter, and the cell was the one holding `{}` while its slot and
331
+ * every read held the real record. This is the same three-authority shape
332
+ * `parameter-slot.ts`'s own header records for rest parameters, resolved
333
+ * the same way: give all three the same source.
334
+ */
335
+ readonly parameters: ParameterBindingCensus;
336
+ /**
337
+ * The declaration identity of the standard `Generator<T, TReturn, TNext>`
338
+ * interface, or `null` when this compilation's `lib` installs none.
339
+ *
340
+ * Read by the iteration producers for exactly the reason `keyedCollections`
341
+ * above is: `representation/derive.ts`'s `GeneratorDeclarationPolicy`
342
+ * carries a value of that type as the native cursor `iterator(T)`, so a
343
+ * `for`-`of` over one must skip the `@@iterator` lookup -- and a producer
344
+ * that resolved `Generator` independently could disagree with the deriver
345
+ * about which declaration that is.
346
+ */
347
+ readonly generatorDeclaration: DeclarationId | null;
348
+ /** The standard `AsyncGenerator<T, TReturn, TNext>` declaration -- the same cursor question one level out; see `asyncGeneratorDeclarationOf`. */
349
+ readonly asyncGeneratorDeclaration: DeclarationId | null;
350
+ /** The standard `MapIterator<T>` declaration returned by `Map.prototype.entries()`. */
351
+ readonly mapIteratorDeclaration: DeclarationId | null;
352
+ /**
353
+ * What every unannotated JS function actually returns (`return-bindings.ts`),
354
+ * for a producer that wants it directly rather than through
355
+ * `context.types.typeAt` -- see the "not yet the load-bearing seam" note
356
+ * below.
357
+ *
358
+ * Optional, and unlike every other whole-program census on this interface,
359
+ * NOT the primary way this census reaches a producer today. The primary
360
+ * seam is `return-bindings.ts`'s own `withReturnBindings`, which composes
361
+ * this census with the `ParameterBindingCensus` `structural.ts` already
362
+ * threads into `layoutTypeAt` (`structural-layout-type.ts`) -- the same
363
+ * path `parameters` (that census) already takes, so a call site this
364
+ * census resolves is answered through the SAME node `context.types.typeAt`
365
+ * already asks, with no producer needing to know this field exists. Wiring
366
+ * `withReturnBindings` in at its one call site is a `frontend.ts` change
367
+ * (`const parameters = censusParameterBindings(...)` becomes
368
+ * `withReturnBindings(checker, files, censusParameterBindings(...))`) that
369
+ * this module's own ownership boundary does not include, so this field is
370
+ * threaded here, populated, and left unconsumed until a producer or
371
+ * `frontend.ts` is edited to use one path or the other -- never both, or a
372
+ * call site the composed census resolves and a producer resolves
373
+ * independently could disagree about its own result's carrier.
374
+ */
375
+ readonly returns?: ReturnBindingCensus;
376
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { FamilyProducer } from '../contribution.js';
2
+ import type { ProducerContext } from '../producer-context.js';
3
+ export declare const createAllocationProducer: (context: ProducerContext) => FamilyProducer;