@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,25 @@
1
+ import ts from 'typescript';
2
+ import type { StructuralTypeId } from '../../identity/ids.js';
3
+ import type { StructuralShape } from '../model/structural-types.js';
4
+ import type { StructuralTypeTable } from '../model/structural-type-table.js';
5
+ /**
6
+ * The structure a declared name stands for.
7
+ *
8
+ * A name without a body is a name the later layers cannot lay out, so the body
9
+ * is interned while the nominal identity is still anchored -- a member that
10
+ * refers back to the declaration resolves to the anchor instead of re-entering
11
+ * translation. It lives beside `structural.ts` rather than inside it because
12
+ * everything it needs is already an argument: the table, the walk, and the two
13
+ * shape builders.
14
+ */
15
+ export interface DeclaredBodyParts {
16
+ readonly table: StructuralTypeTable;
17
+ readonly typeOf: (type: ts.Type) => StructuralTypeId;
18
+ readonly signatureOf: (signature: ts.Signature) => import('../model/structural-types.js').SignatureShape;
19
+ readonly objectShapeOf: (type: ts.Type, location: ts.Node | null, members: 'all' | 'interface' | 'data-only') => StructuralShape;
20
+ /** The array an interface extending `Array`/`ReadonlyArray` is, with its own fields -- see `structural.ts`. */
21
+ readonly arrayHeritageShapeOf: (type: ts.Type, location: ts.Node) => StructuralShape | null;
22
+ }
23
+ export declare const createDeclaredBodyResolver: ({ table, typeOf, signatureOf, objectShapeOf, arrayHeritageShapeOf }: DeclaredBodyParts) => {
24
+ declaredBodyOf: (type: ts.Type, declarationLocation: ts.Node) => StructuralTypeId | null;
25
+ };
@@ -0,0 +1,147 @@
1
+ import ts from 'typescript';
2
+ /**
3
+ * Which type-level function is still gated, by the name it was written under.
4
+ *
5
+ * The alias symbol is the only handle on a conditional that means anything to a
6
+ * reader: the checker's own rendering of an unresolved conditional is the whole
7
+ * `A extends B ? C : D` text with every argument still open, which is unreadable
8
+ * once several of them nest, and the refusals aggregate to nothing because each
9
+ * nesting depth prints differently. `EnhancedOmit` names the defect.
10
+ */
11
+ const conditionalName = (type) => type.aliasSymbol?.getName() ?? '<anonymous>';
12
+ /**
13
+ * Whether `type` is the INSTANCE type TypeScript infers for a pre-`class`
14
+ * JavaScript constructor function -- the "Constructed" type of `function
15
+ * SourceNode(line) { this.line = line }`, named after the function itself.
16
+ *
17
+ * It matters because such a type's members come from two different places and
18
+ * only one of them is storage. `this.line = line` in the body is a per-instance
19
+ * field; `SourceNode.prototype.add = function () {}` is a prototype member every
20
+ * instance merely SEES. The checker already tells them apart -- the first symbol
21
+ * carries `SymbolFlags.Property`, the second `SymbolFlags.Method` -- which is
22
+ * exactly the distinction `structural-members.ts`'s `data-only` mode is written
23
+ * around, and exactly the one a `class` instance already gets. A pre-`class`
24
+ * constructor and a `class` describe the same object, so one rule has to answer
25
+ * for both; laying this one out as `all` made every prototype method a struct
26
+ * field, and nothing ever wrote it (`X.prototype.m = f` lowers to a dynamic set
27
+ * on the prototype object, not a store into the instance), so the field held a
28
+ * null callable and calling it segfaulted.
29
+ *
30
+ * Recognised from the type's own symbol rather than from `declarationLocation`,
31
+ * because the symbol of such an instance type carries BOTH the function and the
32
+ * expando identifiers that assign statics onto it, and which one
33
+ * `declarationOfSymbol` picks is not this rule's question. The type having no
34
+ * call or construct signature of its own is already established by the caller --
35
+ * the function type itself returned a `signature` shape well above here.
36
+ */
37
+ const isJsConstructorInstanceType = (type) => (type.getSymbol()?.getDeclarations() ?? []).some((declaration) => (ts.isFunctionDeclaration(declaration) || ts.isFunctionExpression(declaration)) && declaration.body !== undefined);
38
+ export const createDeclaredBodyResolver = ({ table, typeOf, signatureOf, objectShapeOf, arrayHeritageShapeOf }) => {
39
+ const declaredBodyOf = (type, declarationLocation) => {
40
+ // An interface or type alias has no implementation to be missing: it names
41
+ // a shape, and a shape is exactly what a layout is. Whether it was written
42
+ // in a `.ts` or a `.d.ts` changes nothing about that -- what a declaration
43
+ // file changes is where *values* come from, and that boundary is refused
44
+ // where it actually is, at the ambient binding that produces the value.
45
+ // Refusing the type instead left every framework's public record types with
46
+ // no carrier at all, which is a gap reported in the wrong place.
47
+ //
48
+ // Expansion terminates because every cycle in the type graph passes through
49
+ // a declared name, and `typeOf` anchors that name before walking its
50
+ // members: `Promise.then` returning a `Promise` resolves to the anchor
51
+ // already in flight rather than re-entering translation.
52
+ // A UNION is asked first, before its call signatures. TypeScript answers
53
+ // `getCallSignatures()` on a union of function types with the signatures of
54
+ // ALL its arms, which reads here exactly like an overload set -- and an
55
+ // overload set is a claim that one value has several conventions, which
56
+ // `sharedAbiOf` (derive.ts) then has to join or refuse. A union is the
57
+ // opposite claim: several values, each with its own convention, told apart
58
+ // by the arm. hono's `type H = Handler<...> | MiddlewareHandler<...>`
59
+ // (`types.ts:90`) is the case -- two arrow types whose return types differ,
60
+ // refused as "no primitive joining 2 overload signatures" at every site
61
+ // that holds a handler.
62
+ //
63
+ // Only the union. An INTERSECTION of callables really is an overload set
64
+ // (that is how a `.d.ts` spells one across merged declarations), so it
65
+ // keeps the signature path below.
66
+ if (type.isUnion())
67
+ return table.intern({ kind: 'union', members: type.types.map(typeOf) });
68
+ const callSignatures = type.getCallSignatures();
69
+ const constructSignatures = type.getConstructSignatures();
70
+ if (callSignatures.length > 0 || constructSignatures.length > 0) {
71
+ return table.intern({
72
+ kind: 'signature',
73
+ call: callSignatures.map((one) => signatureOf(one)),
74
+ construct: constructSignatures.map((one) => signatureOf(one))
75
+ });
76
+ }
77
+ // A method declared in a declaration file is behavior this compiler does not
78
+ // implement: it belongs to whatever ships the type, so putting it in the
79
+ // layout would claim a slot nothing fills. Walking one is also what makes
80
+ // the enumeration diverge -- a generic method's return type is a fresh
81
+ // instantiation, every instantiation is a fresh anchor, and `Promise.then`
82
+ // returning a `Promise` of a new parameter never converges. A use of such a
83
+ // member refuses at the access, which is where the host protocol is actually
84
+ // missing.
85
+ const ambient = declarationLocation.getSourceFile().isDeclarationFile;
86
+ if (type.flags & ts.TypeFlags.Object) {
87
+ // Before the object enumeration: an interface that extends an Array is
88
+ // that array, and enumerating it as an object is the defect.
89
+ const array = arrayHeritageShapeOf(type, declarationLocation);
90
+ if (array)
91
+ return table.intern(array);
92
+ const members = isJsConstructorInstanceType(type) ? 'data-only' : ambient ? 'interface' : 'all';
93
+ return table.intern(objectShapeOf(type, declarationLocation, members));
94
+ }
95
+ // A name for a UNION or an INTERSECTION is a name for a structure that has
96
+ // no layout of its own, and reporting no body at all for it is not honest
97
+ // -- it says the declaration is ambient, which is what `derive.ts` then
98
+ // reports ("is ambient and has no installed host protocol"). hono's
99
+ // `export type Result<T> = [[T, ParamIndexMap][], ParamStash] | [[T,
100
+ // Params][]]` (`router.ts`) is the case: an ordinary source type alias, 32
101
+ // mandatory obligations, refused as though nothing had declared it.
102
+ //
103
+ // The members are walked here rather than by re-entering `typeOf` on the
104
+ // alias itself, which would resolve straight back to the anchor this body
105
+ // belongs to. That is the same walk `translate`'s own union and
106
+ // intersection branches do, minus their substitution and absorption rules,
107
+ // which belong to a type reached WITHOUT a declared name: those rules
108
+ // rewrite the union, and rewriting it under a nominal anchor would make
109
+ // the name and its body disagree.
110
+ if (type.isIntersection()) {
111
+ // The checker's reconciliation of the members rides along; see the
112
+ // `resolved` field's doc comment in `model/structural-types.ts`.
113
+ return table.intern({
114
+ kind: 'intersection',
115
+ members: type.types.map(typeOf),
116
+ declaration: null,
117
+ resolved: table.intern(objectShapeOf(type, declarationLocation, ambient ? 'interface' : 'all'))
118
+ });
119
+ }
120
+ // A CONDITIONAL that never resolved is not an ambient declaration, and
121
+ // saying so out loud is the whole point of this branch. `null` here is read
122
+ // downstream as "the compiler did not define this shape, so a host protocol
123
+ // must carry it" -- which sent every reader of the mongodb probe's compass
124
+ // toward installing bindings for `EnhancedOmit`, `InferIdType`,
125
+ // `OptionalUnlessRequiredId`, `AlternativeType`, `IsAny` and lib.es5's own
126
+ // `Awaited`/`ReturnType`/`Parameters`/`InstanceType`/`ThisParameterType`.
127
+ // Not one of those wants a binding: they are ordinary type-level functions
128
+ // the checker evaluates as soon as it is given a concrete argument, and the
129
+ // argument is still a type parameter. 378 of that probe's 644 mandatory
130
+ // obligations were this, reported as something else.
131
+ //
132
+ // The reason is interned as the BODY rather than returned as `null` so it
133
+ // reaches `derive.ts` intact; nothing else about a declared name changes.
134
+ if (type.flags & ts.TypeFlags.Conditional) {
135
+ return table.intern({
136
+ kind: 'unresolved',
137
+ fallback: 'erased-type-expression',
138
+ reason: `the conditional type ${conditionalName(type)} is still gated on a type parameter (${declarationLocation.getSourceFile().isDeclarationFile ? 'ambient' : 'source'} declaration); monomorphization never filled it`
139
+ });
140
+ }
141
+ // An enum names a set of literal values, not a structure. Reporting `null`
142
+ // states that honestly; synthesizing an empty object body would claim the
143
+ // declaration has a layout it does not have.
144
+ return null;
145
+ };
146
+ return { declaredBodyOf };
147
+ };
@@ -0,0 +1,56 @@
1
+ import ts from 'typescript';
2
+ import type { IdentityTable, SpecializationPath } from './identities.js';
3
+ import type { InstantiationCensus } from './instantiation.js';
4
+ import type { SpecializationCensus } from './specialization.js';
5
+ /**
6
+ * What a specialized copy substitutes for a type parameter.
7
+ *
8
+ * This is the one place that answers "given this copy of a generic, what is
9
+ * `T` actually bound to". `structural.ts` asks it from two different branches
10
+ * -- the `TypeParameter` branch, which substitutes directly, and the union
11
+ * branch, which must substitute *before* it can decide the union's own shape
12
+ * (`T | null` with `T` bound to `unknown` is plain `unknown`, because
13
+ * `unknown` absorbs every other member). Keeping both callers on one lookup is
14
+ * what stops those two answers from drifting apart.
15
+ */
16
+ export interface TypeParameterSubstitution {
17
+ /** What this copy binds a type parameter's declaration to, or `null` when no enclosing copy binds it. */
18
+ readonly boundByPath: (declaration: ts.Declaration) => ts.Type | null;
19
+ /**
20
+ * What binds a type parameter no copy on the path binds: the program-wide
21
+ * instantiation census first, then the sole copy of a function TYPE that
22
+ * owns the parameter. Both branches of `structural.ts` and the path
23
+ * substitution read this one answer, so a cell whose declared type is
24
+ * `EmitFunction` and a value the census copied for `EmitFunction`'s only
25
+ * instantiation cannot disagree about what `T` is.
26
+ */
27
+ readonly bindingOf: (declaration: ts.Declaration) => ts.Type | null;
28
+ /**
29
+ * The non-recursive "what does this copy substitute for this type" answer.
30
+ * Returns the type unchanged when it is not a type parameter, has no binding
31
+ * in this copy, or is the polymorphic `this` parameter -- which is never a
32
+ * real substitution target, since its symbol's declaration is the class
33
+ * itself rather than a type-parameter declaration.
34
+ */
35
+ readonly substituteTypeParameter: (candidate: ts.Type) => ts.Type;
36
+ }
37
+ /**
38
+ * Searched innermost first: a parameter shadowed by a nested generic's own
39
+ * parameter of the same declaration cannot happen -- declarations are distinct
40
+ * objects -- but the innermost binding is still the one in scope, and finding it
41
+ * first is what makes nesting compose.
42
+ */
43
+ export declare const createPathBinding: (specializations: SpecializationCensus, path: SpecializationPath) => (declaration: ts.Declaration) => ts.Type | null;
44
+ /**
45
+ * The substitution one copy performs, stated over a symbol resolver rather than
46
+ * over the whole `IdentityTable`.
47
+ *
48
+ * `identities.ts` needs this same answer while it is still building that table:
49
+ * a name that reaches a generic reaches the copy its own arguments select, and
50
+ * the arguments of a site written inside another generic are only concrete once
51
+ * this substitution has run. One definition is the point -- a second, private
52
+ * copy of the rule is exactly how two authorities over "what is `T` here" drift
53
+ * apart.
54
+ */
55
+ export declare const createPathSubstitution: (declarationOfSymbol: (symbol: ts.Symbol) => ts.Declaration | null, specializations: SpecializationCensus, path: SpecializationPath, fallback?: (declaration: ts.Declaration) => ts.Type | null) => ((candidate: ts.Type) => ts.Type);
56
+ export declare const createTypeParameterSubstitution: (identities: IdentityTable, instantiations: InstantiationCensus, specializations: SpecializationCensus, path: SpecializationPath) => TypeParameterSubstitution;
@@ -0,0 +1,120 @@
1
+ import ts from 'typescript';
2
+ /**
3
+ * Searched innermost first: a parameter shadowed by a nested generic's own
4
+ * parameter of the same declaration cannot happen -- declarations are distinct
5
+ * objects -- but the innermost binding is still the one in scope, and finding it
6
+ * first is what makes nesting compose.
7
+ */
8
+ export const createPathBinding = (specializations, path) => (declaration) => {
9
+ for (let index = path.length - 1; index >= 0; index -= 1) {
10
+ const step = path[index];
11
+ if (!step)
12
+ continue;
13
+ const copy = specializations.specializationsOf(step.owner)[step.ordinal];
14
+ const bound = copy?.bindingOf(declaration);
15
+ if (bound)
16
+ return bound;
17
+ }
18
+ return null;
19
+ };
20
+ /**
21
+ * The substitution one copy performs, stated over a symbol resolver rather than
22
+ * over the whole `IdentityTable`.
23
+ *
24
+ * `identities.ts` needs this same answer while it is still building that table:
25
+ * a name that reaches a generic reaches the copy its own arguments select, and
26
+ * the arguments of a site written inside another generic are only concrete once
27
+ * this substitution has run. One definition is the point -- a second, private
28
+ * copy of the rule is exactly how two authorities over "what is `T` here" drift
29
+ * apart.
30
+ */
31
+ export const createPathSubstitution = (declarationOfSymbol, specializations, path, fallback = () => null) => {
32
+ const boundByPath = createPathBinding(specializations, path);
33
+ const filledByPath = (open) => {
34
+ for (let index = path.length - 1; index >= 0; index -= 1) {
35
+ const step = path[index];
36
+ if (!step)
37
+ continue;
38
+ const filling = specializations.specializationsOf(step.owner)[step.ordinal]?.fillingOf(open);
39
+ if (filling)
40
+ return filling;
41
+ }
42
+ return null;
43
+ };
44
+ return (candidate) => {
45
+ // A composite the enclosing copy's own call closed -- `T[]` written at a
46
+ // site inside `outer<T>`, `string[]` in the copy `outer(words)` minted.
47
+ // See `Specialization.fillingOf`.
48
+ if (!(candidate.flags & ts.TypeFlags.TypeParameter)) {
49
+ return (candidate.flags & (ts.TypeFlags.Object | ts.TypeFlags.UnionOrIntersection)) !== 0
50
+ ? (filledByPath(candidate) ?? candidate)
51
+ : candidate;
52
+ }
53
+ const symbol = candidate.getSymbol();
54
+ const declaration = symbol ? declarationOfSymbol(symbol) : null;
55
+ if (!declaration || ts.isClassLike(declaration))
56
+ return candidate;
57
+ const bound = boundByPath(declaration) ?? fallback(declaration);
58
+ return bound && bound !== candidate ? bound : candidate;
59
+ };
60
+ };
61
+ /**
62
+ * A type parameter owned by a function TYPE -- `type EmitFunction = <T extends
63
+ * Node>(node: T) => void` -- has no body a copy could specialize, so no path
64
+ * step ever binds it, and the instantiation census cannot bind it either when
65
+ * every call through the type happens inside another generic (`emitFn(c)` with
66
+ * `c: Child` records a hole, which that census rightly drops). The
67
+ * specialization census's fixpoint does fill those holes from the enclosing
68
+ * copies, so when it minted exactly ONE copy of the function type, that copy's
69
+ * tuple is the type's only instantiation in the program: the cell declared
70
+ * with the type holds the value specialized on that tuple (`closeOpenValueUses`
71
+ * and the fixpoint's `typeOwners` branch key the value use on it), and the
72
+ * type read at the cell must say the same. Two or more copies fall through to
73
+ * the constraint, which is what the value use then closes over too.
74
+ */
75
+ const createSoleTypeCopyBinding = (specializations) => (declaration) => {
76
+ if (!ts.isTypeParameterDeclaration(declaration))
77
+ return null;
78
+ const owner = declaration.parent;
79
+ if (!(ts.isFunctionTypeNode(owner) ||
80
+ ts.isConstructorTypeNode(owner) ||
81
+ ts.isCallSignatureDeclaration(owner) ||
82
+ ts.isConstructSignatureDeclaration(owner)))
83
+ return null;
84
+ // A call/construct signature that is one arm of an OVERLOADED interface
85
+ // or type literal (`interface Respond { <T,U>(v: T, flag?: U): string;
86
+ // <T,U>(v: T, init?: U): string }`) owns its own, textually separate `T` --
87
+ // a distinct declaration per arm even though every arm spells it the same
88
+ // way. "Exactly one copy" is a fact about ONE arm's own recorded calls,
89
+ // never about the callable value as a whole: the checker resolves any one
90
+ // call to exactly one arm, so the arm it picks racks up a copy from that
91
+ // call's own concrete argument while every sibling arm -- never itself
92
+ // selected -- sits at zero and falls through to the constraint below. The
93
+ // two arms then answered `T` differently (the call's own argument shape
94
+ // versus the bare constraint) for what is one physical calling
95
+ // convention, and `sharedAbiOf` (representation/derive.ts) read that as
96
+ // the arms disagreeing at the parameter they in fact agree on --
97
+ // `generic-field-initializer.ts`'s `Respond`, unjoinable at parameter 0.
98
+ // A function TYPE's own signature has no siblings (`type EmitFunction =
99
+ // <T>(...) => void` is the whole type), so this guard is a no-op there:
100
+ // the sole-copy reasoning stays exactly as documented above for the case
101
+ // it was built for, and only turns off where a second arm makes "the
102
+ // type's only instantiation" a claim about one arm rather than the type.
103
+ const container = owner.parent;
104
+ if (ts.isInterfaceDeclaration(container) || ts.isTypeLiteralNode(container)) {
105
+ const siblings = container.members.filter((member) => ts.isCallSignatureDeclaration(owner) ? ts.isCallSignatureDeclaration(member) : ts.isConstructSignatureDeclaration(member));
106
+ if (siblings.length > 1)
107
+ return null;
108
+ }
109
+ const copies = specializations.specializationsOf(owner);
110
+ return copies.length === 1 ? (copies[0]?.bindingOf(declaration) ?? null) : null;
111
+ };
112
+ export const createTypeParameterSubstitution = (identities, instantiations, specializations, path) => {
113
+ const soleTypeCopy = createSoleTypeCopyBinding(specializations);
114
+ const bindingOf = (declaration) => instantiations.bindingOf(declaration) ?? soleTypeCopy(declaration);
115
+ return {
116
+ boundByPath: createPathBinding(specializations, path),
117
+ bindingOf,
118
+ substituteTypeParameter: createPathSubstitution(identities.declarationOfSymbol, specializations, path, bindingOf)
119
+ };
120
+ };
@@ -0,0 +1,11 @@
1
+ import ts from 'typescript';
2
+ /**
3
+ * The member types `objectType[indexType]` resolves to, or `null` when the
4
+ * access cannot be resolved from what the object type declares.
5
+ *
6
+ * An empty result is `null` too, deliberately: `O[K]` naming no member at all
7
+ * is not the empty union (which would be `never`, a claim this has no grounds
8
+ * to make) -- it means the key set and the object type disagreed, and the
9
+ * caller should keep refusing.
10
+ */
11
+ export declare const indexedAccessMemberTypes: (checker: ts.TypeChecker, objectType: ts.Type, indexType: ts.Type) => readonly ts.Type[] | null;
@@ -0,0 +1,126 @@
1
+ import ts from 'typescript';
2
+ /**
3
+ * `T[K]` -- an indexed access the checker left DEFERRED.
4
+ *
5
+ * A concrete one never reaches here: `Rec['a']` and `Rec[keyof Rec]` are both
6
+ * resolved by the checker itself before this layer ever sees them (verified
7
+ * directly -- they arrive already flagged `Number`/`Union`, never
8
+ * `IndexedAccess`). What does reach here is the generic form, `S[keyof S]`
9
+ * written inside a body whose `S` is still a type parameter, and that is
10
+ * exactly what monomorphization exists to answer: inside the copy that binds
11
+ * `S` to a real type, `S[keyof S]` is an ordinary union of that type's own
12
+ * member types.
13
+ *
14
+ * The substitution has to be applied by hand because `structural.ts`'s
15
+ * `TypeParameter` branch only fires when the type IS a parameter. `S[keyof S]`
16
+ * is an `IndexedAccess` whose *operand* is one, so the substitution never
17
+ * descended into it and the whole access fell through to
18
+ * "checker type with flags 8388608 is not modelled" -- one unmodelled form,
19
+ * reported as hundreds of unrelated-looking unresolved carriers, because a
20
+ * bottom carrier propagates into every value derived from it.
21
+ *
22
+ * Nothing here guesses. Every answer is a member the object type declares, read
23
+ * out of the checker after the copy's own binding is substituted in; a key this
24
+ * cannot name resolves to nothing and the caller keeps its honest refusal.
25
+ */
26
+ /** The keys an index type names against one object type, or `null` when it names something this cannot enumerate. */
27
+ const keysOf = (checker, objectType, indexType) => {
28
+ const constituents = indexType.isUnion() ? indexType.types : [indexType];
29
+ const keys = [];
30
+ for (const constituent of constituents) {
31
+ // `keyof O` names every property O has. Enumerating them is citing O's own
32
+ // declaration, not inventing a key set: `getProperties()` is the same list
33
+ // `keyof` itself is built from.
34
+ if ((constituent.flags & ts.TypeFlags.Index) !== 0) {
35
+ keys.push(...objectType.getProperties().map((property) => property.name));
36
+ continue;
37
+ }
38
+ if (constituent.isStringLiteral()) {
39
+ keys.push(constituent.value);
40
+ continue;
41
+ }
42
+ // `ToPropertyKey(0)` is the key `"0"`, which is how a tuple's own element
43
+ // is named -- the number literal is a key, not a different kind of access.
44
+ if (constituent.isNumberLiteral()) {
45
+ keys.push(String(constituent.value));
46
+ continue;
47
+ }
48
+ // A key this cannot name exactly, but which the CHECKER says is a string,
49
+ // names the whole key set. `for (const k in o) o[k]` inside a generic is
50
+ // the case: TypeScript types `k` as `Extract<keyof T, string>`, a
51
+ // conditional it defers while `T` is open and never reduces afterwards, so
52
+ // the access had no key set at all -- tsc's `assign` and `copyProperties`,
53
+ // and every read and write in their loop bodies. The answer is not a guess:
54
+ // a read through such a key produces one of the object's own members and a
55
+ // write through it must be accepted by any of them, which is precisely what
56
+ // the `keyof` arm above already answers. Asked of the checker rather than
57
+ // matched on a library alias, so a hand-written `T extends string ? T :
58
+ // never` reaches the same answer as `Extract`.
59
+ if (checker.isTypeAssignableTo(constituent, checker.getStringType())) {
60
+ keys.push(...objectType.getProperties().map((property) => property.name));
61
+ continue;
62
+ }
63
+ return null;
64
+ }
65
+ return keys;
66
+ };
67
+ /**
68
+ * The member types `objectType[indexType]` resolves to, or `null` when the
69
+ * access cannot be resolved from what the object type declares.
70
+ *
71
+ * An empty result is `null` too, deliberately: `O[K]` naming no member at all
72
+ * is not the empty union (which would be `never`, a claim this has no grounds
73
+ * to make) -- it means the key set and the object type disagreed, and the
74
+ * caller should keep refusing.
75
+ */
76
+ export const indexedAccessMemberTypes = (checker, objectType, indexType) => {
77
+ const keys = keysOf(checker, objectType, indexType);
78
+ if (keys === null)
79
+ return null;
80
+ const members = [];
81
+ for (const key of keys) {
82
+ const property = objectType.getProperty(key);
83
+ if (property) {
84
+ // STATED, and no node to ask a census about either way: this resolves
85
+ // `T[K]`'s member types from `objectType`'s own DECLARED shape --
86
+ // `objectType`/`indexType` are already-resolved `ts.Type`s (see this
87
+ // module's header), not expression nodes, so there is nothing here a
88
+ // parameter/return/write-set census (keyed by node) could be consulted
89
+ // through. `getTypeOfSymbol` is the correct, only question: what does
90
+ // this member's own declaration say.
91
+ members.push(checker.getTypeOfSymbol(property));
92
+ continue;
93
+ }
94
+ // A key no named member covers is answered by the object's own index
95
+ // signature when it has one -- `Counts[string]` over
96
+ // `interface Counts { [k: string]: number }` is `number`, declared, not
97
+ // guessed. `getIndexInfosOfType` is asked rather than a key-domain
98
+ // assumption because an object can carry several.
99
+ const index = checker.getIndexInfosOfType(objectType)[0];
100
+ if (index) {
101
+ members.push(index.type);
102
+ continue;
103
+ }
104
+ // A key an OBJECT type declares no member for is `undefined`, which is the
105
+ // language's own answer rather than a guess: reading an absent property is
106
+ // `undefined` in JavaScript, and a key that reached here as a literal came
107
+ // from the source, so there is nothing left to disagree about. A key
108
+ // enumerated from `keyof` cannot land here at all -- that list is built
109
+ // from `getProperties()`, so every one of them resolves above.
110
+ //
111
+ // hono is the case this exists for. `class Hono<E extends Env = Env>`'s
112
+ // body reads `E['Bindings']` throughout, and the copy the program actually
113
+ // instantiates binds `E` to `BlankEnv`, which is `{}` -- so `Bindings` is
114
+ // declared by the CONSTRAINT and absent from the ARGUMENT, and the value
115
+ // really is `undefined` at every one of those reads.
116
+ //
117
+ // Only for a real object type. `any`/`unknown` have no members for a
118
+ // different reason -- nothing is known about them, not that the key is
119
+ // missing -- and answering `undefined` there would turn "unknown" into a
120
+ // claim. Those keep the caller's refusal.
121
+ if ((objectType.flags & ts.TypeFlags.Object) === 0)
122
+ return null;
123
+ members.push(checker.getUndefinedType());
124
+ }
125
+ return members.length > 0 ? members : null;
126
+ };
@@ -0,0 +1,64 @@
1
+ import ts from 'typescript';
2
+ import type { SpecializationPath } from './identities.js';
3
+ import type { SpecializationCensus } from './specialization.js';
4
+ /**
5
+ * What a monomorphized copy's members actually hold, read off the copy's own
6
+ * instantiated spelling instead of derived by substituting a parameter.
7
+ *
8
+ * Substitution rewrites a BARE type parameter and nothing else. That is all it
9
+ * can do -- the public checker API offers no way to instantiate a type, a gap
10
+ * `specialization.ts`'s `induceFromHeritage` records for the same reason -- so a
11
+ * member whose type merely *mentions* a parameter keeps the hole: `filter:
12
+ * Filter<TSchema>`, `Promise<WithId<TSchema> | null>`, `AlternativeType<WithId<
13
+ * TSchema>["_id"]>`. Every deferred conditional inside such a type stays
14
+ * deferred, because a conditional is deferred exactly while its check type is
15
+ * open, and representation then has no structure to lay out. On the mongodb
16
+ * CMAP probe that one gap was 312 of 642 mandatory obligations, spread over five
17
+ * copies of `Collection` whose fillings -- `Document`, `GridFSFile`,
18
+ * `GridFSChunk`, `any`, `DataKey` -- were all recorded and all available.
19
+ *
20
+ * The instantiated spelling closes it without instantiating anything. A copy
21
+ * minted from a type reference carries the type the checker resolved that
22
+ * reference to (`Specialization.instantiated`), and reading a member off THAT
23
+ * hands back the member's type with every conditional already evaluated,
24
+ * because evaluating them is what instantiating meant. Pairing the
25
+ * uninstantiated member against the instantiated one then yields a plain
26
+ * type-to-type table, which is the one thing substitution could not build: an
27
+ * answer for a composite.
28
+ *
29
+ * ## Why pairing by position is exact here
30
+ *
31
+ * Both sides come from the SAME symbol -- one read off the generic parent, one
32
+ * off its instantiation -- so the instantiated member is the image of the
33
+ * uninstantiated one under a single mapping. Signature `i` corresponds to
34
+ * signature `i`, parameter `j` to parameter `j`, return to return. This is not
35
+ * the situation `specialization.ts`'s `unifySignatures` guards against, where a
36
+ * generic is paired against a concrete type *inferred from a call's arguments*
37
+ * and nothing orders the two overload sets alike; here the order is the same
38
+ * list, mapped.
39
+ *
40
+ * The counts are still checked at every level and the walk stops on any
41
+ * mismatch, because instantiation can collapse a shape -- an overload set can
42
+ * lose a signature to an argument that makes it identical to another, a union
43
+ * arm can vanish -- and a pairing across a collapse would record an answer for
44
+ * a type that is not its image.
45
+ *
46
+ * ## Why an OVERLOAD's parameters answer for the IMPLEMENTATION's
47
+ *
48
+ * `getTypeOfSymbolAtLocation` on an overloaded member publishes the overload
49
+ * signatures and not the implementation, so the implementation's own parameter
50
+ * declarations -- which is where `Collection.findOne`'s `filter: Filter<TSchema>
51
+ * = {}` actually is -- have no instantiated signature of their own to read.
52
+ * They do not need one. The table is keyed by the OPEN TYPE, and the checker
53
+ * interns types: the implementation's annotation and the overload's are one
54
+ * `ts.Type` object whenever they are the same written type, so the entry the
55
+ * overload records is the entry the implementation looks up. Where the two
56
+ * annotations genuinely differ they are different objects and no entry is
57
+ * found, which is the honest answer.
58
+ */
59
+ export interface InstantiatedMembers {
60
+ /** The instantiated image of an open type under the copies this view is inside, or `null` when none is known. */
61
+ readonly through: (type: ts.Type) => ts.Type | null;
62
+ }
63
+ export declare const emptyInstantiatedMembers: InstantiatedMembers;
64
+ export declare const createInstantiatedMembers: (checker: ts.TypeChecker, specializations: SpecializationCensus) => (path: SpecializationPath) => InstantiatedMembers;