@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,35 @@
1
+ import ts from 'typescript';
2
+ export interface IntrinsicDataDefinitionPlan {
3
+ readonly owner: 'Object' | 'Reflect';
4
+ readonly member: 'defineProperty' | 'defineProperties';
5
+ readonly keys: readonly string[];
6
+ /** Every descriptor's `value` initializer, in definition order: what the definitions store on the target. */
7
+ readonly values: readonly ts.Expression[];
8
+ readonly returnsTarget: boolean;
9
+ /**
10
+ * The descriptor fields no descriptor literal spells, which
11
+ * ToPropertyDescriptor reads through `Object.prototype`: a `{ value }`
12
+ * descriptor turns into an accessor the moment someone defines
13
+ * `Object.prototype.get`. Empty exactly when every descriptor carries
14
+ * `__proto__: null`. Asked per key, not as the whole prototype: the three.js app's
15
+ * final census records single keys written through receivers it cannot
16
+ * attribute, which fails the whole-object question for every `Object
17
+ * .defineProperty( this, 'id', { value } )` in three while leaving
18
+ * `writable`, `enumerable`, `configurable`, `get` and `set` untouched.
19
+ */
20
+ readonly descriptorPrototypeKeys: readonly string[];
21
+ readonly call: ts.CallExpression;
22
+ }
23
+ /**
24
+ * Whether every mention of a binding is one this proof already accounts for --
25
+ * its own declaration name, or the argument being inspected.
26
+ */
27
+ export type SoleUseOfBinding = (declaration: ts.VariableDeclaration, argument: ts.Expression) => boolean;
28
+ /** The target argument of a data-only intrinsic definition is not published
29
+ * to user code by that operation. This plan still requires authenticated final
30
+ * static-member identity and, for ordinary descriptor literals, an intact
31
+ * Object prototype: ToPropertyDescriptor reads inherited get/set and flags.
32
+ * Callers must follow Object's returned target, and cannot ignore replacement
33
+ * of the member whose callable or containing-field identity they are proving.
34
+ */
35
+ export declare const intrinsicDataDefinitionTargetOf: (checker: ts.TypeChecker, reference: ts.Expression, soleUseOfBinding?: SoleUseOfBinding) => IntrinsicDataDefinitionPlan | null;
@@ -0,0 +1,140 @@
1
+ import ts from 'typescript';
2
+ import { unwrapErasedExpression } from '../producers/erasure.js';
3
+ const DESCRIPTOR_FIELDS = ['value', 'writable', 'get', 'set', 'enumerable', 'configurable'];
4
+ const literalKey = (expression) => ts.isStringLiteralLike(expression) || ts.isNumericLiteral(expression) ? expression.text : null;
5
+ const propertyKey = (name) => ts.isComputedPropertyName(name)
6
+ ? literalKey(unwrapErasedExpression(name.expression))
7
+ : ts.isIdentifier(name)
8
+ ? name.text
9
+ : literalKey(name);
10
+ /** The target argument of a data-only intrinsic definition is not published
11
+ * to user code by that operation. This plan still requires authenticated final
12
+ * static-member identity and, for ordinary descriptor literals, an intact
13
+ * Object prototype: ToPropertyDescriptor reads inherited get/set and flags.
14
+ * Callers must follow Object's returned target, and cannot ignore replacement
15
+ * of the member whose callable or containing-field identity they are proving.
16
+ */
17
+ export const intrinsicDataDefinitionTargetOf = (checker, reference, soleUseOfBinding) => {
18
+ const call = reference.parent;
19
+ if (!ts.isCallExpression(call) || call.arguments[0] !== reference || call.arguments.some(ts.isSpreadElement))
20
+ return null;
21
+ const callee = unwrapErasedExpression(call.expression);
22
+ if (!ts.isPropertyAccessExpression(callee) && !ts.isElementAccessExpression(callee))
23
+ return null;
24
+ const member = ts.isPropertyAccessExpression(callee) ? callee.name.text : literalKey(callee.argumentExpression);
25
+ if (member !== 'defineProperty' && member !== 'defineProperties')
26
+ return null;
27
+ const receiver = unwrapErasedExpression(callee.expression);
28
+ if (!ts.isIdentifier(receiver))
29
+ return null;
30
+ const symbol = checker.getSymbolAtLocation(receiver);
31
+ if (!symbol ||
32
+ (symbol.name !== 'Object' && symbol.name !== 'Reflect') ||
33
+ !symbol.declarations?.length ||
34
+ !symbol.declarations.every((declaration) => declaration.getSourceFile().hasNoDefaultLib))
35
+ return null;
36
+ const owner = symbol.name;
37
+ if (owner === 'Reflect' && member === 'defineProperties')
38
+ return null;
39
+ const method = checker.getPropertyOfType(checker.getTypeAtLocation(receiver), member);
40
+ if (!method?.declarations?.length || !method.declarations.every((declaration) => declaration.getSourceFile().hasNoDefaultLib))
41
+ return null;
42
+ const keys = new Set();
43
+ const values = [];
44
+ const descriptorPrototypeKeys = new Set();
45
+ /**
46
+ * The descriptor literal an argument names.
47
+ *
48
+ * `define-property-source-transform.ts` lowers `Object.defineProperties( o,
49
+ * { ... } )` into one `Object.defineProperty` per key, hoisting each
50
+ * descriptor into its own `const` first so that `defineProperties`' two
51
+ * phases -- evaluate every descriptor, THEN define -- are preserved. That
52
+ * hoist hands this proof an IDENTIFIER where the pre-transform call handed
53
+ * it a literal, and the plan was refused for it: three's `Object3D`
54
+ * constructor defines `position`, `rotation`, `quaternion`, `scale`,
55
+ * `modelViewMatrix` and `normalMatrix` that way, and the receiver `this`
56
+ * was reported escaping through its own lowering.
57
+ *
58
+ * Followed only to a `const` whose single declaration initializes it
59
+ * directly with the literal, and only when nothing else mentions the
60
+ * binding: an alias could otherwise write `d.get = fn` between the `const`
61
+ * and the call, which would turn a data definition into an accessor
62
+ * invocation ON the target and void the premise that the target is not
63
+ * published. Those are exactly the conditions the transform's own output
64
+ * satisfies by construction.
65
+ */
66
+ const descriptorLiteralOf = (expression) => {
67
+ const value = unwrapErasedExpression(expression);
68
+ if (ts.isObjectLiteralExpression(value))
69
+ return value;
70
+ if (!ts.isIdentifier(value) || soleUseOfBinding === undefined)
71
+ return null;
72
+ const declarations = checker.getSymbolAtLocation(value)?.declarations ?? [];
73
+ const declaration = declarations.length === 1 ? declarations[0] : undefined;
74
+ if (!declaration || !ts.isVariableDeclaration(declaration) || !declaration.initializer)
75
+ return null;
76
+ if ((ts.getCombinedNodeFlags(declaration) & ts.NodeFlags.Const) === 0)
77
+ return null;
78
+ if (!soleUseOfBinding(declaration, value))
79
+ return null;
80
+ const initializer = unwrapErasedExpression(declaration.initializer);
81
+ return ts.isObjectLiteralExpression(initializer) ? initializer : null;
82
+ };
83
+ const descriptor = (expression) => {
84
+ const value = descriptorLiteralOf(expression);
85
+ if (value === null)
86
+ return false;
87
+ let nullPrototype = false;
88
+ const spelled = new Set();
89
+ for (const property of value.properties) {
90
+ if (!ts.isPropertyAssignment(property) && !ts.isShorthandPropertyAssignment(property))
91
+ return false;
92
+ const key = propertyKey(property.name);
93
+ if (key !== null)
94
+ spelled.add(key);
95
+ if (key === '__proto__' &&
96
+ ts.isPropertyAssignment(property) &&
97
+ !ts.isComputedPropertyName(property.name) &&
98
+ unwrapErasedExpression(property.initializer).kind === ts.SyntaxKind.NullKeyword) {
99
+ nullPrototype = true;
100
+ continue;
101
+ }
102
+ if (key !== 'value' && key !== 'writable' && key !== 'enumerable' && key !== 'configurable')
103
+ return false;
104
+ if (key === 'value')
105
+ values.push(ts.isPropertyAssignment(property) ? property.initializer : property.name);
106
+ }
107
+ if (!nullPrototype)
108
+ for (const field of DESCRIPTOR_FIELDS)
109
+ if (!spelled.has(field))
110
+ descriptorPrototypeKeys.add(field);
111
+ return true;
112
+ };
113
+ const entry = (key, value) => {
114
+ if (key === null || key === '__proto__' || key === 'constructor' || !descriptor(value))
115
+ return false;
116
+ keys.add(key);
117
+ return true;
118
+ };
119
+ if (member === 'defineProperty') {
120
+ if (call.arguments.length !== 3 || !entry(literalKey(unwrapErasedExpression(call.arguments[1])), call.arguments[2]))
121
+ return null;
122
+ }
123
+ else {
124
+ if (call.arguments.length !== 2)
125
+ return null;
126
+ const definitions = unwrapErasedExpression(call.arguments[1]);
127
+ if (!ts.isObjectLiteralExpression(definitions) ||
128
+ !definitions.properties.every((property) => ts.isPropertyAssignment(property) && entry(propertyKey(property.name), property.initializer)))
129
+ return null;
130
+ }
131
+ return {
132
+ owner,
133
+ member,
134
+ keys: [...keys],
135
+ values,
136
+ returnsTarget: owner === 'Object',
137
+ descriptorPrototypeKeys: [...descriptorPrototypeKeys],
138
+ call
139
+ };
140
+ };
@@ -0,0 +1,98 @@
1
+ import ts from 'typescript';
2
+ import type { FlowInvocationOperands, ReceiverReference, ValueFlowIndex } from './model.js';
3
+ import type { IntrinsicProtocolRequirement } from '../deferred-intrinsic-protocols.js';
4
+ import { type CallableCompletionSummary } from './callable-completions.js';
5
+ import { type SourceInvocationFrameLayout } from './source-invocation-frame-layout.js';
6
+ declare const invocationFactIdentity: unique symbol;
7
+ export interface InvocationValueUses {
8
+ readonly value: ts.Expression;
9
+ readonly parameter: ts.ParameterDeclaration | null;
10
+ /** Only actual arguments inhabit the arguments object. */
11
+ readonly argumentPosition: number | null;
12
+ readonly restElementPosition: number | null;
13
+ /** Defaults conservatively continue only along the undefined-argument branch. */
14
+ readonly activation: 'always' | 'argument-undefined';
15
+ readonly uses: readonly ts.Expression[];
16
+ /** Uses of an actual argument after it is packed into an identifier rest array. */
17
+ readonly elementUses: readonly ts.Expression[];
18
+ }
19
+ export interface SourceInvocationFrame {
20
+ readonly layout: SourceInvocationFrameLayout;
21
+ readonly body: ts.SignatureDeclaration;
22
+ readonly parameters: readonly ts.ParameterDeclaration[];
23
+ readonly receiverUses: readonly ReceiverReference[];
24
+ /** Known body outcomes survive an unresolved exact-result projection. */
25
+ readonly completionSummary: CallableCompletionSummary;
26
+ /** Complete continuation into this body, or a named unsupported frame. */
27
+ readonly forwarding: {
28
+ readonly kind: 'values';
29
+ readonly entries: readonly InvocationValueUses[];
30
+ } | {
31
+ readonly kind: 'unresolved';
32
+ readonly reason: 'spread-arguments' | 'destructured-parameter' | 'arguments-object';
33
+ };
34
+ /** Source normal completions in this call's receiver frame. */
35
+ readonly completions: {
36
+ readonly kind: 'values';
37
+ readonly values: readonly ts.Expression[];
38
+ } | {
39
+ readonly kind: 'unresolved';
40
+ readonly reason: 'optional-call' | 'deferred-or-unnamed-completion' | 'implicit-receiver';
41
+ };
42
+ }
43
+ /** The admitted target set and operand mapping belong to the same proof. */
44
+ export interface SourceInvocationFact {
45
+ readonly [invocationFactIdentity]: true;
46
+ readonly call: ts.CallExpression;
47
+ readonly operands: FlowInvocationOperands;
48
+ readonly frames: readonly SourceInvocationFrame[];
49
+ readonly requirements: readonly IntrinsicProtocolRequirement[];
50
+ }
51
+ /** Only the invocation authority may publish an admitted frame family. */
52
+ export declare const sourceInvocationFact: (call: ts.CallExpression, operands: FlowInvocationOperands, frames: readonly SourceInvocationFrame[], requirements: readonly IntrinsicProtocolRequirement[]) => SourceInvocationFact;
53
+ /**
54
+ * Constructed only by the invocation authority after target admission. Keeping
55
+ * the frame builder separate from admission lets recursive target proofs follow
56
+ * a known body's continuations without pretending the whole invocation closed.
57
+ */
58
+ export declare const sourceInvocationFrame: (flow: ValueFlowIndex, call: ts.CallExpression, body: ts.SignatureDeclaration, argumentsUsesAt: (body: ts.SignatureDeclaration) => readonly ts.Identifier[] | undefined) => SourceInvocationFrame | null;
59
+ /** Complete uses of an actual operand across every admitted target. */
60
+ export declare const invocationValueUsesOf: (fact: SourceInvocationFact, value: ts.Expression) => readonly ts.Expression[] | null;
61
+ export interface InvocationValueContinuation {
62
+ readonly expression: ts.Expression;
63
+ readonly projection: 'value' | 'array-element';
64
+ }
65
+ /** Complete actual-argument continuations, retaining the rest-array element hop. */
66
+ export declare const invocationValueContinuationsOf: (fact: SourceInvocationFact, value: ts.Expression) => readonly InvocationValueContinuation[] | null;
67
+ export declare const invocationCompletionValuesOf: (fact: SourceInvocationFact) => readonly ts.Expression[] | null;
68
+ /**
69
+ * The parameter cell one actual argument binds to in this body's frame, or
70
+ * `null` when the frame resolves it to no single such cell.
71
+ *
72
+ * Which parameter an argument binds to is this contract's fact. A consumer that
73
+ * asks it of `call.arguments` and `runtimeParametersOf` instead gets a
74
+ * position, and a position is not the fact: it does not know that a spread
75
+ * makes every later slot unknown, that a destructured parameter names no cell
76
+ * at all, or that a body reading its own `arguments` object reaches the
77
+ * argument through a cell no parameter names. The frame states all three as
78
+ * named unresolved reasons, so a projection of it cannot forget one.
79
+ *
80
+ * A rest slot resolves to a parameter whose value is a FRESH ARRAY holding the
81
+ * argument, which is a different cell from the argument; `elementUses` is how
82
+ * the frame says so, and this projection refuses rather than hand back a
83
+ * parameter that does not hold the value asked about.
84
+ */
85
+ /**
86
+ * The argument this call binds to `parameter`, or null when the frame does not
87
+ * state exactly one.
88
+ *
89
+ * The mirror of `frameForwardedParameterOf`, and it lives beside it for the
90
+ * reason §3 item 1 gives: which argument binds which parameter is the call
91
+ * frame contract's fact, and a consumer that recomputes it from
92
+ * `call.arguments` writes a second spelling that will disagree. A rest element,
93
+ * a destructured element use, or anything but a single stated entry is not one
94
+ * argument and answers null rather than guessing which.
95
+ */
96
+ export declare const frameForwardedArgumentOf: (checker: ts.TypeChecker, flow: ValueFlowIndex, call: ts.CallExpression, body: ts.SignatureDeclaration, parameter: ts.ParameterDeclaration) => ts.Expression | null;
97
+ export declare const frameForwardedParameterOf: (checker: ts.TypeChecker, flow: ValueFlowIndex, call: ts.CallExpression, body: ts.SignatureDeclaration, value: ts.Expression) => ts.ParameterDeclaration | null;
98
+ export {};
@@ -0,0 +1,257 @@
1
+ import ts from 'typescript';
2
+ import { callableCompletionSummaryOf, callableCompletionValuesOf } from './callable-completions.js';
3
+ import { isTypePositionReference } from './targets.js';
4
+ import { sourceInvocationFrameLayoutOf } from './source-invocation-frame-layout.js';
5
+ import { unwrapErasedExpression } from '../producers/erasure.js';
6
+ import { argumentsObjectUsesAt } from '../arguments-objects.js';
7
+ const invocationFactIdentity = Symbol('source-invocation-fact');
8
+ /** Only the invocation authority may publish an admitted frame family. */
9
+ export const sourceInvocationFact = (call, operands, frames, requirements) => ({ [invocationFactIdentity]: true, call, operands, frames, requirements });
10
+ /** The frame access is written, deleted, or appears in a destructuring target. */
11
+ const frameWrite = (access) => {
12
+ let target = access;
13
+ let context = target.parent;
14
+ while (ts.isParenthesizedExpression(context) && context.expression === target) {
15
+ target = context;
16
+ context = context.parent;
17
+ }
18
+ if (ts.isBinaryExpression(context) &&
19
+ context.left === target &&
20
+ context.operatorToken.kind >= ts.SyntaxKind.FirstAssignment &&
21
+ context.operatorToken.kind <= ts.SyntaxKind.LastAssignment)
22
+ return true;
23
+ if ((ts.isPrefixUnaryExpression(context) || ts.isPostfixUnaryExpression(context)) &&
24
+ (context.operator === ts.SyntaxKind.PlusPlusToken || context.operator === ts.SyntaxKind.MinusMinusToken))
25
+ return true;
26
+ return (ts.isDeleteExpression(context) ||
27
+ ts.isArrayLiteralExpression(context) ||
28
+ ts.isPropertyAssignment(context) ||
29
+ ts.isShorthandPropertyAssignment(context) ||
30
+ ts.isSpreadElement(context));
31
+ };
32
+ /**
33
+ * Every read of a callable's own arguments object that can yield an argument.
34
+ * A null result means the object is used in a way whose carried values cannot
35
+ * be represented by a finite invocation frame.
36
+ */
37
+ const argumentsElementReadsOf = (body, argumentsUsesAt) => {
38
+ const reads = [];
39
+ for (const identifier of argumentsUsesAt(body) ?? []) {
40
+ const access = identifier.parent;
41
+ if (ts.isPropertyAccessExpression(access) && access.expression === identifier && access.name.text === 'length' && !frameWrite(access))
42
+ continue;
43
+ if (ts.isElementAccessExpression(access) && access.expression === identifier && !frameWrite(access)) {
44
+ reads.push(access);
45
+ continue;
46
+ }
47
+ return null;
48
+ }
49
+ return reads;
50
+ };
51
+ /**
52
+ * Constructed only by the invocation authority after target admission. Keeping
53
+ * the frame builder separate from admission lets recursive target proofs follow
54
+ * a known body's continuations without pretending the whole invocation closed.
55
+ */
56
+ export const sourceInvocationFrame = (flow, call, body, argumentsUsesAt) => {
57
+ const layout = sourceInvocationFrameLayoutOf(flow, call, body);
58
+ const completionSummary = callableCompletionSummaryOf(flow, body);
59
+ if (layout === null || completionSummary === null)
60
+ return null;
61
+ const { parameters, receiverUses, operands } = layout;
62
+ const entries = [];
63
+ const parameterUses = (parameter) => flow.referencesToDeclaration(parameter).filter((reference) => reference !== parameter.name && !isTypePositionReference(reference));
64
+ const frameReads = argumentsElementReadsOf(body, argumentsUsesAt);
65
+ const restPosition = parameters.findIndex((parameter) => parameter.dotDotDotToken !== undefined);
66
+ const restParameter = restPosition < 0 ? undefined : parameters[restPosition];
67
+ const restUses = restParameter && ts.isIdentifier(restParameter.name) ? parameterUses(restParameter) : [];
68
+ for (let position = 0; position < operands.args.length; position++) {
69
+ const value = operands.args[position];
70
+ const parameter = restPosition >= 0 && position >= restPosition ? restParameter : parameters[position];
71
+ const uses = new Set(frameReads ?? []);
72
+ const elementUses = new Set();
73
+ if (restPosition >= 0 && position >= restPosition) {
74
+ for (const use of restUses)
75
+ elementUses.add(use);
76
+ }
77
+ else if (parameter && ts.isIdentifier(parameter.name)) {
78
+ for (const use of parameterUses(parameter))
79
+ uses.add(use);
80
+ }
81
+ entries.push({
82
+ value,
83
+ parameter: parameter ?? null,
84
+ argumentPosition: position,
85
+ restElementPosition: restPosition >= 0 && position >= restPosition ? position - restPosition : null,
86
+ activation: 'always',
87
+ uses: [...uses],
88
+ elementUses: [...elementUses]
89
+ });
90
+ }
91
+ if (layout.arguments.kind === 'positional')
92
+ for (const slot of layout.arguments.slots)
93
+ if (slot.kind === 'single' && slot.defaultValue && slot.defaultActivation !== 'never' && ts.isIdentifier(slot.parameter.name))
94
+ entries.push({
95
+ value: slot.defaultValue,
96
+ parameter: slot.parameter,
97
+ argumentPosition: null,
98
+ restElementPosition: null,
99
+ activation: 'argument-undefined',
100
+ uses: parameterUses(slot.parameter),
101
+ elementUses: []
102
+ });
103
+ if (layout.receiver.kind === 'expression')
104
+ entries.push({
105
+ value: layout.receiver.expression,
106
+ parameter: null,
107
+ argumentPosition: null,
108
+ restElementPosition: null,
109
+ activation: 'always',
110
+ uses: receiverUses,
111
+ elementUses: []
112
+ });
113
+ // An arrow still evaluates its explicit/member receiver operand, but never
114
+ // binds it to this. Retain the discarded operand's empty continuation.
115
+ if (layout.receiver.kind === 'lexical' && layout.receiver.source === 'arrow' && operands.receiver)
116
+ entries.push({
117
+ value: operands.receiver,
118
+ parameter: null,
119
+ argumentPosition: null,
120
+ restElementPosition: null,
121
+ activation: 'always',
122
+ uses: [],
123
+ elementUses: []
124
+ });
125
+ const forwarding = layout.arguments.kind === 'spread'
126
+ ? { kind: 'unresolved', reason: 'spread-arguments' }
127
+ : parameters.some((parameter) => !ts.isIdentifier(parameter.name))
128
+ ? { kind: 'unresolved', reason: 'destructured-parameter' }
129
+ : frameReads === null
130
+ ? { kind: 'unresolved', reason: 'arguments-object' }
131
+ : { kind: 'values', entries };
132
+ const values = ts.isMethodDeclaration(body) || ts.isFunctionDeclaration(body) || ts.isFunctionExpression(body) || ts.isArrowFunction(body)
133
+ ? callableCompletionValuesOf(flow, body)
134
+ : null;
135
+ let completions = { kind: 'unresolved', reason: 'deferred-or-unnamed-completion' };
136
+ if (ts.isCallChain(call))
137
+ completions = { kind: 'unresolved', reason: 'optional-call' };
138
+ else if (values !== null) {
139
+ const returned = [];
140
+ let complete = true;
141
+ for (const value of values) {
142
+ if (unwrapErasedExpression(value).kind === ts.SyntaxKind.ThisKeyword && !ts.isArrowFunction(body)) {
143
+ if (layout.receiver.kind !== 'expression' || layout.receiver.conversion !== 'identity') {
144
+ complete = false;
145
+ break;
146
+ }
147
+ returned.push(layout.receiver.expression);
148
+ }
149
+ else
150
+ returned.push(value);
151
+ }
152
+ completions = complete ? { kind: 'values', values: returned } : { kind: 'unresolved', reason: 'implicit-receiver' };
153
+ }
154
+ return { layout, body, parameters, receiverUses, completionSummary, forwarding, completions };
155
+ };
156
+ /** Complete uses of an actual operand across every admitted target. */
157
+ export const invocationValueUsesOf = (fact, value) => {
158
+ const uses = new Set();
159
+ for (const frame of fact.frames) {
160
+ if (frame.forwarding.kind !== 'values')
161
+ return null;
162
+ const entries = frame.forwarding.entries.filter((entry) => entry.value === value);
163
+ if (entries.length === 0)
164
+ return null;
165
+ for (const entry of entries) {
166
+ if (entry.elementUses.length > 0)
167
+ return null;
168
+ for (const use of entry.uses)
169
+ uses.add(use);
170
+ }
171
+ }
172
+ return [...uses];
173
+ };
174
+ /** Complete actual-argument continuations, retaining the rest-array element hop. */
175
+ export const invocationValueContinuationsOf = (fact, value) => {
176
+ const valueUses = new Set();
177
+ const elementUses = new Set();
178
+ for (const frame of fact.frames) {
179
+ if (frame.forwarding.kind !== 'values')
180
+ return null;
181
+ const entries = frame.forwarding.entries.filter((entry) => entry.value === value);
182
+ if (entries.length === 0)
183
+ return null;
184
+ for (const entry of entries) {
185
+ for (const expression of entry.uses)
186
+ valueUses.add(expression);
187
+ for (const expression of entry.elementUses)
188
+ elementUses.add(expression);
189
+ }
190
+ }
191
+ return [
192
+ ...[...valueUses].map((expression) => ({ expression, projection: 'value' })),
193
+ ...[...elementUses].map((expression) => ({ expression, projection: 'array-element' }))
194
+ ];
195
+ };
196
+ export const invocationCompletionValuesOf = (fact) => {
197
+ const values = new Set();
198
+ for (const frame of fact.frames) {
199
+ if (frame.completions.kind !== 'values')
200
+ return null;
201
+ for (const value of frame.completions.values)
202
+ values.add(value);
203
+ }
204
+ return [...values];
205
+ };
206
+ /**
207
+ * The parameter cell one actual argument binds to in this body's frame, or
208
+ * `null` when the frame resolves it to no single such cell.
209
+ *
210
+ * Which parameter an argument binds to is this contract's fact. A consumer that
211
+ * asks it of `call.arguments` and `runtimeParametersOf` instead gets a
212
+ * position, and a position is not the fact: it does not know that a spread
213
+ * makes every later slot unknown, that a destructured parameter names no cell
214
+ * at all, or that a body reading its own `arguments` object reaches the
215
+ * argument through a cell no parameter names. The frame states all three as
216
+ * named unresolved reasons, so a projection of it cannot forget one.
217
+ *
218
+ * A rest slot resolves to a parameter whose value is a FRESH ARRAY holding the
219
+ * argument, which is a different cell from the argument; `elementUses` is how
220
+ * the frame says so, and this projection refuses rather than hand back a
221
+ * parameter that does not hold the value asked about.
222
+ */
223
+ /**
224
+ * The argument this call binds to `parameter`, or null when the frame does not
225
+ * state exactly one.
226
+ *
227
+ * The mirror of `frameForwardedParameterOf`, and it lives beside it for the
228
+ * reason §3 item 1 gives: which argument binds which parameter is the call
229
+ * frame contract's fact, and a consumer that recomputes it from
230
+ * `call.arguments` writes a second spelling that will disagree. A rest element,
231
+ * a destructured element use, or anything but a single stated entry is not one
232
+ * argument and answers null rather than guessing which.
233
+ */
234
+ export const frameForwardedArgumentOf = (checker, flow, call, body, parameter) => {
235
+ const frame = sourceInvocationFrame(flow, call, body, (owner) => argumentsObjectUsesAt(checker, owner));
236
+ if (!frame || frame.forwarding.kind !== 'values')
237
+ return null;
238
+ const entries = frame.forwarding.entries.filter((entry) => entry.parameter === parameter);
239
+ if (entries.length !== 1)
240
+ return null;
241
+ const entry = entries[0];
242
+ if (entry.restElementPosition !== null || entry.elementUses.length > 0)
243
+ return null;
244
+ return entry.value;
245
+ };
246
+ export const frameForwardedParameterOf = (checker, flow, call, body, value) => {
247
+ const frame = sourceInvocationFrame(flow, call, body, (owner) => argumentsObjectUsesAt(checker, owner));
248
+ if (!frame || frame.forwarding.kind !== 'values')
249
+ return null;
250
+ const entries = frame.forwarding.entries.filter((entry) => entry.value === value);
251
+ if (entries.length !== 1)
252
+ return null;
253
+ const entry = entries[0];
254
+ if (entry.parameter === null || entry.restElementPosition !== null || entry.elementUses.length > 0)
255
+ return null;
256
+ return entry.parameter;
257
+ };
@@ -0,0 +1,122 @@
1
+ import ts from 'typescript';
2
+ import { type SourceClass, type ValueFlowIndex } from './model.js';
3
+ import type { SharedProvenanceAnswer } from './origin-authority.js';
4
+ export interface ExactClassAllocationOrigins {
5
+ readonly classes: ReadonlySet<SourceClass>;
6
+ /** Alternatives reaching this value, projected when the value is a frame's `this`. */
7
+ readonly constructions: ReadonlyMap<ts.NewExpression, readonly SourceClass[]>;
8
+ }
9
+ export interface SourceConstructionFact {
10
+ readonly call: ts.NewExpression;
11
+ readonly alternatives: readonly SourceClass[];
12
+ }
13
+ export declare const namedDeclarationAt: (checker: ts.TypeChecker, expression: ts.Expression) => ts.Declaration | null;
14
+ /** Keyed by the index alone: this walk reads the index and the AST, nothing a
15
+ * solve can revise, so an answer taken once is the answer. It is asked per
16
+ * heritage clause of every class the receiver walks, which is why it is worth
17
+ * holding onto -- following a constructor through a parameter made each answer
18
+ * cost a frame layout per caller. */
19
+ /**
20
+ * The owned class family `this.constructor` allocates from when `callee` is
21
+ * that spelling inside an instance member of a class-spelled source class,
22
+ * or null: the class and every source subclass in the program
23
+ * (`sourceClassFamilyOf`). The `constructor` slot must still be
24
+ * `Object.prototype.constructor` on every member.
25
+ */
26
+ export declare const thisConstructorFamilyOf: (checker: ts.TypeChecker, flow: ValueFlowIndex, callee: ts.Expression) => readonly SourceClass[] | null;
27
+ export declare const sourceConstructorSelectionsOf: (checker: ts.TypeChecker, flow: ValueFlowIndex, expression: ts.Expression) => readonly SourceClass[] | null;
28
+ export declare const sourceConstructorReturnValuesOf: (checker: ts.TypeChecker, flow: ValueFlowIndex, owner: SourceClass) => readonly ts.Expression[] | null;
29
+ export type ParameterValuesAt = (parameter: ts.ParameterDeclaration) => readonly ts.Expression[] | null;
30
+ /** Constructor/prototype references must be closed even for a subclass with no
31
+ * visible allocation: handing its constructor elsewhere can create instances
32
+ * with inherited method slots that the local construction list does not name. */
33
+ export declare const classConstructorKeepsInstanceOf: (checker: ts.TypeChecker, flow: ValueFlowIndex, instance: ts.InterfaceType) => boolean;
34
+ /** The complete source constructor proof shared by receiver observations. */
35
+ export declare const ordinarySourceClassInstanceTestOf: (checker: ts.TypeChecker, flow: ValueFlowIndex, expression: ts.BinaryExpression) => boolean;
36
+ /** Actual allocations reaching a held reference through the shared write and
37
+ * factory-return inventory. A checker class type alone cannot establish this:
38
+ * it also admits subclasses and constructors returning alternate objects. */
39
+ /**
40
+ * The family a `this` denotes, injected rather than imported.
41
+ *
42
+ * `this` in a class member denotes an instance of that member's class OR any
43
+ * subclass of it, and enumerating that -- with the proof that no unknown
44
+ * subclass exists -- is `ownedClassReceiverInventoryOf`'s job. This module
45
+ * cannot import it: `owned-class-receivers.ts` and `source-class-data.ts`
46
+ * both import FROM here, so the dependency only runs one way. It arrives as a
47
+ * callback for the same reason `parameterValuesAt` does.
48
+ */
49
+ export type ThisFamilyAt = (expression: ts.Expression) => ExactClassAllocationOrigins | null;
50
+ /** Complete contents of a source data slot, including its mutation and alias
51
+ * proof. Allocation discovery must not mistake visible writes for all writes. */
52
+ export type BindingValuesAt = (declaration: ts.VariableDeclaration) => readonly ts.Expression[] | null;
53
+ export type FieldValuesAt = (expression: ts.PropertyAccessExpression | ts.ElementAccessExpression) => readonly ts.Expression[] | null;
54
+ /** Complete values produced by a closed source invocation. */
55
+ export type CallCompletionValuesAt = (call: ts.CallExpression) => readonly ts.Expression[] | null;
56
+ /** Every edge of the origin graph is answered by the same enclosing authority.
57
+ * @semanticCategory generic-primitive
58
+ */
59
+ export interface ClassAllocationAuthority {
60
+ readonly parameterValuesOf: ParameterValuesAt;
61
+ readonly thisFamilyOf: ThisFamilyAt;
62
+ readonly fieldValuesOf: FieldValuesAt;
63
+ readonly bindingValuesOf: BindingValuesAt;
64
+ readonly callCompletionValuesOf: CallCompletionValuesAt;
65
+ /** The complete values an expression holds, or null: the joint value graph's
66
+ * answer. Asked for a destructured binding's reference, which it follows
67
+ * through the record literals `nested` came out of, and for a
68
+ * `new this.constructor()` construction, where a non-null answer is the
69
+ * graph's proof that `this` there holds only the named family's constructions. */
70
+ readonly graphValuesOf?: (expression: ts.Expression) => readonly ts.Expression[] | null;
71
+ /** Publish a cache entry only after the enclosing recursive assumptions settle. */
72
+ readonly whenSettled: (publish: () => void) => void;
73
+ /**
74
+ * Share one answer across every proof holding the same coinductive parks --
75
+ * see `OriginAuthority.sharedAnswerOf`, which is the same function.
76
+ *
77
+ * The caches below are keyed on the authority OBJECT, and every proof mints
78
+ * a fresh one, so they answer a proof's own repeats and nothing else. That
79
+ * is the difference between a walk that runs once per question and one that
80
+ * runs once per (proof, question): a live three.js profile counted 11,363,007
81
+ * seeded-origin solvers built from zero, and charged the resulting Tarjan
82
+ * walk 35% of self time, with this walk the largest named caller.
83
+ *
84
+ * Optional because the answer only depends on the asking proof through its
85
+ * parks and its key functions, which is a property of the authorities this
86
+ * compiler builds rather than of the interface; a caller that cannot promise
87
+ * it (the tests) simply omits it and keeps the per-authority behaviour.
88
+ */
89
+ readonly sharedAnswerOf?: <T>(identity: string, compute: () => T | null, shareable?: (value: T | null) => boolean) => SharedProvenanceAnswer<T>;
90
+ }
91
+ export declare const exactSourceConstructionOf: (checker: ts.TypeChecker, flow: ValueFlowIndex, call: ts.NewExpression) => SourceConstructionFact | null;
92
+ export declare const exactClassAllocationOriginsOf: (checker: ts.TypeChecker, flow: ValueFlowIndex, expression: ts.Expression, authority: ClassAllocationAuthority) => ExactClassAllocationOrigins | null;
93
+ /**
94
+ * The value a constructor-function member's own `this.<key> = <value>`
95
+ * declares, or null when the declaration is not that shape or does not sit
96
+ * inside a source constructor function.
97
+ *
98
+ * Three's pre-class renderer factories declare every member this way:
99
+ * `function WebGLTextures( _gl, ... ) { function setTexture2D( texture, slot
100
+ * ) { ... } this.setTexture2D = setTexture2D }`. TypeScript files such an
101
+ * assignment's `this.<key>` as the property's OWN declaration -- there is no
102
+ * `MethodDeclaration` to find -- so the former class-only forwarding resolver refused
103
+ * every call through the whole factory family before this recognized the
104
+ * shape at all. Requiring the enclosing function to be `isConstructorFunction`
105
+ * keeps an ordinary assignment to some unrelated object's property
106
+ * (`obj.setSize = ...` where `obj` is not `this` of a source constructor) out
107
+ * of this arm entirely -- that shape is a class-family question this proof
108
+ * does not otherwise ask, and is not what "this member's own declaration" is
109
+ * supposed to mean.
110
+ */
111
+ export declare const constructorFunctionMemberAssignment: (declaration: ts.Declaration) => {
112
+ readonly value: ts.Expression;
113
+ } | null;
114
+ export interface ClosedConstructorForwardingTarget {
115
+ readonly body: ts.ConstructorDeclaration;
116
+ readonly parameters: readonly ts.ParameterDeclaration[];
117
+ }
118
+ /** An ordinary argument entering a source class constructor reaches its
119
+ * explicit formal slots. Default derived constructors forward the same slots
120
+ * to their base. Unknown constructor identities, replacement returns and
121
+ * arguments/rest aliases remain outside this closed forwarding proof. */
122
+ export declare const closedConstructorForwardingTargetsOf: (checker: ts.TypeChecker, flow: ValueFlowIndex, call: ts.CallExpression | ts.NewExpression, argumentsUsesAt: (declaration: ts.SignatureDeclaration) => readonly ts.Identifier[] | undefined) => readonly ClosedConstructorForwardingTarget[] | null;