@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,491 @@
1
+ import ts from 'typescript';
2
+ import { impliedPatternParameterOf, isUnusableEvidence, widestOf, withoutUndefinedMember } from './derived-expression-type.js';
3
+ /**
4
+ * What an UNANNOTATED rest parameter's checker-inferred type actually is, when
5
+ * that type is an open-arity array rather than the closed tuple it might look
6
+ * like at first read.
7
+ *
8
+ * `fetch: (request, Env?, executionCtx?) => ... = (request, ...rest) => {...}`
9
+ * -- hono's own `Hono.fetch` -- is the concrete case this exists for: the
10
+ * arrow function's declared type comes from the field it initializes, whose
11
+ * signature has THREE named parameters and no rest at all. TypeScript's
12
+ * contextual typing still has to give `rest` SOME type, and does so by
13
+ * matching the excess of the target signature positionally into a TUPLE --
14
+ * here `[(E['Bindings'] | {})?, ExecutionContext?]` -- which reads exactly
15
+ * like a real, closed, two-element shape and is not one: it is the target
16
+ * signature's tail, re-packaged, and the only reason it has a fixed arity at
17
+ * all is that the target signature does. A caller of `fetch` is free to pass
18
+ * zero, one, or two of those trailing arguments -- the language's own rest
19
+ * binding, unaffected by how the contextual type happened to spell it.
20
+ *
21
+ * `structural.ts`'s `typeAt` already reaches exactly this conclusion for a
22
+ * REFERENCE to such a parameter inside the function's own body (`rest[0]`,
23
+ * `rest[1]`, a spread) -- see `restParameterArrayElementAt`, which shares
24
+ * this function's core test. `structural-parts.ts`'s `parameterOf` (the
25
+ * callable's own published ABI) is a second authority describing the
26
+ * identical parameter, and calls THIS function (`restParameterArrayTypeOf`)
27
+ * directly -- it already has the declaration in hand, having resolved it
28
+ * itself, so it never needed `restParameterArrayElementAt`'s own node-shape
29
+ * dispatch.
30
+ *
31
+ * A THIRD authority describes the same parameter again, through
32
+ * `restParameterArrayElementAt`, and used to disagree with the other two:
33
+ * `contributeParameter` (`producers/bindings.ts`) builds the binding that
34
+ * INITIALIZES `rest` -- the frame slot both the signature and every
35
+ * body-side read ultimately answer through -- by asking `structural.ts`'s
36
+ * `typeAt` for the PARAMETER DECLARATION node itself, not a reference to it.
37
+ * `restParameterArrayElementAt` used to require an identifier
38
+ * (`ts.isIdentifier(node)`), so that call never reached this collapse at
39
+ * all and published the checker's raw closed tuple straight into the
40
+ * binding -- correct for the SIGNATURE (`parameterOf`) and for every
41
+ * REFERENCE inside the body, wrong for the one binding both of those
42
+ * actually read through. `restParameterArrayElementAt` now accepts the
43
+ * declaration node directly (see `restParameterDeclarationAt`, below), so
44
+ * all three authorities derive the identical collapse from the identical
45
+ * source and cannot disagree.
46
+ *
47
+ * Gated exactly as its body-side counterpart is, for the same reasons:
48
+ * - UNANNOTATED only (`declaration.type === undefined`) -- an explicit
49
+ * `...args: [string, number]` is the program stating a real, closed
50
+ * shape, and this must never override that;
51
+ * - the checker's answer must be a tuple with at least one NON-required
52
+ * element. A checker-inferred CLOSED tuple (every position required) is
53
+ * left exactly alone -- that is a real, settled arity, not an artifact of
54
+ * contextual matching against a shorter signature.
55
+ *
56
+ * `null` means "the checker's own answer stands", the same safe default
57
+ * every function in this file shares.
58
+ */
59
+ /**
60
+ * The per-position types of a rest parameter whose DECLARED type is a closed
61
+ * tuple -- every position required, no optional, rest or variadic element --
62
+ * or `null` for anything else.
63
+ *
64
+ * `/** @param {[number, number, number, number, number]} args *\/ function
65
+ * texStorage2D( ...args ) { gl.texStorage2D( ...args ) }`: three's
66
+ * `WebGLState.js` as the native-webgl-angle plugin rewrites its `...arguments`
67
+ * forwarders. The parameter's cell is an array (the rest slot materializes
68
+ * one), but its declaration states its LENGTH and the type at each position,
69
+ * and the checker refuses any call that passes a different count. Two
70
+ * consumers read this one fact: `producers/tuple-spread.ts` expands a spread
71
+ * of such a parameter into that many constant-index reads, and
72
+ * `parameter-bindings.ts` hands the callee's formals the position types --
73
+ * which must agree, or the operands say `number` while the formal's storage
74
+ * says "unresolved".
75
+ */
76
+ export const declaredClosedTupleRestElementsOf = (checker, declaration) => {
77
+ if (declaration.dotDotDotToken === undefined)
78
+ return null;
79
+ const declared = checker.getTypeAtLocation(declaration);
80
+ if (!checker.isTupleType(declared))
81
+ return null;
82
+ const reference = declared;
83
+ const elements = checker.getTypeArguments(reference);
84
+ if (elements.length === 0)
85
+ return null;
86
+ const allRequired = elements.every((_, index) => (reference.target.elementFlags[index] ?? ts.ElementFlags.Required) === ts.ElementFlags.Required);
87
+ return allRequired ? elements : null;
88
+ };
89
+ export const restParameterArrayTypeOf = (checker, declaration) => {
90
+ if (declaration.dotDotDotToken === undefined || declaration.type !== undefined)
91
+ return null;
92
+ // STATED, not HOLDS: this asks what the checker's own CONTEXTUAL TYPING
93
+ // produced for this unannotated rest parameter -- a `ts.TupleTypeReference`
94
+ // whose internal shape (`.target`, `.elementFlags`) this function unwraps
95
+ // by hand -- not what value the parameter carries at runtime. A census
96
+ // answer is a real `ts.Type` too, but for a DIFFERENT node (a call-site
97
+ // argument, a write), with no reason to be the tuple-from-target-signature
98
+ // artifact this specifically detects and widens; substituting it here would
99
+ // desync this function from the two other authorities the module comment
100
+ // names (`structural.ts`'s `restParameterArrayElementAt`,
101
+ // `structural-parts.ts`'s `parameterOf`) that all derive this collapse from
102
+ // this SAME checker-native tuple. Left as a direct checker call.
103
+ const own = checker.getTypeAtLocation(declaration);
104
+ if (!checker.isTupleType(own))
105
+ return null;
106
+ const reference = own;
107
+ const target = reference.target;
108
+ const elements = checker.getTypeArguments(reference);
109
+ if (elements.length === 0)
110
+ return null;
111
+ const allRequired = elements.every((_, index) => (target.elementFlags[index] ?? ts.ElementFlags.Required) === ts.ElementFlags.Required);
112
+ if (allRequired)
113
+ return null;
114
+ return restTupleElementTypeOf(checker, elements);
115
+ };
116
+ /**
117
+ * The ONE type an open-arity rest array's every position can hold.
118
+ *
119
+ * `widestOf` answers first and usually answers: when every position genuinely
120
+ * joins under one of them, that type keeps the forwarding array a well-typed
121
+ * native array instead of a tagged union nobody wrote.
122
+ *
123
+ * Its REFUSAL is the part that needed an answer here. Before its own vacuous-
124
+ * coverage veto existed (`derived-expression-type.ts`), hono's
125
+ * `HonoBase.fetch` -- declared `(request, Env?: E['Bindings'] | {},
126
+ * executionCtx?: ExecutionContext) => ...` and implemented `(request,
127
+ * ...rest) => ...` -- joined the contextual tuple
128
+ * `[(E['Bindings'] | {})?, ExecutionContext?]` down to position 0 alone,
129
+ * because every object type is assignable to `{}`. The array published
130
+ * `array-object(optional(dynamic | record{}))`, naming no `ExecutionContext`
131
+ * at all, and `request(path, init, Env, executionCtx)` forwarding a real one
132
+ * had no conversion into it. `widestOf` now refuses that join instead of
133
+ * lying about it, and a refusal used to leave the checker's raw CLOSED tuple
134
+ * standing as the rest parameter's type -- the very shape this file's header
135
+ * explains is not what `rest` holds.
136
+ *
137
+ * So a refusal states the union of every position, which is exactly the
138
+ * policy `restParameterUnionOfTuplesElementTypeOf` already states for the
139
+ * other of TypeScript's two notations for variable arity ("the union of every
140
+ * arm's every element states exactly what the array holds and nothing more").
141
+ * The two notations now agree on this case as well.
142
+ *
143
+ * `undefined` is deliberately NOT stripped from that union, unlike in the
144
+ * sibling. There the positions come from different ARMS and the read past a
145
+ * shorter arm's end is what supplies absence; here they are the checker's own
146
+ * OPTIONAL elements of one tuple, whose `undefined` is a value the caller may
147
+ * actually pass (`request(path, init, undefined, ctx)` is how hono's own
148
+ * `request` forwards a missing `Env`), so dropping it would publish an
149
+ * element narrower than the calls the signature admits.
150
+ */
151
+ const restTupleElementTypeOf = (checker, elements) => {
152
+ const widest = widestOf(checker, elements);
153
+ if (widest !== null)
154
+ return widest;
155
+ const kept = [...new Set(elements.filter((element) => (element.flags & ts.TypeFlags.Never) === 0))];
156
+ if (kept.length === 0)
157
+ return null;
158
+ return kept.length === 1 ? kept[0] : unionTypeOf(checker, kept);
159
+ };
160
+ /**
161
+ * The widened element type of an EXPLICITLY ANNOTATED rest parameter whose
162
+ * declared type is a union of tuples -- `...args: [] | [TNext]`, exactly how
163
+ * `lib.es2015.generator.d.ts` spells `Generator.prototype.next`'s "zero or one
164
+ * argument" parameter.
165
+ *
166
+ * This says the same thing `[TNext?]` -- one tuple with an optional trailing
167
+ * element -- would say, in the other of TypeScript's two notations for
168
+ * variable arity: a single tuple whose optional positions
169
+ * `restParameterArrayTypeOf` above already widens by reading `elementFlags`
170
+ * off ONE `TupleTypeReference`. A union of several distinctly-lengthed tuples
171
+ * is the same fact spread across several types instead of several positions
172
+ * of one, so this collects every element type out of every arm and widens
173
+ * across all of them the identical way -- `widestOf` does not care which
174
+ * tuple or which position an element came from, only whether every element it
175
+ * is handed agrees on one wider type.
176
+ *
177
+ * Left ungated by `declaration.type`, unlike its sibling: there is no bare
178
+ * checker-inferred form of this shape to guard against overriding -- a
179
+ * program can only reach a union of tuples here by writing the annotation out
180
+ * (`restParameterArrayTypeOf` already owns the unannotated, single-tuple
181
+ * case), so an explicit `[] | [TNext]` is exactly the input this exists to
182
+ * widen, not a real, closed shape it would be wrong to touch.
183
+ *
184
+ * Without this, `structural-parts.ts`'s `parameterOf` finds `declared` is
185
+ * neither `isArrayType` nor `isTupleType` (a union of tuples is itself
186
+ * neither), falls into `restNotArrayShaped`'s bare-`any` fallback, and wraps
187
+ * the WHOLE UNION as if it were one element: `Array<[] | [TNext]>` instead of
188
+ * `Array<TNext>`. Every call site then argument-packs a raw `TNext` value
189
+ * against a parameter slot declaring a one-tuple record, which is `next(v)`'s
190
+ * "passes a scalar argument into a parameter slot carrying record(...)"
191
+ * emission refusal for any generator whose `TNext` resolved to a native
192
+ * carrier.
193
+ *
194
+ * `widestOf` REFUSING is not a reason to hand the union back untouched. The
195
+ * arms of a real overload-shaped rest -- hono's `defineWebSocketHelper`,
196
+ * `...args: [createEvents, options?] | [c, events, options?]` -- state
197
+ * unrelated types at the same ordinal, so no one element covers the rest, and
198
+ * before this the whole union fell through to `parameterOf`'s
199
+ * `restNotArrayShaped` fallback and became `Array<[A, B?] | [C, D, E?]>`:
200
+ * every element of the array claimed to be a whole argument LIST. That is not
201
+ * a widening that failed, it is a wrong statement about the value -- the array
202
+ * holds one argument per slot, never a tuple -- and it is what the binding
203
+ * (`structural.ts`'s `rest-parameter-array-element`) could never agree with,
204
+ * since the binding kept the union itself and derived a tagged union of
205
+ * positional records. The union of every arm's every element states exactly
206
+ * what the array holds and nothing more, and both authorities derive it from
207
+ * this one function, so they cannot disagree about it.
208
+ *
209
+ * An optional position's `undefined` is dropped from that union, for the reason
210
+ * `impliedPatternElementOfArms` below already states about the same kind of
211
+ * evidence: a position's `undefined` is POSITIONAL -- an arm that is shorter,
212
+ * or a trailing `options?` nobody passed -- and the READ past the end of the
213
+ * array is what supplies it, per position. Keeping it would wrap the whole
214
+ * element in `optional(...)`, which says every slot of the array may be absent
215
+ * even where an arm requires one.
216
+ */
217
+ export const restParameterUnionOfTuplesElementTypeOf = (checker, declared) => {
218
+ if (!declared.isUnion())
219
+ return null;
220
+ if (!declared.types.every((member) => checker.isTupleType(member)))
221
+ return null;
222
+ const elements = declared.types.flatMap((member) => checker.getTypeArguments(member));
223
+ if (elements.length === 0)
224
+ return null;
225
+ const widest = widestOf(checker, elements);
226
+ if (widest)
227
+ return widest;
228
+ // `never` only: a position nothing states contributes nothing, while an `any`
229
+ // one genuinely widens the element and must stay -- dropping it would publish
230
+ // an array narrower than the program's own annotation.
231
+ const stated = elements
232
+ .map((element) => withoutUndefinedMember(checker, element))
233
+ .filter((element) => (element.flags & ts.TypeFlags.Never) === 0);
234
+ return stated.length === 0 ? null : unionTypeOf(checker, [...new Set(stated)]);
235
+ };
236
+ /**
237
+ * The type the physical parameter SLOT holds.
238
+ *
239
+ * An omitted argument is `undefined`, and a defaulted parameter's initializer
240
+ * runs inside the callee over exactly this slot, so an optional or defaulted
241
+ * slot has to hold `undefined` alongside whatever the body ends up binding.
242
+ *
243
+ * The widening is done as a TYPE, by the checker, rather than as an absence
244
+ * flag layered over an already-derived carrier. Those two are not the same
245
+ * answer: a flag can only say "absent or not", so a parameter whose declared
246
+ * type already spends absence on `null` -- `f(x: T | null = null)`, and the
247
+ * JSDoc spelling `@param {?T} [x=null]` that three.js writes throughout -- had
248
+ * no state left to say WHICH absent value it holds, and was refused outright.
249
+ * As a type it is just a three-armed union, which `representation/union.ts`
250
+ * has always carried as a tagged union with a `null` arm, an `undefined` arm
251
+ * and a `present` arm.
252
+ *
253
+ * `getNullableType` is the same public API TypeScript's own `addOptionality`
254
+ * uses, and it flattens: the result is one flat union, never a union nested
255
+ * inside a union, which matters because the two are different interned shapes
256
+ * and only the flat one derives to the three-armed carrier.
257
+ *
258
+ * A rest parameter is left alone -- its declared type is already the array the
259
+ * language binds, and there is no omission to encode.
260
+ */
261
+ export const parameterSlotTypeOf = (internUnion, undefinedType, flags, type) => (flags.rest || (!flags.optional && !flags.hasInitializer) ? type : internUnion([type, undefinedType]));
262
+ /**
263
+ * AN UNANNOTATED REST PARAMETER IS ALWAYS AN ARRAY AT RUNTIME, WHATEVER
264
+ * ARITY-TRACKING TUPLE THE CHECKER GAVE IT FOR CHECKING PURPOSES.
265
+ *
266
+ * `FunctionDeclarationInstantiation` (ECMA-262 10.2.11 step 28) binds a rest
267
+ * parameter to a fresh `Array`, unconditionally -- that is what the value
268
+ * physically is, regardless of how the checker typed the binding. When an
269
+ * unannotated `...args` is contextually typed against a target with more
270
+ * than one possible tail shape -- an overloaded call type
271
+ * (`hono/src/context.ts`'s `NewResponse` has two signatures, `(data,
272
+ * status?, headers?)` and `(data, init?)`), or a single signature with its
273
+ * own optional trailing parameters -- the checker states that as a TUPLE
274
+ * with optional/rest/variadic elements, one arity per possible call shape
275
+ * joined into one type. That tuple is real and correct for checking a call
276
+ * `args` is forwarded into, but it does not describe `args` itself: the
277
+ * program never wrote a fixed-arity value there, and no two calls into this
278
+ * function are required to pass the same number of arguments.
279
+ *
280
+ * `tuple-spread.ts`'s `closedTupleElementTypesOf` already refuses to expand
281
+ * exactly this shape positionally (an optional/rest/variadic element means
282
+ * the arity is not settled), which is correct -- but leaving the binding
283
+ * typed as a tuple after that refusal is what actually breaks: representing
284
+ * an open-arity tuple needs a dictionary-shaped carrier with no
285
+ * `[Symbol.iterator]`, so every consumer that needs to iterate or
286
+ * range-copy `args` (a spread into another call, `for`-`of`) is refused for
287
+ * a reason that names a carrier this value was never supposed to have.
288
+ * Collapsing it to the array it actually is restores the native iteration
289
+ * cursor `hasNativeIterationCursor` already grants any other `T[]`.
290
+ *
291
+ * Gated tightly, to touch only the binding itself:
292
+ * - the parameter must be UNANNOTATED (`declaration.type === undefined`).
293
+ * An explicit `...args: [string, number]` is the program stating a real,
294
+ * closed shape, and this must not override that;
295
+ * - the checker's type must be a tuple whose elements are NOT all
296
+ * `Required` -- a checker-inferred CLOSED tuple (every position
297
+ * required, one arity) is left alone: `tuple-spread.ts` already expands
298
+ * that positionally, and collapsing it here would throw away real
299
+ * per-position typing a sound expansion could still use.
300
+ *
301
+ * The array's element type is `widestOf` the tuple's own elements -- the
302
+ * same join two `return` statements or two branches of a conditional must
303
+ * already agree through (`derived-expression-type.ts`). When every element
304
+ * genuinely joins under one type, using it keeps a well-typed forwarding
305
+ * array native instead of boxing it. When no single element type covers
306
+ * every position (`widestOf` refuses), this refuses too, rather than
307
+ * inventing a join the checker never stated -- the existing tuple/record
308
+ * path is the fallback, unchanged.
309
+ */
310
+ export const restParameterArrayElementAt = (checker, identities, node) => {
311
+ const declaration = restParameterDeclarationAt(checker, identities, node);
312
+ if (!declaration)
313
+ return null;
314
+ // The core test -- unannotated, checker-tupled, not every element
315
+ // required -- is shared with the signature side of this same question;
316
+ // see `parameter-slot.ts`'s `restParameterArrayTypeOf` for why there is
317
+ // only one function answering it.
318
+ return restParameterArrayTypeOf(checker, declaration);
319
+ };
320
+ /**
321
+ * The body-side entry to `restParameterUnionOfTuplesElementTypeOf` above --
322
+ * the same collapse `structural-parts.ts`'s `parameterOf` applies to the ABI
323
+ * slot, reached from either shape a node names (`restParameterDeclarationAt`).
324
+ *
325
+ * That collapse was wired into `parameterOf` alone when `Generator.next`'s
326
+ * `[] | [TNext]` needed it, re-opening exactly the disagreement this file's
327
+ * header describes: the ABI published `array-object(...)` for a rest
328
+ * parameter annotated as a union of tuples while the binding kept the
329
+ * checker's raw union, which `derive.ts` lays out as a tagged-union of
330
+ * positional records once any arm has a non-uniform or optional position.
331
+ * `projection/abi.ts` then refused the function -- hono's
332
+ * `defineWebSocketHelper` (`...args: [createEvents, options?] | [c, events,
333
+ * options?]`) with 'parameter 0 is bound as "tagged-union(...)" but the ABI
334
+ * declares "array-object(...)"'. `[] | [T]` never showed it only because both
335
+ * arms happen to derive to the array carrier anyway. The ABI is the right
336
+ * authority: FunctionDeclarationInstantiation binds a rest parameter to one
337
+ * fresh Array whatever static shapes describe it, and `packRestArguments`
338
+ * has no convention for a discriminated rest slot.
339
+ */
340
+ export const restParameterUnionOfTuplesElementAt = (checker, identities, node) => {
341
+ const declaration = restParameterDeclarationAt(checker, identities, node);
342
+ // A REST parameter only, as `parameterOf` gates its own call on `flags.rest`:
343
+ // a destructured ordinary parameter can also be typed as a union of tuples
344
+ // (hono's `([[, route]]) => route` over `[[H, Route], ParamIndexMap] |
345
+ // [[H, Route], Params]` elements) and holds ONE tuple value, not an array
346
+ // of arms -- collapsing it here made the binding an array while the ABI
347
+ // kept the union, the same disagreement in the other direction.
348
+ if (!declaration || declaration.dotDotDotToken === undefined)
349
+ return null;
350
+ return restParameterUnionOfTuplesElementTypeOf(checker, checker.getTypeAtLocation(declaration));
351
+ };
352
+ /**
353
+ * `restParameterArrayElementAt`'s sibling for CALL-SITE evidence rather
354
+ * than the checker's own contextual-tuple widening: `parameter-bindings.ts`'s
355
+ * `restElementTypeAt` joins the actual arguments every reachable call passes
356
+ * at or past the rest parameter's own ordinal, which is real evidence about
357
+ * what the array holds and outranks a bare checker guess -- the same
358
+ * priority `structural-parts.ts`'s `parameterOf` already gives an ordinary
359
+ * parameter's census answer over `restArray`. Resolves the same DECLARATION
360
+ * `restParameterArrayElementAt` does, from either shape a node names, so a
361
+ * body-side reference (`structural.ts`'s `typeAt`) and the ABI's own slot
362
+ * (`parameterOf`) read the identical fact and cannot disagree about it.
363
+ */
364
+ export const censusRestElementAt = (checker, identities, parameters, node) => {
365
+ const declaration = restParameterDeclarationAt(checker, identities, node);
366
+ return declaration ? (parameters.restElementTypeAt?.(declaration) ?? null) : null;
367
+ };
368
+ /**
369
+ * The rest parameter `node` names, whichever of the two shapes names one:
370
+ * the DECLARATION itself -- `contributeParameter`'s own binding-initialize
371
+ * site (`producers/bindings.ts`), which types the frame slot before any
372
+ * reference to it exists -- or an IDENTIFIER that reads it (`rest[0]`,
373
+ * `rest.length`, a spread, anywhere inside the function's own body). Both
374
+ * name the same physical rest parameter and must resolve to the same
375
+ * declaration for `restParameterArrayTypeOf` to answer both identically;
376
+ * see this file's header comment for the third authority
377
+ * (`structural-parts.ts`'s `parameterOf`), which resolves its own
378
+ * declaration and calls `restParameterArrayTypeOf` directly, bypassing this
379
+ * dispatch entirely -- unaffected by this change and already agreeing with
380
+ * it.
381
+ */
382
+ const restParameterDeclarationAt = (checker, identities, node) => {
383
+ if (ts.isParameter(node))
384
+ return node;
385
+ if (!ts.isIdentifier(node))
386
+ return null;
387
+ const symbol = checker.getSymbolAtLocation(node);
388
+ const declaration = symbol ? identities.declarationOfSymbol(symbol) : null;
389
+ return declaration && ts.isParameter(declaration) ? declaration : null;
390
+ };
391
+ /**
392
+ * The element an implied array pattern's value is STORED as, read out of the
393
+ * tuple arms its call sites (and its own default) pass: every stated position
394
+ * of every arm, plus -- for a position no arm reaches -- the pattern element's
395
+ * own default, which is then the only value that position ever binds. One
396
+ * covering type when the positions agree (`widestOf`); their union when they
397
+ * do not, because `[null, 0, false, '']` is a real array of four kinds and
398
+ * the pattern reads each position back out of it. A position's `undefined`
399
+ * is positional (an optional tuple element, a shorter arm) and the read
400
+ * supplies it per position (`patternReadTypeAt`), so it is not an element.
401
+ * `any` when nothing states a position at all.
402
+ */
403
+ /** The non-null arms a set of holders offers -- a union holder contributes each member by itself. */
404
+ const holderArmsOf = (checker, holders) => holders.flatMap((holder) => {
405
+ const nonNull = checker.getNonNullableType(holder);
406
+ return nonNull.isUnion() ? nonNull.types.map((arm) => checker.getNonNullableType(arm)) : [nonNull];
407
+ });
408
+ /**
409
+ * Whether every holder PROVES a value at `position`: each arm is a tuple whose
410
+ * required prefix reaches past it. The pattern reads out of the array the
411
+ * parameter stores, so a position is `element | undefined` in general -- but
412
+ * `[x, y = 2] = [1]` reached only as `m()` never leaves `x` absent, and
413
+ * spelling it optional there hands `x + y` an optional operand for nothing.
414
+ * A plain-array arm proves no position; an optional tuple element proves none
415
+ * either.
416
+ */
417
+ export const impliedPatternPositionPresentEverywhere = (checker, holders, position) => {
418
+ const arms = holderArmsOf(checker, holders);
419
+ const holdsUndefined = (type) => (type.flags & (ts.TypeFlags.Undefined | ts.TypeFlags.Void | ts.TypeFlags.Any | ts.TypeFlags.Unknown)) !== 0 ||
420
+ (type.isUnion() && type.types.some(holdsUndefined));
421
+ return (arms.length > 0 &&
422
+ arms.every((arm) => {
423
+ if (!checker.isTupleType(arm) || arm.target.minLength <= position)
424
+ return false;
425
+ // A required tuple position typed `undefined` is a HOLE (`[,]` types
426
+ // as `[undefined]`), and a hole reads as absent: not a proof.
427
+ const at = checker.getTypeArguments(arm)[position];
428
+ return at !== undefined && !holdsUndefined(at);
429
+ }));
430
+ };
431
+ export const impliedPatternElementOfArms = (checker, holders, pattern) => {
432
+ const arms = holderArmsOf(checker, holders);
433
+ if (arms.length === 0 || !arms.every((arm) => checker.isTupleType(arm) || checker.isArrayType(arm)))
434
+ return null;
435
+ const usable = (type) => !isUnusableEvidence(type) && (type.flags & ts.TypeFlags.Undefined) === 0;
436
+ const settle = (type) => withoutUndefinedMember(checker, checker.getBaseTypeOfLiteralType(type));
437
+ // A plain-array arm (`f(values)` for `var values = [1, 2, 3]`) states its
438
+ // element at EVERY position, a tuple arm states each position by itself.
439
+ const everywhere = arms.flatMap((arm) => {
440
+ if (checker.isTupleType(arm))
441
+ return [];
442
+ const element = checker.getIndexTypeOfType(arm, ts.IndexKind.Number);
443
+ return element ? [settle(element)] : [];
444
+ });
445
+ const byPosition = arms.map((arm) => (checker.isTupleType(arm) ? checker.getTypeArguments(arm).map(settle) : []));
446
+ const width = Math.max(pattern.elements.length, ...byPosition.map((positions) => positions.length));
447
+ const stated = [];
448
+ let sawDynamic = false;
449
+ for (let position = 0; position < width; position++) {
450
+ const offered = [
451
+ ...everywhere,
452
+ ...byPosition.flatMap((positions) => (positions[position] === undefined ? [] : [positions[position]]))
453
+ ];
454
+ if (offered.some((type) => (type.flags & ts.TypeFlags.Any) !== 0))
455
+ sawDynamic = true;
456
+ const at = offered.filter(usable);
457
+ if (at.length > 0) {
458
+ stated.push(...at);
459
+ continue;
460
+ }
461
+ const element = pattern.elements[position];
462
+ if (element && ts.isBindingElement(element) && element.initializer && !element.dotDotDotToken) {
463
+ const fallback = settle(checker.getTypeAtLocation(element.initializer));
464
+ if (usable(fallback))
465
+ stated.push(fallback);
466
+ }
467
+ }
468
+ // Arms that state NO position (`f([])` against `[{ x }]`) hold nothing: the
469
+ // element is `never`, the read past every arm is `undefined`, and a nested
470
+ // pattern over it throws where the language throws. Only an `any` somewhere
471
+ // in the evidence makes the element genuinely unknown.
472
+ if (stated.length === 0)
473
+ return sawDynamic ? checker.getAnyType() : checker.getNeverType();
474
+ return widestOf(checker, stated) ?? unionTypeOf(checker, [...new Set(stated)]) ?? checker.getAnyType();
475
+ };
476
+ /** The internal union constructor; the public checker exposes none (the same reach `field-bindings.ts` takes). */
477
+ const unionTypeOf = (checker, types) => {
478
+ const constructing = checker;
479
+ return typeof constructing.getUnionType === 'function' ? constructing.getUnionType(types) : null;
480
+ };
481
+ export const impliedPatternArrayElementAt = (checker, parameters, node) => {
482
+ const parameter = impliedPatternParameterOf(checker, node);
483
+ if (!parameter || !ts.isArrayBindingPattern(parameter.name))
484
+ return null;
485
+ // The census publishes a disagreement it settled as SYNTHESIZED arms
486
+ // (`unionArmsAt`), never as one `ts.Type` -- `f([1, 2])` next to `f([])`
487
+ // is exactly that -- so the arms are asked for before the single answer.
488
+ const synthesized = parameters.unionArmsAt(parameter);
489
+ const holders = synthesized ?? [parameters.typeAt(parameter) ?? checker.getTypeAtLocation(parameter)];
490
+ return impliedPatternElementOfArms(checker, holders, parameter.name);
491
+ };
@@ -0,0 +1,77 @@
1
+ import ts from 'typescript';
2
+ /**
3
+ * What a call to an OVERLOAD SET whose one implementation is a GENERATOR
4
+ * physically produces.
5
+ *
6
+ * `implementationSignatureOf` (`structural-declarations.ts`) already states the
7
+ * rule for the callee: an overload set declares several ways to CALL a name and
8
+ * exactly one body, so the one signature that physically exists is the
9
+ * implementation's, and `valueTypeAt` publishes the function object from it.
10
+ * The CALL's result was left out of that, and for a generator the two answers
11
+ * are not interchangeable: a generator's body returns the generator object
12
+ * `EvaluateGeneratorBody` creates, which this compiler carries as `iterator`,
13
+ * while the overload signature above it is free to spell that object as any
14
+ * interface it satisfies. node-compat's `URLSearchParams`
15
+ * (`runtime/node/globals.ts`) spells it `IterableIterator<string>` over
16
+ * `*entries(): Generator<string>`, and an interface is a `native-record-ref` --
17
+ * so the call site asked for a record result from a callee whose convention
18
+ * returns an iterator, and cpp refused the conversion.
19
+ *
20
+ * BOTH halves of an invocation read this, which is why it lives in a module of
21
+ * its own rather than beside either: `structural.ts`'s `typeAt` publishes the
22
+ * call expression's own result through it, and `producers/invocations.ts`'s
23
+ * `buildSelectedSignature` publishes the selected signature's return type
24
+ * through it. Those two are compared by `validateInvocationResult`, which fails
25
+ * the producer closed on any disagreement it has no declared divergence for --
26
+ * correctly, because a producer that answers a question twice has published two
27
+ * answers for one operation. There is no divergence to declare here and there
28
+ * should not be one: this is not a case where the checker and this compiler
29
+ * know different things, it is one physical return type that both sides must
30
+ * read from the same place.
31
+ *
32
+ * Narrow on purpose, to the one disagreement a body can have with its own
33
+ * overloads that the overloads cannot express. The ordinary overload idiom --
34
+ * `f(x: string): string; f(x: number): number; f(x: any): any {...}` -- is the
35
+ * exact opposite case: there the implementation's `any` is the widened frame
36
+ * the several signatures share, and preferring it would box every call result
37
+ * in the program. A generator body states no such widening; `asteriskToken` is
38
+ * the whole gate.
39
+ *
40
+ * A generic implementation is refused rather than guessed at: its own return
41
+ * type still names its signature's type parameters, and this has no call-site
42
+ * instantiation to bind them with, so answering would trade a wrong carrier for
43
+ * an unresolved one. A call anywhere in an OPTIONAL CHAIN is refused for the
44
+ * mirror reason `presentReturnTypeOf` exists: `a?.b()` really is `T |
45
+ * undefined`, and that `undefined` is a fact about the call expression rather
46
+ * than about the callee, so replacing the whole expression's type with the
47
+ * callee's return would strip the absent branch the guard was written for.
48
+ * `ts.isOptionalChain` rather than the call's own `questionDotToken`, because
49
+ * `a?.b()` carries the `?.` on the property access and every later link of the
50
+ * chain publishes the same short circuit.
51
+ *
52
+ * Asked of the callee's SYMBOL rather than of `getResolvedSignature`, which is
53
+ * the answer this wants and the one thing that must not be asked from inside
54
+ * `typeAt`: `structural-callable.ts`'s own comment records resolving every
55
+ * arbitrary call there recursively instantiating hono's conditional route types
56
+ * until the host stack overflowed. Nothing is lost by not asking -- TypeScript
57
+ * never resolves a call to the implementation signature while overloads exist,
58
+ * so a symbol carrying both shapes resolves to a bodiless overload at every call
59
+ * site by construction.
60
+ */
61
+ export declare const physicalGeneratorOverloadResultAt: (checker: ts.TypeChecker, node: ts.Node) => ts.Type | null;
62
+ /**
63
+ * The same answer for a MEMBER SYMBOL rather than a call site.
64
+ *
65
+ * `producers/iteration-yield.ts`'s `iteratorRecordTypesOf` reads what a
66
+ * resolved `[Symbol.iterator]` returns straight off the member symbol's own
67
+ * callable type, and TypeScript shows an overload set's bodiless signatures
68
+ * there and never its implementation -- so `*[Symbol.iterator](): Generator<T>`
69
+ * behind an `[Symbol.iterator](): IterableIterator<T>` overload read back as
70
+ * the interface. `producers/protocol.ts`'s `generatorRecordTypeOf` then failed
71
+ * its `isGeneratorType` test and published the synthetic ECMA-262 `{ next() }`
72
+ * record for a method whose body hands back a native cursor, which is the
73
+ * `method "..." body convention cannot fill its published bound-method
74
+ * convention` refusal (`emit-class-properties.ts`) -- the same one fact
75
+ * disagreeing with itself, one authority over from the call result above.
76
+ */
77
+ export declare const physicalGeneratorOverloadReturnOf: (checker: ts.TypeChecker, declarations: readonly ts.Declaration[]) => ts.Type | null;