@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,589 @@
1
+ import type { DeclarationId, FunctionId, StructuralTypeId } from '../identity/ids.js';
2
+ import type { Ownership, RecordField, Representation, TypedArrayElementDomain, RecordAccessor } from './model.js';
3
+ import type { StructuralShape } from '../semantics/model/structural-types.js';
4
+ /**
5
+ * The policies a representation deriver consults, and the neutral default of
6
+ * each.
7
+ *
8
+ * They live apart from the derivation itself because that is precisely what
9
+ * they are: decisions the deriver is *handed*, not answers it computes. A
10
+ * policy that the deriver could reach in and change -- or that changed to suit
11
+ * one call site -- would make the same `StructuralTypeId` derive two different
12
+ * carriers, which is the drift `representation/publish.ts` seals against by
13
+ * deriving every carrier exactly once.
14
+ */
15
+ /**
16
+ * Who owns a reference and for how long.
17
+ *
18
+ * Ownership is a decision, not a property of the shape, so it is injected. A
19
+ * deriver that picked ownership itself would be a second authority competing
20
+ * with the target's own lifetime rules.
21
+ */
22
+ export interface OwnershipPolicy {
23
+ /**
24
+ * Ownership for a value of this shape held in an ordinary position.
25
+ *
26
+ * The interned identity comes with the shape because the question is not
27
+ * always answerable from the layout alone: whether a record may be carried
28
+ * by value is a fact about how the whole PROGRAM uses that one type
29
+ * (`representation/value-records.ts`), and the type id is what the proof is
30
+ * keyed by. A policy with no use for it ignores it, as the default does.
31
+ */
32
+ readonly forShape: (shape: StructuralShape, id: StructuralTypeId) => Ownership;
33
+ /** Ownership for a value passed as a physical parameter. */
34
+ readonly forParameter: (value: Representation) => Ownership;
35
+ }
36
+ /**
37
+ * Shared ownership for references, by-value for everything else, and a
38
+ * parameter passed exactly as its carrier is held.
39
+ *
40
+ * Borrowing at parameter positions is an optimization, and it was one this
41
+ * layer had not earned: nothing here proves a callee does not retain what it
42
+ * was handed. Worse, it made a parameter's carrier and its passing mode two
43
+ * different answers to one question -- the value inside the body was a shared
44
+ * reference while the formal declaring it was a borrowed one -- so the body
45
+ * initialized a `shared_ptr` from a reference and the emitted C++ did not
46
+ * compile. Passing as held keeps one answer; a proven non-escaping parameter
47
+ * may be narrowed to `borrowed` later, on top of this, not instead of it.
48
+ */
49
+ export declare const defaultOwnershipPolicy: OwnershipPolicy;
50
+ /**
51
+ * Which object types this program may carry BY VALUE -- see
52
+ * `representation/value-records.ts` for the proof, and `derive.ts`'s
53
+ * `'declared'` case for the one place a NAME for one is expanded rather than
54
+ * carried nominally.
55
+ *
56
+ * A policy rather than a table the deriver computes, for the reason every
57
+ * policy here is one: the answer is a whole-program fact about how a type is
58
+ * USED, and the deriver sees one type at a time.
59
+ */
60
+ export interface ValueRecordPolicy {
61
+ /** Whether a value of this object type may be held by value. */
62
+ readonly forType: (id: StructuralTypeId) => boolean;
63
+ }
64
+ /** No value records: every record is a shared handle, exactly as before. */
65
+ export declare const defaultValueRecordPolicy: ValueRecordPolicy;
66
+ /**
67
+ * One version of one host protocol a declared type is bound to.
68
+ *
69
+ * Structurally the same interface `semantics/frontend.ts` declares, and
70
+ * deliberately a second declaration of it rather than an import: this layer may
71
+ * not depend on the frontend. Structural typing at `compiler.ts`'s
72
+ * `publishRepresentations` call is the whole of the join, so the two move
73
+ * together and the typechecker is what enforces it.
74
+ */
75
+ export interface HostProtocolBinding {
76
+ readonly protocol: string;
77
+ readonly version: number;
78
+ /**
79
+ * The type the host's own runtime carries values of this protocol in, when
80
+ * the plugin that installs it stated one; `null` when it did not. See
81
+ * `semantics/frontend.ts`'s copy for what states it, and
82
+ * `Representation`'s `native-handle` arm for what reads it.
83
+ */
84
+ readonly native: string | null;
85
+ /**
86
+ * True when the host builds values of this protocol, so its declared body is
87
+ * not a layout. See `semantics/frontend.ts`'s copy; `derive.ts`'s data-only
88
+ * record exception is what reads it.
89
+ */
90
+ readonly opaque: boolean;
91
+ }
92
+ /**
93
+ * Which declared types this program's declarations are bound to a host
94
+ * protocol for, keyed by declaration identity.
95
+ *
96
+ * A declared type with a binding is not a layout this compiler owns or should
97
+ * ever expand: `Element`, `Map`, and every other host-implemented type are
98
+ * defined by whatever installs the protocol, not by the members its ambient
99
+ * (or even non-ambient, structurally-empty) TypeScript declaration happens to
100
+ * spell. Keying by `DeclarationId` rather than a name or a source location is
101
+ * the same rule every other identity in this compiler runs on -- and a host
102
+ * binding, resolved by whichever declaration the checker says a value's type
103
+ * actually names, is exactly the place a name match would silently bind the
104
+ * wrong symbol.
105
+ */
106
+ export interface HostBindingPolicy {
107
+ /** The protocol a declared type is bound to, or `null` for an ordinary declared type. */
108
+ readonly forDeclaration: (declaration: DeclarationId) => HostProtocolBinding | null;
109
+ /**
110
+ * Every host carrier the given one derives from, transitively, nearest base
111
+ * first -- what the host stated about its own inheritance
112
+ * (`PluginCapabilities.nativeBases`), read by the one site that derives a
113
+ * `native-handle` at all and stated on the carrier it builds (see
114
+ * `Representation`'s `native-handle` arm for why the fact has to travel on
115
+ * the carrier).
116
+ *
117
+ * Keyed by the CARRIER rather than by declaration, unlike `forDeclaration`
118
+ * above, because that is the shape of the fact: thirteen declared names can
119
+ * share one runtime type, and what derives from what is a statement about
120
+ * the type, not about any one name for it. A handle whose host stated no
121
+ * carrier (`null`) derives from nothing -- a host that named no type for a
122
+ * protocol has said nothing about that protocol's place in a hierarchy
123
+ * either, and treating the protocol name as a carrier would compare two
124
+ * different key spaces.
125
+ */
126
+ readonly basesOf: (native: string | null) => readonly string[];
127
+ }
128
+ /** No bindings installed: every declared type falls through to its structural answer, unchanged. */
129
+ export declare const defaultHostBindingPolicy: HostBindingPolicy;
130
+ /**
131
+ * Which declared types this program's declarations resolve to a typed-array
132
+ * element width for, keyed by declaration identity -- the same identity
133
+ * `HostBindingPolicy` reads, and for the same reason: matching by the
134
+ * checker's own declaration rather than by name text or file path is what
135
+ * keeps this a checker-driven policy and not a second, source-shaped
136
+ * authority. Unlike a host protocol, a typed array is not something any host
137
+ * installs; it is core ECMAScript with a compiler-owned native layout, so it
138
+ * gets its own policy type rather than a case of `HostBindingPolicy`.
139
+ */
140
+ export interface TypedArrayElementPolicy {
141
+ /** The element width a declared type is a typed-array view over, or `null` for an ordinary declared type. */
142
+ readonly forDeclaration: (declaration: DeclarationId) => TypedArrayElementDomain | null;
143
+ }
144
+ /** No typed-array declarations installed: every declared type falls through to its ordinary answer, unchanged. */
145
+ export declare const defaultTypedArrayElementPolicy: TypedArrayElementPolicy;
146
+ /**
147
+ * Whether a declared type is *the* standard library `Promise<T>` interface --
148
+ * a narrower question than its two siblings above answer. There are eight
149
+ * TypedArray interfaces and an open set of host protocols, each needing a
150
+ * "which one" answer; there is exactly one `Promise<T>` declaration per
151
+ * compilation, so a boolean is the honest shape for the answer, not a richer
152
+ * lookup result with nothing to look up.
153
+ *
154
+ * Checked ahead of `HostBindingPolicy`/the ambient-no-protocol refusal in
155
+ * `representation/derive.ts`'s `'declared'` case, for the identical reason
156
+ * `TypedArrayElementPolicy` is: `Promise<T>`'s ambient interface body, run
157
+ * through `declaredBodyOf`'s data-only member stripping, is not empty the
158
+ * way a JSX `Element` interface is -- it has real (method) members that get
159
+ * stripped, landing on a non-empty but WRONG structural body if this policy
160
+ * is not consulted first. `Promise` is not a host protocol either: nothing
161
+ * installs it, it is core ECMAScript with a compiler-owned native layout
162
+ * (`gea::Promise<T>`), the same category `Uint8Array` and friends are in.
163
+ */
164
+ export interface PromiseDeclarationPolicy {
165
+ /** Whether this declaration is the standard library's own `Promise<T>` interface. */
166
+ readonly forDeclaration: (declaration: DeclarationId) => boolean;
167
+ }
168
+ /** No `Promise` declaration installed: every declared type falls through to its ordinary answer, unchanged. */
169
+ export declare const defaultPromiseDeclarationPolicy: PromiseDeclarationPolicy;
170
+ /**
171
+ * Whether a declared type is *the* standard library `Date` interface, and the
172
+ * C++ type the target carries one in.
173
+ *
174
+ * The same one-declaration-per-compilation question `PromiseDeclarationPolicy`
175
+ * answers, and checked in `derive.ts` immediately beside it for the same
176
+ * reason: `Date`'s ambient body, run through `declaredBodyOf`'s data-only
177
+ * stripping, is an EMPTY object shape (every member of `interface Date` is a
178
+ * method), so without this policy a Date carries a `native-record-ref` whose
179
+ * layout is a struct with no members -- and `d.getFullYear()` then emits as a
180
+ * read of a field that does not exist.
181
+ *
182
+ * It answers a STRING rather than a boolean, which is the one shape difference
183
+ * from its sibling. A Date is not laid out by this compiler; it IS the
184
+ * runtime's own `gea::runtime::Date`, so what the policy carries is that
185
+ * type's spelling -- exactly what `HostProtocolBinding.native` carries for a
186
+ * host-implemented type, and the field `native-record-ref` already has for
187
+ * "the definition is not mine". Keeping the spelling on the policy is what
188
+ * keeps a C++ name out of this layer: `compiler.ts` joins the declaration
189
+ * (semantics) to the spelling (`targets/cpp/prototype/emit-prototype-date.ts`), and
190
+ * `derive.ts` only carries what it is given.
191
+ *
192
+ * Date is core ECMAScript, not a host protocol -- nothing installs it, the
193
+ * standard library declares it -- so it is its own policy rather than a case
194
+ * of `HostBindingPolicy`, on the same footing as `Promise` and the typed
195
+ * arrays.
196
+ */
197
+ export interface DateDeclarationPolicy {
198
+ /** The C++ type a Date is carried in when this declaration is the standard `Date`, or `null` for any other declaration. */
199
+ readonly forDeclaration: (declaration: DeclarationId) => string | null;
200
+ }
201
+ /** No `Date` declaration installed: every declared type falls through to its ordinary answer, unchanged. */
202
+ export declare const defaultDateDeclarationPolicy: DateDeclarationPolicy;
203
+ /**
204
+ * Which declared type is the standard library's own `Generator<T, TReturn,
205
+ * TNext>` -- the type a `function*` returns.
206
+ *
207
+ * Its own parameter for the same reasons `PromiseDeclarationPolicy` is one: it
208
+ * is core ECMAScript rather than a host protocol (nothing installs it), it is
209
+ * ONE declaration rather than a family, and the question it answers is "is
210
+ * this THE ambient `Generator`", which no other policy asks.
211
+ *
212
+ * It has to be asked before the ambient-body walk for the same concrete reason
213
+ * `Promise<T>` does: run through `declaredBodyOf`'s data-only member
214
+ * stripping, `Generator`'s body loses `next`/`return`/`throw` and keeps
215
+ * whatever else survives, so without this check every generator value would
216
+ * silently derive as a `native-record-ref` to a struct with no members -- a
217
+ * carrier that compiles and answers nothing. `IterableIterator` and the bare
218
+ * `Iterator` are deliberately NOT included: a program can and does hand-write
219
+ * a plain object typed `Iterator<T>` (a class's own `[Symbol.iterator]()`
220
+ * routinely returns one), and claiming those objects are coroutine frames
221
+ * would be exactly the silent wrong answer this policy exists to prevent.
222
+ */
223
+ export interface GeneratorDeclarationPolicy {
224
+ readonly forDeclaration: (declaration: DeclarationId) => boolean;
225
+ }
226
+ /** No `Generator` declaration installed: every declared type falls through to its ordinary answer, unchanged. */
227
+ export declare const defaultGeneratorDeclarationPolicy: GeneratorDeclarationPolicy;
228
+ /** The four keyed-collection families the language declares -- see `Representation`'s `keyed-collection` arm. */
229
+ export type KeyedCollectionFamily = 'map' | 'set' | 'weak-map' | 'weak-set';
230
+ /**
231
+ * Which declared types are the standard library's own `Map`/`Set`/`WeakMap`/
232
+ * `WeakSet` interfaces -- the same shape of policy `TypedArrayElementPolicy`
233
+ * is, and installed for the same reason.
234
+ *
235
+ * These four are core ECMAScript, not a host protocol: nothing installs them,
236
+ * and the runtime's own `gea::Map`/`gea::Set`/`gea::WeakMap`/`gea::WeakSet`
237
+ * are compiler-owned native layouts exactly as `gea::TypedArray` and
238
+ * `gea::Promise` are. Consulted ahead of `HostBindingPolicy` in `derive.ts`'s
239
+ * `'declared'` case, and that ordering is load-bearing rather than cosmetic:
240
+ * `lib.es5.d.ts` declares `var Map: MapConstructor`, so the ambient-value
241
+ * census (`semantics/host-protocols.ts`) reaches the `Map` INTERFACE through
242
+ * `MapConstructor.groupBy`'s return type and binds it as a host protocol
243
+ * named `Map`. That binding is a real fact about the constructor's own
244
+ * handle, and a wrong one about instances: it turns every `Map<K, V>` in the
245
+ * program into an OPAQUE `native-handle` with no key or value carrier at all
246
+ * -- exactly the untyped answer this policy exists to displace.
247
+ */
248
+ export interface KeyedCollectionPolicy {
249
+ /** The collection family a declared type names, or `null` for an ordinary declared type. */
250
+ readonly forDeclaration: (declaration: DeclarationId) => KeyedCollectionFamily | null;
251
+ }
252
+ /** No keyed-collection declarations installed: every declared type falls through to its ordinary answer, unchanged. */
253
+ export declare const defaultKeyedCollectionPolicy: KeyedCollectionPolicy;
254
+ /** The two standard ArrayBuffer-family object types -- see `Representation`'s `array-buffer` and `data-view` arms. */
255
+ export type StandardBufferKind = 'array-buffer' | 'shared-array-buffer' | 'data-view';
256
+ /**
257
+ * Which declared types are the standard library's own `ArrayBuffer` and
258
+ * `DataView` interfaces -- the same shape of policy, checked at the same point
259
+ * in `derive.ts`'s `'declared'` case, and installed for the same reason as
260
+ * `TypedArrayElementPolicy` and `KeyedCollectionPolicy` above.
261
+ *
262
+ * The reason, concretely: the ambient-value census binds `ArrayBuffer` as a
263
+ * host protocol -- it is reachable as `Uint8ArrayConstructor`'s own return type
264
+ * `Uint8Array<ArrayBuffer>`, among several other routes -- so without this
265
+ * policy every `ArrayBuffer` in the program carries an OPAQUE `native-handle`
266
+ * with no bytes behind it, and every program that names one is refused for a
267
+ * `native-boundary:ArrayBufferConstructor@1` nothing could honestly claim. The
268
+ * CONSTRUCTOR keeps its handle, which is right: `ArrayBuffer` the value really
269
+ * is a host-supplied constructor object.
270
+ */
271
+ export interface StandardBufferPolicy {
272
+ /** Which standard buffer type a declared type is, or `null` for an ordinary declared type. */
273
+ readonly forDeclaration: (declaration: DeclarationId) => StandardBufferKind | null;
274
+ }
275
+ /** No buffer declarations installed: every declared type falls through to its ordinary answer, unchanged. */
276
+ export declare const defaultStandardBufferPolicy: StandardBufferPolicy;
277
+ /**
278
+ * The three standard regular-expression declarations that have a compiler-owned
279
+ * native layout: the pattern object itself, and the two shapes a match answers
280
+ * in.
281
+ *
282
+ * `pattern` is `lib.es5.d.ts`'s `RegExp` interface; `exec-result` is
283
+ * `RegExpExecArray`; `match-result` is `RegExpMatchArray`. The two results are
284
+ * kept apart rather than folded into one kind because `lib.es5.d.ts` itself
285
+ * keeps them apart, and the difference is physical, not cosmetic:
286
+ * `RegExpExecArray` declares `index: number` and `input: string` REQUIRED,
287
+ * while `RegExpMatchArray` declares both OPTIONAL -- because `'s'.match(re)`
288
+ * with a `g` flag answers a plain list of matched substrings with neither
289
+ * field. One native struct for both would have to widen the required pair to
290
+ * optional and force every `exec` reader through an unwrap the program never
291
+ * wrote.
292
+ */
293
+ export type RegExpDeclarationKind = 'pattern' | 'exec-result' | 'match-result';
294
+ /**
295
+ * Which declared types are the standard library's own `RegExp`,
296
+ * `RegExpExecArray` and `RegExpMatchArray` -- the same shape of policy
297
+ * `PromiseDeclarationPolicy` is, installed for the same reason and consulted
298
+ * in the same place.
299
+ *
300
+ * A regular expression is core ECMAScript (`lib.es5.d.ts`), not a host
301
+ * protocol: nothing installs it, and `gea::runtime::regex::Pattern` is a
302
+ * compiler-owned native layout in exactly the category `gea::TypedArray`,
303
+ * `gea::Promise` and `gea::Map` are in. So this is checked in `derive.ts`'s
304
+ * `'declared'` case AHEAD of `HostBindingPolicy`, and the ordering is
305
+ * load-bearing for the same measured reason `KeyedCollectionPolicy`'s is:
306
+ * `lib.es5.d.ts` declares `var RegExp: RegExpConstructor`, so the ambient-value
307
+ * census reaches the `RegExp` INTERFACE through the constructor's own
308
+ * `new (...): RegExp` result and binds it as an opaque host protocol named
309
+ * `RegExp`. That binding is right about the constructor object and wrong about
310
+ * instances -- it turns every pattern in the program into a `native-handle`
311
+ * with no layout, so `re.source` has nowhere to go.
312
+ *
313
+ * The three bodies are NOT empty after `declaredBodyOf`'s method stripping
314
+ * either, which is the second half of why this cannot be left to fall through:
315
+ * `RegExp` keeps exactly the ten data members `gea::runtime::regex::Pattern`
316
+ * declares, and the two result interfaces keep `index`/`input`/`groups`/
317
+ * `length` plus a number index signature. Falling through would seal a
318
+ * plausible-looking struct for each and emit a program that compiles and is
319
+ * not a regular expression.
320
+ */
321
+ export interface RegExpDeclarationBinding {
322
+ /** Which of the three standard regular-expression declarations this is. */
323
+ readonly kind: RegExpDeclarationKind;
324
+ /**
325
+ * The target's own spelling for the layout, supplied by whoever installs the
326
+ * policy rather than named here -- for the same reason `HostBindingPolicy`
327
+ * carries `native` instead of `derive.ts` guessing one. Nothing under
328
+ * `src/representation/` may name a C++ type: the deriver selects carriers for
329
+ * any backend, and the one that renders them is the authority on how they
330
+ * are spelled. `compiler.ts` composes the two (it is already the place that
331
+ * defaults the conversion registry to the C++ one).
332
+ */
333
+ readonly native: string;
334
+ }
335
+ export interface RegExpDeclarationPolicy {
336
+ /** Which regular-expression declaration this is, or `null` for an ordinary declared type. */
337
+ readonly forDeclaration: (declaration: DeclarationId) => RegExpDeclarationBinding | null;
338
+ }
339
+ /** No `RegExp` declarations installed: every declared type falls through to its ordinary answer, unchanged. */
340
+ export declare const defaultRegExpDeclarationPolicy: RegExpDeclarationPolicy;
341
+ /**
342
+ * Which declared type is the standard library's own `String` -- the WRAPPER
343
+ * OBJECT interface (`lib.es5.d.ts`'s `interface String`), not the `string`
344
+ * primitive every other value of that name carries. Same shape of policy as
345
+ * `RegExpDeclarationPolicy` immediately above, installed for the same reason
346
+ * and consulted in the same place, right after it.
347
+ *
348
+ * A `String` object is core ECMAScript (ECMA-262 22.1.5, `new String(x)`),
349
+ * not a host protocol, so this is checked in `derive.ts`'s `'declared'` case
350
+ * AHEAD of `HostBindingPolicy`, for the identical load-bearing reason
351
+ * `RegExpDeclarationPolicy`'s ordering is: `lib.es5.d.ts` declares
352
+ * `var String: StringConstructor`, so the ambient-value census reaches the
353
+ * `String` INTERFACE through the constructor's own `new (...): String` result
354
+ * and binds it as an opaque host protocol named `String`. That binding is
355
+ * right about the constructor object and wrong about instances -- it would
356
+ * turn every wrapper object in the program into a `native-handle` with no
357
+ * layout, so a dynamic write like `escapedString.isEscaped = true` (hono's
358
+ * `utils/html.ts`) has nowhere to land.
359
+ *
360
+ * `String`'s body is NOT empty after `declaredBodyOf`'s method stripping
361
+ * either, the second half of why this cannot be left to fall through: it
362
+ * keeps `length: number` and a number index signature (indexed character
363
+ * access), which is the same "real data members plus an index signature"
364
+ * shape `RegExpExecArray` has. Falling through would seal a plausible
365
+ * `record-with-index` struct with a `length` FIELD, and a later `.length`
366
+ * read would compile against a struct member that does not exist on the
367
+ * hand-written `gea::runtime::StringObject` -- a `cert green / clang red`
368
+ * outcome. `emit-prototype-string.ts`'s `stringObjectMemberText` renders
369
+ * `.length` correctly instead, off the one real datum
370
+ * (`StringObject::value`), which is why this policy names no fields at all:
371
+ * unlike `RegExpDeclarationBinding`, there is exactly one shape here, so
372
+ * there is nothing to distinguish by `kind`.
373
+ */
374
+ export interface StringObjectDeclarationPolicy {
375
+ /** The target's spelling for the String-object layout, or `null` for an ordinary declared type. */
376
+ readonly forDeclaration: (declaration: DeclarationId) => string | null;
377
+ }
378
+ /** No `String` declaration installed: every declared type falls through to its ordinary answer, unchanged. */
379
+ export declare const defaultStringObjectDeclarationPolicy: StringObjectDeclarationPolicy;
380
+ /** Built-in Error interfaces share the runtime's native error layout. */
381
+ export interface ErrorDeclarationPolicy {
382
+ readonly forDeclaration: (declaration: DeclarationId) => string | null;
383
+ }
384
+ export declare const defaultErrorDeclarationPolicy: ErrorDeclarationPolicy;
385
+ /**
386
+ * Which declared type is the bare `Function` interface (`lib.es5.d.ts`'s
387
+ * `interface Function`, not `FunctionConstructor` and not a signature type).
388
+ *
389
+ * Its own policy, on the same footing as `PromiseDeclarationPolicy` and
390
+ * consulted in `derive.ts` AHEAD of `HostBindingPolicy`, for the identical
391
+ * reason theirs are: the ambient-value census has ALREADY bound `Function` as
392
+ * an opaque host protocol -- `lib.es5.d.ts` declares `var Function:
393
+ * FunctionConstructor`, whose `new (...): Function` result carries the
394
+ * INTERFACE into the closure -- so falling through to `binding` gives every
395
+ * `Function`-typed value a `native-handle` and mints
396
+ * `native-boundary:Function@1`, an obligation no target can ever satisfy
397
+ * because there is no C++ type for "some callable, signature unknown".
398
+ *
399
+ * The carrier is `dynamic('untyped-callable')` rather than a layout, and that
400
+ * is not a boxing shortcut: see that reason's own comment
401
+ * (`representation/model.ts`) for why a bare `Function` genuinely states no
402
+ * frame, and why the checker already answers `any` for the same type on the
403
+ * callee side. Deriving the interface's BODY instead would seal a struct of
404
+ * `name`/`length`/`arguments`/`caller`/`prototype` -- a plausible-looking
405
+ * layout that is not a function.
406
+ */
407
+ export interface FunctionDeclarationPolicy {
408
+ /** True when this declaration is the standard bare `Function` interface. */
409
+ readonly forDeclaration: (declaration: DeclarationId) => boolean;
410
+ }
411
+ /** No `Function` declaration installed: every declared type falls through to its ordinary answer, unchanged. */
412
+ export declare const defaultFunctionDeclarationPolicy: FunctionDeclarationPolicy;
413
+ /**
414
+ * Which classes a class inherits from, transitively, nearest ancestor first.
415
+ *
416
+ * Its own policy rather than a field on `class-ref`, and deliberately so: a
417
+ * carrier states what a cell HOLDS, and two cells holding the same class hold
418
+ * the same thing whatever that class extends. Putting the chain in the carrier
419
+ * would put it in `representationKey`, making a class's ancestry part of its
420
+ * carrier identity -- and a key that states more than the identity is the
421
+ * defect `interning-key` guidance already names, not a richer answer.
422
+ *
423
+ * Read by exactly two questions, both of which are unanswerable without it and
424
+ * both of which are only ever sound in the ancestor direction:
425
+ * `derive.ts`'s intersection reduction (`T & AggregateOperation` IS the
426
+ * more-derived class when one member descends from the other), and
427
+ * `conversion/build.ts`'s widening enumeration (a derived class-ref may be
428
+ * stored into a base class-ref cell; the reverse may not).
429
+ *
430
+ * See `classHeritageOf` (semantics/class-heritage.ts) for why the checker
431
+ * rather than the heritage syntax answers it, and why `implements` is absent.
432
+ */
433
+ export interface ClassHeritagePolicy {
434
+ /** The classes this declaration inherits from, nearest first; empty for a base class or a non-class. */
435
+ readonly forDeclaration: (declaration: DeclarationId) => readonly DeclarationId[];
436
+ /**
437
+ * The derived classes the program stores into a slot typed as this class's
438
+ * constructor, which that constructor family must therefore also name; see
439
+ * `semantics/constructor-slot-subclasses.ts`.
440
+ */
441
+ readonly constructorSlotSubclassesOf: (declaration: DeclarationId) => readonly DeclarationId[];
442
+ }
443
+ /**
444
+ * The one class a program declares as an interface's implementation, keyed by
445
+ * the interface's declaration -- see `semantics/interface-implementors.ts` for
446
+ * what "the one" means and for the three refusals that keep this off every
447
+ * interface that is really a record.
448
+ *
449
+ * Read by the deriver in the `declared` case, ahead of the host-binding and
450
+ * structural-body paths: the answer is not a layout for the interface, it is
451
+ * that the interface has no inhabitant of its own and the class's carrier is
452
+ * what a slot of it holds.
453
+ */
454
+ export interface InterfaceImplementorPolicy {
455
+ /** Every class the program declares as this interface's implementation, in source order; empty when none. */
456
+ readonly forDeclaration: (declaration: DeclarationId) => readonly DeclarationId[];
457
+ }
458
+ /** No implementors installed: every interface derives its own structural body, exactly as before this policy existed. */
459
+ export declare const defaultInterfaceImplementorPolicy: InterfaceImplementorPolicy;
460
+ /**
461
+ * The copies of a generic class whose copies can differ in layout, by the
462
+ * class's root declaration id -- `structural.ts`'s `classCopies`. The
463
+ * deriver's `physicalClassDeclarationOf` groups them by the representation
464
+ * of their layout-relevant fillings: one physical class per group, named by
465
+ * the group's lowest copy ordinal (`decl|f0|36@1`) when there is more than
466
+ * one group, and by the root alone when there is one.
467
+ */
468
+ export interface ClassCopyPolicy {
469
+ readonly copiesOf: (declaration: DeclarationId) => readonly {
470
+ readonly ordinal: number;
471
+ readonly typeArguments: readonly StructuralTypeId[];
472
+ readonly constructor: StructuralTypeId;
473
+ }[];
474
+ }
475
+ /** No copies installed: every generic class is one physical class, named by its root. */
476
+ export declare const defaultClassCopyPolicy: ClassCopyPolicy;
477
+ /** No heritage installed: every class reads as a base class, and no upcast or intersection reduction is proposed. */
478
+ export declare const defaultClassHeritagePolicy: ClassHeritagePolicy;
479
+ /**
480
+ * The type a host carries the one object behind a namespace ROOT in, keyed by
481
+ * the root value's own structural type -- `window`'s `Window & typeof
482
+ * globalThis` to `gea::host::WindowFacade`.
483
+ *
484
+ * The one policy here NOT keyed by `DeclarationId`, and the difference is
485
+ * forced rather than chosen. Its three siblings above all answer a question
486
+ * about a declared TYPE, so the declaration the checker resolved is both
487
+ * available and the right key. This one answers a question about a VALUE the
488
+ * host owns, and a root's value type routinely has no declaration to key by:
489
+ * `window`'s is an intersection, whose `getSymbol()` is `undefined`, and a
490
+ * host may equally declare a root with an anonymous object type. A structural
491
+ * type id is also the only key `derive.ts` could read here at all, because
492
+ * this has to be consulted BEFORE the shape switch rather than inside its
493
+ * `'declared'` case -- an intersection never reaches that case.
494
+ *
495
+ * Why a root needs a carrier when the emitter never materializes one: a root
496
+ * is a path, so `window.innerWidth` renders `gea::host::window.innerWidth()`
497
+ * and no cell named `window` exists (`projection/bindings.ts`'s
498
+ * `host-namespace` storage). But the program still PUBLISHES a reference and a
499
+ * binding read for the root, and every published result gets a carrier. With
500
+ * no answer here the only one available is the root's ambient declaration, and
501
+ * `deriveIntersection` flattens lib.dom's `Window` into a 26-field struct
502
+ * naming protocol tags -- `gea_native_protocol_Window_v1`,
503
+ * `..._ServiceWorker_v1` -- that no plugin declares and no header defines. That
504
+ * struct is unreachable from any value in the program and still lands in the
505
+ * translation unit, because `targets/cpp/records.ts` seeds from every selected
506
+ * carrier; `examples/bouncing-balls` certified clean, emitted 6230 lines, and
507
+ * was rejected by clang for exactly that.
508
+ *
509
+ * The answer is a `native-record-ref` with the stated `native` spelling, which
510
+ * is the carrier that already means "the host defines this type, emit no
511
+ * struct of your own for it". Never a `native-handle`: that would need a
512
+ * protocol tag, and inventing `Window@1` is the regression
513
+ * `semantics/host-protocols.ts` records having cost three apps their
514
+ * certificate. Never `unresolved` either -- lattice bottom is the absence of an
515
+ * answer, and there is a perfectly good one: `gea::host::window` is a real
516
+ * `inline constexpr WindowFacade` in the engine's own `host/window.h`.
517
+ *
518
+ * A root the installed plugins state no type for answers `null` and derives
519
+ * exactly as it did before. Nothing here invents a spelling.
520
+ */
521
+ export interface HostNamespaceRootPolicy {
522
+ /** The host's own type for this namespace root's object, or `null` for an ordinary value type. */
523
+ readonly forType: (type: StructuralTypeId) => string | null;
524
+ }
525
+ /** No namespace roots installed: every type falls through to its structural answer, unchanged. */
526
+ export declare const defaultHostNamespaceRootPolicy: HostNamespaceRootPolicy;
527
+ /**
528
+ * The field list a named record layout resolves to, or `null` for a shape that
529
+ * carries none.
530
+ *
531
+ * `native-record-ref` names a shape and nothing else -- its layout lives in the
532
+ * sealed table and is resolved at emission (`targets/cpp/records.ts`'s
533
+ * `recordFieldsOfShape`), which is exactly what makes it finite for a recursive
534
+ * interface. The conversion registry has to ask the same question earlier, to
535
+ * decide whether a structural `record` satisfies that named shape, and a
536
+ * policy is how it asks without the registry gaining a second opinion about
537
+ * layout. A policy rather than a field on the carrier for the reason
538
+ * `ClassHeritagePolicy` states: a layout is not carrier identity and would
539
+ * wrongly enter `representationKey`.
540
+ */
541
+ export interface RecordLayoutPolicy {
542
+ readonly forShape: (shapeId: string) => readonly RecordField[] | null;
543
+ readonly indexesForShape?: (shapeId: string) => readonly {
544
+ readonly value: Representation;
545
+ readonly key: 'string' | 'number' | 'symbol';
546
+ }[];
547
+ /** Data-only layouts, excluding accessors and open property sidecars. */
548
+ readonly plainFieldsForShape?: (shapeId: string) => readonly RecordField[] | null;
549
+ /** The accessors a shape declares; `null` for a shape with no record layout. */
550
+ readonly accessorsForShape?: (shapeId: string) => readonly RecordAccessor[] | null;
551
+ /** Whether a generated class provides a bindable instance method for this key. */
552
+ readonly classMethodFor?: (declaration: DeclarationId, key: string) => boolean;
553
+ /**
554
+ * The zero-argument instance method this key names when a call to it can be
555
+ * spelled DIRECTLY from a bare receiver expression -- the body to call and
556
+ * the carrier it answers -- or `null`.
557
+ *
558
+ * A fact about the projection, not a spelling: the caller composes the C++
559
+ * name from the `FunctionId`, exactly as it does for every other body. What
560
+ * this decides is the part only the class table can decide -- whether the
561
+ * key is a method at all, whether its convention takes nothing but the
562
+ * receiver, and whether any subclass overrides it. An overridden key
563
+ * dispatches virtually, and a direct body call would run the BASE's
564
+ * implementation against a derived instance, so such a key answers `null`
565
+ * and its reader refuses rather than answering wrong.
566
+ */
567
+ readonly classDirectMethodFor?: (declaration: DeclarationId, key: string) => {
568
+ readonly callable: FunctionId;
569
+ readonly result: Representation;
570
+ } | null;
571
+ /**
572
+ * The carrier a class's GETTER publishes for this key, or `null` when the
573
+ * key names no readable accessor on the class or its bases.
574
+ *
575
+ * A class's accessors are not in `forShape`: that list is physical storage,
576
+ * and an accessor has none. So a record view of a class instance has to ask
577
+ * for them separately, or a target field backed by a getter looks absent --
578
+ * which is why `IncomingMessage` could not be viewed as
579
+ * `{ rawHeaders: string[] }` at all, though every read of it answers.
580
+ *
581
+ * A carrier rather than a boolean because the view has to decide the pair:
582
+ * the getter's own result is what the target field is built from, and the
583
+ * two are not always the same carrier.
584
+ */
585
+ readonly classAccessorFor?: (declaration: DeclarationId, key: string) => Representation | null;
586
+ /** Whether no evaluation can instantiate this class (`semantics/uninstantiable-classes.ts`). */
587
+ readonly classUninstantiable?: (declaration: DeclarationId) => boolean;
588
+ }
589
+ export declare const defaultRecordLayoutPolicy: RecordLayoutPolicy;