@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,44 @@
1
+ import ts from 'typescript';
2
+ import type { ObjectBagIdentity } from '../../object-bag-bindings.js';
3
+ import type { CellEvidencePolicy } from '../policy.js';
4
+ /**
5
+ * The BAG domain: `object-bag-bindings.ts`'s open-property-bag question,
6
+ * restated as evidence rules over the shared flow index's
7
+ * `property-assignment`/`index-assignment` edges, joined per MEMBER NAME
8
+ * (`write.member`) rather than per cell -- the same
9
+ * `CellEvidenceContribution` extension `collection.ts` introduced, applied to
10
+ * the obstacle `policies/index.ts`'s header used to call the harder one:
11
+ * the member-name join was never the blocker.
12
+ *
13
+ * What this policy does NOT do, and could not without duplicating
14
+ * `object-bag-bindings.ts`'s own fixpoint a second time: decide which
15
+ * declarations are the SAME bag. That is `identity`'s published answer
16
+ * (`ObjectBagIdentity` -- `bagOf`/`returnsBag`/`conflicted`/`ungrounded`,
17
+ * settled once by a whole-program worklist over assignments, exhaustive
18
+ * `return`s, and one layer of callee-alias unwrapping). This policy CONSUMES
19
+ * that settled fixpoint rather than re-deriving it: `candidatesOf` is not a
20
+ * per-node syntactic test over `files` at all (every other domain's is) --
21
+ * it is `identity.roots`, the set the fixpoint already found, handed to this
22
+ * policy at construction alongside the checker.
23
+ *
24
+ * `writesOf` reads `identity.bagOf`'s own entries to pool one root's aliases
25
+ * -- every declaration the fixpoint proved is the same storage -- exactly
26
+ * the way `collection.ts`'s `writesOverAliasClosure` widens WHERE evidence is
27
+ * gathered from, except the closure here is not walked again: it was already
28
+ * computed, so this is a lookup into the published map rather than a second
29
+ * BFS over `flow.flowsFromDeclaration`.
30
+ *
31
+ * What is left unported, matching `collection.ts`'s own posture toward its
32
+ * gaps: `conflicted`/`ungrounded` roots are NOT excluded from `candidatesOf`
33
+ * -- a root is a candidate here exactly as an unwritten field is still a
34
+ * `field` candidate, and `combine` answering `null` for it (no admissible
35
+ * evidence, or a disagreement) is the same "no override" this table gives
36
+ * every other domain's failed candidate. Excluding them would hide a
37
+ * genuine collision from `twoOwnerClaims` for no gain, since nothing
38
+ * downstream reads this domain's answer yet. The `delete`/`Object.assign`/
39
+ * spread refusal vocabulary `object-bag-bindings.ts` applies before binding a
40
+ * shape is not restated: an opaque use simply contributes no evidence here,
41
+ * the same "narrower, not wrong" trade `collection.ts`'s header already
42
+ * accepts for its own left-out refusals.
43
+ */
44
+ export declare const createBagCellPolicy: (checker: ts.TypeChecker, identity: ObjectBagIdentity) => CellEvidencePolicy;
@@ -0,0 +1,114 @@
1
+ import { cellType } from '../model.js';
2
+ import { rulesFor } from '../policy.js';
3
+ import { joinCellTypeValues } from './shared.js';
4
+ /**
5
+ * The BAG domain: `object-bag-bindings.ts`'s open-property-bag question,
6
+ * restated as evidence rules over the shared flow index's
7
+ * `property-assignment`/`index-assignment` edges, joined per MEMBER NAME
8
+ * (`write.member`) rather than per cell -- the same
9
+ * `CellEvidenceContribution` extension `collection.ts` introduced, applied to
10
+ * the obstacle `policies/index.ts`'s header used to call the harder one:
11
+ * the member-name join was never the blocker.
12
+ *
13
+ * What this policy does NOT do, and could not without duplicating
14
+ * `object-bag-bindings.ts`'s own fixpoint a second time: decide which
15
+ * declarations are the SAME bag. That is `identity`'s published answer
16
+ * (`ObjectBagIdentity` -- `bagOf`/`returnsBag`/`conflicted`/`ungrounded`,
17
+ * settled once by a whole-program worklist over assignments, exhaustive
18
+ * `return`s, and one layer of callee-alias unwrapping). This policy CONSUMES
19
+ * that settled fixpoint rather than re-deriving it: `candidatesOf` is not a
20
+ * per-node syntactic test over `files` at all (every other domain's is) --
21
+ * it is `identity.roots`, the set the fixpoint already found, handed to this
22
+ * policy at construction alongside the checker.
23
+ *
24
+ * `writesOf` reads `identity.bagOf`'s own entries to pool one root's aliases
25
+ * -- every declaration the fixpoint proved is the same storage -- exactly
26
+ * the way `collection.ts`'s `writesOverAliasClosure` widens WHERE evidence is
27
+ * gathered from, except the closure here is not walked again: it was already
28
+ * computed, so this is a lookup into the published map rather than a second
29
+ * BFS over `flow.flowsFromDeclaration`.
30
+ *
31
+ * What is left unported, matching `collection.ts`'s own posture toward its
32
+ * gaps: `conflicted`/`ungrounded` roots are NOT excluded from `candidatesOf`
33
+ * -- a root is a candidate here exactly as an unwritten field is still a
34
+ * `field` candidate, and `combine` answering `null` for it (no admissible
35
+ * evidence, or a disagreement) is the same "no override" this table gives
36
+ * every other domain's failed candidate. Excluding them would hide a
37
+ * genuine collision from `twoOwnerClaims` for no gain, since nothing
38
+ * downstream reads this domain's answer yet. The `delete`/`Object.assign`/
39
+ * spread refusal vocabulary `object-bag-bindings.ts` applies before binding a
40
+ * shape is not restated: an opaque use simply contributes no evidence here,
41
+ * the same "narrower, not wrong" trade `collection.ts`'s header already
42
+ * accepts for its own left-out refusals.
43
+ */
44
+ export const createBagCellPolicy = (checker, identity) => {
45
+ const aliasesOfRoot = new Map();
46
+ for (const [declaration, root] of identity.bagOf) {
47
+ const bucket = aliasesOfRoot.get(root);
48
+ if (bucket)
49
+ bucket.push(declaration);
50
+ else
51
+ aliasesOfRoot.set(root, [declaration]);
52
+ }
53
+ const writesOverIdentity = (declaration, flow) => {
54
+ const aliases = aliasesOfRoot.get(declaration) ?? [declaration];
55
+ const writes = [];
56
+ for (const alias of aliases)
57
+ writes.push(...flow.writesToDeclaration(alias));
58
+ return writes;
59
+ };
60
+ const valueRule = (write) => (write.value ? cellType(checker.getTypeAtLocation(write.value)) : null);
61
+ return {
62
+ domain: 'bag',
63
+ // Not a `cellCandidatesOf` walk: the fixpoint already decided this set (see this
64
+ // module's own header), so `files` -- every other domain's input -- is not asked.
65
+ candidatesOf: () => [...identity.roots].map((root) => root),
66
+ // A root's own literal is admitted only when it declares no type of its own
67
+ // (`object-bag-bindings.ts`'s `declaresOwnType`), so every candidate here is
68
+ // unannotated by construction -- the same reason `local.ts`'s `statedAt` is
69
+ // a real read that always answers `null` rather than a shortcut.
70
+ statedAt: () => null,
71
+ checkerAt: (declaration) => cellType(checker.getTypeAtLocation(declaration)),
72
+ writesOf: writesOverIdentity,
73
+ rules: rulesFor([
74
+ ['property-assignment', valueRule],
75
+ ['index-assignment', valueRule]
76
+ ]),
77
+ // Per-MEMBER-NAME join, not per-cell: `write.slot === 'member'` groups by
78
+ // `write.member` into the bag's named members, and `write.slot === 'element'`
79
+ // (a computed key, `flow/value-flow.ts`'s own partition) is the index sidecar --
80
+ // exactly the two-question split `collection.ts` already makes for K/V, applied
81
+ // to a bag's members/index instead. Either half joining to `null` (no evidence,
82
+ // or a disagreement `joinCellTypeValues` refuses) contributes nothing to that
83
+ // half alone, matching `object-bag-bindings.ts`'s own per-slot degradation.
84
+ combine: (contributions) => {
85
+ const named = new Map();
86
+ const indexed = [];
87
+ for (const contribution of contributions) {
88
+ if (contribution.write.slot === 'member' && contribution.write.member !== null) {
89
+ const bucket = named.get(contribution.write.member);
90
+ if (bucket)
91
+ bucket.push(contribution.value);
92
+ else
93
+ named.set(contribution.write.member, [contribution.value]);
94
+ }
95
+ else if (contribution.write.slot === 'element') {
96
+ indexed.push(contribution.value);
97
+ }
98
+ }
99
+ if (named.size === 0 && indexed.length === 0)
100
+ return null;
101
+ const members = new Map();
102
+ for (const [key, values] of named) {
103
+ const joined = joinCellTypeValues(checker, values);
104
+ if (joined)
105
+ members.set(key, joined);
106
+ }
107
+ const index = indexed.length > 0 ? joinCellTypeValues(checker, indexed) : null;
108
+ if (members.size === 0 && index === null)
109
+ return null;
110
+ const shape = { members, index };
111
+ return { kind: 'bag-shape', shape };
112
+ }
113
+ };
114
+ };
@@ -0,0 +1,42 @@
1
+ import ts from 'typescript';
2
+ import type { ProgramReachability } from '../../reachability.js';
3
+ import type { CellEvidencePolicy } from '../policy.js';
4
+ /**
5
+ * The COLLECTION domain: `collection-bindings.ts`'s Map/Set/WeakMap/WeakSet
6
+ * question (`CollectionTypeArguments`'s K/V), restated as two evidence rules
7
+ * (`collection-key`, `collection-value`) over `flow`'s edges of the same
8
+ * name, joined per SLOT rather than into one value -- see `combine` below.
9
+ *
10
+ * Deliberately NOT ported, and left for a later phase exactly as
11
+ * `parameter.ts`'s header leaves its own gap documented rather than silent:
12
+ *
13
+ * - The checker-only half of `argumentType`'s `known ?? resolve` rule.
14
+ * `collection-bindings.ts` falls back to the COMPOSED PARAMETER CENSUS when
15
+ * the checker's own answer for a key/value argument is unusable evidence --
16
+ * the majority case in practice, since most of these sites are an untyped
17
+ * local function parameter. This policy has no composed census to fall
18
+ * back to (nothing wires one in for `defaultCellEvidencePolicies`, and
19
+ * wiring one would be the exact kind of cross-domain coupling
20
+ * `policies/index.ts`'s header calls out for the bag census's own
21
+ * `valueEvidence` half), so it reads the checker alone. This makes the
22
+ * policy narrower, not wrong: a slot this policy cannot bind still answers
23
+ * `null` (no override), never a guess.
24
+ * - The `weak-key-not-reference` refusal (`collection-bindings.ts:485-511`):
25
+ * a `WeakMap`/`WeakSet` key that resolves to a union is still published
26
+ * here as `key`, where the existing census would refuse the whole owner
27
+ * instead. Safe for this table's current, diagnostic-only readership
28
+ * (nothing downstream consumes `cellFacts` yet -- see `facts.ts`'s own
29
+ * header), and flagged here for whoever wires a consumer to close before
30
+ * this table's `collection` domain becomes load-bearing.
31
+ * - The array-element half of `collection-bindings.ts` (an empty array
32
+ * literal's inferred element type) is a DIFFERENT question that already
33
+ * fits the four ported domains' plain `ts.Type` shape -- it is not part of
34
+ * `CollectionTypeArguments`, and `CellDomain` names no domain for it. Out
35
+ * of scope for "port the collection domain" as this table's own `CellValue`
36
+ * union defines it.
37
+ * - `family-disagreement` (two `new X()` sites for one owner naming different
38
+ * families) is not tracked; a mixed owner simply answers from whichever
39
+ * evidence its writes admit rather than refusing outright. Diagnostic-only
40
+ * readership again makes this safe rather than silently wrong.
41
+ */
42
+ export declare const createCollectionCellPolicy: (checker: ts.TypeChecker, reachable: ProgramReachability) => CellEvidencePolicy;
@@ -0,0 +1,218 @@
1
+ import ts from 'typescript';
2
+ import { cellCandidatesOf } from '../candidates.js';
3
+ import { cellType } from '../model.js';
4
+ import { rulesFor } from '../policy.js';
5
+ import { joinCellTypeValues, statedTypeOf } from './shared.js';
6
+ /** The four standard collection constructors, exactly `collection-bindings.ts`'s own table -- core ECMAScript, not a host's to configure. */
7
+ const CONSTRUCTOR_NAMES = new Map([
8
+ ['Map', 'map'],
9
+ ['Set', 'set'],
10
+ ['WeakMap', 'weak-map'],
11
+ ['WeakSet', 'weak-set']
12
+ ]);
13
+ /** A symbol's first declaration node -- the stable key every owner-tracking census in this compiler uses (see `flow/targets.ts`'s own header on why). */
14
+ const declNodeOf = (symbol) => symbol?.getDeclarations()?.[0] ?? null;
15
+ /**
16
+ * The declaration a plain identifier or `x.prop` access names -- this
17
+ * policy's own restatement of `collection-bindings.ts`'s `ownerDeclOfExpr`.
18
+ * Restated rather than imported: every policy in this directory recognises
19
+ * its own candidates from scratch (`field.ts`'s `isUnannotatedUninitializedField`,
20
+ * `local.ts`'s sibling), and this phase's "stay in `cells/**`" boundary rules
21
+ * out reaching into `collection-bindings.ts` for a shared helper it does not
22
+ * export.
23
+ */
24
+ const ownerDeclOfExpr = (checker, expr) => {
25
+ if (ts.isIdentifier(expr))
26
+ return declNodeOf(checker.getSymbolAtLocation(expr));
27
+ if (ts.isPropertyAccessExpression(expr))
28
+ return declNodeOf(checker.getSymbolAtLocation(expr.name));
29
+ return null;
30
+ };
31
+ /**
32
+ * The declaration a `new Map()`/`new Set()`/`new WeakMap()`/`new WeakSet()`
33
+ * is bound to -- a variable's own name, a class field's own initializer, or
34
+ * a plain `x = new WeakMap()` / `this.m = new WeakMap()` reassignment target.
35
+ * `null` for anything else (an inline argument, a destructuring target): this
36
+ * policy's CELL is the owner, not the allocation site, so a construction with
37
+ * no trackable owner is not a candidate at all -- the same rule
38
+ * `collection-bindings.ts` applies, restated (see `ownerDeclOfExpr`'s note).
39
+ */
40
+ const ownerDeclOf = (checker, node) => {
41
+ const parent = node.parent;
42
+ if (ts.isVariableDeclaration(parent) && parent.initializer === node && ts.isIdentifier(parent.name)) {
43
+ return declNodeOf(checker.getSymbolAtLocation(parent.name));
44
+ }
45
+ if (ts.isPropertyDeclaration(parent) && parent.initializer === node && ts.isIdentifier(parent.name)) {
46
+ return declNodeOf(checker.getSymbolAtLocation(parent.name));
47
+ }
48
+ if (ts.isBinaryExpression(parent) && parent.operatorToken.kind === ts.SyntaxKind.EqualsToken && parent.right === node) {
49
+ return ownerDeclOfExpr(checker, parent.left);
50
+ }
51
+ return null;
52
+ };
53
+ /**
54
+ * Every declaration a `whole`-slot write carries this owner's identity INTO,
55
+ * transitively -- `collection-bindings.ts`'s `aliasClosureOf`, restated over
56
+ * the same `flow.flowsFromDeclaration` reverse edge. This is the answer to
57
+ * `policies/index.ts`'s stated obstacle: a candidate's OWN
58
+ * `flow.writesToDeclaration` sees only writes made directly through its own
59
+ * name, so `const helper = []; fill(helper)` (where `fill`'s body does
60
+ * `arr.push(x)` on its PARAMETER) or `this.cache.set(k, v)` reached only
61
+ * through a parameter the cache was passed to are both invisible to a
62
+ * single-declaration read. Rather than forcing this into the generic
63
+ * `flow.writesToDeclaration(declaration)` default every OTHER ported domain
64
+ * uses, this policy states its own `writesOf` (see `policy.ts`'s doc on that
65
+ * hook) and pools the writes of the whole closure -- an honest widening of
66
+ * WHERE evidence is gathered, not a rule about what counts as evidence.
67
+ */
68
+ const ALIAS_EDGES = new Set([
69
+ 'declaration-initializer',
70
+ 'identifier-assignment',
71
+ 'property-assignment',
72
+ 'index-assignment',
73
+ 'call-argument'
74
+ ]);
75
+ const writesOverAliasClosure = (owner, flow) => {
76
+ const seen = new Set([owner]);
77
+ const queue = [owner];
78
+ const writes = [];
79
+ while (queue.length > 0) {
80
+ const current = queue.shift();
81
+ writes.push(...flow.writesToDeclaration(current));
82
+ for (const write of flow.flowsFromDeclaration(current)) {
83
+ if (write.slot !== 'whole' || !ALIAS_EDGES.has(write.edge))
84
+ continue;
85
+ const target = write.target.declaration;
86
+ if (target && !seen.has(target)) {
87
+ seen.add(target);
88
+ queue.push(target);
89
+ }
90
+ }
91
+ }
92
+ return writes;
93
+ };
94
+ /**
95
+ * The owner's own type node, when its declaration shape carries one --
96
+ * `const m: Map<string, number> = new Map()` states its own answer, and this
97
+ * policy's `stated` must defer to it exactly as `field.ts`/`return.ts` do for
98
+ * theirs. `collection-bindings.ts` itself never asks this (its `bareConstruction`
99
+ * check only inspects the `new X()` expression's own type arguments, not the
100
+ * OWNER's annotation), so a program shaped this way binds here where the
101
+ * existing census is silent -- a real, deliberate difference, not a
102
+ * fidelity gap, and one every ported `ts.Type`-space policy already gets by
103
+ * asking `stated` at all.
104
+ */
105
+ const ownerTypeNodeOf = (declaration) => {
106
+ if (ts.isVariableDeclaration(declaration) || ts.isPropertyDeclaration(declaration) || ts.isParameter(declaration)) {
107
+ return declaration.type;
108
+ }
109
+ return undefined;
110
+ };
111
+ /**
112
+ * The COLLECTION domain: `collection-bindings.ts`'s Map/Set/WeakMap/WeakSet
113
+ * question (`CollectionTypeArguments`'s K/V), restated as two evidence rules
114
+ * (`collection-key`, `collection-value`) over `flow`'s edges of the same
115
+ * name, joined per SLOT rather than into one value -- see `combine` below.
116
+ *
117
+ * Deliberately NOT ported, and left for a later phase exactly as
118
+ * `parameter.ts`'s header leaves its own gap documented rather than silent:
119
+ *
120
+ * - The checker-only half of `argumentType`'s `known ?? resolve` rule.
121
+ * `collection-bindings.ts` falls back to the COMPOSED PARAMETER CENSUS when
122
+ * the checker's own answer for a key/value argument is unusable evidence --
123
+ * the majority case in practice, since most of these sites are an untyped
124
+ * local function parameter. This policy has no composed census to fall
125
+ * back to (nothing wires one in for `defaultCellEvidencePolicies`, and
126
+ * wiring one would be the exact kind of cross-domain coupling
127
+ * `policies/index.ts`'s header calls out for the bag census's own
128
+ * `valueEvidence` half), so it reads the checker alone. This makes the
129
+ * policy narrower, not wrong: a slot this policy cannot bind still answers
130
+ * `null` (no override), never a guess.
131
+ * - The `weak-key-not-reference` refusal (`collection-bindings.ts:485-511`):
132
+ * a `WeakMap`/`WeakSet` key that resolves to a union is still published
133
+ * here as `key`, where the existing census would refuse the whole owner
134
+ * instead. Safe for this table's current, diagnostic-only readership
135
+ * (nothing downstream consumes `cellFacts` yet -- see `facts.ts`'s own
136
+ * header), and flagged here for whoever wires a consumer to close before
137
+ * this table's `collection` domain becomes load-bearing.
138
+ * - The array-element half of `collection-bindings.ts` (an empty array
139
+ * literal's inferred element type) is a DIFFERENT question that already
140
+ * fits the four ported domains' plain `ts.Type` shape -- it is not part of
141
+ * `CollectionTypeArguments`, and `CellDomain` names no domain for it. Out
142
+ * of scope for "port the collection domain" as this table's own `CellValue`
143
+ * union defines it.
144
+ * - `family-disagreement` (two `new X()` sites for one owner naming different
145
+ * families) is not tracked; a mixed owner simply answers from whichever
146
+ * evidence its writes admit rather than refusing outright. Diagnostic-only
147
+ * readership again makes this safe rather than silently wrong.
148
+ */
149
+ export const createCollectionCellPolicy = (checker, reachable) => {
150
+ let constructorSymbols = null;
151
+ const constructorSymbolsFor = (anchor) => {
152
+ if (constructorSymbols)
153
+ return constructorSymbols;
154
+ const resolved = new Map();
155
+ for (const [name, family] of CONSTRUCTOR_NAMES) {
156
+ const symbol = checker.resolveName(name, anchor, ts.SymbolFlags.Value, false);
157
+ if (symbol)
158
+ resolved.set(family, symbol);
159
+ }
160
+ constructorSymbols = resolved;
161
+ return resolved;
162
+ };
163
+ /** The family this expression constructs, only when it is genuinely the standard-library constructor -- never a program's own `class WeakMap`. */
164
+ const realConstructorFamily = (anchor, node) => {
165
+ if (!ts.isIdentifier(node.expression))
166
+ return null;
167
+ const family = CONSTRUCTOR_NAMES.get(node.expression.text);
168
+ if (!family)
169
+ return null;
170
+ const expected = constructorSymbolsFor(anchor).get(family);
171
+ if (!expected)
172
+ return null;
173
+ return checker.getSymbolAtLocation(node.expression) === expected ? family : null;
174
+ };
175
+ const bareConstruction = (node) => (node.typeArguments === undefined || node.typeArguments.length === 0) && (node.arguments === undefined || node.arguments.length === 0);
176
+ return {
177
+ domain: 'collection',
178
+ candidatesOf: (files) => {
179
+ const anchor = files[0];
180
+ if (!anchor)
181
+ return [];
182
+ const isBareCollectionNew = (node) => ts.isNewExpression(node) && bareConstruction(node) && realConstructorFamily(anchor, node) !== null;
183
+ const owners = new Set();
184
+ for (const node of cellCandidatesOf(reachable, files, isBareCollectionNew)) {
185
+ const owner = ownerDeclOf(checker, node);
186
+ if (owner)
187
+ owners.add(owner);
188
+ }
189
+ return owners;
190
+ },
191
+ statedAt: (declaration) => statedTypeOf(checker, ownerTypeNodeOf(declaration)),
192
+ checkerAt: (declaration) => cellType(checker.getTypeAtLocation(declaration)),
193
+ writesOf: writesOverAliasClosure,
194
+ rules: rulesFor([
195
+ ['collection-key', (write) => (write.value ? cellType(checker.getTypeAtLocation(write.value)) : null)],
196
+ ['collection-value', (write) => (write.value ? cellType(checker.getTypeAtLocation(write.value)) : null)]
197
+ ]),
198
+ // Per-SLOT join, not per-cell: K and V are independent questions about one
199
+ // storage (`collection-bindings.ts`'s own header, "K and V are INDEPENDENT
200
+ // questions"), so a `Map`'s key evidence and value evidence are grouped by
201
+ // `write.slot` and joined separately -- exactly the extension
202
+ // `policies/index.ts` asked for, now that `combine` receives the write
203
+ // alongside the value (`CellEvidenceContribution`). Either half joining to
204
+ // `null` (no evidence, or disagreement) is "no override" for that half
205
+ // alone, matching `collection-bindings.ts`'s own `boundArgumentsFor`,
206
+ // which folds "refused" and "never asked" into the same absent answer.
207
+ combine: (contributions) => {
208
+ const keys = contributions.filter((c) => c.write.slot === 'collection-key').map((c) => c.value);
209
+ const values = contributions.filter((c) => c.write.slot === 'collection-value').map((c) => c.value);
210
+ if (keys.length === 0 && values.length === 0)
211
+ return null;
212
+ const key = keys.length > 0 ? joinCellTypeValues(checker, keys) : null;
213
+ const value = values.length > 0 ? joinCellTypeValues(checker, values) : null;
214
+ const arguments_ = { key, value, valueEvidence: [] };
215
+ return { kind: 'collection-arguments', arguments: arguments_ };
216
+ }
217
+ };
218
+ };
@@ -0,0 +1,28 @@
1
+ import ts from 'typescript';
2
+ import type { ProgramReachability } from '../../reachability.js';
3
+ import type { CellEvidencePolicy } from '../policy.js';
4
+ /**
5
+ * The FIELD domain: `field-bindings.ts`'s question, restated over the shared
6
+ * flow index's `property-assignment` edge.
7
+ *
8
+ * Scoped to an explicit `PropertyDeclaration` with no initializer -- the
9
+ * the shape called note 16 ("a `PropertyDeclaration` WITH an
10
+ * initializer is not a candidate at all"). What is NOT ported: a field TypeScript
11
+ * infers purely from a JS constructor's `this.x = v` with no
12
+ * `PropertyDeclaration` node at all ("TS JS-class
13
+ * inference decl"). `field-bindings.ts` keys that case by SYMBOL because there
14
+ * is no declaration node to key it by, and this policy interface keys every
15
+ * candidate by a `ts.Declaration` for `identities.declarationIdOf` -- the same
16
+ * "one answer language" constraint this whole table exists to hold everyone
17
+ * to. Closing that gap needs either a synthetic per-symbol identity or
18
+ * widening `CellEvidencePolicy.candidatesOf` to a symbol-keyed variant; left
19
+ * for a later step rather than forced here. See the report for the exact
20
+ * count this leaves unproven.
21
+ *
22
+ * `flow/model.ts` already resolves `this.x = v` (and a subclass's write, and
23
+ * `this.a.b = v`'s outer member) to THIS declaration by symbol identity
24
+ * (`FlowTarget.symbol`/`.declaration`, `flow/model.ts`'s own header), so no
25
+ * receiver-walk of this policy's own is needed -- exactly the property
26
+ * `parameter.ts` and `return.ts` already lean on for their own edges.
27
+ */
28
+ export declare const createFieldCellPolicy: (checker: ts.TypeChecker, reachable: ProgramReachability) => CellEvidencePolicy;
@@ -0,0 +1,40 @@
1
+ import ts from 'typescript';
2
+ import { cellCandidatesOf } from '../candidates.js';
3
+ import { cellType } from '../model.js';
4
+ import { rulesFor } from '../policy.js';
5
+ import { combineTypesByJoin, statedTypeOf } from './shared.js';
6
+ const isUnannotatedUninitializedField = (node) => ts.isPropertyDeclaration(node) && node.type === undefined && node.initializer === undefined;
7
+ /**
8
+ * The FIELD domain: `field-bindings.ts`'s question, restated over the shared
9
+ * flow index's `property-assignment` edge.
10
+ *
11
+ * Scoped to an explicit `PropertyDeclaration` with no initializer -- the
12
+ * the shape called note 16 ("a `PropertyDeclaration` WITH an
13
+ * initializer is not a candidate at all"). What is NOT ported: a field TypeScript
14
+ * infers purely from a JS constructor's `this.x = v` with no
15
+ * `PropertyDeclaration` node at all ("TS JS-class
16
+ * inference decl"). `field-bindings.ts` keys that case by SYMBOL because there
17
+ * is no declaration node to key it by, and this policy interface keys every
18
+ * candidate by a `ts.Declaration` for `identities.declarationIdOf` -- the same
19
+ * "one answer language" constraint this whole table exists to hold everyone
20
+ * to. Closing that gap needs either a synthetic per-symbol identity or
21
+ * widening `CellEvidencePolicy.candidatesOf` to a symbol-keyed variant; left
22
+ * for a later step rather than forced here. See the report for the exact
23
+ * count this leaves unproven.
24
+ *
25
+ * `flow/model.ts` already resolves `this.x = v` (and a subclass's write, and
26
+ * `this.a.b = v`'s outer member) to THIS declaration by symbol identity
27
+ * (`FlowTarget.symbol`/`.declaration`, `flow/model.ts`'s own header), so no
28
+ * receiver-walk of this policy's own is needed -- exactly the property
29
+ * `parameter.ts` and `return.ts` already lean on for their own edges.
30
+ */
31
+ export const createFieldCellPolicy = (checker, reachable) => ({
32
+ domain: 'field',
33
+ candidatesOf: (files) => cellCandidatesOf(reachable, files, isUnannotatedUninitializedField),
34
+ statedAt: (declaration) => statedTypeOf(checker, declaration.type),
35
+ checkerAt: (declaration) => cellType(checker.getTypeAtLocation(declaration)),
36
+ rules: rulesFor([
37
+ ['property-assignment', (write) => (write.value ? cellType(checker.getTypeAtLocation(write.value)) : null)]
38
+ ]),
39
+ combine: combineTypesByJoin(checker)
40
+ });
@@ -0,0 +1,49 @@
1
+ import type ts from 'typescript';
2
+ import type { ProgramReachability } from '../../reachability.js';
3
+ import type { ObjectBagIdentity } from '../../object-bag-bindings.js';
4
+ import type { CellEvidencePolicy } from '../policy.js';
5
+ export { createParameterCellPolicy } from './parameter.js';
6
+ export { createReturnCellPolicy } from './return.js';
7
+ export { createLocalCellPolicy } from './local.js';
8
+ export { createFieldCellPolicy } from './field.js';
9
+ export { createCollectionCellPolicy } from './collection.js';
10
+ export { createBagCellPolicy } from './bag.js';
11
+ /**
12
+ * Five of the six domains are ported to an evidence policy as of this phase:
13
+ * parameter, return, local, field (already `ts.Type`-space censuses), and now
14
+ * collection (`CollectionTypeArguments`'s independent key/value pair -- see
15
+ * `collection.ts`'s own header for what was and was not carried over).
16
+ *
17
+ * Porting `collection` needed a real extension to the shape, not a policy
18
+ * bent to fit the existing one: `combine` used to receive a flat
19
+ * `CellValue[]`, discarding which write and which slot produced each one, so
20
+ * nothing could join K and V independently. `CellEvidenceContribution`
21
+ * (`policy.ts`) pairs the value back with its `ValueWrite`, and `writesOf`
22
+ * (also `policy.ts`) lets a policy widen WHERE evidence is gathered from
23
+ * (`collection.ts`'s alias-closure walk) without forcing every other domain
24
+ * to pay for a closure it never needed. Both are honest widenings of the
25
+ * question `CellEvidencePolicy` can state, not a narrower reading of
26
+ * `collection-bindings.ts`'s own question -- see `collection.ts` for the
27
+ * three pieces of that census deliberately left unported and why each is
28
+ * safe for this table's current, diagnostic-only readership.
29
+ *
30
+ * BAG is now here too, and the obstacle that kept it out was never "needs a
31
+ * slot-aware rule" -- the frontend's evidence-policy tables
32
+ * records the full history. `object-bag-bindings.ts`'s identity (which
33
+ * declarations name the SAME bag) is not decided per write or even per
34
+ * declaration -- it is the fixed point of a whole-program worklist
35
+ * (`bagOf`/`returnsBag`, propagated through assignments, provably-exhaustive
36
+ * `return`s, and one layer of callee-alias unwrapping, with `conflicted`/
37
+ * `ungrounded` bookkeeping deciding which candidates survive), and a
38
+ * `candidatesOf` that enumerates nodes by a per-node syntactic test --
39
+ * everything this table's `cellCandidatesOf` walk assumes -- cannot state
40
+ * "one candidate becomes known to be one cell only once a closure over the
41
+ * WHOLE program has converged." The fix taken was the second of the two
42
+ * choices this header used to weigh: `object-bag-bindings.ts` now publishes
43
+ * that fixpoint as `ObjectBagCensus.identity` (`ObjectBagIdentity`), and
44
+ * `bag.ts`'s policy consumes it rather than reimplementing it -- `bagIdentity`
45
+ * is threaded in as a construction-time argument, not discovered via `files`,
46
+ * because the fixpoint needs the whole program already settled before any
47
+ * single node can be called a candidate.
48
+ */
49
+ export declare const defaultCellEvidencePolicies: (checker: ts.TypeChecker, reachable: ProgramReachability, bagIdentity: ObjectBagIdentity) => readonly CellEvidencePolicy[];
@@ -0,0 +1,58 @@
1
+ import { createBagCellPolicy } from './bag.js';
2
+ import { createCollectionCellPolicy } from './collection.js';
3
+ import { createFieldCellPolicy } from './field.js';
4
+ import { createLocalCellPolicy } from './local.js';
5
+ import { createParameterCellPolicy } from './parameter.js';
6
+ import { createReturnCellPolicy } from './return.js';
7
+ export { createParameterCellPolicy } from './parameter.js';
8
+ export { createReturnCellPolicy } from './return.js';
9
+ export { createLocalCellPolicy } from './local.js';
10
+ export { createFieldCellPolicy } from './field.js';
11
+ export { createCollectionCellPolicy } from './collection.js';
12
+ export { createBagCellPolicy } from './bag.js';
13
+ /**
14
+ * Five of the six domains are ported to an evidence policy as of this phase:
15
+ * parameter, return, local, field (already `ts.Type`-space censuses), and now
16
+ * collection (`CollectionTypeArguments`'s independent key/value pair -- see
17
+ * `collection.ts`'s own header for what was and was not carried over).
18
+ *
19
+ * Porting `collection` needed a real extension to the shape, not a policy
20
+ * bent to fit the existing one: `combine` used to receive a flat
21
+ * `CellValue[]`, discarding which write and which slot produced each one, so
22
+ * nothing could join K and V independently. `CellEvidenceContribution`
23
+ * (`policy.ts`) pairs the value back with its `ValueWrite`, and `writesOf`
24
+ * (also `policy.ts`) lets a policy widen WHERE evidence is gathered from
25
+ * (`collection.ts`'s alias-closure walk) without forcing every other domain
26
+ * to pay for a closure it never needed. Both are honest widenings of the
27
+ * question `CellEvidencePolicy` can state, not a narrower reading of
28
+ * `collection-bindings.ts`'s own question -- see `collection.ts` for the
29
+ * three pieces of that census deliberately left unported and why each is
30
+ * safe for this table's current, diagnostic-only readership.
31
+ *
32
+ * BAG is now here too, and the obstacle that kept it out was never "needs a
33
+ * slot-aware rule" -- the frontend's evidence-policy tables
34
+ * records the full history. `object-bag-bindings.ts`'s identity (which
35
+ * declarations name the SAME bag) is not decided per write or even per
36
+ * declaration -- it is the fixed point of a whole-program worklist
37
+ * (`bagOf`/`returnsBag`, propagated through assignments, provably-exhaustive
38
+ * `return`s, and one layer of callee-alias unwrapping, with `conflicted`/
39
+ * `ungrounded` bookkeeping deciding which candidates survive), and a
40
+ * `candidatesOf` that enumerates nodes by a per-node syntactic test --
41
+ * everything this table's `cellCandidatesOf` walk assumes -- cannot state
42
+ * "one candidate becomes known to be one cell only once a closure over the
43
+ * WHOLE program has converged." The fix taken was the second of the two
44
+ * choices this header used to weigh: `object-bag-bindings.ts` now publishes
45
+ * that fixpoint as `ObjectBagCensus.identity` (`ObjectBagIdentity`), and
46
+ * `bag.ts`'s policy consumes it rather than reimplementing it -- `bagIdentity`
47
+ * is threaded in as a construction-time argument, not discovered via `files`,
48
+ * because the fixpoint needs the whole program already settled before any
49
+ * single node can be called a candidate.
50
+ */
51
+ export const defaultCellEvidencePolicies = (checker, reachable, bagIdentity) => [
52
+ createParameterCellPolicy(checker, reachable),
53
+ createReturnCellPolicy(checker, reachable),
54
+ createLocalCellPolicy(checker, reachable),
55
+ createFieldCellPolicy(checker, reachable),
56
+ createCollectionCellPolicy(checker, reachable),
57
+ createBagCellPolicy(checker, bagIdentity)
58
+ ];
@@ -0,0 +1,18 @@
1
+ import ts from 'typescript';
2
+ import type { ProgramReachability } from '../../reachability.js';
3
+ import type { CellEvidencePolicy } from '../policy.js';
4
+ /**
5
+ * The LOCAL domain: `local-bindings.ts`'s question ("an unannotated
6
+ * `let`/`var` cell with no initializer, filled in by exactly the writes the
7
+ * program makes to it"), restated over the shared flow index's
8
+ * `identifier-assignment` and `logical-assignment` edges.
9
+ *
10
+ * `compound-assignment` (`x += 1`) is deliberately given no rule: per
11
+ * `flow/model.ts`'s own doc, that edge states existence and a DERIVED value,
12
+ * never a fresh one, so admitting it here would join the cell's own prior
13
+ * (unknown) contents into its write-join. `rulesFor` skipping an edge is the
14
+ * correct, sound default -- soundness cuts one way here:
15
+ * missing evidence is a box, joining the wrong evidence is a silent
16
+ * miscompile, and this domain refuses the second, never the first.
17
+ */
18
+ export declare const createLocalCellPolicy: (checker: ts.TypeChecker, reachable: ProgramReachability) => CellEvidencePolicy;