@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,36 @@
1
+ import type { ParameterBindingCensus } from './parameter-bindings.js';
2
+ /**
3
+ * One round's whole output: the parameter census the fixpoint settles on, and
4
+ * every other artifact that round produced.
5
+ *
6
+ * `facts` is generic because this module settles a fixpoint and has no business
7
+ * knowing which censuses a round happens to build. What matters is that a round
8
+ * RETURNS them. They used to be published by assigning to `let`s captured from
9
+ * the enclosing scope, which made `compose` a function that answered one
10
+ * question and silently republished four more -- so "which round's collection
11
+ * census does the structural mapper read" was answered by the last write to
12
+ * survive the loop rather than by anything a reader could see. That is the same
13
+ * two-authorities shape this refactor removes everywhere else
14
+ * (the frontend's evidence-policy tables).
15
+ */
16
+ export interface RoundCensus<Facts> {
17
+ readonly parameters: ParameterBindingCensus;
18
+ readonly facts: Facts;
19
+ }
20
+ /** A settled `RoundCensus`, and which round settled it. */
21
+ export interface CensusSnapshot<Facts> extends RoundCensus<Facts> {
22
+ readonly round: number;
23
+ }
24
+ /**
25
+ * Count equality cannot establish a fixed point: a cell may change carrier
26
+ * while another loses its answer. Record the actual census queries a round
27
+ * depends on, then require its output to answer those queries identically.
28
+ * Type identity is the checker's identity, never a rendered name or a second
29
+ * structural-type classifier. Union lists compare their ordered type identities.
30
+ *
31
+ * The returned snapshot is the SETTLING round's own, in full -- not merely its
32
+ * parameter census. Every artifact in it was built by one round from one
33
+ * upstream view, so a consumer cannot pair a census from one round with a flow
34
+ * index from another.
35
+ */
36
+ export declare const settleBindingCensus: <Facts>(compose: (upstream?: ParameterBindingCensus) => RoundCensus<Facts>, limit?: number) => CensusSnapshot<Facts>;
@@ -0,0 +1,140 @@
1
+ import { sameImplicitArgumentsTuple } from './implicit-arguments-tuple.js';
2
+ /** A frame fact is a fresh object each round; it settles when it states the same frame, not when it is the same object. */
3
+ const isFrameFact = (fact) => fact !== null && !Array.isArray(fact) && 'frame' in fact;
4
+ // Derive the keys from the public census interface. A new fact query must be
5
+ // included here or TypeScript rejects the build; it cannot escape convergence.
6
+ const queries = {
7
+ argumentsAt: (view, node) => view.argumentsAt?.(node) ?? null,
8
+ callTargetsAt: (view, node) => view.callTargetsAt?.(node) ?? null,
9
+ callDeclarationAt: (view, node) => view.callDeclarationAt?.(node) ?? null,
10
+ typeAt: (view, node) => view.typeAt(node),
11
+ implicitArgumentsTupleAt: (view, node) => view.implicitArgumentsTupleAt?.(node) ?? null,
12
+ restElementTypeAt: (view, node) => view.restElementTypeAt?.(node) ?? null,
13
+ statedTypeAt: (view, node) => view.statedTypeAt(node),
14
+ unionArmsAt: (view, node) => view.unionArmsAt(node),
15
+ preferredTypeAt: (view, node) => view.preferredTypeAt?.(node) ?? null,
16
+ patternReadTypeAt: (view, node) => view.patternReadTypeAt?.(node) ?? null
17
+ };
18
+ /**
19
+ * Count equality cannot establish a fixed point: a cell may change carrier
20
+ * while another loses its answer. Record the actual census queries a round
21
+ * depends on, then require its output to answer those queries identically.
22
+ * Type identity is the checker's identity, never a rendered name or a second
23
+ * structural-type classifier. Union lists compare their ordered type identities.
24
+ *
25
+ * The returned snapshot is the SETTLING round's own, in full -- not merely its
26
+ * parameter census. Every artifact in it was built by one round from one
27
+ * upstream view, so a consumer cannot pair a census from one round with a flow
28
+ * index from another.
29
+ */
30
+ export const settleBindingCensus = (compose, limit = 64) => {
31
+ // Carry only the `ParameterBindingCensus` forward between rounds, never the
32
+ // whole `RoundCensus`. For the real caller (`frontend.ts`) `RoundCensus.facts`
33
+ // holds that round's `ValueFlowIndex`, and `sourceValueSessionOf`
34
+ // (flow/source-value-session.ts) memoizes an ~80,000-state, ~14.7M-edge
35
+ // dependency graph in a WeakMap keyed on that index object -- roughly 1GB
36
+ // live per session on the three.js app. A `let round: RoundCensus<Facts>` reassigned
37
+ // only after `compose` returns keeps the PREVIOUS round's index (and its
38
+ // graph) reachable for the whole duration of the `compose` call that builds
39
+ // the NEXT round's index, so both graphs are live at once: measured as
40
+ // the three.js app's ~2.1GB fixpoint peak. Only `.parameters` is ever read back out of
41
+ // a settled round (to seed the next round's `observed` view and to compare
42
+ // `boundCount`), so only `.parameters` needs to survive the boundary.
43
+ let previousCensus = compose().parameters;
44
+ let unsettled = [];
45
+ const identities = new Map();
46
+ const factLabel = (fact) => {
47
+ if (fact === null)
48
+ return 'null';
49
+ if (Array.isArray(fact))
50
+ return `[${fact.map((type) => factLabel(type)).join(',')}]`;
51
+ if (isFrameFact(fact)) {
52
+ return fact.frame === 'array'
53
+ ? `arguments-array(${factLabel(fact.element)})`
54
+ : `arguments-tuple(${fact.required}/${fact.elements.map((type) => factLabel(type)).join(',')})`;
55
+ }
56
+ if ('kind' in fact)
57
+ return `declaration:${fact.kind}`;
58
+ const type = fact;
59
+ if (!identities.has(type))
60
+ identities.set(type, identities.size + 1);
61
+ return `${identities.get(type)}:${type.flags}:${type.symbol?.name ?? '-'}`;
62
+ };
63
+ for (let rounds = 2; rounds <= limit; rounds += 1) {
64
+ const reads = new Map();
65
+ const read = (name, node, value) => {
66
+ let nodes = reads.get(name);
67
+ if (!nodes) {
68
+ nodes = new Map();
69
+ reads.set(name, nodes);
70
+ }
71
+ nodes.set(node, value);
72
+ return value;
73
+ };
74
+ // Bind THIS round's upstream to a fresh per-iteration const. Every round's
75
+ // `observed` wrapper closes over the view it forwards to, and those
76
+ // wrappers outlive their round: a census composed in round N keeps round
77
+ // N's `observed` as its own upstream, and asks it again whenever a later
78
+ // round consults round N's answers. Reading the carried `previousCensus`
79
+ // variable from inside the wrapper instead pointed EVERY round's wrapper
80
+ // at whatever the variable held last, so once it advanced to round N's
81
+ // census, round N-1's wrapper forwarded into round N, whose upstream is
82
+ // that same wrapper -- `statedTypeAt` recursed between the two until the
83
+ // stack died, 58s into a three.js compile.
84
+ const upstream = previousCensus;
85
+ const observed = { ...upstream };
86
+ // `Object.keys` preserves the closed query table's keys. The wrapper
87
+ // preserves each method's result kind and normalizes an absent optional
88
+ // method to the same null answer used when checking the next view.
89
+ for (const name of Object.keys(queries)) {
90
+ Object.defineProperty(observed, name, {
91
+ value: (node) => read(name, node, queries[name](upstream, node)),
92
+ enumerable: true
93
+ });
94
+ }
95
+ const previousBoundCount = upstream.boundCount;
96
+ // `compose` is called with nothing in this function's own scope naming the
97
+ // previous round's `facts` -- `observed` closes over `previousCensus`
98
+ // (a `ParameterBindingCensus`), never over the `RoundCensus` it came from.
99
+ const next = compose(observed);
100
+ let changed = next.parameters.boundCount !== previousBoundCount;
101
+ unsettled = changed ? [`boundCount ${previousBoundCount} -> ${next.parameters.boundCount}`] : [];
102
+ // Reads may lazily consult earlier views. Snapshot before querying `next`
103
+ // so forwarding to `observed` cannot extend the map during iteration.
104
+ const pending = [...reads].map(([name, nodes]) => [name, [...nodes]]);
105
+ for (const [name, nodes] of pending) {
106
+ for (const [node, previous] of nodes) {
107
+ const answer = queries[name](next.parameters, node);
108
+ const equal = previous === answer ||
109
+ (Array.isArray(previous) &&
110
+ Array.isArray(answer) &&
111
+ previous.length === answer.length &&
112
+ previous.every((type, index) => type === answer[index])) ||
113
+ (isFrameFact(previous) && isFrameFact(answer) && sameImplicitArgumentsTuple(previous, answer));
114
+ if (!equal) {
115
+ changed = true;
116
+ if (unsettled.length < 8 && typeof node.getSourceFile === 'function') {
117
+ const file = node.getSourceFile();
118
+ const line = file.getLineAndCharacterOfPosition(node.getStart()).line + 1;
119
+ unsettled.push(`${name} ${file.fileName}:${line} ${node.getText().slice(0, 70)}: ${factLabel(previous)} -> ${factLabel(answer)}`);
120
+ }
121
+ }
122
+ }
123
+ }
124
+ if (process.env['GEA_BINDING_CONVERGENCE_DEBUG'])
125
+ process.stderr.write(`[CONVERGENCE ${rounds}] ${unsettled.join('\n')}\n`);
126
+ // Return `next` directly rather than stashing it in an outer `round` first:
127
+ // a settling round's `facts` (this round's `ValueFlowIndex` included) must
128
+ // reach the caller, but a NON-settling round's `facts` must not survive
129
+ // this iteration at all -- there is no next reader for them, ever, settled
130
+ // or not. `next` is a `const` scoped to this iteration; once `previousCensus`
131
+ // below takes only its `.parameters`, nothing in this function still names
132
+ // this round's `facts` and the round's index/session graph is free the
133
+ // moment `next` goes out of scope, unlike the old flow where the outer
134
+ // `round` binding kept it reachable until being overwritten one line later.
135
+ if (!changed)
136
+ return { ...next, round: rounds };
137
+ previousCensus = next.parameters;
138
+ }
139
+ throw new Error(`binding census did not reach a fixed point after ${limit} rounds; refusing to publish unsettled value facts\n${unsettled.join('\n')}`);
140
+ };
@@ -0,0 +1,16 @@
1
+ import ts from 'typescript';
2
+ import type { ValueFlowIndex } from './flow/model.js';
3
+ export interface CallbackParameterContract {
4
+ readonly signature: ts.Signature;
5
+ readonly location: ts.CallExpression | ts.NewExpression;
6
+ }
7
+ /** Resolve at the receiving call so instantiated generic contracts stay instantiated. */
8
+ export declare const callbackContractParameterType: (checker: ts.TypeChecker, contract: CallbackParameterContract, position: number) => ts.Type | null;
9
+ /**
10
+ * Every stated callback input contract receiving a local named function.
11
+ * These signatures are additional caller evidence, never a substitute for
12
+ * its direct calls. Unknown escapes fail closed. In particular a receiving
13
+ * `(value: any) => void` signature is retained so the parameter join sees the
14
+ * open input rather than inferring from only the convenient typed boundary.
15
+ */
16
+ export declare const callbackParameterContractsFor: (checker: ts.TypeChecker, flow: ValueFlowIndex, declaration: ts.SignatureDeclaration, countedCalls: ReadonlySet<ts.CallExpression | ts.NewExpression>) => readonly CallbackParameterContract[] | null;
@@ -0,0 +1,91 @@
1
+ import ts from 'typescript';
2
+ import { classifyCallableMention } from './flow/callable-reach.js';
3
+ import { isModuleExportedDeclaration } from './flow/targets.js';
4
+ /** Resolve at the receiving call so instantiated generic contracts stay instantiated. */
5
+ export const callbackContractParameterType = (checker, contract, position) => {
6
+ const parameter = contract.signature.parameters[position];
7
+ const declaration = parameter?.valueDeclaration ?? parameter?.declarations?.[0];
8
+ if (!parameter || !declaration || !ts.isParameter(declaration) || declaration.dotDotDotToken)
9
+ return null;
10
+ return checker.getTypeOfSymbolAtLocation(parameter, contract.location);
11
+ };
12
+ /**
13
+ * Every stated callback input contract receiving a local named function.
14
+ * These signatures are additional caller evidence, never a substitute for
15
+ * its direct calls. Unknown escapes fail closed. In particular a receiving
16
+ * `(value: any) => void` signature is retained so the parameter join sees the
17
+ * open input rather than inferring from only the convenient typed boundary.
18
+ */
19
+ export const callbackParameterContractsFor = (checker, flow, declaration, countedCalls) => {
20
+ if (!ts.isFunctionDeclaration(declaration) || !declaration.name || !declaration.body)
21
+ return null;
22
+ if ((ts.getCombinedModifierFlags(declaration) & (ts.ModifierFlags.Export | ts.ModifierFlags.Default)) !== 0)
23
+ return null;
24
+ const symbol = checker.getSymbolAtLocation(declaration.name);
25
+ if (!symbol || symbol.declarations?.length !== 1)
26
+ return null;
27
+ const signatures = [];
28
+ const acceptedArguments = new Set();
29
+ const flows = new Set([...flow.flowsFromDeclaration(declaration), ...flow.flowsFromSymbol(symbol)]);
30
+ const contractAt = (write) => {
31
+ if (write.edge !== 'call-argument' || write.slot !== 'whole' || !write.value)
32
+ return null;
33
+ const call = write.value.parent;
34
+ if (!ts.isCallExpression(call) && !ts.isNewExpression(call))
35
+ return null;
36
+ const args = call.arguments;
37
+ if (!args || args.some(ts.isSpreadElement))
38
+ return null;
39
+ const position = args.indexOf(write.value);
40
+ if (position < 0)
41
+ return null;
42
+ const signature = checker.getResolvedSignature(call);
43
+ const parameter = signature?.parameters[position];
44
+ if (!parameter)
45
+ return null;
46
+ const parameterDeclaration = parameter.valueDeclaration ?? parameter.declarations?.[0];
47
+ if (!parameterDeclaration || !ts.isParameter(parameterDeclaration) || parameterDeclaration.dotDotDotToken)
48
+ return null;
49
+ const type = checker.getTypeOfSymbolAtLocation(parameter, call);
50
+ // An optional callable is still a stated contract; any other alternative
51
+ // is an open destination, not permission to discard that incoming use.
52
+ const arms = type.isUnion() ? type.types : [type];
53
+ const result = [];
54
+ for (const arm of arms) {
55
+ if ((arm.flags & (ts.TypeFlags.Null | ts.TypeFlags.Undefined | ts.TypeFlags.Never)) !== 0)
56
+ continue;
57
+ if ((arm.flags & (ts.TypeFlags.Any | ts.TypeFlags.Unknown | ts.TypeFlags.TypeParameter)) !== 0)
58
+ return null;
59
+ const calls = checker.getSignaturesOfType(arm, ts.SignatureKind.Call);
60
+ if (calls.length === 0)
61
+ return null;
62
+ result.push(...calls.map((signature) => ({ signature, location: call })));
63
+ }
64
+ return result.length === 0 ? null : result;
65
+ };
66
+ for (const write of flows) {
67
+ const contracts = contractAt(write);
68
+ if (contracts === null || write.value === null)
69
+ return null;
70
+ acceptedArguments.add(write.value);
71
+ signatures.push(...contracts);
72
+ }
73
+ if (signatures.length === 0)
74
+ return null;
75
+ // An export-list alias is not an expression reference in the value-flow
76
+ // index. Its checker identity still publishes this callable to open callers.
77
+ if (isModuleExportedDeclaration(checker, declaration, symbol))
78
+ return null;
79
+ const references = new Set([...flow.referencesToDeclaration(declaration), ...flow.referencesToSymbol(symbol)]);
80
+ for (const reference of references) {
81
+ if (acceptedArguments.has(reference))
82
+ continue;
83
+ const mention = classifyCallableMention(checker, reference, declaration.name);
84
+ if (mention.kind === 'inert')
85
+ continue;
86
+ if (mention.kind === 'call' && countedCalls.has(mention.call))
87
+ continue;
88
+ return null;
89
+ }
90
+ return signatures;
91
+ };
@@ -0,0 +1,46 @@
1
+ import type { StructuralMapper } from '../structural.js';
2
+ import type { CellFactsTable } from './model.js';
3
+ /**
4
+ * The instrument phase 4.1 asks for: per program, how many declarations the
5
+ * new table answers IDENTICALLY to `structural.ts`'s existing `typeAt` chain,
6
+ * how many DIFFERENTLY, and how many this table has no opinion on at all.
7
+ *
8
+ * Compared as interned `StructuralTypeId`s, not as `ts.Type`s: two checker
9
+ * types the mapper's own `typeOf` collapses onto one structural shape (a
10
+ * literal and its widened form, say) are the SAME answer for every purpose
11
+ * downstream of `structural.ts`, and comparing raw `ts.Type` identity would
12
+ * report disagreement `structural.ts` itself does not have.
13
+ *
14
+ * This is diagnostic only -- nothing downstream reads it, and it changes
15
+ * nothing about what `types.typeAt` returns. `bagShape`/`collectionArguments`
16
+ * facts count as NOT COMPARABLE rather than as an unanswered cell: the table
17
+ * did answer, just not in the `ts.Type` language `typeAt` speaks, and folding
18
+ * that into "unanswered" would make phase 4.2's two-owner audit undercount
19
+ * how much of the table this instrument can actually check today.
20
+ */
21
+ export interface CellFactsAgreement {
22
+ readonly total: number;
23
+ readonly identical: number;
24
+ readonly different: number;
25
+ readonly unanswered: number;
26
+ readonly notComparable: number;
27
+ }
28
+ /**
29
+ * What `FrontendResult.cellFacts` actually publishes: the table, plus the
30
+ * agreement instrument when it was asked for.
31
+ *
32
+ * `agreement` is `null` unless a caller asked to measure, and that is not a
33
+ * convenience: `cellFactsAgreementOf` asks `types.typeAt` about declarations
34
+ * the compilation itself never asks about, and `typeAt` MINTS -- it interns a
35
+ * `StructuralTypeId` on first sight. Interning an id nobody needed shifts every
36
+ * later id, which renumbers the derived representations, which renumbers
37
+ * `gea_record_type_N` in the emitted C++. Measuring 68 corpus programs
38
+ * renumbered exactly that way is what found this. An instrument that changes
39
+ * the artifact it measures is not an instrument, so it runs only when asked.
40
+ */
41
+ export interface CellFactsPublication {
42
+ readonly table: CellFactsTable;
43
+ readonly agreement: CellFactsAgreement | null;
44
+ }
45
+ export declare const publishCellFacts: (table: CellFactsTable, types: StructuralMapper, measure: boolean) => CellFactsPublication;
46
+ export declare const cellFactsAgreementOf: (table: CellFactsTable, types: StructuralMapper) => CellFactsAgreement;
@@ -0,0 +1,34 @@
1
+ export const publishCellFacts = (table, types, measure) => ({
2
+ table,
3
+ agreement: measure ? cellFactsAgreementOf(table, types) : null
4
+ });
5
+ export const cellFactsAgreementOf = (table, types) => {
6
+ let identical = 0;
7
+ let different = 0;
8
+ let unanswered = 0;
9
+ let notComparable = 0;
10
+ for (const facts of table.all) {
11
+ if (facts.resolved === null) {
12
+ unanswered++;
13
+ continue;
14
+ }
15
+ if (facts.resolved.kind !== 'type') {
16
+ notComparable++;
17
+ continue;
18
+ }
19
+ let chainAnswer;
20
+ try {
21
+ chainAnswer = types.typeAt(facts.declaration);
22
+ }
23
+ catch {
24
+ unanswered++;
25
+ continue;
26
+ }
27
+ const cellAnswer = types.typeOf(facts.resolved.type);
28
+ if (cellAnswer === chainAnswer)
29
+ identical++;
30
+ else
31
+ different++;
32
+ }
33
+ return { total: table.all.length, identical, different, unanswered, notComparable };
34
+ };
@@ -0,0 +1,17 @@
1
+ import ts from 'typescript';
2
+ import { type ProgramReachability } from '../reachability.js';
3
+ /**
4
+ * Every reachable node in the program that `test` admits -- one walk shared
5
+ * by every domain's `candidatesOf`, instead of the six private walks
6
+ * the value-flow survey measured (9, 4, 6, 7, 6 and 8 of them). A policy states
7
+ * WHAT shape of declaration it is looking for; it never re-derives which part
8
+ * of the program it is allowed to look at.
9
+ *
10
+ * Mirrors `census.ts`'s own walk: an ambient module's body describes host
11
+ * values none of which execute, a type annotation contains no operations
12
+ * (except the one a heritage clause's expression really evaluates), and a
13
+ * class member the program never names is exactly as dead as an unreferenced
14
+ * top-level declaration -- `reachability.ts` is the one authority on the
15
+ * latter two, asked here for the identical reason `census.ts` asks it.
16
+ */
17
+ export declare const cellCandidatesOf: <T extends ts.Node>(reachable: ProgramReachability, files: readonly ts.SourceFile[], test: (node: ts.Node) => node is T) => T[];
@@ -0,0 +1,35 @@
1
+ import ts from 'typescript';
2
+ import { isAmbientDeclaration } from '../../ambient.js';
3
+ import { forEachReachableStatement } from '../reachability.js';
4
+ /**
5
+ * Every reachable node in the program that `test` admits -- one walk shared
6
+ * by every domain's `candidatesOf`, instead of the six private walks
7
+ * the value-flow survey measured (9, 4, 6, 7, 6 and 8 of them). A policy states
8
+ * WHAT shape of declaration it is looking for; it never re-derives which part
9
+ * of the program it is allowed to look at.
10
+ *
11
+ * Mirrors `census.ts`'s own walk: an ambient module's body describes host
12
+ * values none of which execute, a type annotation contains no operations
13
+ * (except the one a heritage clause's expression really evaluates), and a
14
+ * class member the program never names is exactly as dead as an unreferenced
15
+ * top-level declaration -- `reachability.ts` is the one authority on the
16
+ * latter two, asked here for the identical reason `census.ts` asks it.
17
+ */
18
+ export const cellCandidatesOf = (reachable, files, test) => {
19
+ const found = [];
20
+ for (const file of files) {
21
+ const visit = (node) => {
22
+ if (ts.isModuleDeclaration(node) && isAmbientDeclaration(node))
23
+ return;
24
+ if (ts.isTypeNode(node) && !ts.isExpressionWithTypeArguments(node))
25
+ return;
26
+ if (reachable.memberIsPruned(node))
27
+ return;
28
+ if (test(node))
29
+ found.push(node);
30
+ ts.forEachChild(node, visit);
31
+ };
32
+ forEachReachableStatement(reachable, file, visit);
33
+ }
34
+ return found;
35
+ };
@@ -0,0 +1,19 @@
1
+ import ts from 'typescript';
2
+ import type { IdentityTable } from '../identities.js';
3
+ import type { ValueFlowIndex } from '../flow/model.js';
4
+ import type { CellFactsTable } from './model.js';
5
+ import type { CellPolicyRegistry } from './registry.js';
6
+ /**
7
+ * The engine every evidence policy runs through: for each candidate
8
+ * declaration, read the shared flow index's writes to it, let the policy's
9
+ * per-edge rules decide which ones are evidence, join what is admitted, and
10
+ * resolve `stated ?? writeJoin ?? checker` -- the one join
11
+ * the single-census frontend asks for, computed once here instead
12
+ * of once per domain.
13
+ *
14
+ * This function is the whole of what used to be six private compositions. A
15
+ * policy states WHAT counts as evidence and how to join it; this states HOW
16
+ * a cell's three primitives combine into one answer, and it is the only place
17
+ * that does.
18
+ */
19
+ export declare const buildCellFactsTable: (identities: IdentityTable, flow: ValueFlowIndex, files: readonly ts.SourceFile[], registry: CellPolicyRegistry) => CellFactsTable;
@@ -0,0 +1,90 @@
1
+ import ts from 'typescript';
2
+ /**
3
+ * The engine every evidence policy runs through: for each candidate
4
+ * declaration, read the shared flow index's writes to it, let the policy's
5
+ * per-edge rules decide which ones are evidence, join what is admitted, and
6
+ * resolve `stated ?? writeJoin ?? checker` -- the one join
7
+ * the single-census frontend asks for, computed once here instead
8
+ * of once per domain.
9
+ *
10
+ * This function is the whole of what used to be six private compositions. A
11
+ * policy states WHAT counts as evidence and how to join it; this states HOW
12
+ * a cell's three primitives combine into one answer, and it is the only place
13
+ * that does.
14
+ */
15
+ export const buildCellFactsTable = (identities, flow, files, registry) => {
16
+ const all = [];
17
+ const byId = new Map();
18
+ for (const policy of registry.policies) {
19
+ for (const declaration of policy.candidatesOf(files)) {
20
+ const writes = policy.writesOf ? policy.writesOf(declaration, flow) : flow.writesToDeclaration(declaration);
21
+ const admitted = [];
22
+ for (const write of writes) {
23
+ const rule = policy.rules[write.edge];
24
+ if (!rule)
25
+ continue;
26
+ const value = rule(write, declaration);
27
+ if (value !== null)
28
+ admitted.push({ write, value });
29
+ }
30
+ const writeJoin = admitted.length > 0 ? policy.combine(admitted) : null;
31
+ const stated = policy.statedAt(declaration);
32
+ const checkerValue = policy.checkerAt(declaration);
33
+ const resolved = stated ?? writeJoin ?? checkerValue;
34
+ // A declaration this program's identity table refuses (an uninstantiated
35
+ // generic's own body, walked by nothing) is not a cell any consumer can
36
+ // NAME either -- `identities.ts` is the one authority on that, and a cell
37
+ // census asking it a second time would be exactly the two-authorities
38
+ // defect this table exists to end.
39
+ let id;
40
+ try {
41
+ id = identities.declarationIdOf(declaration);
42
+ }
43
+ catch {
44
+ continue;
45
+ }
46
+ const facts = { domain: policy.domain, declaration, id, stated, writeJoin, checker: checkerValue, resolved };
47
+ all.push(facts);
48
+ const bucket = byId.get(id);
49
+ if (bucket)
50
+ bucket.push(facts);
51
+ else
52
+ byId.set(id, [facts]);
53
+ }
54
+ }
55
+ const twoOwnerClaims = [];
56
+ const refusals = [];
57
+ for (const [id, facts] of byId) {
58
+ const domains = [...new Set(facts.map((fact) => fact.domain))];
59
+ if (domains.length <= 1)
60
+ continue;
61
+ twoOwnerClaims.push({ id, domains });
62
+ refusals.push(cellOwnerRefusal(id, domains, facts));
63
+ }
64
+ return { all, byId, twoOwnerClaims, refusals };
65
+ };
66
+ /**
67
+ * Builds the typed refusal for one collision. `facts` all share `id`, and
68
+ * `identities.declarationIdOf` names one declaration node -- every entry's
69
+ * `declaration` is the same node, so the first is as good as any for the
70
+ * `SyntaxKind`/location the reason and key report.
71
+ */
72
+ const cellOwnerRefusal = (id, domains, facts) => {
73
+ const sortedDomains = [...domains].sort();
74
+ const [first] = facts;
75
+ const declaration = first ? first.declaration : null;
76
+ const kindName = declaration ? ts.SyntaxKind[declaration.kind] : 'unknown';
77
+ const where = declaration
78
+ ? (() => {
79
+ const sourceFile = declaration.getSourceFile();
80
+ const { line } = sourceFile.getLineAndCharacterOfPosition(declaration.getStart(sourceFile));
81
+ return `${sourceFile.fileName}:${line + 1}`;
82
+ })()
83
+ : String(id);
84
+ return {
85
+ stage: 'cells',
86
+ key: `cell-owner:${sortedDomains.join('+')}:${kindName}`,
87
+ reason: `${kindName} at ${where} is claimed by ${sortedDomains.length} cell-evidence domains (${sortedDomains.join(', ')}); a two-owner claim is a census disagreement, not a precedence question`,
88
+ owner: String(id)
89
+ };
90
+ };
@@ -0,0 +1,10 @@
1
+ export type { CellDomain, CellFacts, CellFactsTable, CellOwnerClaim, CellRefusal, CellRefusalKey, CellValue } from './model.js';
2
+ export { cellType } from './model.js';
3
+ export type { CellEvidenceContribution, CellEvidencePolicy, CellEvidenceRule } from './policy.js';
4
+ export { rulesFor } from './policy.js';
5
+ export type { CellPolicyRegistry } from './registry.js';
6
+ export { createCellPolicyRegistry } from './registry.js';
7
+ export { buildCellFactsTable } from './facts.js';
8
+ export type { CellFactsAgreement, CellFactsPublication } from './agreement.js';
9
+ export { cellFactsAgreementOf, publishCellFacts } from './agreement.js';
10
+ export { defaultCellEvidencePolicies } from './policies/index.js';
@@ -0,0 +1,6 @@
1
+ export { cellType } from './model.js';
2
+ export { rulesFor } from './policy.js';
3
+ export { createCellPolicyRegistry } from './registry.js';
4
+ export { buildCellFactsTable } from './facts.js';
5
+ export { cellFactsAgreementOf, publishCellFacts } from './agreement.js';
6
+ export { defaultCellEvidencePolicies } from './policies/index.js';
@@ -0,0 +1,98 @@
1
+ import type ts from 'typescript';
2
+ import type { DeclarationId } from '../../../identity/ids.js';
3
+ import type { CollectionTypeArguments } from '../collection-bindings.js';
4
+ import type { ObjectBagShape } from '../object-bag-bindings.js';
5
+ /**
6
+ * Replaced rather than instrumented: the six private censuses that
7
+ * answer "what can this storage cell hold" (`parameter-bindings.ts`,
8
+ * `return-bindings.ts`, `local-bindings.ts`, `field-bindings.ts`,
9
+ * `collection-bindings.ts`, `object-bag-bindings.ts`) become six evidence
10
+ * POLICIES over one shared table, keyed by domain the way every other census
11
+ * in the registry (2.4) is keyed by the question it answers, never by its
12
+ * position in `structural.ts`'s chain.
13
+ */
14
+ export type CellDomain = 'parameter' | 'return' | 'local' | 'field' | 'collection' | 'bag';
15
+ /**
16
+ * One answer language for all six domains, replacing the three the audit in
17
+ * the value-flow survey found (`ts.Type | null`, an `ObjectBagShape`, a list of
18
+ * union arms). Four domains (parameter, return, local, field) answer in
19
+ * `ts.Type`-space and use only `type`; the other two keep their own richer
20
+ * shape rather than being forced into one that cannot state a key/value pair
21
+ * or a member map -- a census answers one question program-wide, publishes a sealed table,
22
+ * entry and this directory's own README-shaped comment in `facts.ts` for why
23
+ * that is a closed union rather than a fourth private shape.
24
+ */
25
+ export type CellValue = {
26
+ readonly kind: 'type';
27
+ readonly type: ts.Type;
28
+ } | {
29
+ readonly kind: 'collection-arguments';
30
+ readonly arguments: CollectionTypeArguments;
31
+ } | {
32
+ readonly kind: 'bag-shape';
33
+ readonly shape: ObjectBagShape;
34
+ };
35
+ /** Wraps a `ts.Type` answer -- the language the four ported policies (parameter, return, local, field) speak. */
36
+ export declare const cellType: (type: ts.Type) => CellValue;
37
+ /**
38
+ * One domain's answer for one declaration, in the three primitives
39
+ * The value-flow survey's names: `stated` (the program's own annotation),
40
+ * `writeJoin` (what the evidence policy's admitted writes agree on), and
41
+ * `checker` (the checker's own answer, always present as the fallback of last
42
+ * resort). `resolved` is `stated ?? writeJoin ?? checker` -- the one join,
43
+ * asked once, rather than a position in an ordered chain.
44
+ */
45
+ export interface CellFacts {
46
+ readonly domain: CellDomain;
47
+ readonly declaration: ts.Node;
48
+ readonly id: DeclarationId;
49
+ readonly stated: CellValue | null;
50
+ readonly writeJoin: CellValue | null;
51
+ readonly checker: CellValue | null;
52
+ readonly resolved: CellValue | null;
53
+ }
54
+ /**
55
+ * A declaration two domains both published `CellFacts` for -- recorded here,
56
+ * not refused. Phase 4.2 turns each of these into a `CellRefusal` below;
57
+ * this shape stays as the raw evidence (which domains, which id) that the
58
+ * refusal is built from, the way `ir/certify.ts`'s `CapabilityDemand` stays
59
+ * separate from the `Refusal` it can produce.
60
+ */
61
+ export interface CellOwnerClaim {
62
+ readonly id: DeclarationId;
63
+ readonly domains: readonly CellDomain[];
64
+ }
65
+ /**
66
+ * Phase 4.2: a `CellOwnerClaim` restated in the compiler's refusal
67
+ * vocabulary (`ir/refusal.ts`'s `Refusal`: `stage`, `key`, `reason`,
68
+ * `owner`) rather than left as a count. Two evidence domains both claiming
69
+ * one declaration is a census disagreement -- the honest answer names both
70
+ * domains and the declaration, the way `field-bindings.ts` and
71
+ * `collection-bindings.ts` disagreeing about one declaration
72
+ * (`collection-bindings.ts:200-224`) never had a name before.
73
+ *
74
+ * `stage: 'cells'` and `key`'s `cell-owner:` prefix are their own namespace,
75
+ * not a member of `ir/refusal.ts`'s `RefusalStage`/`RefusalKey` unions: a
76
+ * cell-domain collision is decided before there is a plan to certify
77
+ * against, and joining `CompileResult.refusals` is a later phase's call
78
+ * (nothing reads this table yet -- see `agreement.ts`'s header on why this
79
+ * whole publication is additive-only for now). The key embeds the domain
80
+ * pair and the declaration's `ts.SyntaxKind` name -- `parameter.ts` and
81
+ * `local-bindings.ts`'s own refusal-key convention
82
+ * (`function-escapes:${ts.SyntaxKind[...]}`) -- so grouping refusals by
83
+ * `key` is grouping by root without parsing `reason`.
84
+ */
85
+ export type CellRefusalKey = `cell-owner:${string}`;
86
+ export interface CellRefusal {
87
+ readonly stage: 'cells';
88
+ readonly key: CellRefusalKey;
89
+ readonly reason: string;
90
+ readonly owner: string;
91
+ }
92
+ /** The published table: every fact, indexed by declaration identity, plus every collision found while indexing, typed. */
93
+ export interface CellFactsTable {
94
+ readonly all: readonly CellFacts[];
95
+ readonly byId: ReadonlyMap<DeclarationId, readonly CellFacts[]>;
96
+ readonly twoOwnerClaims: readonly CellOwnerClaim[];
97
+ readonly refusals: readonly CellRefusal[];
98
+ }
@@ -0,0 +1,2 @@
1
+ /** Wraps a `ts.Type` answer -- the language the four ported policies (parameter, return, local, field) speak. */
2
+ export const cellType = (type) => ({ kind: 'type', type });