@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,66 @@
1
+ import ts from 'typescript';
2
+ /**
3
+ * The first `this` a function-like body reads in its OWN scope, or `null`.
4
+ *
5
+ * Scoping rules are `bodyReadsThis`'s exactly -- an arrow is walked through,
6
+ * an ordinary nested function is not -- so the keyword this returns is one the
7
+ * enclosing declaration's own frame supplies. Callers need the NODE, not the
8
+ * boolean, when the answer they want is the checker's type of that receiver.
9
+ */
10
+ export declare const firstOwnThisKeyword: (node: ts.Node) => ts.Node | null;
11
+ /**
12
+ * The type of a `this` read inside an object literal member when the
13
+ * literal's CONTEXT, not the literal, types it -- or `null` for an ordinary
14
+ * member.
15
+ *
16
+ * TypeScript types a literal member's `this` as the literal unless the
17
+ * contextual type carries a `ThisType<T>` marker, and the standard library
18
+ * puts one on every property descriptor: `Object.defineProperty`'s third
19
+ * parameter is `PropertyDescriptor & ThisType<any>`. That is the language
20
+ * stating a fact, not a gap in the checker: a descriptor's `get` or `value`
21
+ * function is installed onto the defineProperty TARGET and entered with
22
+ * whatever object the later lookup resolved on -- `@hono/node-server`
23
+ * installs `text()` onto its request prototype this way, and the object that
24
+ * reaches it is a request, never the descriptor literal. Taking the literal
25
+ * as the receiver declared a convention whose frame is the descriptor record,
26
+ * so the dynamic call through the installed property refused the request it
27
+ * was handed at runtime.
28
+ *
29
+ * Only the `any` answer is read, and only when the literal HAS a context that
30
+ * is not itself `any`: a JS literal with no context also reads `any` at the
31
+ * keyword, but there nothing says the receiver is anyone but the literal
32
+ * (`local-bindings.ts`'s `thisValueTypeOf`). What remains is exactly the
33
+ * declared dynamic boundary, so the frame and the read both take the
34
+ * checker's own `any` -- `structural-receiver.ts` for the frame,
35
+ * `local-bindings.ts` for the read.
36
+ */
37
+ export declare const contextTypedLiteralThisOf: (checker: ts.TypeChecker, literal: ts.ObjectLiteralExpression, keyword: ts.Node) => ts.Type | null;
38
+ export declare const bodyReadsThis: (node: ts.Node, includeSuper?: boolean) => boolean;
39
+ /**
40
+ * The receiver a signature is invoked with, when the language supplies one
41
+ * that the type system never spells.
42
+ *
43
+ * A non-static class member's `this` is the class instance -- that is what
44
+ * `[[Call]]` binds -- but TypeScript records a `thisParameter` only where one
45
+ * was written down. Reading only the written one leaves every method with a
46
+ * convention that declares no receiver, and a body that then reads `this`
47
+ * from a frame slot its own signature says does not exist.
48
+ *
49
+ * An interface or object-type method member (`ts.MethodSignature`) has the
50
+ * same gap in principle -- `{ start(): boolean }`'s `[[Call]]` still binds
51
+ * whatever object a property access resolved on -- but extending this to
52
+ * that case was tried and reverted: an object-type method's implicit
53
+ * receiver is the very type that contains it, and for an *anonymous* object
54
+ * type (no declared name to anchor a cycle on, unlike a class or interface)
55
+ * that is a genuine self-reference with no nominal carrier for
56
+ * `representation/derive.ts` to fall back on -- it hit that deriver's
57
+ * "recurs without a nominal carrier" guard rather than a carrier. Solving it
58
+ * needs a nominal carrier for a self-referential anonymous shape, which
59
+ * `deriveObject` does not have and this function cannot manufacture.
60
+ */
61
+ import { type DeclaredMemberCensus } from './structural-declarations.js';
62
+ export declare const createReceiverResolver: (checker: ts.TypeChecker, layoutTypeAt: (node: ts.Node) => ts.Type, declaredMembers?: DeclaredMemberCensus) => {
63
+ implicitReceiverOf: (declaration: ts.SignatureDeclaration) => ts.Type | null;
64
+ declaredMemberSignatureOf: (declaration: ts.MethodDeclaration, literal: ts.ObjectLiteralExpression) => ts.MethodSignature | null;
65
+ };
66
+ export declare const isAsyncSignature: (declaration: ts.SignatureDeclaration | undefined) => boolean;
@@ -0,0 +1,551 @@
1
+ import ts from 'typescript';
2
+ // Whether a function-like body reads `this` anywhere in its OWN scope -- an
3
+ // arrow function is walked through (lexical `this`, so an arrow nested
4
+ // inside a method still reads the method's receiver), but a nested ordinary
5
+ // function/method/accessor/class introduces its own `this` binding and is
6
+ // not descended into.
7
+ /**
8
+ * The first `this` a function-like body reads in its OWN scope, or `null`.
9
+ *
10
+ * Scoping rules are `bodyReadsThis`'s exactly -- an arrow is walked through,
11
+ * an ordinary nested function is not -- so the keyword this returns is one the
12
+ * enclosing declaration's own frame supplies. Callers need the NODE, not the
13
+ * boolean, when the answer they want is the checker's type of that receiver.
14
+ */
15
+ export const firstOwnThisKeyword = (node) => {
16
+ let found = null;
17
+ const visit = (n) => {
18
+ if (found)
19
+ return;
20
+ if (n.kind === ts.SyntaxKind.ThisKeyword) {
21
+ found = n;
22
+ return;
23
+ }
24
+ if (ts.isFunctionDeclaration(n) ||
25
+ ts.isFunctionExpression(n) ||
26
+ ts.isMethodDeclaration(n) ||
27
+ ts.isGetAccessorDeclaration(n) ||
28
+ ts.isSetAccessorDeclaration(n) ||
29
+ ts.isClassLike(n)) {
30
+ return;
31
+ }
32
+ ts.forEachChild(n, visit);
33
+ };
34
+ ts.forEachChild(node, visit);
35
+ return found;
36
+ };
37
+ /**
38
+ * The type of a `this` read inside an object literal member when the
39
+ * literal's CONTEXT, not the literal, types it -- or `null` for an ordinary
40
+ * member.
41
+ *
42
+ * TypeScript types a literal member's `this` as the literal unless the
43
+ * contextual type carries a `ThisType<T>` marker, and the standard library
44
+ * puts one on every property descriptor: `Object.defineProperty`'s third
45
+ * parameter is `PropertyDescriptor & ThisType<any>`. That is the language
46
+ * stating a fact, not a gap in the checker: a descriptor's `get` or `value`
47
+ * function is installed onto the defineProperty TARGET and entered with
48
+ * whatever object the later lookup resolved on -- `@hono/node-server`
49
+ * installs `text()` onto its request prototype this way, and the object that
50
+ * reaches it is a request, never the descriptor literal. Taking the literal
51
+ * as the receiver declared a convention whose frame is the descriptor record,
52
+ * so the dynamic call through the installed property refused the request it
53
+ * was handed at runtime.
54
+ *
55
+ * Only the `any` answer is read, and only when the literal HAS a context that
56
+ * is not itself `any`: a JS literal with no context also reads `any` at the
57
+ * keyword, but there nothing says the receiver is anyone but the literal
58
+ * (`local-bindings.ts`'s `thisValueTypeOf`). What remains is exactly the
59
+ * declared dynamic boundary, so the frame and the read both take the
60
+ * checker's own `any` -- `structural-receiver.ts` for the frame,
61
+ * `local-bindings.ts` for the read.
62
+ */
63
+ export const contextTypedLiteralThisOf = (checker, literal, keyword) => {
64
+ const contextual = checker.getContextualType(literal);
65
+ if (!contextual || (contextual.flags & (ts.TypeFlags.Any | ts.TypeFlags.Unknown)) !== 0)
66
+ return null;
67
+ const receiver = checker.getTypeAtLocation(keyword);
68
+ return (receiver.flags & ts.TypeFlags.Any) === 0 ? null : receiver;
69
+ };
70
+ export const bodyReadsThis = (node, includeSuper = false) => {
71
+ let found = false;
72
+ const visit = (n) => {
73
+ if (found)
74
+ return;
75
+ if (n.kind === ts.SyntaxKind.ThisKeyword || (includeSuper && n.kind === ts.SyntaxKind.SuperKeyword)) {
76
+ found = true;
77
+ return;
78
+ }
79
+ // A nested class's heritage and computed names evaluate in the outer
80
+ // scope. Retain the static receiver conservatively for that boundary.
81
+ if (includeSuper && ts.isClassLike(n)) {
82
+ found = true;
83
+ return;
84
+ }
85
+ if (includeSuper && (ts.isMethodDeclaration(n) || ts.isGetAccessorDeclaration(n) || ts.isSetAccessorDeclaration(n))) {
86
+ if (ts.isComputedPropertyName(n.name))
87
+ visit(n.name.expression);
88
+ return;
89
+ }
90
+ if (ts.isFunctionDeclaration(n) ||
91
+ ts.isFunctionExpression(n) ||
92
+ ts.isMethodDeclaration(n) ||
93
+ ts.isGetAccessorDeclaration(n) ||
94
+ ts.isSetAccessorDeclaration(n) ||
95
+ ts.isClassLike(n)) {
96
+ return;
97
+ }
98
+ ts.forEachChild(n, visit);
99
+ };
100
+ ts.forEachChild(node, visit);
101
+ return found;
102
+ };
103
+ /**
104
+ * The receiver a signature is invoked with, when the language supplies one
105
+ * that the type system never spells.
106
+ *
107
+ * A non-static class member's `this` is the class instance -- that is what
108
+ * `[[Call]]` binds -- but TypeScript records a `thisParameter` only where one
109
+ * was written down. Reading only the written one leaves every method with a
110
+ * convention that declares no receiver, and a body that then reads `this`
111
+ * from a frame slot its own signature says does not exist.
112
+ *
113
+ * An interface or object-type method member (`ts.MethodSignature`) has the
114
+ * same gap in principle -- `{ start(): boolean }`'s `[[Call]]` still binds
115
+ * whatever object a property access resolved on -- but extending this to
116
+ * that case was tried and reverted: an object-type method's implicit
117
+ * receiver is the very type that contains it, and for an *anonymous* object
118
+ * type (no declared name to anchor a cycle on, unlike a class or interface)
119
+ * that is a genuine self-reference with no nominal carrier for
120
+ * `representation/derive.ts` to fall back on -- it hit that deriver's
121
+ * "recurs without a nominal carrier" guard rather than a carrier. Solving it
122
+ * needs a nominal carrier for a self-referential anonymous shape, which
123
+ * `deriveObject` does not have and this function cannot manufacture.
124
+ */
125
+ import { emptyDeclaredMemberCensus } from './structural-declarations.js';
126
+ export const createReceiverResolver = (checker, layoutTypeAt, declaredMembers = emptyDeclaredMemberCensus) => {
127
+ /**
128
+ * The member declaration this literal method IMPLEMENTS -- the one the
129
+ * record field's own carrier is built from.
130
+ *
131
+ * ONE authority with two consumers, and they are the two halves of the same
132
+ * store: `declaredMemberReceiverOf` below asks it which receiver the
133
+ * convention carries, and `structural-parts.ts`'s `signatureOf` asks it
134
+ * which RESULT the convention returns for a literal method that annotates
135
+ * none. Both exist because the field and the value assigned into it are
136
+ * derived from different declarations, and any component of the convention
137
+ * the two derive separately is a store C++ has no conversion for.
138
+ *
139
+ * A record field's C++ carrier comes from the member signature of the type
140
+ * the literal is checked against -- for `type Demo = { render(t: number):
141
+ * void }` that is the `MethodSignature`, which the type-literal branch below
142
+ * gives a receiver. The literal's own `render(t) { ... }` derives its
143
+ * callable from its `MethodDeclaration` instead, and the `bodyReadsThis`
144
+ * gate below answers that one `null` whenever the body happens not to
145
+ * mention `this`. Two rules, one member: the field is
146
+ * `CallableObject<void(Self, double)>` and the value assigned into it is
147
+ * `CallableObject<void(double)>`, which is not a conversion C++ has -- the
148
+ * emitted unit is rejected at the store. (`examples/canvas-3d-cube`'s
149
+ * `createCanvasCubeDemo` is exactly this; so is a 20-line reproducer.)
150
+ *
151
+ * So when the body does not settle the question, the DECLARED member does --
152
+ * by asking this same function about that member's own declaration, so there
153
+ * is one rule rather than a second copy of it here. That answer is `null`
154
+ * for every shape the branches below refuse (an interface member, a type
155
+ * literal with no enclosing alias), which is what keeps this additive: a
156
+ * literal whose declared member carries no receiver still derives none, and
157
+ * a literal with no contextual type at all is untouched.
158
+ */
159
+ const declaredMemberSignatureOf = (declaration, literal) => {
160
+ const contextual = checker.getContextualType(literal);
161
+ if (!contextual)
162
+ return null;
163
+ // Matched on the member's own SYMBOL, not on its written name. A computed
164
+ // well-known-symbol member (`[Symbol.iterator]() { ... }`) has no
165
+ // identifier or string name to look up, and reading only the two written
166
+ // spellings left exactly that member unmatched -- so a cursor factory
167
+ // whose body never says `this` took no receiver while the member it
168
+ // implements (`type TypedSource = { [Symbol.iterator](): TypedCursor }`,
169
+ // whose alias branch below DOES give one) took the source's, and the two
170
+ // conventions for one member had no conversion between them
171
+ // (`typed-custom-iterator-close.ts`). `escapedName` is the checker's own
172
+ // key for both sides, `__@iterator` included, so the two are compared the
173
+ // way the checker compares them rather than by re-deriving a name.
174
+ const own = checker.getSymbolAtLocation(declaration.name);
175
+ if (!own)
176
+ return null;
177
+ const member = contextual.getProperties().find((candidate) => candidate.escapedName === own.escapedName);
178
+ return member?.declarations?.find(ts.isMethodSignature) ?? null;
179
+ };
180
+ const declaredMemberReceiverOf = (declaration, literal) => {
181
+ const signature = declaredMemberSignatureOf(declaration, literal);
182
+ return signature ? implicitReceiverOf(signature) : null;
183
+ };
184
+ /**
185
+ * The ordinary function whose `this` a `this.X = function () {}` initializer
186
+ * is entered with -- or `null` when the function is not installed that way.
187
+ *
188
+ * Only an ordinary function/method introduces a `this` binding, so an arrow
189
+ * between the assignment and the host is walked THROUGH (its `this` is the
190
+ * host's), exactly as `bodyReadsThis` walks through one. The nearest such
191
+ * host is the answer even when the assignment is nested inside another
192
+ * `this.Y = function () {}`: that inner function is then the object whose
193
+ * `this` the assignment writes.
194
+ */
195
+ const installedThisMethodHostOf = (declaration) => {
196
+ const assignment = declaration.parent;
197
+ if (!ts.isBinaryExpression(assignment) || assignment.operatorToken.kind !== ts.SyntaxKind.EqualsToken)
198
+ return null;
199
+ if (assignment.right !== declaration)
200
+ return null;
201
+ const target = assignment.left;
202
+ if (!ts.isPropertyAccessExpression(target) && !ts.isElementAccessExpression(target))
203
+ return null;
204
+ if (target.expression.kind !== ts.SyntaxKind.ThisKeyword)
205
+ return null;
206
+ for (let scope = assignment.parent; scope; scope = scope.parent) {
207
+ if (ts.isFunctionDeclaration(scope) || ts.isFunctionExpression(scope) || ts.isMethodDeclaration(scope))
208
+ return scope;
209
+ if (ts.isClassLike(scope) || ts.isSourceFile(scope))
210
+ return null;
211
+ }
212
+ return null;
213
+ };
214
+ /**
215
+ * The constructor function whose OWN "prototype" object this function
216
+ * expression/declaration is installed directly onto -- `F.prototype.n =
217
+ * function () {...}` (or the element-access spelling, `F.prototype['n'] =
218
+ * ...`) -- or `null` when it is not installed that way.
219
+ *
220
+ * ECMA-262 10.2.5 MakeConstructor gives every ordinary function a real,
221
+ * mutable "prototype" object, and `new F()`'s instance has that object as
222
+ * its `[[Prototype]]` (10.2.2 OrdinaryCreateFromConstructor) -- so a
223
+ * function reached by walking that chain (`g.get()` for
224
+ * `G.prototype.get = function () { return this.v }`) is entered with the
225
+ * INSTANCE as `this`, not with `G.prototype` itself. Distinct from
226
+ * `installedThisMethodHostOf`'s `this.X = function(){}` pattern: that one
227
+ * runs INSIDE an enclosing function whose own receiver is what the
228
+ * assignment writes onto, while this is a plain top-level statement naming
229
+ * the constructor by its own binding, with no enclosing function to walk
230
+ * out to and no `this` anywhere in the assignment's own target.
231
+ */
232
+ const prototypeMethodConstructorOf = (declaration) => {
233
+ const assignment = declaration.parent;
234
+ if (!ts.isBinaryExpression(assignment) || assignment.operatorToken.kind !== ts.SyntaxKind.EqualsToken)
235
+ return null;
236
+ if (assignment.right !== declaration)
237
+ return null;
238
+ const target = assignment.left;
239
+ if (!ts.isPropertyAccessExpression(target) && !ts.isElementAccessExpression(target))
240
+ return null;
241
+ const prototypeAccess = target.expression;
242
+ if (!ts.isPropertyAccessExpression(prototypeAccess) || prototypeAccess.name.text !== 'prototype')
243
+ return null;
244
+ return checker.getTypeAtLocation(prototypeAccess.expression);
245
+ };
246
+ /**
247
+ * The receiver an ordinary JavaScript function is entered with, for the one
248
+ * shape where the language supplies one the type system never spells: the
249
+ * pre-`class` constructor function three.js's renderer is built out of.
250
+ *
251
+ * `function WebGLClipping( properties ) { this.uniform = uniform; ... }`,
252
+ * invoked as `new WebGLClipping(...)`. TypeScript's own JS inference already
253
+ * gives such a function BOTH a call signature and exactly one construct
254
+ * signature, and gives the construct signature's return type ("Constructed")
255
+ * the property set those `this.x = ` assignments produce -- so the receiver
256
+ * is not derived here, it is READ from the construct signature the checker
257
+ * already resolved. Without it the convention declares no receiver while the
258
+ * body reads `this` from a frame slot that does not exist, and the whole
259
+ * body is withheld: ten of them in one program (`WebGLTextures`,
260
+ * `WebGLProgram`, `WebGLShadowMap`, `WebGLClipping`, ...), which is the
261
+ * renderer.
262
+ *
263
+ * The candidate rule: exactly one construct signature and at least one
264
+ * call signature. Zero call signatures is a real constructor (a class, or
265
+ * `constructor-value-dispatch`), which needs none of this; more than one
266
+ * construct signature is an overload set no single frame answers for. An
267
+ * arrow is never a candidate -- ECMA-262 15.3 gives it no `[[Construct]]`,
268
+ * so the checker never gives one a construct signature.
269
+ *
270
+ * A function INSTALLED as a method (`this.setState = function ( material )
271
+ * { this.numPlanes += n; }`) is the case this must not read its own
272
+ * construct signature for. TypeScript's constructor-function inference fires
273
+ * on it too -- any function with top-level `this.x = ` writes gets a
274
+ * construct signature, and its "Constructed" type is the subset of fields
275
+ * IT assigns (`{ numPlanes, numIntersection }` for `setState`) -- but that
276
+ * type is a fiction as a receiver: at runtime `this` inside it is the whole
277
+ * instance, because the only way the program reaches it is
278
+ * `scope.setState( material )`. Reading its own construct signature there
279
+ * would declare a convention taking a two-field record while every call site
280
+ * passes the instance. So the host's Constructed type answers for it, which
281
+ * is what the call actually passes.
282
+ */
283
+ const jsConstructorReceiverOf = (declaration) => {
284
+ if (!ts.isFunctionDeclaration(declaration) && !ts.isFunctionExpression(declaration))
285
+ return null;
286
+ if (!declaration.body || !bodyReadsThis(declaration.body))
287
+ return null;
288
+ const host = installedThisMethodHostOf(declaration);
289
+ if (host !== null)
290
+ return jsConstructorReceiverOf(host);
291
+ // A `function` expression stored as an object literal's PROPERTY
292
+ // (`{ m: function () { return this } }`) is the literal's method spelled
293
+ // the ES5 way: `o.m()` binds `this` to the literal, and the checker types
294
+ // the keyword in the body as the literal. Only the spelling differs from
295
+ // `implicitReceiverOf`'s `MethodDeclaration` branch, so it takes the same
296
+ // receiver, behind the same `bodyReadsThis` gate (above) and for the same
297
+ // reason: a body that never mentions `this` says nothing about the frame,
298
+ // and granting every property-held function a receiver would walk the
299
+ // enclosing literal for essentially every one in a real program.
300
+ const owner = ts.isFunctionExpression(declaration) && ts.isPropertyAssignment(declaration.parent) && declaration.parent.initializer === declaration
301
+ ? declaration.parent.parent
302
+ : null;
303
+ if (owner && ts.isObjectLiteralExpression(owner))
304
+ return overriddenLiteralReceiverOf(declaration, owner) ?? layoutTypeAt(owner);
305
+ const prototypeConstructor = prototypeMethodConstructorOf(declaration);
306
+ if (prototypeConstructor !== null) {
307
+ const construct = prototypeConstructor.getConstructSignatures();
308
+ if (construct.length !== 1)
309
+ return null;
310
+ const constructed = construct[0];
311
+ return constructed ? constructed.getReturnType() : null;
312
+ }
313
+ const type = checker.getTypeAtLocation(declaration);
314
+ const construct = type.getConstructSignatures();
315
+ const constructed = type.getCallSignatures().length === 0 || construct.length !== 1 ? undefined : construct[0];
316
+ if (constructed)
317
+ return constructed.getReturnType();
318
+ return implicitAnyReceiverOf(declaration);
319
+ };
320
+ /**
321
+ * The receiver of an ordinary function the language supplies and the type
322
+ * system spells only as `any`.
323
+ *
324
+ * `function replacement(value) { return `${this}:${value}` }`, installed as
325
+ * six different callables' own `call` property: every branch above answers
326
+ * `null` for it -- there is no enclosing literal, no `this.x =` host, no
327
+ * `F.prototype.m =` owner, and no construct signature, because the body
328
+ * never writes a field. Its `this` is nonetheless real at runtime, and the
329
+ * checker already says what it knows about it: `any`. Reading that answer
330
+ * rather than inventing one keeps this the checker's fact, and keeps it
331
+ * narrow -- a body whose `this` the checker types as anything CONCRETE is
332
+ * a shape one of the branches above is meant to resolve, and inventing a
333
+ * boxed receiver for it would box a value that has a static type.
334
+ *
335
+ * Without it the convention declares no receiver while the body reads one,
336
+ * which lowering refuses by name; so this can only turn a refused program
337
+ * into an emitted one.
338
+ */
339
+ const implicitAnyReceiverOf = (declaration) => {
340
+ if (!declaration.body)
341
+ return null;
342
+ const keyword = firstOwnThisKeyword(declaration.body);
343
+ if (keyword === null)
344
+ return null;
345
+ const receiver = checker.getTypeAtLocation(keyword);
346
+ return (receiver.flags & ts.TypeFlags.Any) === 0 ? null : receiver;
347
+ };
348
+ /**
349
+ * The receiver the callable type of a DECLARED member carries.
350
+ *
351
+ * `interface GetterCursor { readonly next: () => Step }` spells a member
352
+ * whose type is a callable, and the two spellings `next(): Step` and
353
+ * `readonly next: () => Step` are the same member as far as `o.next()` is
354
+ * concerned -- ECMA-262 binds `o` as the receiver either way. So the same
355
+ * census answers both: this member carries a receiver iff the value some
356
+ * implementer stores into it does. Without it the implementer's
357
+ * `function (this: GetterCursor) { ... }` derives a callable WITH a frame
358
+ * slot while the slot it is stored into derives one without, and that store
359
+ * is not a conversion C++ has (`typed-custom-iterator-receiver.runtime.ts`).
360
+ *
361
+ * Program-declared only, for the same reason the `MethodSignature` branch is:
362
+ * a standard-library member is backed by the native intrinsic protocols,
363
+ * which carry their receiver separately from a JavaScript callable's frame.
364
+ */
365
+ const declaredMemberCallableReceiverOf = (member) => {
366
+ if (!declaredMembers.implementationReadsReceiver(member))
367
+ return null;
368
+ const owner = member.declarations?.[0]?.parent;
369
+ if (!owner || !ts.isInterfaceDeclaration(owner) || owner.getSourceFile().hasNoDefaultLib)
370
+ return null;
371
+ const declared = checker.getSymbolAtLocation(owner.name);
372
+ return declared ? checker.getDeclaredTypeOfSymbol(declared) : null;
373
+ };
374
+ /**
375
+ * The same answer, reached from either NODE that spells one member's
376
+ * callable type: the member's own `readonly next: () => Step`, and the
377
+ * implementing `get next(): () => Step`'s return annotation. They are two
378
+ * spellings of one type, so a receiver on one and none on the other is the
379
+ * store the whole census exists to remove -- and the getter's annotation is
380
+ * the node the `return function (this: GetterCursor) {...}` inside it is
381
+ * actually converted to.
382
+ */
383
+ const declaredCallableMemberReceiverOf = (declaration) => {
384
+ const holder = declaration.parent;
385
+ if (ts.isPropertySignature(holder)) {
386
+ const member = checker.getSymbolAtLocation(holder.name);
387
+ return member ? declaredMemberCallableReceiverOf(member) : null;
388
+ }
389
+ if (!ts.isGetAccessorDeclaration(holder) || holder.type !== declaration)
390
+ return null;
391
+ const member = declaredMembers.declaredMemberImplementedBy(holder.name);
392
+ return member ? declaredMemberCallableReceiverOf(member) : null;
393
+ };
394
+ const overriddenLiteralReceiverOf = (declaration, literal) => {
395
+ if (!('body' in declaration) || !declaration.body)
396
+ return null;
397
+ const keyword = firstOwnThisKeyword(declaration.body);
398
+ return keyword === null ? null : contextTypedLiteralThisOf(checker, literal, keyword);
399
+ };
400
+ const implicitReceiverOf = (declaration) => {
401
+ if (!ts.isMethodDeclaration(declaration) &&
402
+ !ts.isGetAccessorDeclaration(declaration) &&
403
+ !ts.isSetAccessorDeclaration(declaration) &&
404
+ !ts.isMethodSignature(declaration)) {
405
+ if (ts.isFunctionTypeNode(declaration))
406
+ return declaredCallableMemberReceiverOf(declaration);
407
+ return jsConstructorReceiverOf(declaration);
408
+ }
409
+ const parent = declaration.parent;
410
+ if ((ts.getCombinedModifierFlags(declaration) & ts.ModifierFlags.Static) !== 0) {
411
+ // A receiver-free implementation must not demand conversion of a
412
+ // derived constructor into its declaring constructor at inherited calls.
413
+ // Include parameter initializers and lexical arrows; super calls also
414
+ // consume the current receiver even without an explicit `this` token.
415
+ // A declaration without a body provides no such implementation proof.
416
+ if (!ts.isMethodSignature(declaration) && declaration.body && !bodyReadsThis(declaration, true))
417
+ return null;
418
+ // A static method still receives `this`; its value is the class
419
+ // constructor object rather than an instance. TypeScript does not spell
420
+ // that implicit receiver as a `thisParameter`, just as it does not spell
421
+ // the instance receiver below. Read the owning class's value-side type so
422
+ // the callable ABI, its call site, and a body-side `this` all carry the
423
+ // same constructor-family value.
424
+ if (!ts.isClassLike(parent))
425
+ return null;
426
+ // An ANONYMOUS class expression (`var C = class { static get m() {
427
+ // return this.#x } }`) has no name node to ask a symbol of, and the
428
+ // checker answers no symbol for the expression node itself; asking the
429
+ // expression's own TYPE gives its value side -- the constructor type --
430
+ // directly, which is exactly what the named path reads through the
431
+ // symbol. (A class DECLARATION's node type is its instance type, so the
432
+ // symbol path stays for it.)
433
+ if (ts.isClassExpression(parent) && !parent.name)
434
+ return checker.getTypeAtLocation(parent);
435
+ const symbol = checker.getSymbolAtLocation(parent.name ?? parent);
436
+ return symbol ? checker.getTypeOfSymbolAtLocation(symbol, parent) : null;
437
+ }
438
+ // An object literal's own *method*. Unlike an accessor (below, still
439
+ // unconditional -- an accessor's member type in the containing shape is
440
+ // the property's type, not this signature, so walking the literal never
441
+ // re-enters through it, exactly as before this patch), a method member's
442
+ // type IS its signature, so `objectShapeOf`'s member walk calls straight
443
+ // back into `signatureOf` for it -- and granting EVERY method a receiver
444
+ // regardless of whether its body reads `this` reaches `typeOf` on the
445
+ // enclosing literal for essentially every method-bearing object literal in
446
+ // a real program. Gating on `bodyReadsThis` scopes the eager anchor
447
+ // (`translate`'s plain-object branch, edit 6) to genuinely
448
+ // self-referential literals only -- the blocker shape this
449
+ // mechanism exists for -- and leaves an ordinary method-bearing literal's
450
+ // identity, and every downstream consumer of it, completely untouched.
451
+ if (ts.isObjectLiteralExpression(parent)) {
452
+ const overridden = overriddenLiteralReceiverOf(declaration, parent);
453
+ if (overridden !== null)
454
+ return overridden;
455
+ if (ts.isMethodDeclaration(declaration)) {
456
+ if (declaration.body && bodyReadsThis(declaration.body))
457
+ return layoutTypeAt(parent);
458
+ // The body does not read `this`, so it says nothing about the frame.
459
+ // The member this method implements does -- see
460
+ // `declaredMemberReceiverOf` above.
461
+ return declaredMemberReceiverOf(declaration, parent);
462
+ }
463
+ return layoutTypeAt(parent);
464
+ }
465
+ // An interface's own signature member has NO body of its own, so there is
466
+ // no `this`-reading body to gate on the way an object literal's method is
467
+ // gated. Granting one a receiver UNCONDITIONALLY is actively harmful, and
468
+ // that is measured, not feared: it costs `overload-set-as-value.ts` and
469
+ // `control-flow-structural-view.ts`, whose members no implementer reads a
470
+ // receiver for. This file said so, and it was retried anyway.
471
+ //
472
+ // But answering `null` unconditionally is the same defect mirrored: it let
473
+ // the SPELLING of a declaration decide the calling convention, so the
474
+ // implementing literal's `next() { return this.label }` took a receiver
475
+ // while the interface member it satisfies took none, and storing one into
476
+ // the other is a conversion between two conventions C++ does not have
477
+ // (`typed-custom-iterator-receiver.runtime.ts`). One member, one answer.
478
+ //
479
+ // The proof a `MethodSignature` lacks is held by its IMPLEMENTERS, which is
480
+ // what `censusDeclaredMembers` supplies: this member carries a receiver iff
481
+ // some object literal implementing it reads one. Program-declared only --
482
+ // a standard-library member is implemented by the native intrinsic
483
+ // protocols, which carry their receiver separately from a JavaScript
484
+ // callable's frame, and its declaration is the open `Map<K, V>` rather than
485
+ // the instantiated receiver at a use site.
486
+ if (ts.isInterfaceDeclaration(parent) && ts.isMethodSignature(declaration) && !parent.getSourceFile().hasNoDefaultLib) {
487
+ const member = checker.getSymbolAtLocation(declaration.name);
488
+ if (member && declaredMembers.implementationReadsReceiver(member)) {
489
+ const declared = checker.getSymbolAtLocation(parent.name);
490
+ if (declared)
491
+ return checker.getDeclaredTypeOfSymbol(declared);
492
+ }
493
+ return null;
494
+ }
495
+ //
496
+ // A type-literal's own signature member IS safe, but only when the
497
+ // literal is the direct body of a named `type X = { ... }` alias --
498
+ // `declaredAnchorOf` anchors THAT case eagerly (with this patch's
499
+ // alias-priority fix, edit 5), same as an interface. A type literal
500
+ // reached any other way -- nested inside another type (`host.ts`'s
501
+ // ambient `declare const bluetooth: { connect(): Promise<{ device: {...}
502
+ // }> }`-shaped host surfaces are full of these), a function's own inline
503
+ // return-type annotation, anywhere with no enclosing alias -- has NO
504
+ // anchor at all: `declaredAnchorOf` only resolves through
505
+ // `type.getSymbol() ?? type.aliasSymbol`, and a type literal with no
506
+ // enclosing alias has no `aliasSymbol` for that fallback to find.
507
+ // Granting such a member a receiver reaches `typeOf` on a type with no
508
+ // anchor reserved, straight into the exact `walking.has` collision this
509
+ // whole mechanism exists to avoid -- measured directly: a version of this
510
+ // patch that omitted the `isTypeAliasDeclaration(parent.parent)` check
511
+ // below broke 25/116 corpus programs, ALL of them failing through dozens
512
+ // of distinct anonymous `__type` collisions inside
513
+ // `core/packages/core/runtime/host.ts`'s nested ambient object types (see
514
+ // `risks.md`). Returning `null` for every other type-literal parent
515
+ // matches this signature's ORIGINAL, pre-patch behavior exactly (this
516
+ // whole branch did not exist before this patch), so nothing about a
517
+ // nested/unnamed type literal's identity or receiver treatment changes.
518
+ if (ts.isTypeLiteralNode(parent) && parent.parent && ts.isTypeAliasDeclaration(parent.parent)) {
519
+ // STATED, and not an expression to begin with: `parent` is a
520
+ // `TypeLiteralNode` syntax node -- the receiver this returns is the
521
+ // named TYPE ALIAS's own declared shape, used purely as a nominal
522
+ // identity anchor (see the surrounding comment on why an anchor is
523
+ // needed here at all). No value flows through this node for a
524
+ // parameter/write-set census to have evidence about.
525
+ return checker.getTypeAtLocation(parent);
526
+ }
527
+ if (ts.isTypeLiteralNode(parent)) {
528
+ return null;
529
+ }
530
+ if (!ts.isClassLike(parent))
531
+ return null;
532
+ if (ts.isClassExpression(parent) && !parent.name) {
533
+ // Same anonymous-expression gap as the static branch above: the instance
534
+ // type is what the expression's constructor type constructs.
535
+ const construct = checker.getTypeAtLocation(parent).getConstructSignatures()[0];
536
+ return construct ? construct.getReturnType() : null;
537
+ }
538
+ const symbol = checker.getSymbolAtLocation(parent.name ?? parent);
539
+ return symbol ? checker.getDeclaredTypeOfSymbol(symbol) : null;
540
+ };
541
+ return { implicitReceiverOf, declaredMemberSignatureOf };
542
+ };
543
+ // Whether a signature's own declaration carries the `async` modifier.
544
+ // Mirrors `implicitReceiverOf`'s `getCombinedModifierFlags` check
545
+ // immediately above, rather than re-deriving the answer a different way.
546
+ // `semantics/normalize/producers/invocations.ts` duplicates this same
547
+ // two-line check independently (a call's own resolved-signature return
548
+ // type, and the call expression's own published result, both need the
549
+ // identical answer) -- see citations.md finding 2 for why it is duplicated
550
+ // rather than shared across the two files.
551
+ export const isAsyncSignature = (declaration) => declaration !== undefined && (ts.getCombinedModifierFlags(declaration) & ts.ModifierFlags.Async) !== 0;