@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,37 @@
1
+ import ts from 'typescript';
2
+ import { cellCandidatesOf } from '../candidates.js';
3
+ import { cellType } from '../model.js';
4
+ import { rulesFor } from '../policy.js';
5
+ import { combineTypesByJoin } from './shared.js';
6
+ const isUnannotatedUninitializedLocal = (node) => ts.isVariableDeclaration(node) && ts.isIdentifier(node.name) && node.type === undefined && node.initializer === undefined;
7
+ /**
8
+ * The LOCAL domain: `local-bindings.ts`'s question ("an unannotated
9
+ * `let`/`var` cell with no initializer, filled in by exactly the writes the
10
+ * program makes to it"), restated over the shared flow index's
11
+ * `identifier-assignment` and `logical-assignment` edges.
12
+ *
13
+ * `compound-assignment` (`x += 1`) is deliberately given no rule: per
14
+ * `flow/model.ts`'s own doc, that edge states existence and a DERIVED value,
15
+ * never a fresh one, so admitting it here would join the cell's own prior
16
+ * (unknown) contents into its write-join. `rulesFor` skipping an edge is the
17
+ * correct, sound default -- soundness cuts one way here:
18
+ * missing evidence is a box, joining the wrong evidence is a silent
19
+ * miscompile, and this domain refuses the second, never the first.
20
+ */
21
+ export const createLocalCellPolicy = (checker, reachable) => {
22
+ const valueRule = (write) => write.value ? cellType(checker.getTypeAtLocation(write.value)) : null;
23
+ return {
24
+ domain: 'local',
25
+ candidatesOf: (files) => cellCandidatesOf(reachable, files, isUnannotatedUninitializedLocal),
26
+ // Candidates have no annotation by construction; kept as a real read
27
+ // rather than a constant `null` so a looser candidate set still gets a
28
+ // correct answer instead of a silently stale one.
29
+ statedAt: () => null,
30
+ checkerAt: (declaration) => cellType(checker.getTypeAtLocation(declaration)),
31
+ rules: rulesFor([
32
+ ['identifier-assignment', valueRule],
33
+ ['logical-assignment', valueRule]
34
+ ]),
35
+ combine: combineTypesByJoin(checker)
36
+ };
37
+ };
@@ -0,0 +1,28 @@
1
+ import ts from 'typescript';
2
+ import type { ProgramReachability } from '../../reachability.js';
3
+ import type { CellEvidencePolicy } from '../policy.js';
4
+ /**
5
+ * The PARAMETER domain: `parameter-bindings.ts`'s question ("the type a
6
+ * parameter the program never annotated is actually called with"), restated
7
+ * as one evidence rule over the shared flow index's `call-argument` edge.
8
+ *
9
+ * `flow/model.ts` already resolves an argument to the callee's parameter slot
10
+ * wherever the walk could name the callee (the value-flow survey's callee row), so
11
+ * this policy does no call-site resolution of its own -- it reads
12
+ * `flow.writesToDeclaration(parameter)` and asks only "does this edge state a
13
+ * value", which is the one thing a `CellEvidenceRule` may ask.
14
+ *
15
+ * `parameter-bindings.ts` additionally refuses a parameter that escapes as a
16
+ * value to an unresolved caller, is itself reassigned, or whose call sites'
17
+ * types merely differ rather than provably agreeing (`widestOf`'s guard) --
18
+ * none of that policy is re-implemented here. `joinOfWrites` (via
19
+ * `combineTypesByJoin`) already returns `null` on genuine disagreement, so
20
+ * soundness against a wrong join is unaffected; what is not yet ported is the
21
+ * ESCAPE refusal, so this policy's write-join can be more OPTIMISTIC than the
22
+ * existing census's about a parameter whose name leaks somewhere this domain
23
+ * does not itself track. That is safe for phase 4.1 -- nothing downstream
24
+ * reads this table -- and is exactly the "not yet a policy" gap this
25
+ * refactor's report calls out for phase 4.2 to close before anything is
26
+ * wired to replace `parameter-bindings.ts`.
27
+ */
28
+ export declare const createParameterCellPolicy: (checker: ts.TypeChecker, reachable: ProgramReachability) => CellEvidencePolicy;
@@ -0,0 +1,39 @@
1
+ import ts from 'typescript';
2
+ import { cellCandidatesOf } from '../candidates.js';
3
+ import { cellType } from '../model.js';
4
+ import { rulesFor } from '../policy.js';
5
+ import { checkerTypeAt, combineTypesByJoin, statedTypeOf } from './shared.js';
6
+ /**
7
+ * The PARAMETER domain: `parameter-bindings.ts`'s question ("the type a
8
+ * parameter the program never annotated is actually called with"), restated
9
+ * as one evidence rule over the shared flow index's `call-argument` edge.
10
+ *
11
+ * `flow/model.ts` already resolves an argument to the callee's parameter slot
12
+ * wherever the walk could name the callee (the value-flow survey's callee row), so
13
+ * this policy does no call-site resolution of its own -- it reads
14
+ * `flow.writesToDeclaration(parameter)` and asks only "does this edge state a
15
+ * value", which is the one thing a `CellEvidenceRule` may ask.
16
+ *
17
+ * `parameter-bindings.ts` additionally refuses a parameter that escapes as a
18
+ * value to an unresolved caller, is itself reassigned, or whose call sites'
19
+ * types merely differ rather than provably agreeing (`widestOf`'s guard) --
20
+ * none of that policy is re-implemented here. `joinOfWrites` (via
21
+ * `combineTypesByJoin`) already returns `null` on genuine disagreement, so
22
+ * soundness against a wrong join is unaffected; what is not yet ported is the
23
+ * ESCAPE refusal, so this policy's write-join can be more OPTIMISTIC than the
24
+ * existing census's about a parameter whose name leaks somewhere this domain
25
+ * does not itself track. That is safe for phase 4.1 -- nothing downstream
26
+ * reads this table -- and is exactly the "not yet a policy" gap this
27
+ * refactor's report calls out for phase 4.2 to close before anything is
28
+ * wired to replace `parameter-bindings.ts`.
29
+ */
30
+ export const createParameterCellPolicy = (checker, reachable) => ({
31
+ domain: 'parameter',
32
+ candidatesOf: (files) => cellCandidatesOf(reachable, files, (node) => ts.isParameter(node) && node.type === undefined && ts.isIdentifier(node.name) && node.dotDotDotToken === undefined),
33
+ statedAt: (declaration) => statedTypeOf(checker, declaration.type),
34
+ checkerAt: checkerTypeAt(checker),
35
+ rules: rulesFor([
36
+ ['call-argument', (write) => (write.value ? cellType(checker.getTypeAtLocation(write.value)) : null)]
37
+ ]),
38
+ combine: combineTypesByJoin(checker)
39
+ });
@@ -0,0 +1,26 @@
1
+ import ts from 'typescript';
2
+ import type { ProgramReachability } from '../../reachability.js';
3
+ import type { CellEvidencePolicy } from '../policy.js';
4
+ /**
5
+ * The RETURN domain: `return-bindings.ts`'s question, restated as one
6
+ * evidence rule over the shared flow index's `return` edge, exactly the way
7
+ * `parameter-bindings.ts` restates as `call-argument`.
8
+ *
9
+ * `flow/model.ts` already resolves a `return expr` to its ENCLOSING
10
+ * function's return cell (the value-flow survey's `RET: Y` column), so
11
+ * `flow.writesToDeclaration(declaration)` needs no recursion tracking of its
12
+ * own here -- unlike `return-bindings.ts`'s `resolvedReturnTypeOf`, which
13
+ * exists mainly to CALL a not-yet-settled callee's return from a parameter
14
+ * census, a question this policy does not answer at all (that is
15
+ * `parameter-bindings.ts`'s own internal fixpoint, item 8 of the edge
16
+ * matrix, and not a write-join over one cell's own writes).
17
+ *
18
+ * `checkerAt` reads the SIGNATURE's return type, not
19
+ * `checker.getTypeAtLocation(declaration)` -- the latter is the function's
20
+ * own callable type (`() => number`), and this domain's cell is what the
21
+ * body produces, not the function object itself. This is the one place the
22
+ * "checker" primitive is not a plain `getTypeAtLocation` call, because the
23
+ * declaration node names two different cells depending on who reads it: the
24
+ * ALLOCATION producer wants the callable, this domain wants the result.
25
+ */
26
+ export declare const createReturnCellPolicy: (checker: ts.TypeChecker, reachable: ProgramReachability) => CellEvidencePolicy;
@@ -0,0 +1,45 @@
1
+ import ts from 'typescript';
2
+ import { cellCandidatesOf } from '../candidates.js';
3
+ import { cellType } from '../model.js';
4
+ import { rulesFor } from '../policy.js';
5
+ import { combineTypesByJoin, statedTypeOf } from './shared.js';
6
+ const isReturnLikeCandidate = (node) => (ts.isFunctionDeclaration(node) ||
7
+ ts.isFunctionExpression(node) ||
8
+ ts.isArrowFunction(node) ||
9
+ ts.isMethodDeclaration(node) ||
10
+ ts.isGetAccessorDeclaration(node)) &&
11
+ node.body !== undefined &&
12
+ node.type === undefined;
13
+ /**
14
+ * The RETURN domain: `return-bindings.ts`'s question, restated as one
15
+ * evidence rule over the shared flow index's `return` edge, exactly the way
16
+ * `parameter-bindings.ts` restates as `call-argument`.
17
+ *
18
+ * `flow/model.ts` already resolves a `return expr` to its ENCLOSING
19
+ * function's return cell (the value-flow survey's `RET: Y` column), so
20
+ * `flow.writesToDeclaration(declaration)` needs no recursion tracking of its
21
+ * own here -- unlike `return-bindings.ts`'s `resolvedReturnTypeOf`, which
22
+ * exists mainly to CALL a not-yet-settled callee's return from a parameter
23
+ * census, a question this policy does not answer at all (that is
24
+ * `parameter-bindings.ts`'s own internal fixpoint, item 8 of the edge
25
+ * matrix, and not a write-join over one cell's own writes).
26
+ *
27
+ * `checkerAt` reads the SIGNATURE's return type, not
28
+ * `checker.getTypeAtLocation(declaration)` -- the latter is the function's
29
+ * own callable type (`() => number`), and this domain's cell is what the
30
+ * body produces, not the function object itself. This is the one place the
31
+ * "checker" primitive is not a plain `getTypeAtLocation` call, because the
32
+ * declaration node names two different cells depending on who reads it: the
33
+ * ALLOCATION producer wants the callable, this domain wants the result.
34
+ */
35
+ export const createReturnCellPolicy = (checker, reachable) => ({
36
+ domain: 'return',
37
+ candidatesOf: (files) => cellCandidatesOf(reachable, files, isReturnLikeCandidate),
38
+ statedAt: (declaration) => statedTypeOf(checker, declaration.type),
39
+ checkerAt: (declaration) => {
40
+ const signature = checker.getSignatureFromDeclaration(declaration);
41
+ return cellType(signature ? signature.getReturnType() : checker.getTypeAtLocation(declaration));
42
+ },
43
+ rules: rulesFor([['return', (write) => (write.value ? cellType(checker.getTypeAtLocation(write.value)) : null)]]),
44
+ combine: combineTypesByJoin(checker)
45
+ });
@@ -0,0 +1,33 @@
1
+ import type ts from 'typescript';
2
+ import { type CellValue } from '../model.js';
3
+ import type { CellEvidenceContribution } from '../policy.js';
4
+ /**
5
+ * The join itself, over plain `CellValue`s -- factored out of
6
+ * `combineTypesByJoin` so `collection.ts`'s per-slot combine can apply the
7
+ * SAME join twice (once for the key group, once for the value group)
8
+ * instead of restating `joinOfWrites`'s unwrap-or-refuse rule a second time.
9
+ */
10
+ export declare const joinCellTypeValues: (checker: ts.TypeChecker, values: readonly CellValue[]) => ts.Type | null;
11
+ /**
12
+ * The combinator every `ts.Type`-space domain (parameter, return, local,
13
+ * field) shares: the exact join `parameter-bindings.ts` and its siblings
14
+ * already use over an argument/return/write set, reused rather than
15
+ * re-derived -- `joinOfWrites` is a pure function these censuses already
16
+ * export, and the rule to add exports only if a
17
+ * policy needs to call an existing pure helper" is exactly this case.
18
+ *
19
+ * These four domains join their WHOLE cell into one answer, so the
20
+ * `CellEvidenceContribution.write` half of each contribution (which slot,
21
+ * which member) is simply not asked -- `collection`/`bag` are the two
22
+ * domains where it is.
23
+ */
24
+ export declare const combineTypesByJoin: (checker: ts.TypeChecker) => (contributions: readonly CellEvidenceContribution[]) => CellValue | null;
25
+ /** The checker's own answer at a declaration, wrapped -- always present, the fallback of last resort. */
26
+ export declare const checkerTypeAt: (checker: ts.TypeChecker) => (declaration: ts.Node) => CellValue | null;
27
+ /**
28
+ * The program's own annotation, when a declaration shape carries one and
29
+ * states something usable -- `null` covers both "no annotation" and "the
30
+ * annotation is `any`/`void`/`never`, i.e. states nothing more than the
31
+ * checker's own vacuous answer would".
32
+ */
33
+ export declare const statedTypeOf: (checker: ts.TypeChecker, typeNode: ts.TypeNode | undefined) => CellValue | null;
@@ -0,0 +1,45 @@
1
+ import { isUnusableEvidence, joinOfWrites } from '../../derived-expression-type.js';
2
+ import { cellType } from '../model.js';
3
+ /**
4
+ * The join itself, over plain `CellValue`s -- factored out of
5
+ * `combineTypesByJoin` so `collection.ts`'s per-slot combine can apply the
6
+ * SAME join twice (once for the key group, once for the value group)
7
+ * instead of restating `joinOfWrites`'s unwrap-or-refuse rule a second time.
8
+ */
9
+ export const joinCellTypeValues = (checker, values) => {
10
+ const types = values.flatMap((value) => (value.kind === 'type' ? [value.type] : []));
11
+ if (types.length !== values.length)
12
+ return null;
13
+ return joinOfWrites(checker, types);
14
+ };
15
+ /**
16
+ * The combinator every `ts.Type`-space domain (parameter, return, local,
17
+ * field) shares: the exact join `parameter-bindings.ts` and its siblings
18
+ * already use over an argument/return/write set, reused rather than
19
+ * re-derived -- `joinOfWrites` is a pure function these censuses already
20
+ * export, and the rule to add exports only if a
21
+ * policy needs to call an existing pure helper" is exactly this case.
22
+ *
23
+ * These four domains join their WHOLE cell into one answer, so the
24
+ * `CellEvidenceContribution.write` half of each contribution (which slot,
25
+ * which member) is simply not asked -- `collection`/`bag` are the two
26
+ * domains where it is.
27
+ */
28
+ export const combineTypesByJoin = (checker) => (contributions) => {
29
+ const joined = joinCellTypeValues(checker, contributions.map((contribution) => contribution.value));
30
+ return joined ? cellType(joined) : null;
31
+ };
32
+ /** The checker's own answer at a declaration, wrapped -- always present, the fallback of last resort. */
33
+ export const checkerTypeAt = (checker) => (declaration) => cellType(checker.getTypeAtLocation(declaration));
34
+ /**
35
+ * The program's own annotation, when a declaration shape carries one and
36
+ * states something usable -- `null` covers both "no annotation" and "the
37
+ * annotation is `any`/`void`/`never`, i.e. states nothing more than the
38
+ * checker's own vacuous answer would".
39
+ */
40
+ export const statedTypeOf = (checker, typeNode) => {
41
+ if (!typeNode)
42
+ return null;
43
+ const stated = checker.getTypeFromTypeNode(typeNode);
44
+ return isUnusableEvidence(stated) ? null : cellType(stated);
45
+ };
@@ -0,0 +1,72 @@
1
+ import type ts from 'typescript';
2
+ import type { FlowEdgeKind, ValueFlowIndex, ValueWrite } from '../flow/model.js';
3
+ import type { CellDomain, CellValue } from './model.js';
4
+ /**
5
+ * One domain's reading of one write: the value it contributes to the cell's
6
+ * write-join, or `null` to sit out. `null` is the ordinary answer for an edge
7
+ * that exists but states no fresh value for THIS domain -- a `compound-
8
+ * assignment` (existence only, per `flow/model.ts`'s own doc on the kind) or
9
+ * a write whose value this domain cannot resolve to anything usable.
10
+ */
11
+ export type CellEvidenceRule = (write: ValueWrite, declaration: ts.Node) => CellValue | null;
12
+ /**
13
+ * One admitted write, paired with the value its rule produced -- what
14
+ * `combine` actually receives. Plain `CellValue`s were enough while every
15
+ * ported domain (parameter, return, local, field) joined its whole cell into
16
+ * ONE answer; `collection`/`bag` join per SLOT (`collection-key` vs
17
+ * `collection-value`) or per MEMBER NAME (`ValueWrite.member`), a question
18
+ * `combine` cannot ask once the write that produced a value is discarded.
19
+ * Keeping the pair is the whole extension `policies/index.ts`'s header calls
20
+ * for -- `combine` was already free to look at `write.slot`/`write.member`
21
+ * (both were already on `ValueWrite`, see `flow/model.ts`), it simply never
22
+ * received the write to look at.
23
+ */
24
+ export interface CellEvidenceContribution {
25
+ readonly write: ValueWrite;
26
+ readonly value: CellValue;
27
+ }
28
+ /**
29
+ * A census, restated as data: `(domain, FlowEdgeKind) -> evidence rule`,
30
+ * the "cell census" row: a capability is keyed rows, never an ordered chain. Nothing here
31
+ * is ordered -- a policy is asked about every edge kind it registered a rule
32
+ * for, independent of every other policy and of any position in a chain.
33
+ */
34
+ export interface CellEvidencePolicy {
35
+ readonly domain: CellDomain;
36
+ /** Every declaration this domain is willing to answer for, in this program. */
37
+ readonly candidatesOf: (files: readonly ts.SourceFile[]) => Iterable<ts.Declaration>;
38
+ /** The program's own annotation for this declaration, or `null` when it stated none. */
39
+ readonly statedAt: (declaration: ts.Node) => CellValue | null;
40
+ /** The checker's own answer -- always present, the fallback of last resort. */
41
+ readonly checkerAt: (declaration: ts.Node) => CellValue | null;
42
+ /**
43
+ * The writes this domain admits as evidence for one candidate. Defaults to
44
+ * `flow.writesToDeclaration(declaration)` (every ported `ts.Type`-space
45
+ * domain relies on that default and states no `writesOf` of its own) --
46
+ * `collection`'s own reason to override it is the OTHER stated obstacle:
47
+ * `collection-bindings.ts` follows a value's identity through an ALIAS
48
+ * CLOSURE (`const helper = []; fill(helper)`, `this.cache.set(...)`) that a
49
+ * single declaration's own writes cannot state, because the evidence lands
50
+ * on a DIFFERENT declaration (a parameter the value was passed to, a
51
+ * property that re-exports it) than the candidate this policy is answering
52
+ * for. A policy that needs that closure computes it itself, over the same
53
+ * `flow.flowsFromDeclaration` reverse edge `collection-bindings.ts` already
54
+ * walks -- this hook is what lets it do so without forcing every OTHER
55
+ * domain to pay for a closure it never needed.
56
+ */
57
+ readonly writesOf?: (declaration: ts.Node, flow: ValueFlowIndex) => readonly ValueWrite[];
58
+ /** One evidence rule per `FlowEdgeKind` this domain admits as a write; an edge with no entry contributes nothing. */
59
+ readonly rules: Partial<Readonly<Record<FlowEdgeKind, CellEvidenceRule>>>;
60
+ /** The join over every admitted write, or `null` when they disagree -- never merged into a wider guess. */
61
+ readonly combine: (contributions: readonly CellEvidenceContribution[]) => CellValue | null;
62
+ }
63
+ /**
64
+ * Builds a policy's `rules` table from `(edge, rule)` pairs and throws on a
65
+ * second rule for one edge -- the mechanical form of table 2.8's collision
66
+ * rule for a cell census: "a second rule for one key throws at census
67
+ * construction." A plain object literal cannot enforce this on its own (a
68
+ * repeated key just silently overwrites the first), so every policy in this
69
+ * directory builds its `rules` through this function rather than writing the
70
+ * object literal by hand.
71
+ */
72
+ export declare const rulesFor: (entries: readonly (readonly [FlowEdgeKind, CellEvidenceRule])[]) => Partial<Readonly<Record<FlowEdgeKind, CellEvidenceRule>>>;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Builds a policy's `rules` table from `(edge, rule)` pairs and throws on a
3
+ * second rule for one edge -- the mechanical form of table 2.8's collision
4
+ * rule for a cell census: "a second rule for one key throws at census
5
+ * construction." A plain object literal cannot enforce this on its own (a
6
+ * repeated key just silently overwrites the first), so every policy in this
7
+ * directory builds its `rules` through this function rather than writing the
8
+ * object literal by hand.
9
+ */
10
+ export const rulesFor = (entries) => {
11
+ const rules = {};
12
+ for (const [edge, rule] of entries) {
13
+ if (rules[edge] !== undefined)
14
+ throw new Error(`cell evidence policy: two rules registered for edge kind '${edge}'`);
15
+ rules[edge] = rule;
16
+ }
17
+ return rules;
18
+ };
@@ -0,0 +1,14 @@
1
+ import type { CellEvidencePolicy } from './policy.js';
2
+ /** Every domain's evidence policy, registered once. */
3
+ export interface CellPolicyRegistry {
4
+ readonly policies: readonly CellEvidencePolicy[];
5
+ }
6
+ /**
7
+ * Registers one evidence policy per domain -- table 2.8's collision rule for
8
+ * a cell census, on the other axis `policy.ts`'s `rulesFor` does not cover:
9
+ * two policies both claiming one domain, rather than two rules inside one
10
+ * policy. Thrown at construction, not discovered later as two domains quietly
11
+ * shadowing each other the way `structural.ts`'s `typeAt` chain lets a
12
+ * position decide today.
13
+ */
14
+ export declare const createCellPolicyRegistry: (policies: readonly CellEvidencePolicy[]) => CellPolicyRegistry;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Registers one evidence policy per domain -- table 2.8's collision rule for
3
+ * a cell census, on the other axis `policy.ts`'s `rulesFor` does not cover:
4
+ * two policies both claiming one domain, rather than two rules inside one
5
+ * policy. Thrown at construction, not discovered later as two domains quietly
6
+ * shadowing each other the way `structural.ts`'s `typeAt` chain lets a
7
+ * position decide today.
8
+ */
9
+ export const createCellPolicyRegistry = (policies) => {
10
+ const seen = new Set();
11
+ for (const policy of policies) {
12
+ if (seen.has(policy.domain))
13
+ throw new Error(`cell evidence policy: domain '${policy.domain}' registered twice`);
14
+ seen.add(policy.domain);
15
+ }
16
+ return { policies };
17
+ };
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Which write-discovery census refused.
3
+ *
4
+ * The same six domains `cells/` registers as evidence policies, plus
5
+ * `jsdoc-type-name`, the one smaller census that publishes a refusal
6
+ * vocabulary of its own. A domain is spelled once, here, because it is half of
7
+ * a refusal's key and a domain spelled twice is two vocabularies.
8
+ */
9
+ export type CensusDomain = 'parameter' | 'return' | 'local' | 'field' | 'collection' | 'bag' | 'jsdoc-type-name';
10
+ /**
11
+ * `census:<domain>:<root>` -- the ROOT, never the prose.
12
+ *
13
+ * A refusal's key is what groups it with the others that share a cause, so it
14
+ * must name the cause and nothing else: no node text, no type spelling, no
15
+ * count, nothing that varies between two instances of one defect. The prose
16
+ * belongs in `reason`, where it can name the specific node. This is the same
17
+ * split `cells/model.ts`'s `CellRefusalKey` already makes, and the same reason
18
+ * `parameter-bindings.ts` keyed its count map by reason rather than by site.
19
+ */
20
+ export type CensusRefusalKey = `census:${CensusDomain}:${string}`;
21
+ /**
22
+ * A census refusal in the compiler's one refusal vocabulary
23
+ * (`ir/refusal.ts`'s `Refusal`).
24
+ *
25
+ * These used to be eight private `ReadonlyMap<string, number>`s of hand-written
26
+ * prose -- a count per reason, with no owner, reaching `CompileResult` only as
27
+ * `censusAccounting` and never joining `CompileResult.refusals` the way every
28
+ * other stage's refusals do. A count says a cell went untyped; it cannot say
29
+ * WHICH cell, so nothing downstream could act on one and nothing did. Carrying
30
+ * the owner is what makes a census refusal the same kind of object as an ABI
31
+ * blocker or a print refusal, and lets one list answer "what did this
32
+ * compilation refuse, and where" (the frontend is replaced, not instrumented).
33
+ *
34
+ * Declared here rather than as an `ir/refusal.ts` `Refusal` for the reason
35
+ * `cells/model.ts` already gives for `CellRefusal`: the frontend settles long
36
+ * before there is a plan to certify against, and semantics must not import the
37
+ * IR to name its own refusals. `compiler.ts` sees both layers and is where the
38
+ * two lists join.
39
+ */
40
+ export interface CensusRefusal {
41
+ readonly stage: 'census';
42
+ readonly key: CensusRefusalKey;
43
+ readonly reason: string;
44
+ readonly owner: string;
45
+ }
46
+ /**
47
+ * State a refusal.
48
+ *
49
+ * `owner` is the declaration, node or symbol the refusal is attributed to,
50
+ * already rendered -- the census knows how to name its own subject and the
51
+ * refusal list must not depend on an identity table to read one.
52
+ */
53
+ export declare const censusRefusal: (domain: CensusDomain, root: string, reason: string, owner: string) => CensusRefusal;
54
+ /**
55
+ * The count-per-reason map the censuses used to publish, derived.
56
+ *
57
+ * Kept because instruments already read that shape, and DERIVED rather than
58
+ * maintained beside the list so the two cannot disagree -- a count that drifts
59
+ * from the refusals it counts is the two-authorities defect this refactor
60
+ * exists to remove, in miniature.
61
+ */
62
+ export declare const censusRefusalCounts: (refusals: readonly CensusRefusal[]) => ReadonlyMap<string, number>;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * State a refusal.
3
+ *
4
+ * `owner` is the declaration, node or symbol the refusal is attributed to,
5
+ * already rendered -- the census knows how to name its own subject and the
6
+ * refusal list must not depend on an identity table to read one.
7
+ */
8
+ export const censusRefusal = (domain, root, reason, owner) => ({
9
+ stage: 'census',
10
+ key: `census:${domain}:${root}`,
11
+ reason,
12
+ owner
13
+ });
14
+ /**
15
+ * The count-per-reason map the censuses used to publish, derived.
16
+ *
17
+ * Kept because instruments already read that shape, and DERIVED rather than
18
+ * maintained beside the list so the two cannot disagree -- a count that drifts
19
+ * from the refusals it counts is the two-authorities defect this refactor
20
+ * exists to remove, in miniature.
21
+ */
22
+ export const censusRefusalCounts = (refusals) => {
23
+ const counts = new Map();
24
+ for (const refusal of refusals)
25
+ counts.set(refusal.key, (counts.get(refusal.key) ?? 0) + 1);
26
+ return counts;
27
+ };
@@ -0,0 +1,109 @@
1
+ import ts from 'typescript';
2
+ import type { NamespacePathCensus } from './namespace-paths.js';
3
+ import type { NodeId, OperationFamily } from '../../identity/ids.js';
4
+ import type { SemanticCaller } from '../model/operands.js';
5
+ import type { SemanticRegion } from '../model/graph.js';
6
+ import { type IdentityTable, type SpecializationPath } from './identities.js';
7
+ import type { SpecializationCensus } from './specialization.js';
8
+ import type { ProgramReachability } from './reachability.js';
9
+ /**
10
+ * The census.
11
+ *
12
+ * Before anything is normalized, every syntactic site in the program is
13
+ * enumerated and assigned to a family. This is what makes "not installed"
14
+ * measurable: a family that publishes nothing still has to account for every
15
+ * candidate it saw. Without the census, a producer that silently skips a
16
+ * construct is indistinguishable from a program that does not contain it.
17
+ *
18
+ * The census assigns families from ECMAScript syntax kinds only. It does not
19
+ * look at names, and it does not look at what a call resolves to -- that is
20
+ * proof, and proof comes later.
21
+ */
22
+ export interface CensusCandidate {
23
+ readonly node: ts.Node;
24
+ readonly id: NodeId;
25
+ readonly family: OperationFamily;
26
+ readonly caller: SemanticCaller;
27
+ /** Reachability requires this class's shape but no runtime definition. */
28
+ readonly classLayoutOnly?: boolean;
29
+ /**
30
+ * Which monomorphized copy of its enclosing generic this candidate belongs
31
+ * to; empty when it is not inside one.
32
+ *
33
+ * A candidate carries this rather than being looked up from its node, because
34
+ * one node produces one candidate per copy and the node cannot say which of
35
+ * them is being asked about. Every consumer that needs a type for this
36
+ * candidate needs the path with it: `T` is `number` in one copy and `string`
37
+ * in the next, and the node is identical in both.
38
+ */
39
+ readonly specialization: SpecializationPath;
40
+ /**
41
+ * This candidate's position in its caller's evaluation, counted in the order
42
+ * the walk reaches it.
43
+ *
44
+ * Only the walk knows this. A per-producer counter cannot: producers run
45
+ * family by family, so its numbers record which family published when, not
46
+ * which operation runs first. The ordinal orders *siblings*, whose document
47
+ * order really is their evaluation order; an operation and the operands it
48
+ * consumes are ordered by the dependency between them, which is stronger
49
+ * than any ordinal and needs no help from one.
50
+ *
51
+ * Operations minted from one candidate share its ordinal, and their relative
52
+ * order travels on the evaluation edges their producer publishes -- the only
53
+ * authority that knows an object literal's properties install left to right.
54
+ */
55
+ readonly evaluationOrdinal: number;
56
+ }
57
+ export interface ProgramCensus {
58
+ readonly candidates: readonly CensusCandidate[];
59
+ readonly regions: ReadonlyMap<string, SemanticRegion>;
60
+ readonly byFamily: ReadonlyMap<OperationFamily, readonly CensusCandidate[]>;
61
+ }
62
+ /**
63
+ * Whether an identifier resolves a value out of a scope.
64
+ *
65
+ * Exported because it is an authority, not a helper: the census uses it to
66
+ * decide which identifiers become reference candidates, and `frontend.ts`'s
67
+ * ambient-host walk uses the same answer to decide which identifiers name a
68
+ * cell a host owns. Two walks with two rules would disagree exactly on the
69
+ * awkward cases -- a JSX tag, an import specifier, a property key -- and each
70
+ * disagreement is a binding one layer thinks exists and the other does not.
71
+ */
72
+ export declare const isValueReference: (node: ts.Identifier | ts.PrivateIdentifier, paths: NamespacePathCensus) => boolean;
73
+ export declare const familyOf: (node: ts.Node, paths: NamespacePathCensus) => OperationFamily | null;
74
+ /**
75
+ * Whether this node is a class field's initializer expression.
76
+ *
77
+ * `ClassFieldDefinitionRecord`'s initializer is a function whose whole body is
78
+ * `Return ? Evaluation of the initializer` -- the same implicit return a
79
+ * concise arrow body performs, for the same reason: the value has to leave the
80
+ * call, and no `ReturnStatement` exists to census.
81
+ */
82
+ export declare const isFieldInitializerBody: (node: ts.Node) => boolean;
83
+ /**
84
+ * Whether this node is a parameter property: `constructor(readonly name: T)`.
85
+ *
86
+ * TypeScript's own predicate, not a re-derivation of it -- the modifier set
87
+ * that makes a parameter also declare a member is the language's rule, and
88
+ * spelling it a second time here would be a second authority over it.
89
+ */
90
+ export declare const isParameterProperty: (node: ts.Node) => node is ts.ParameterPropertyDeclaration;
91
+ /**
92
+ * Every family a node carries, in evaluation order.
93
+ *
94
+ * Almost every node carries one. A concise arrow body and a field initializer
95
+ * carry two -- the expression and the implicit return -- and they stay
96
+ * distinguishable because identity is keyed by `(node, family, ordinal)`, so
97
+ * neither can be mistaken for the other by a consumer citing one of them.
98
+ * Dropping the second is what made an arrow function evaluate its body and
99
+ * then return nothing.
100
+ *
101
+ * A parameter property carries two for a third reason: it IS two declarations
102
+ * written as one. `constructor(readonly name: string)` declares a formal
103
+ * parameter -- the `binding` every parameter is -- and an instance member the
104
+ * constructor assigns that parameter into. The second half is class evaluation,
105
+ * so it is `class-lifecycle`, and its caller is the constructor the parameter
106
+ * sits in, which is exactly where the assignment belongs.
107
+ */
108
+ export declare const familiesOf: (node: ts.Node, paths: NamespacePathCensus) => readonly OperationFamily[];
109
+ export declare const censusProgram: (files: readonly ts.SourceFile[], identities: IdentityTable, reachable: ProgramReachability, specializations: SpecializationCensus, namespacePaths: NamespacePathCensus) => ProgramCensus;