@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,63 @@
1
+ import type { OperationFamily } from '../../identity/ids.js';
2
+ import type { CensusBlocker, FamilyReport } from '../model/coverage.js';
3
+ import type { SemanticEdge } from '../model/edges.js';
4
+ import type { SemanticOperation } from '../model/operations.js';
5
+ import type { CensusCandidate } from './census.js';
6
+ /**
7
+ * Publication transactions.
8
+ *
9
+ * Publication is transactional at the smallest complete authority-connected
10
+ * component -- never at family scope. Family-global all-or-nothing publication
11
+ * is forbidden precisely because it lets one blocked construct suppress an
12
+ * unrelated one that was fully proven, which then reads as "the family is not
13
+ * installed" and hides how much actually works.
14
+ *
15
+ * The scope that matters is the program, not the family. Producers cite each
16
+ * other across families -- an invocation's callee is a reference, a loop's
17
+ * element is a protocol result -- so a citation's producer often lives in a
18
+ * different family than the citing operation. Deciding what commits one family
19
+ * at a time cannot see those edges, and publishes operations whose operands name
20
+ * results nobody published.
21
+ */
22
+ /** What one candidate produced: operations and edges, or the reason it could not. */
23
+ export type CandidateContribution = {
24
+ readonly kind: 'operations';
25
+ readonly operations: readonly SemanticOperation[];
26
+ readonly edges: readonly SemanticEdge[];
27
+ } | {
28
+ readonly kind: 'blocked';
29
+ readonly blocker: CensusBlocker;
30
+ };
31
+ /** A family producer: it sees the census and returns one contribution per candidate. */
32
+ export interface FamilyProducer {
33
+ readonly family: OperationFamily;
34
+ readonly contribute: (candidate: CensusCandidate) => CandidateContribution;
35
+ }
36
+ export interface ProgramPublication {
37
+ readonly reports: ReadonlyMap<OperationFamily, FamilyReport>;
38
+ readonly operations: readonly SemanticOperation[];
39
+ readonly edges: readonly SemanticEdge[];
40
+ }
41
+ /**
42
+ * Run every installed producer over its census and commit what survives.
43
+ *
44
+ * A family with no producer is not skipped: every candidate it censused becomes
45
+ * a stated blocker, so "no producer" and "no such construct in this program"
46
+ * stay different answers.
47
+ */
48
+ /**
49
+ * Producers for one monomorphized copy.
50
+ *
51
+ * A copy needs its own producer set because a producer closes over the
52
+ * structural mapper it will ask, and `T` resolves differently in each copy. The
53
+ * alternative -- threading the copy through every `typeAt` call in every
54
+ * producer -- would put the same forwarded argument in a hundred signatures to
55
+ * express one fact that belongs to the candidate.
56
+ *
57
+ * What must NOT be per copy is the ordinal counters the context carries: two
58
+ * copies minting from independent counters would hand two different operations
59
+ * the same identity. The caller keeps one context and swaps only its mapper,
60
+ * which is why this is a lookup rather than a factory.
61
+ */
62
+ export type ProducersFor = (candidate: CensusCandidate) => ReadonlyMap<OperationFamily, FamilyProducer>;
63
+ export declare const publishProgram: (families: readonly OperationFamily[], producersFor: ProducersFor, census: ReadonlyMap<OperationFamily, readonly CensusCandidate[]>) => ProgramPublication;
@@ -0,0 +1,172 @@
1
+ const resultsOf = (prepared) => {
2
+ const published = new Set();
3
+ for (const entry of prepared) {
4
+ if (!entry.live)
5
+ continue;
6
+ for (const operation of entry.operations) {
7
+ for (const result of operation.results)
8
+ published.add(result.id);
9
+ }
10
+ }
11
+ return published;
12
+ };
13
+ /** The first operand of `entry` naming a result nobody published, if any. */
14
+ const danglingCitation = (entry, published) => {
15
+ for (const operation of entry.operations) {
16
+ for (const operand of operation.operands) {
17
+ if (operand.source.kind !== 'result')
18
+ continue;
19
+ if (!published.has(operand.source.result))
20
+ return operand.source.result;
21
+ }
22
+ }
23
+ return null;
24
+ };
25
+ /**
26
+ * Withhold every candidate whose operands cite a result no producer published.
27
+ *
28
+ * Producers cite each other by recomputing the identity a sibling family will
29
+ * mint, which is correct -- identity is deterministic -- but it is a prediction,
30
+ * and the sibling may have been blocked or never installed. Committing the
31
+ * citing operation anyway publishes an operand pointing at nothing.
32
+ *
33
+ * Withholding one candidate removes its results, which can strand a second, so
34
+ * this runs to a fixed point rather than in a single pass.
35
+ *
36
+ * Withholding an INVOCATION is different in kind, and is reported as a root
37
+ * rather than as a derived consequence. A withheld value is a value the citing
38
+ * operation then does without; a withheld call is a call the source performs and
39
+ * the program does not, while still emitting -- the operands stay materialised
40
+ * and the emitter renders them as `(void)` discards. Three's
41
+ * `materials.refreshFogUniforms( m_uniforms, fog )` was dropped exactly this way
42
+ * for want of a `dictionary -> native-record-ref` argument conversion, so
43
+ * The three.js app rendered with no fog at all and nothing in the report said so:
44
+ * `diagnostics/sweep.ts` grades every `withheld:` reason `derived`, and the
45
+ * coverage report filters those out by default. Naming the dropped call keeps
46
+ * the guard fail-closed -- a missing conversion stays a compile-time answer
47
+ * instead of becoming a silently wrong picture.
48
+ */
49
+ const withholdDanglingCitations = (prepared, blockers) => {
50
+ let changed = true;
51
+ while (changed) {
52
+ changed = false;
53
+ const published = resultsOf(prepared);
54
+ for (const entry of prepared) {
55
+ if (!entry.live)
56
+ continue;
57
+ const dangling = danglingCitation(entry, published);
58
+ if (dangling === null)
59
+ continue;
60
+ entry.live = false;
61
+ const dropsInvocation = entry.operations.some((operation) => operation.family === 'invocation');
62
+ blockers.set(entry.candidate, {
63
+ source: entry.candidate.id,
64
+ family: entry.family,
65
+ reason: dropsInvocation
66
+ ? `dropped invocation: cites result ${dangling}, which no installed producer publishes`
67
+ : `withheld: cites result ${dangling}, which no installed producer publishes`,
68
+ missingPrimitive: null
69
+ });
70
+ changed = true;
71
+ }
72
+ }
73
+ };
74
+ const coverageOf = (published, blocked) => blocked === 0 ? 'complete' : published > 0 ? 'partial' : 'not-installed';
75
+ /**
76
+ * One candidate's contribution, with a producer's own failure turned into a
77
+ * stated blocker.
78
+ *
79
+ * A producer that throws has met a construct it cannot model. That is exactly
80
+ * what a blocker records, and letting the throw escape instead takes down the
81
+ * whole compilation over one node -- so a program containing a single
82
+ * unmodelled expression reports nothing at all, when it could have reported
83
+ * every other gap it has. Nothing is hidden by this: a blocker refuses the
84
+ * certificate just as loudly, and it names the candidate.
85
+ */
86
+ const contributionOf = (producer, candidate) => {
87
+ try {
88
+ return producer.contribute(candidate);
89
+ }
90
+ catch (error) {
91
+ const message = error instanceof Error ? error.message : String(error);
92
+ const detail = process.env['GEA_PRODUCER_STACK_DEBUG'] && error instanceof Error && error.stack ? error.stack : message;
93
+ return {
94
+ kind: 'blocked',
95
+ blocker: {
96
+ source: candidate.id,
97
+ family: producer.family,
98
+ reason: `producer failed: ${detail}`,
99
+ missingPrimitive: null
100
+ }
101
+ };
102
+ }
103
+ };
104
+ export const publishProgram = (families, producersFor, census) => {
105
+ const prepared = [];
106
+ const blockers = new Map();
107
+ const candidateCount = new Map();
108
+ for (const family of families) {
109
+ const candidates = census.get(family) ?? [];
110
+ candidateCount.set(family, candidates.length);
111
+ for (const candidate of candidates) {
112
+ const producer = producersFor(candidate).get(family);
113
+ if (!producer) {
114
+ blockers.set(candidate, {
115
+ source: candidate.id,
116
+ family,
117
+ reason: `family ${family} has no installed producer`,
118
+ missingPrimitive: null
119
+ });
120
+ prepared.push({ family, candidate, operations: [], edges: [], live: false });
121
+ continue;
122
+ }
123
+ const contribution = contributionOf(producer, candidate);
124
+ if (contribution.kind === 'blocked') {
125
+ blockers.set(candidate, contribution.blocker);
126
+ prepared.push({ family, candidate, operations: [], edges: [], live: false });
127
+ continue;
128
+ }
129
+ prepared.push({ family, candidate, operations: contribution.operations, edges: contribution.edges, live: true });
130
+ }
131
+ }
132
+ withholdDanglingCitations(prepared, blockers);
133
+ const operations = [];
134
+ const edges = [];
135
+ const publishedByFamily = new Map();
136
+ const operationsByFamily = new Map();
137
+ for (const entry of prepared) {
138
+ if (!entry.live)
139
+ continue;
140
+ publishedByFamily.set(entry.family, (publishedByFamily.get(entry.family) ?? 0) + 1);
141
+ operations.push(...entry.operations);
142
+ edges.push(...entry.edges);
143
+ for (const operation of entry.operations) {
144
+ // Attribution follows the operation's own family, not the candidate's: a
145
+ // loop candidate mints the protocol operations its iteration needs, and
146
+ // those belong to the protocol family's coverage.
147
+ const bucket = operationsByFamily.get(operation.family) ?? [];
148
+ bucket.push(operation);
149
+ operationsByFamily.set(operation.family, bucket);
150
+ }
151
+ }
152
+ const blockersByFamily = new Map();
153
+ for (const blocker of blockers.values()) {
154
+ const bucket = blockersByFamily.get(blocker.family) ?? [];
155
+ bucket.push(blocker);
156
+ blockersByFamily.set(blocker.family, bucket);
157
+ }
158
+ const reports = new Map();
159
+ for (const family of families) {
160
+ const familyBlockers = blockersByFamily.get(family) ?? [];
161
+ const published = publishedByFamily.get(family) ?? 0;
162
+ reports.set(family, {
163
+ family,
164
+ coverage: coverageOf(published, familyBlockers.length),
165
+ operations: (operationsByFamily.get(family) ?? []).map((operation) => operation.id),
166
+ blockers: familyBlockers,
167
+ publishedCandidates: published,
168
+ censusedCandidates: candidateCount.get(family) ?? 0
169
+ });
170
+ }
171
+ return { reports, operations, edges };
172
+ };
@@ -0,0 +1,64 @@
1
+ import ts from 'typescript';
2
+ import type { OperationId } from '../../identity/ids.js';
3
+ import type { AbsentGlobalCensus } from './absent-globals.js';
4
+ import type { IdentityTable } from './identities.js';
5
+ /**
6
+ * Provably-dead consequents of a host-absence `typeof` guard.
7
+ *
8
+ * `absent-globals.ts` answers "is this value/type absent" at a POSITION. This
9
+ * answers a different question: is a whole REGION of code unreachable,
10
+ * because the guard that would have to pass for it to run cannot pass on
11
+ * this host. The two are not the same fact and must not share a mechanism --
12
+ * see the doc comment on `isDeadOperation` below for why.
13
+ *
14
+ * Scope, deliberately narrow, matching exactly what a real corpus program
15
+ * does and nothing more:
16
+ *
17
+ * if ( typeof X !== 'undefined' && x instanceof X ) { ... }
18
+ *
19
+ * Both conjuncts must independently resolve, BY SYMBOL through
20
+ * `AbsentGlobalCensus.typeAt` (never by spelling), to a host-declared-absent
21
+ * ambient value. `X` cannot exist on this host, so `typeof X !== 'undefined'`
22
+ * is provably `false`; `&&` short-circuits; the consequent never executes.
23
+ * That is a proof from the host's own statement, not an inference this
24
+ * compiler drew -- the one warrant this rule is allowed to rest on. Either
25
+ * conjunct may be individually wrapped in its own `( ... )` (three.js's
26
+ * `Source.js`) -- `unwrapParens` strips that before the shape checks, since
27
+ * it is a syntactic artifact of how the source was written, not a different
28
+ * logical shape. Only the `!==` polarity is handled. The `else`/`else if`
29
+ * chain is never touched: it
30
+ * is the code that actually runs on this host. A `typeof` guard that is not
31
+ * this exact `&&`-of-two-conjuncts shape -- nested inside a longer `&&`/`||`
32
+ * chain, written as a ternary, or checked with `===` and an early return --
33
+ * is out of scope and left alone rather than guessed at.
34
+ */
35
+ export interface DeadTypeofGuardCensus {
36
+ /**
37
+ * Whether an operation's own source position falls inside a proven-dead
38
+ * guard consequent.
39
+ *
40
+ * Keyed on the OPERATION's identity, not on any operand's structural type.
41
+ * That is the fix for the defect the prior (reverted) rule had: a
42
+ * structural `never` is a single, shape-only fact that TypeScript's own
43
+ * (sometimes unsound) inference produces just as often as a host-absence
44
+ * proof does, and once interned every occurrence collapses to the SAME
45
+ * structural type id -- there is no way to tell, from a `StructuralTypeId`
46
+ * alone, which `never` a given position's is. Reachability, by contrast,
47
+ * is a property of WHERE in the source an operation sits, which this
48
+ * census proves directly from the guard's own AST shape and the host's own
49
+ * absence statement, never from what type anything infers to.
50
+ */
51
+ readonly isDeadOperation: (id: OperationId) => boolean;
52
+ /** How many qualifying guards were found, for measurement. */
53
+ readonly guardCount: number;
54
+ }
55
+ export declare const emptyDeadTypeofGuardCensus: DeadTypeofGuardCensus;
56
+ /**
57
+ * The census for one program.
58
+ *
59
+ * `emptyDeadTypeofGuardCensus` is returned unchanged when the host census
60
+ * itself is empty (`absent.absentCount === 0`): nothing is absent, so no
61
+ * `typeof` guard on this program can ever be proven dead by this rule, and
62
+ * walking every file to confirm that would be pure cost.
63
+ */
64
+ export declare const censusDeadTypeofGuards: (files: readonly ts.SourceFile[], absent: AbsentGlobalCensus, identities: IdentityTable) => DeadTypeofGuardCensus;
@@ -0,0 +1,152 @@
1
+ import ts from 'typescript';
2
+ export const emptyDeadTypeofGuardCensus = {
3
+ isDeadOperation: () => false,
4
+ guardCount: 0
5
+ };
6
+ /** Whether `expr` is the string literal `'undefined'`. */
7
+ const isUndefinedStringLiteral = (expr) => ts.isStringLiteralLike(expr) && expr.text === 'undefined';
8
+ /**
9
+ * Strips a wrapping `( ... )`, repeatedly.
10
+ *
11
+ * `( typeof HTMLVideoElement !== 'undefined' ) && ( data instanceof
12
+ * HTMLVideoElement )` (three.js's `Source.js`) is the identical `&&`-of-two-
13
+ * conjuncts shape this module matches, with each conjunct individually
14
+ * parenthesized -- a purely syntactic wrapper TypeScript's parser leaves in
15
+ * the tree as a `ParenthesizedExpression` node around an otherwise identical
16
+ * `BinaryExpression`. Unwrapping it before the shape checks below admits no
17
+ * new logical shape -- the `&&`, the `typeof`, the `instanceof`, and the
18
+ * symbol-resolved host-absence proof are all still required exactly as
19
+ * before -- it only stops a wrapper the parser inserts from hiding a shape
20
+ * this module already handles.
21
+ */
22
+ const unwrapParens = (expr) => {
23
+ let current = expr;
24
+ while (ts.isParenthesizedExpression(current))
25
+ current = current.expression;
26
+ return current;
27
+ };
28
+ /**
29
+ * `typeof <operand> !== 'undefined'`, where `<operand>` resolves BY SYMBOL
30
+ * (through `absent.typeAt`, the same resolution `absent-globals.ts` already
31
+ * uses everywhere else) to a host-declared-absent ambient value -- or `null`
32
+ * when `expr` is not that shape, or resolves to nothing this host denied.
33
+ *
34
+ * A program's own same-named local is untouched: `typeAt` only answers for a
35
+ * reference whose SYMBOL is the standard library's ambient declaration a host
36
+ * listed, exactly as every other consumer of `AbsentGlobalCensus` requires.
37
+ */
38
+ const absentTypeofOperand = (expr, absent) => {
39
+ if (!ts.isBinaryExpression(expr))
40
+ return null;
41
+ if (expr.operatorToken.kind !== ts.SyntaxKind.ExclamationEqualsEqualsToken)
42
+ return null;
43
+ const left = expr.left;
44
+ const right = expr.right;
45
+ const [typeofExpr, literal] = ts.isTypeOfExpression(left) ? [left, right] : ts.isTypeOfExpression(right) ? [right, left] : [null, null];
46
+ if (!typeofExpr || !literal)
47
+ return null;
48
+ if (!isUndefinedStringLiteral(literal))
49
+ return null;
50
+ return absent.typeAt(typeofExpr.expression) !== null ? typeofExpr.expression : null;
51
+ };
52
+ /**
53
+ * `<expr> instanceof <name>`, where `<name>` ALSO resolves by symbol to a
54
+ * host-declared-absent value -- checked independently of, not merely
55
+ * spelling-matched against, the `typeof` guard's own operand. Two conjuncts
56
+ * that each independently name an absent global is at least as strong a
57
+ * proof as one that textually repeats a name, and it costs nothing extra:
58
+ * `absent.typeAt` is already the one authority for "is this reference
59
+ * absent," so asking it twice is asking the same question at two positions,
60
+ * never a second question.
61
+ */
62
+ const isInstanceofAbsentName = (expr, absent) => ts.isBinaryExpression(expr) && expr.operatorToken.kind === ts.SyntaxKind.InstanceOfKeyword && absent.typeAt(expr.right) !== null;
63
+ /**
64
+ * Whether this condition is PROVABLY FALSE from the host's own absence
65
+ * statement -- one `typeof X !== 'undefined' && v instanceof X` conjunction,
66
+ * or a `||` chain of them where EVERY disjunct is one.
67
+ *
68
+ * three's `resizeImage` (`WebGLTextures.js`) is the disjunctive form, and it
69
+ * is the shape that matters: four clauses, one each for `HTMLImageElement`,
70
+ * `HTMLCanvasElement`, `ImageBitmap` and `VideoFrame`, all four host-absent.
71
+ * A disjunction is false exactly when every disjunct is false, so the warrant
72
+ * is unchanged and the consequent is as dead as a single conjunction's -- the
73
+ * shape was simply not matched. Its `return canvas` then stops counting as
74
+ * evidence about what the function returns, and the remaining returns can
75
+ * agree.
76
+ *
77
+ * Requiring EVERY disjunct is what keeps this sound: one live clause makes the
78
+ * whole condition possibly true, and there is no partial credit to take.
79
+ *
80
+ * WHAT IT IS WORTH, MEASURED: 12 fewer obligations on the three.js app and nothing else.
81
+ * missingRows is unchanged (408), so none of the twelve were mandatory, and the
82
+ * boxed count does not move.
83
+ *
84
+ * ⛔ The obvious next step does NOT pay, and this is the place to say so. It
85
+ * looks as though `return-bindings.ts` should consult reachability -- a `return`
86
+ * inside a proven-dead branch is not evidence about what a function returns, and
87
+ * `resizeImage` (`WebGLTextures.js`) is exactly that shape: `return canvas`
88
+ * inside this guard, refusing the census against the other returns. It gains
89
+ * nothing. `resizeImage`'s other two returns are both `return image`, and
90
+ * `image` is its own unannotated parameter, so the census refuses on `any` with
91
+ * or without the dead arm excluded. The dead arm was never the binding
92
+ * constraint. Threading a node-level reachability predicate into the return
93
+ * census (which would also mean building `absent` before the census chain) buys
94
+ * nothing until the parameter underneath it is typed.
95
+ *
96
+ * ⛔ Read `dead-typeof-guards`'s own header before widening this further. The
97
+ * warrant is the HOST'S STATEMENT about a global it declares absent -- never a
98
+ * type. A previous rule keyed on a `never` operand marked LIVE code satisfied,
99
+ * because TypeScript produces `never` from its own unsound inferences (an
100
+ * empty array literal, most memorably) just as readily as an absence proof
101
+ * does, and once interned the two are the same structural id. Reachability is
102
+ * a property of WHERE an operation sits, proven here from the guard's AST
103
+ * shape and the host's own list.
104
+ */
105
+ const isProvablyFalseGuard = (expr, absent) => {
106
+ const condition = unwrapParens(expr);
107
+ if (!ts.isBinaryExpression(condition))
108
+ return false;
109
+ if (condition.operatorToken.kind === ts.SyntaxKind.BarBarToken) {
110
+ return isProvablyFalseGuard(condition.left, absent) && isProvablyFalseGuard(condition.right, absent);
111
+ }
112
+ if (condition.operatorToken.kind !== ts.SyntaxKind.AmpersandAmpersandToken)
113
+ return false;
114
+ return absentTypeofOperand(unwrapParens(condition.left), absent) !== null && isInstanceofAbsentName(unwrapParens(condition.right), absent);
115
+ };
116
+ /**
117
+ * The census for one program.
118
+ *
119
+ * `emptyDeadTypeofGuardCensus` is returned unchanged when the host census
120
+ * itself is empty (`absent.absentCount === 0`): nothing is absent, so no
121
+ * `typeof` guard on this program can ever be proven dead by this rule, and
122
+ * walking every file to confirm that would be pure cost.
123
+ */
124
+ export const censusDeadTypeofGuards = (files, absent, identities) => {
125
+ if (absent.absentCount === 0)
126
+ return emptyDeadTypeofGuardCensus;
127
+ const deadSitePrefixes = [];
128
+ let guardCount = 0;
129
+ const markDead = (node) => {
130
+ deadSitePrefixes.push(`op|${identities.nodeIdOf(node)}|`);
131
+ ts.forEachChild(node, markDead);
132
+ };
133
+ for (const file of files) {
134
+ const visit = (node) => {
135
+ if (ts.isIfStatement(node) && isProvablyFalseGuard(node.expression, absent)) {
136
+ markDead(node.thenStatement);
137
+ guardCount += 1;
138
+ }
139
+ ts.forEachChild(node, visit);
140
+ };
141
+ visit(file);
142
+ }
143
+ // `OperationId` is `op|<NodeId>|<family>|<ordinal>`, and a `NodeId` embeds
144
+ // its own unescaped `|`s (`identity/ids.ts`'s `operationId`/`nodeId`), so
145
+ // the operation id cannot be split apart and reassembled -- exactly the
146
+ // hazard `identity/ids.ts`'s own `operationOfResult` comment names. A
147
+ // prefix test sidesteps it entirely: `deadSitePrefixes` holds full,
148
+ // independently-computed `op|<deadNodeId>|` strings, and `startsWith`
149
+ // matches an operation to one of them without parsing anything.
150
+ const isDeadOperation = (id) => deadSitePrefixes.some((prefix) => id.startsWith(prefix));
151
+ return { isDeadOperation, guardCount };
152
+ };
@@ -0,0 +1,57 @@
1
+ import ts from 'typescript';
2
+ import type { ValueFlowIndex } from './flow/model.js';
3
+ import type { ProducerContext } from './producer-context.js';
4
+ import { type PrototypeKeyQuery } from './host-mutation-keys.js';
5
+ /** @semanticCategory generic-primitive */
6
+ export interface IntrinsicProtocolRequirement {
7
+ readonly intrinsic: 'Array' | 'Object' | 'Map' | 'WeakMap' | 'Reflect' | 'Function';
8
+ readonly member?: string;
9
+ /**
10
+ * Without `member`: the prototype keys the obligation depends on. Absent,
11
+ * the obligation is the whole prototype -- which any single key write the
12
+ * census cannot attribute fails. See `intactIntrinsicPrototypeKeysType`.
13
+ */
14
+ readonly prototypeKeys?: PrototypeKeyQuery;
15
+ readonly location: ts.Node;
16
+ }
17
+ /** @semanticCategory generic-primitive */
18
+ export interface DeferredIntrinsicProtocolLedger {
19
+ readonly capture: <T>(work: () => T) => {
20
+ readonly value: T;
21
+ readonly requirements: readonly IntrinsicProtocolRequirement[];
22
+ };
23
+ readonly guard: <T>(work: () => T, accepts: (value: T) => boolean) => T;
24
+ readonly require: (intrinsic: IntrinsicProtocolRequirement['intrinsic'], location: ts.Node) => boolean;
25
+ readonly requireMember: (intrinsic: 'Object' | 'Reflect', member: string, location: ts.Node) => boolean;
26
+ /** The per-key prototype obligation: only `keys` of the intrinsic's prototype must be as declared. */
27
+ readonly requirePrototypeKeys: (intrinsic: IntrinsicProtocolRequirement['intrinsic'], keys: PrototypeKeyQuery, location: ts.Node) => boolean;
28
+ readonly include: (requirements: readonly IntrinsicProtocolRequirement[]) => boolean;
29
+ /** A later inference round replaces its scope, including with no surviving requirements. */
30
+ readonly replace: (scope: object | string, requirements: readonly IntrinsicProtocolRequirement[]) => void;
31
+ readonly requirements: () => readonly IntrinsicProtocolRequirement[];
32
+ /**
33
+ * Whether a proof resting on an `Object.prototype` key obligation must
34
+ * refuse instead of recording one -- the installed hosts' statement
35
+ * (`PluginCapabilities.refusesObjectPrototypeAbsenceProofs`), read by the
36
+ * class-family and numeric absence proofs before they ask.
37
+ */
38
+ readonly refusesObjectPrototypeAbsenceProofs: boolean;
39
+ }
40
+ /** Closure can depend on an intrinsic whose mutation census runs after type
41
+ * inference. Capture obligations while exploring evidence; only surviving
42
+ * published inference replaces a ledger scope. Failed alternatives and
43
+ * withdrawn bindings never become compiler-wide assumptions.
44
+ */
45
+ export declare const createDeferredIntrinsicProtocolLedger: (options?: {
46
+ readonly refuseObjectPrototypeAbsenceProofs?: boolean;
47
+ }) => DeferredIntrinsicProtocolLedger;
48
+ /** What distinguishes two obligations on one intrinsic at one location: a static member, a key set, or the whole prototype. */
49
+ export declare const intrinsicProtocolRequirementKind: (requirement: IntrinsicProtocolRequirement) => string | undefined;
50
+ export declare const attachDeferredIntrinsicProtocolLedger: (flow: ValueFlowIndex, ledger: DeferredIntrinsicProtocolLedger) => void;
51
+ export declare const deferredIntrinsicProtocolLedgerOf: (flow: ValueFlowIndex) => DeferredIntrinsicProtocolLedger | null;
52
+ type IntrinsicContext = Pick<ProducerContext, 'checker' | 'identities' | 'globalHostMutationTaint' | 'isStandardLibraryDeclaration'>;
53
+ /** Discharge solely against the final shared mutation census. No preliminary
54
+ * spelling scan or root inventory substitutes for the sealed host evidence.
55
+ */
56
+ export declare const failedIntrinsicProtocolRequirements: (context: IntrinsicContext, requirements: readonly IntrinsicProtocolRequirement[]) => readonly IntrinsicProtocolRequirement[];
57
+ export {};
@@ -0,0 +1,109 @@
1
+ import ts from 'typescript';
2
+ import { intrinsicStaticMemberIsIntact } from './intrinsic-static-member.js';
3
+ import { intactIntrinsicPrototypeKeysType, intactIntrinsicPrototypeType } from './intrinsic-prototype.js';
4
+ import { prototypeKeyQuerySignature } from './host-mutation-keys.js';
5
+ /** Closure can depend on an intrinsic whose mutation census runs after type
6
+ * inference. Capture obligations while exploring evidence; only surviving
7
+ * published inference replaces a ledger scope. Failed alternatives and
8
+ * withdrawn bindings never become compiler-wide assumptions.
9
+ */
10
+ export const createDeferredIntrinsicProtocolLedger = (options = {}) => {
11
+ const captures = [];
12
+ const scopes = new Map();
13
+ const unique = (requirements) => {
14
+ // `capture` wraps nearly every proof in the compiler and most of them raise
15
+ // no obligation at all, so the common case is de-duplicating nothing --
16
+ // which still built a Map of Maps of Sets and a copied array per call.
17
+ if (requirements.length === 0)
18
+ return requirements;
19
+ const seen = new Map();
20
+ return requirements.filter((requirement) => {
21
+ let protocols = seen.get(requirement.location);
22
+ if (!protocols)
23
+ seen.set(requirement.location, (protocols = new Map()));
24
+ let members = protocols.get(requirement.intrinsic);
25
+ if (!members)
26
+ protocols.set(requirement.intrinsic, (members = new Set()));
27
+ const kind = intrinsicProtocolRequirementKind(requirement);
28
+ if (members.has(kind))
29
+ return false;
30
+ members.add(kind);
31
+ return true;
32
+ });
33
+ };
34
+ const capture = (work) => {
35
+ const requirements = [];
36
+ captures.push(requirements);
37
+ try {
38
+ return { value: work(), requirements: unique(requirements) };
39
+ }
40
+ finally {
41
+ captures.pop();
42
+ }
43
+ };
44
+ const include = (requirements) => {
45
+ const active = captures.at(-1);
46
+ if (!active)
47
+ return false;
48
+ active.push(...requirements);
49
+ return true;
50
+ };
51
+ return {
52
+ capture,
53
+ guard: (work, accepts) => {
54
+ if (captures.length === 0)
55
+ return work();
56
+ const result = capture(work);
57
+ if (accepts(result.value))
58
+ include(result.requirements);
59
+ return result.value;
60
+ },
61
+ require: (intrinsic, location) => include([{ intrinsic, location }]),
62
+ requireMember: (intrinsic, member, location) => include([{ intrinsic, member, location }]),
63
+ requirePrototypeKeys: (intrinsic, prototypeKeys, location) => include([{ intrinsic, prototypeKeys, location }]),
64
+ include,
65
+ replace: (scope, requirements) => {
66
+ const kept = unique(requirements);
67
+ // `GEA_LEDGER_DEBUG=1` names the scope that publishes each Object
68
+ // prototype obligation: a failed one at certification says only where
69
+ // the proof read, never which inference published it.
70
+ if (process.env['GEA_LEDGER_DEBUG'] !== undefined)
71
+ for (const requirement of kept) {
72
+ if (requirement.member !== undefined)
73
+ continue;
74
+ const file = requirement.location.getSourceFile();
75
+ const line = file.getLineAndCharacterOfPosition(requirement.location.getStart(file)).line + 1;
76
+ console.error(`[LEDGER] ${String(scope)} ${intrinsicProtocolRequirementKind(requirement) ?? 'whole'} ${file.fileName.split('/').pop()}:${line}`);
77
+ }
78
+ scopes.set(scope, kept);
79
+ },
80
+ requirements: () => unique([...scopes.values()].flat()),
81
+ refusesObjectPrototypeAbsenceProofs: options.refuseObjectPrototypeAbsenceProofs === true
82
+ };
83
+ };
84
+ /** What distinguishes two obligations on one intrinsic at one location: a static member, a key set, or the whole prototype. */
85
+ export const intrinsicProtocolRequirementKind = (requirement) => requirement.member !== undefined
86
+ ? requirement.member
87
+ : requirement.prototypeKeys
88
+ ? `keys:${prototypeKeyQuerySignature(requirement.prototypeKeys)}`
89
+ : undefined;
90
+ const ledgers = new WeakMap();
91
+ export const attachDeferredIntrinsicProtocolLedger = (flow, ledger) => {
92
+ ledgers.set(flow, ledger);
93
+ };
94
+ export const deferredIntrinsicProtocolLedgerOf = (flow) => ledgers.get(flow) ?? null;
95
+ /** Discharge solely against the final shared mutation census. No preliminary
96
+ * spelling scan or root inventory substitutes for the sealed host evidence.
97
+ */
98
+ export const failedIntrinsicProtocolRequirements = (context, requirements) => requirements.filter((requirement) => {
99
+ if (requirement.member === undefined) {
100
+ return requirement.prototypeKeys
101
+ ? intactIntrinsicPrototypeKeysType(context, requirement.intrinsic, requirement.prototypeKeys, requirement.location) === null
102
+ : intactIntrinsicPrototypeType(context, requirement.intrinsic, requirement.location) === null;
103
+ }
104
+ const owner = context.checker.resolveName(requirement.intrinsic, requirement.location, ts.SymbolFlags.Value, false);
105
+ const member = owner
106
+ ? context.checker.getPropertyOfType(context.checker.getTypeOfSymbolAtLocation(owner, requirement.location), requirement.member)
107
+ : undefined;
108
+ return !intrinsicStaticMemberIsIntact(context, owner, member, requirement.location);
109
+ });