@scriptc/compiler 0.3.1 → 0.3.3

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 (492) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +832 -55
  2. package/dist/backend/cycle-analysis.js +6 -1
  3. package/dist/backend/cycle-analysis.js.map +1 -1
  4. package/dist/backend/executable-features.js +1 -0
  5. package/dist/backend/executable-features.js.map +1 -1
  6. package/dist/backend/literals.d.ts +7 -0
  7. package/dist/backend/literals.js +32 -0
  8. package/dist/backend/literals.js.map +1 -1
  9. package/dist/backend/literals.test.js +17 -1
  10. package/dist/backend/literals.test.js.map +1 -1
  11. package/dist/backend/llvm/alloc.d.ts +15 -4
  12. package/dist/backend/llvm/alloc.js +63 -25
  13. package/dist/backend/llvm/alloc.js.map +1 -1
  14. package/dist/backend/llvm/alloc.test.js +62 -2
  15. package/dist/backend/llvm/alloc.test.js.map +1 -1
  16. package/dist/backend/llvm/appended-array-literals.d.ts +2 -0
  17. package/dist/backend/llvm/appended-array-literals.js +109 -0
  18. package/dist/backend/llvm/appended-array-literals.js.map +1 -0
  19. package/dist/backend/llvm/appended-array-literals.test.d.ts +1 -0
  20. package/dist/backend/llvm/appended-array-literals.test.js +90 -0
  21. package/dist/backend/llvm/appended-array-literals.test.js.map +1 -0
  22. package/dist/backend/llvm/array-search.d.ts +8 -0
  23. package/dist/backend/llvm/array-search.js +52 -0
  24. package/dist/backend/llvm/array-search.js.map +1 -0
  25. package/dist/backend/llvm/array-search.test.d.ts +1 -0
  26. package/dist/backend/llvm/array-search.test.js +72 -0
  27. package/dist/backend/llvm/array-search.test.js.map +1 -0
  28. package/dist/backend/llvm/call-lifetimes.d.ts +11 -1
  29. package/dist/backend/llvm/call-lifetimes.js +74 -4
  30. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  31. package/dist/backend/llvm/call-lifetimes.test.js +54 -0
  32. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  33. package/dist/backend/llvm/classes.js +97 -38
  34. package/dist/backend/llvm/classes.js.map +1 -1
  35. package/dist/backend/llvm/classes.test.js +2 -2
  36. package/dist/backend/llvm/common.d.ts +1 -1
  37. package/dist/backend/llvm/common.js +1 -1
  38. package/dist/backend/llvm/dense-array-access.d.ts +5 -0
  39. package/dist/backend/llvm/dense-array-access.js +18 -13
  40. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  41. package/dist/backend/llvm/dense-array-access.test.js +15 -2
  42. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  43. package/dist/backend/llvm/dyn.d.ts +6 -0
  44. package/dist/backend/llvm/dyn.js +84 -11
  45. package/dist/backend/llvm/dyn.js.map +1 -1
  46. package/dist/backend/llvm/emitter.d.ts +108 -16
  47. package/dist/backend/llvm/emitter.js +598 -108
  48. package/dist/backend/llvm/emitter.js.map +1 -1
  49. package/dist/backend/llvm/emitter.test.js +26 -3
  50. package/dist/backend/llvm/emitter.test.js.map +1 -1
  51. package/dist/backend/llvm/expr-async.js +174 -7
  52. package/dist/backend/llvm/expr-async.js.map +1 -1
  53. package/dist/backend/llvm/expr-bytes.js +11 -0
  54. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  55. package/dist/backend/llvm/expr-callbacks.d.ts +8 -0
  56. package/dist/backend/llvm/expr-callbacks.js +96 -2
  57. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  58. package/dist/backend/llvm/expr-calls.d.ts +12 -1
  59. package/dist/backend/llvm/expr-calls.js +133 -54
  60. package/dist/backend/llvm/expr-calls.js.map +1 -1
  61. package/dist/backend/llvm/expr-containers.d.ts +7 -0
  62. package/dist/backend/llvm/expr-containers.js +80 -22
  63. package/dist/backend/llvm/expr-containers.js.map +1 -1
  64. package/dist/backend/llvm/expr-context.d.ts +2 -0
  65. package/dist/backend/llvm/expr-control.d.ts +8 -0
  66. package/dist/backend/llvm/expr-control.js +103 -69
  67. package/dist/backend/llvm/expr-control.js.map +1 -1
  68. package/dist/backend/llvm/expr-dynamic.js +21 -10
  69. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  70. package/dist/backend/llvm/expr-primitives.d.ts +7 -0
  71. package/dist/backend/llvm/expr-primitives.js +53 -51
  72. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  73. package/dist/backend/llvm/expr-records.js +19 -5
  74. package/dist/backend/llvm/expr-records.js.map +1 -1
  75. package/dist/backend/llvm/expr-stream-bridges.d.ts +8 -0
  76. package/dist/backend/llvm/expr-stream-bridges.js +111 -39
  77. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  78. package/dist/backend/llvm/expr-stream-bridges.test.js +49 -1
  79. package/dist/backend/llvm/expr-stream-bridges.test.js.map +1 -1
  80. package/dist/backend/llvm/expr-stream-callbacks.d.ts +13 -2
  81. package/dist/backend/llvm/expr-stream-callbacks.js +80 -5
  82. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  83. package/dist/backend/llvm/inline-unions.d.ts +48 -0
  84. package/dist/backend/llvm/inline-unions.js +134 -0
  85. package/dist/backend/llvm/inline-unions.js.map +1 -0
  86. package/dist/backend/llvm/inline-unions.test.d.ts +1 -0
  87. package/dist/backend/llvm/inline-unions.test.js +124 -0
  88. package/dist/backend/llvm/inline-unions.test.js.map +1 -0
  89. package/dist/backend/llvm/int32-abi.d.ts +18 -2
  90. package/dist/backend/llvm/int32-abi.js +23 -2
  91. package/dist/backend/llvm/int32-abi.js.map +1 -1
  92. package/dist/backend/llvm/int32-abi.test.js +75 -1
  93. package/dist/backend/llvm/int32-abi.test.js.map +1 -1
  94. package/dist/backend/llvm/integer-remainder.d.ts +28 -5
  95. package/dist/backend/llvm/integer-remainder.js +80 -9
  96. package/dist/backend/llvm/integer-remainder.js.map +1 -1
  97. package/dist/backend/llvm/lib-dispatch.js +170 -28
  98. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  99. package/dist/backend/llvm/lib-filesystem.js +181 -5
  100. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  101. package/dist/backend/llvm/lib-network.js +9 -6
  102. package/dist/backend/llvm/lib-network.js.map +1 -1
  103. package/dist/backend/llvm/lib-process.js +2 -2
  104. package/dist/backend/llvm/lib-process.js.map +1 -1
  105. package/dist/backend/llvm/lib-shared.js +208 -9
  106. package/dist/backend/llvm/lib-shared.js.map +1 -1
  107. package/dist/backend/llvm/lib-stream.js +97 -0
  108. package/dist/backend/llvm/lib-stream.js.map +1 -1
  109. package/dist/backend/llvm/local-array-reads.js +12 -6
  110. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  111. package/dist/backend/llvm/local-array-reads.test.js +6 -3
  112. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  113. package/dist/backend/llvm/local-union-storage.d.ts +26 -2
  114. package/dist/backend/llvm/local-union-storage.js +132 -12
  115. package/dist/backend/llvm/local-union-storage.js.map +1 -1
  116. package/dist/backend/llvm/local-union-storage.test.js +107 -1
  117. package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
  118. package/dist/backend/llvm/loop-array-borrows.d.ts +8 -2
  119. package/dist/backend/llvm/loop-array-borrows.js +93 -13
  120. package/dist/backend/llvm/loop-array-borrows.js.map +1 -1
  121. package/dist/backend/llvm/map-number-lookup.d.ts +20 -0
  122. package/dist/backend/llvm/map-number-lookup.js +66 -0
  123. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  124. package/dist/backend/llvm/map-number-lookup.test.d.ts +1 -0
  125. package/dist/backend/llvm/map-number-lookup.test.js +102 -0
  126. package/dist/backend/llvm/map-number-lookup.test.js.map +1 -0
  127. package/dist/backend/llvm/map-read-lifetimes.js +1 -0
  128. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  129. package/dist/backend/llvm/publish.d.ts +4 -0
  130. package/dist/backend/llvm/publish.js +3 -1
  131. package/dist/backend/llvm/publish.js.map +1 -1
  132. package/dist/backend/llvm/record-results.d.ts +29 -0
  133. package/dist/backend/llvm/record-results.js +260 -0
  134. package/dist/backend/llvm/record-results.js.map +1 -0
  135. package/dist/backend/llvm/reference-effects.js +15 -0
  136. package/dist/backend/llvm/reference-effects.js.map +1 -1
  137. package/dist/backend/llvm/reference-writes.js +29 -9
  138. package/dist/backend/llvm/reference-writes.js.map +1 -1
  139. package/dist/backend/llvm/regions.d.ts +68 -0
  140. package/dist/backend/llvm/regions.js +314 -0
  141. package/dist/backend/llvm/regions.js.map +1 -0
  142. package/dist/backend/llvm/regions.test.d.ts +1 -0
  143. package/dist/backend/llvm/regions.test.js +173 -0
  144. package/dist/backend/llvm/regions.test.js.map +1 -0
  145. package/dist/backend/llvm/serialized-ir-emission.test.js +2 -0
  146. package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
  147. package/dist/backend/llvm/shapes.d.ts +86 -13
  148. package/dist/backend/llvm/shapes.js +208 -54
  149. package/dist/backend/llvm/shapes.js.map +1 -1
  150. package/dist/backend/llvm/shapes.test.js +68 -9
  151. package/dist/backend/llvm/shapes.test.js.map +1 -1
  152. package/dist/backend/llvm/split-loops.js +1 -1
  153. package/dist/backend/llvm/split-loops.js.map +1 -1
  154. package/dist/backend/llvm/stack-objects.d.ts +29 -0
  155. package/dist/backend/llvm/stack-objects.js +142 -0
  156. package/dist/backend/llvm/stack-objects.js.map +1 -0
  157. package/dist/backend/llvm/stack-objects.test.d.ts +1 -0
  158. package/dist/backend/llvm/stack-objects.test.js +255 -0
  159. package/dist/backend/llvm/stack-objects.test.js.map +1 -0
  160. package/dist/backend/llvm/string-reads.d.ts +4 -1
  161. package/dist/backend/llvm/string-reads.js +89 -9
  162. package/dist/backend/llvm/string-reads.js.map +1 -1
  163. package/dist/backend/llvm/switch-dispatch.js +5 -4
  164. package/dist/backend/llvm/switch-dispatch.js.map +1 -1
  165. package/dist/backend/llvm/walkers.d.ts +13 -0
  166. package/dist/backend/llvm/walkers.js +108 -10
  167. package/dist/backend/llvm/walkers.js.map +1 -1
  168. package/dist/backend/may-throw.js +10 -4
  169. package/dist/backend/may-throw.js.map +1 -1
  170. package/dist/backend/native/contracts.d.ts +7 -2
  171. package/dist/backend/native/executable.js +28 -2
  172. package/dist/backend/native/executable.js.map +1 -1
  173. package/dist/backend/native/library.js +1 -1
  174. package/dist/backend/native/library.js.map +1 -1
  175. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  176. package/dist/backend/native/runtime-inputs.js +3 -0
  177. package/dist/backend/native/runtime-inputs.js.map +1 -1
  178. package/dist/backend/native-link-info-core.d.ts +1 -0
  179. package/dist/backend/native-link-info-core.js.map +1 -1
  180. package/dist/backend/native-toolchain.test.js +1 -1
  181. package/dist/backend/native-toolchain.test.js.map +1 -1
  182. package/dist/backend/runtime-abi.d.ts +2 -2
  183. package/dist/backend/runtime-abi.js +2 -2
  184. package/dist/backend/runtime-pack-core.d.ts +1 -0
  185. package/dist/backend/runtime-pack-core.js +1 -0
  186. package/dist/backend/runtime-pack-core.js.map +1 -1
  187. package/dist/backend/runtime-pack-targets.test.js +1 -1
  188. package/dist/backend/runtime-pack.test.js +1 -1
  189. package/dist/backend/target-diagnostics.js +17 -0
  190. package/dist/backend/target-diagnostics.js.map +1 -1
  191. package/dist/backend/target-diagnostics.test.js +16 -0
  192. package/dist/backend/target-diagnostics.test.js.map +1 -1
  193. package/dist/compat/fetch-profile.js +4 -4
  194. package/dist/compat/fetch-profile.js.map +1 -1
  195. package/dist/contracts/check.js +2 -0
  196. package/dist/contracts/check.js.map +1 -1
  197. package/dist/coverage/report.js +1 -1
  198. package/dist/coverage/report.js.map +1 -1
  199. package/dist/diagnostics/diagnostic.d.ts +6 -5
  200. package/dist/diagnostics/diagnostic.js +7 -6
  201. package/dist/diagnostics/diagnostic.js.map +1 -1
  202. package/dist/executable/executable-cache.d.ts +1 -0
  203. package/dist/executable/executable-cache.js.map +1 -1
  204. package/dist/frontend/builtin-modules.d.ts +1 -1
  205. package/dist/frontend/builtin-modules.js +1 -0
  206. package/dist/frontend/builtin-modules.js.map +1 -1
  207. package/dist/frontend/comptime-node.js +2 -2
  208. package/dist/frontend/comptime-node.js.map +1 -1
  209. package/dist/frontend/experimental-import.d.ts +12 -0
  210. package/dist/frontend/experimental-import.js +63 -0
  211. package/dist/frontend/experimental-import.js.map +1 -0
  212. package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
  213. package/dist/frontend/lowering/binding-analysis.js +1 -1
  214. package/dist/frontend/lowering/builtin-calls.d.ts +6 -1
  215. package/dist/frontend/lowering/builtin-calls.js +36 -0
  216. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  217. package/dist/frontend/lowering/builtins/arguments.d.ts +4 -0
  218. package/dist/frontend/lowering/builtins/arguments.js +8 -4
  219. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  220. package/dist/frontend/lowering/builtins/blob.d.ts +20 -0
  221. package/dist/frontend/lowering/builtins/blob.js +167 -0
  222. package/dist/frontend/lowering/builtins/blob.js.map +1 -0
  223. package/dist/frontend/lowering/builtins/child-process-async.d.ts +2 -2
  224. package/dist/frontend/lowering/builtins/child-process-async.js +2 -2
  225. package/dist/frontend/lowering/builtins/child-process-methods.js +1 -1
  226. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  227. package/dist/frontend/lowering/builtins/child-process-sync.js +1 -1
  228. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  229. package/dist/frontend/lowering/builtins/compression.js +3 -2
  230. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  231. package/dist/frontend/lowering/builtins/console.d.ts +16 -6
  232. package/dist/frontend/lowering/builtins/console.js +33 -9
  233. package/dist/frontend/lowering/builtins/console.js.map +1 -1
  234. package/dist/frontend/lowering/builtins/crypto.js +415 -120
  235. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  236. package/dist/frontend/lowering/builtins/errors.js +20 -0
  237. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  238. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +10 -0
  239. package/dist/frontend/lowering/builtins/filesystem-calls.js +89 -1
  240. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  241. package/dist/frontend/lowering/builtins/filesystem.d.ts +16 -7
  242. package/dist/frontend/lowering/builtins/filesystem.js +97 -15
  243. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  244. package/dist/frontend/lowering/builtins/fs-glob.d.ts +23 -0
  245. package/dist/frontend/lowering/builtins/fs-glob.js +224 -0
  246. package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -0
  247. package/dist/frontend/lowering/builtins/json.d.ts +2 -2
  248. package/dist/frontend/lowering/builtins/json.js +13 -4
  249. package/dist/frontend/lowering/builtins/json.js.map +1 -1
  250. package/dist/frontend/lowering/builtins/key-object.d.ts +13 -0
  251. package/dist/frontend/lowering/builtins/key-object.js +56 -0
  252. package/dist/frontend/lowering/builtins/key-object.js.map +1 -0
  253. package/dist/frontend/lowering/builtins/module-calls.js +60 -12
  254. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  255. package/dist/frontend/lowering/builtins/numbers.d.ts +1 -0
  256. package/dist/frontend/lowering/builtins/numbers.js +17 -0
  257. package/dist/frontend/lowering/builtins/numbers.js.map +1 -1
  258. package/dist/frontend/lowering/builtins/operating-system.d.ts +18 -0
  259. package/dist/frontend/lowering/builtins/operating-system.js +361 -1
  260. package/dist/frontend/lowering/builtins/operating-system.js.map +1 -1
  261. package/dist/frontend/lowering/builtins/performance.d.ts +25 -3
  262. package/dist/frontend/lowering/builtins/performance.js +340 -5
  263. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  264. package/dist/frontend/lowering/builtins/process.d.ts +2 -2
  265. package/dist/frontend/lowering/builtins/process.js +122 -17
  266. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  267. package/dist/frontend/lowering/builtins/promises.js +109 -2
  268. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  269. package/dist/frontend/lowering/builtins/properties.d.ts +0 -7
  270. package/dist/frontend/lowering/builtins/properties.js +39 -11
  271. package/dist/frontend/lowering/builtins/properties.js.map +1 -1
  272. package/dist/frontend/lowering/builtins/readline.d.ts +23 -8
  273. package/dist/frontend/lowering/builtins/readline.js +266 -90
  274. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  275. package/dist/frontend/lowering/builtins/text-codecs.d.ts +3 -4
  276. package/dist/frontend/lowering/builtins/text-codecs.js +3 -4
  277. package/dist/frontend/lowering/builtins/text-codecs.js.map +1 -1
  278. package/dist/frontend/lowering/builtins/url.d.ts +8 -0
  279. package/dist/frontend/lowering/builtins/url.js +36 -0
  280. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  281. package/dist/frontend/lowering/call-arguments.js +1 -1
  282. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  283. package/dist/frontend/lowering/call-signatures.js +20 -2
  284. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  285. package/dist/frontend/lowering/checked-promise-all.d.ts +10 -3
  286. package/dist/frontend/lowering/checked-promise-all.js +52 -6
  287. package/dist/frontend/lowering/checked-promise-all.js.map +1 -1
  288. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +8 -3
  289. package/dist/frontend/lowering/class-dynamic-dispatch.js +159 -32
  290. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  291. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +1 -0
  292. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  293. package/dist/frontend/lowering/class-protocol-dispatch.d.ts +45 -0
  294. package/dist/frontend/lowering/class-protocol-dispatch.js +516 -0
  295. package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -0
  296. package/dist/frontend/lowering/coercions/structural-plans.js +2 -1
  297. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  298. package/dist/frontend/lowering/coercions/structural.js +3 -3
  299. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  300. package/dist/frontend/lowering/collation-repertoire.js +6 -5
  301. package/dist/frontend/lowering/collation-repertoire.js.map +1 -1
  302. package/dist/frontend/lowering/containers/array-callbacks.js +33 -6
  303. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  304. package/dist/frontend/lowering/containers/array-construction.js +8 -4
  305. package/dist/frontend/lowering/containers/array-construction.js.map +1 -1
  306. package/dist/frontend/lowering/containers/array-methods.d.ts +0 -7
  307. package/dist/frontend/lowering/containers/array-methods.js +43 -2
  308. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  309. package/dist/frontend/lowering/containers/array-pipelines.js +1 -1
  310. package/dist/frontend/lowering/containers/array-pipelines.js.map +1 -1
  311. package/dist/frontend/lowering/containers/bytes.js +38 -26
  312. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  313. package/dist/frontend/lowering/containers/for-of.d.ts +1 -1
  314. package/dist/frontend/lowering/containers/for-of.js +5 -1
  315. package/dist/frontend/lowering/containers/for-of.js.map +1 -1
  316. package/dist/frontend/lowering/containers/indexed-objects.js +1 -1
  317. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  318. package/dist/frontend/lowering/containers/string-and-regexp.js +91 -0
  319. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  320. package/dist/frontend/lowering/crypto-tables.d.ts +3 -3
  321. package/dist/frontend/lowering/crypto-tables.js +77 -12
  322. package/dist/frontend/lowering/crypto-tables.js.map +1 -1
  323. package/dist/frontend/lowering/cycle-initialization.d.ts +18 -2
  324. package/dist/frontend/lowering/cycle-initialization.js +166 -12
  325. package/dist/frontend/lowering/cycle-initialization.js.map +1 -1
  326. package/dist/frontend/lowering/deferred-module-initializers.js +7 -2
  327. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -1
  328. package/dist/frontend/lowering/deferred-module-initializers.test.js +28 -0
  329. package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -1
  330. package/dist/frontend/lowering/expressions/nullish-assignment.js +10 -0
  331. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  332. package/dist/frontend/lowering/expressions/object-literals.js +21 -68
  333. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  334. package/dist/frontend/lowering/generator-delegation.d.ts +8 -0
  335. package/dist/frontend/lowering/generator-delegation.js +231 -10
  336. package/dist/frontend/lowering/generator-delegation.js.map +1 -1
  337. package/dist/frontend/lowering/generic-functions.d.ts +2 -2
  338. package/dist/frontend/lowering/generic-functions.js +2 -2
  339. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  340. package/dist/frontend/lowering/http2-constants.js +1 -1
  341. package/dist/frontend/lowering/lifetime-regions.d.ts +11 -0
  342. package/dist/frontend/lowering/lifetime-regions.js +216 -0
  343. package/dist/frontend/lowering/lifetime-regions.js.map +1 -0
  344. package/dist/frontend/lowering/lower-array-sort.d.ts +40 -3
  345. package/dist/frontend/lowering/lower-array-sort.js +661 -194
  346. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  347. package/dist/frontend/lowering/lower-array-sort.test.js +103 -4
  348. package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
  349. package/dist/frontend/lowering/lower-assert.js +2 -2
  350. package/dist/frontend/lowering/lower-async-iteration.d.ts +6 -3
  351. package/dist/frontend/lowering/lower-async-iteration.js +248 -2
  352. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  353. package/dist/frontend/lowering/lower-calls.js +173 -111
  354. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  355. package/dist/frontend/lowering/lower-classes.d.ts +12 -5
  356. package/dist/frontend/lowering/lower-classes.js +156 -11
  357. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  358. package/dist/frontend/lowering/lower-comptime.d.ts +1 -1
  359. package/dist/frontend/lowering/lower-comptime.js +4 -4
  360. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  361. package/dist/frontend/lowering/lower-console.d.ts +13 -0
  362. package/dist/frontend/lowering/lower-console.js +460 -4
  363. package/dist/frontend/lowering/lower-console.js.map +1 -1
  364. package/dist/frontend/lowering/lower-event-emitter.d.ts +6 -0
  365. package/dist/frontend/lowering/lower-event-emitter.js +124 -38
  366. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  367. package/dist/frontend/lowering/lower-event-target.d.ts +63 -0
  368. package/dist/frontend/lowering/lower-event-target.js +362 -0
  369. package/dist/frontend/lowering/lower-event-target.js.map +1 -0
  370. package/dist/frontend/lowering/lower-expando.js +2 -2
  371. package/dist/frontend/lowering/lower-exprs.js +247 -42
  372. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  373. package/dist/frontend/lowering/lower-generators.d.ts +15 -7
  374. package/dist/frontend/lowering/lower-generators.js +183 -99
  375. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  376. package/dist/frontend/lowering/lower-inspect.d.ts +8 -1
  377. package/dist/frontend/lowering/lower-inspect.js +247 -28
  378. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  379. package/dist/frontend/lowering/lower-mixins.js +1 -1
  380. package/dist/frontend/lowering/lower-modules.d.ts +1 -1
  381. package/dist/frontend/lowering/lower-modules.js +27 -17
  382. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  383. package/dist/frontend/lowering/lower-namespaces.d.ts +2 -2
  384. package/dist/frontend/lowering/lower-namespaces.js +2 -2
  385. package/dist/frontend/lowering/lower-server.js +39 -14
  386. package/dist/frontend/lowering/lower-server.js.map +1 -1
  387. package/dist/frontend/lowering/lower-stdlib.d.ts +11 -1
  388. package/dist/frontend/lowering/lower-stdlib.js +45 -4
  389. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  390. package/dist/frontend/lowering/lower-stmts.d.ts +2 -2
  391. package/dist/frontend/lowering/lower-stmts.js +112 -23
  392. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  393. package/dist/frontend/lowering/lower-stream.js +234 -22
  394. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  395. package/dist/frontend/lowering/lower-timers.js +1 -1
  396. package/dist/frontend/lowering/lowerer.d.ts +45 -6
  397. package/dist/frontend/lowering/lowerer.js +360 -48
  398. package/dist/frontend/lowering/lowerer.js.map +1 -1
  399. package/dist/frontend/lowering/native-ffi.js +2 -2
  400. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  401. package/dist/frontend/lowering/regex-span-reads.d.ts +12 -0
  402. package/dist/frontend/lowering/regex-span-reads.js +164 -0
  403. package/dist/frontend/lowering/regex-span-reads.js.map +1 -0
  404. package/dist/frontend/lowering/runtime-optional-records.d.ts +115 -0
  405. package/dist/frontend/lowering/runtime-optional-records.js +715 -0
  406. package/dist/frontend/lowering/runtime-optional-records.js.map +1 -0
  407. package/dist/frontend/lowering/runtime-optional-records.test.d.ts +1 -0
  408. package/dist/frontend/lowering/runtime-optional-records.test.js +175 -0
  409. package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -0
  410. package/dist/frontend/lowering/surfaces.d.ts +7 -3
  411. package/dist/frontend/lowering/surfaces.js +385 -32
  412. package/dist/frontend/lowering/surfaces.js.map +1 -1
  413. package/dist/frontend/lowering/var-hoisting.d.ts +3 -0
  414. package/dist/frontend/lowering/var-hoisting.js +261 -0
  415. package/dist/frontend/lowering/var-hoisting.js.map +1 -0
  416. package/dist/frontend/module-syntax.d.ts +1 -1
  417. package/dist/frontend/module-syntax.js +1 -1
  418. package/dist/frontend/npm-static-prune.js +1 -1
  419. package/dist/frontend/npm-static-prune.js.map +1 -1
  420. package/dist/frontend/npm-static-rewrite-syntax.js +4 -3
  421. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  422. package/dist/frontend/pipeline.js +6 -4
  423. package/dist/frontend/pipeline.js.map +1 -1
  424. package/dist/frontend/program.d.ts +6 -5
  425. package/dist/frontend/program.js +42 -22
  426. package/dist/frontend/program.js.map +1 -1
  427. package/dist/frontend/program.test.js +13 -0
  428. package/dist/frontend/program.test.js.map +1 -1
  429. package/dist/frontend/resolve.js +1 -1
  430. package/dist/frontend/ts7/adapter.js +1 -1
  431. package/dist/frontend/ts7/ast-bytes.d.ts +1 -1
  432. package/dist/frontend/ts7/ast-bytes.js +1 -1
  433. package/dist/frontend/ts7/semantic-json.d.ts +1 -1
  434. package/dist/frontend/ts7/semantic-json.js +1 -1
  435. package/dist/frontend/ts7/semantic-json.js.map +1 -1
  436. package/dist/frontend/ts7/world-check.js +1 -1
  437. package/dist/frontend/tsc-codes.js +2 -2
  438. package/dist/frontend/tsc-codes.js.map +1 -1
  439. package/dist/frontend/type-mapper.d.ts +28 -1
  440. package/dist/frontend/type-mapper.js +288 -30
  441. package/dist/frontend/type-mapper.js.map +1 -1
  442. package/dist/index.js +6 -4
  443. package/dist/index.js.map +1 -1
  444. package/dist/ir/analysis.d.ts +12 -6
  445. package/dist/ir/analysis.js +26 -10
  446. package/dist/ir/analysis.js.map +1 -1
  447. package/dist/ir/analysis.test.js +15 -3
  448. package/dist/ir/analysis.test.js.map +1 -1
  449. package/dist/ir/builtin-effects.js +108 -2
  450. package/dist/ir/builtin-effects.js.map +1 -1
  451. package/dist/ir/builtin-signatures.d.ts +1 -1
  452. package/dist/ir/builtin-signatures.js +436 -53
  453. package/dist/ir/builtin-signatures.js.map +1 -1
  454. package/dist/ir/function-references.test.js +1 -0
  455. package/dist/ir/function-references.test.js.map +1 -1
  456. package/dist/ir/int32-slots.js +2 -0
  457. package/dist/ir/int32-slots.js.map +1 -1
  458. package/dist/ir/intrinsic-signatures.js +2 -0
  459. package/dist/ir/intrinsic-signatures.js.map +1 -1
  460. package/dist/ir/ir.d.ts +129 -36
  461. package/dist/ir/ir.js +42 -1
  462. package/dist/ir/ir.js.map +1 -1
  463. package/dist/ir/runtime-features.d.ts +1 -0
  464. package/dist/ir/runtime-features.js +116 -5
  465. package/dist/ir/runtime-features.js.map +1 -1
  466. package/dist/ir/scalar-records.js +1 -2
  467. package/dist/ir/scalar-records.js.map +1 -1
  468. package/dist/ir/serialize.js +1 -1
  469. package/dist/ir/serialize.js.map +1 -1
  470. package/dist/ir/traverse.js +1 -0
  471. package/dist/ir/traverse.js.map +1 -1
  472. package/dist/ir/validate.js +250 -34
  473. package/dist/ir/validate.js.map +1 -1
  474. package/dist/ir/validate.test.js +125 -0
  475. package/dist/ir/validate.test.js.map +1 -1
  476. package/dist/library/fence-eval.d.ts +1 -1
  477. package/dist/library/fence-eval.js +5 -4
  478. package/dist/library/fence-eval.js.map +1 -1
  479. package/dist/library/ir-policy.js +11 -4
  480. package/dist/library/ir-policy.js.map +1 -1
  481. package/dist/library/library-profile.js +13 -13
  482. package/dist/library/library-profile.js.map +1 -1
  483. package/dist/library/prepare.js +1 -1
  484. package/dist/library/prepare.js.map +1 -1
  485. package/dist/library/sidecar.js +3 -3
  486. package/dist/library/sidecar.js.map +1 -1
  487. package/dist/native/prepare.js +3 -2
  488. package/dist/native/prepare.js.map +1 -1
  489. package/dist/native/sanitizer.test.js +1 -0
  490. package/dist/native/sanitizer.test.js.map +1 -1
  491. package/package.json +20 -20
  492. package/surface-manifest.json +537 -142
@@ -112,6 +112,16 @@ export interface ClassInfo {
112
112
  * the base chain. The value names which SIDES the class carries. User
113
113
  * `extends` of these classes is fenced at the declaration (phase 1). */
114
114
  builtinStream?: "r" | "w" | "rw";
115
+ /** Runtime-provided EventTarget ("target") or Event ("event") base of
116
+ * compiled subclasses (lower-event-target.ts): no bodies lower, super()
117
+ * becomes an event.* libCall, and the inherited members lower through
118
+ * lower-event-target.ts over any class rooted here. Subclass structs
119
+ * embed the runtime prefix. */
120
+ builtinEventTarget?: "target" | "event";
121
+ /** The synthetic LifetimeRegion class (@scriptc/experimental,
122
+ * lifetime-regions.ts): its constructor is synthesized with the class,
123
+ * and its methods lower at their call sites. */
124
+ lifetimeRegion?: true;
115
125
  /** This class's own `emit` override in the FORWARDING SHAPE (the one
116
126
  * EventEmitter member a subclass may re-declare): never in `methods` —
117
127
  * emit calls keep routing through the emitter spoke, which lowers the
@@ -659,8 +669,8 @@ export declare function classMemberNameOf(lowerer: Lowerer, name: ts.PropertyNam
659
669
  * `undefined` is falsy forever (Node loops forever too; corpus
660
670
  * iterators of that shape are deliberately infinite). Iterator classes
661
671
  * declaring `return`/`throw` members stay out — the desugars below
662
- * never call IteratorClose, and silently skipping a declared return()
663
- * would drop user cleanup. Null when the shape doesn't hold — callers
672
+ * never call IteratorClose, and skipping a declared return() without a
673
+ * diagnostic would drop user cleanup. Null when the shape doesn't hold — callers
664
674
  * keep their fences. */
665
675
  export interface ClassIteratorInfo {
666
676
  /** The `[Symbol.iterator]()` call's receiver class + its declarer. */
@@ -752,9 +762,6 @@ export declare function inheritsBuiltinErrorCtor(lowerer: Lowerer, info: ClassIn
752
762
  /** The EventEmitter twin: a ctor-less chain into the emitter base
753
763
  * inherits `new C()` — zero arguments (the options bag fences). */
754
764
  export declare function inheritsBuiltinEmitterCtor(lowerer: Lowerer, info: ClassInfo): boolean;
755
- /** Preserve argument evaluation order and option presence through builtin
756
- * and inherited Error constructors. Checked-dynamic conversion retains
757
- * Error identity and distinguishes a missing cause from undefined. */
758
765
  export declare function errorConstructorArgs(lowerer: Lowerer, args: readonly ts.Expression[], loc: SrcLoc, blame: ts.Node): IrExpr[];
759
766
  export declare function lowerNew(lowerer: Lowerer, expr: ts.NewExpression): IrExpr;
760
767
  /** A getter/setter invocation over an accessor target's receiver — the
@@ -1,4 +1,5 @@
1
- import { dynUndefinedExpr, nodeThrowExpr } from "../../ir/build.js";
1
+ import { dynUndefinedExpr, nodeThrowExpr, varRef } from "../../ir/build.js";
2
+ import { checkedIterableSpread } from "./checked-iterable-spread.js";
2
3
  import { collectClassMethodMutations } from "./class-method-mutations.js";
3
4
  import { InternalCompilerError } from "../../errors.js";
4
5
  /* Class lowering: shape collection over the single-inheritance graph
@@ -27,6 +28,7 @@ import { lowerTextCodecNew } from "./builtins/text-codecs.js";
27
28
  import { lowerWorkerNew } from "./builtins/workers.js";
28
29
  import { unsupportedPackageValueDiag, unsupportedDiag, } from "../../diagnostics/diagnostic.js";
29
30
  import { STREAM_API_MEMBERS, STREAM_PROP_MEMBERS, UNDERSCORE_METHODS, lowerStreamNew, lowerStreamSuperCall, streamCtorShape, } from "./lower-stream.js";
31
+ import { builtinEventTargetBaseOf, eventTargetApiMembers, eventTargetApiMethod, eventTargetRootOf, eventTargetSuperCall, lowerEventTargetMethodCall, } from "./lower-event-target.js";
30
32
  import { emitOverrideShapeReason, emitSpecSuperForward, emitterRooted, lowerEmitterSuperCall, } from "./lower-event-emitter.js";
31
33
  import { declSymbolOf } from "./lower-modules.js";
32
34
  import { classSymbolKeyOf, classSymbolKeyOfSymbol, symbolFieldDisplayName, } from "./symbol-fields.js";
@@ -989,8 +991,8 @@ function collectClassShapeDeferring(lowerer, decl) {
989
991
  // A poisoned class containing a static BLOCK or a DECORATOR must report
990
992
  // EAGERLY: deferral's premise ("an unreached broken declaration costs
991
993
  // nothing") fails here — Node runs the block (and calls the decorator)
992
- // when the class statement evaluates, referenced or not, so silently
993
- // dropping the declaration would drop observable side effects (the
994
+ // when the class statement evaluates, referenced or not, so dropping the
995
+ // declaration without a diagnostic would drop observable side effects (the
994
996
  // classStaticBlock13/28 miscompiles).
995
997
  const hasDeclTimeCode = (n) => ts.isClassStaticBlockDeclaration(n) ||
996
998
  (n.modifiers ?? []).some((m) => m.kind === ts.SyntaxKind.Decorator);
@@ -1303,7 +1305,9 @@ mixin) {
1303
1305
  lowerer.isStdlibGlobal(t.expression.expression, "globalThis")
1304
1306
  ? lowerer.builtinErrorInfoOf(resolved)
1305
1307
  : null;
1306
- if (globalError && globalError.def.name !== "%DOMException") {
1308
+ if (globalError &&
1309
+ globalError.def.name !== "%DOMException" &&
1310
+ globalError.def.name !== "%AggregateError") {
1307
1311
  if (t.typeArguments)
1308
1312
  lowerer.unsupported("SC1090", t, "extending generic classes");
1309
1313
  base = globalError;
@@ -1432,10 +1436,16 @@ mixin) {
1432
1436
  if (lowerer.builtinErrorInfoOf(symbol)?.def.name === "%DOMException") {
1433
1437
  lowerer.unsupported("SC1090", t, "extending DOMException (its runtime layout carries hidden slots a subclass would overlap — extend Error and set name/code yourself)");
1434
1438
  }
1439
+ // `extends AggregateError`: the errors list is the same kind of
1440
+ // hidden runtime slot.
1441
+ if (lowerer.builtinErrorInfoOf(symbol)?.def.name === "%AggregateError") {
1442
+ lowerer.unsupported("SC1090", t, "extending AggregateError (its runtime layout carries a hidden errors slot a subclass would overlap — extend Error and keep the list in a field)");
1443
+ }
1435
1444
  const named = (symbol && lowerer.classBySymbol.get(symbol)) ??
1436
1445
  lowerer.builtinErrorInfoOf(symbol) ??
1437
1446
  lowerer.builtinEmitterInfoOf(symbol) ??
1438
1447
  builtinStreamInfoOf(lowerer, symbol) ??
1448
+ builtinEventTargetBaseOf(lowerer, t.expression) ??
1439
1449
  // A const BINDING holding exactly one class (`const B = Animal`,
1440
1450
  // `const B = class {…}`): the base is that class — extends
1441
1451
  // through the alias is the declaration story (a general class
@@ -1486,7 +1496,9 @@ mixin) {
1486
1496
  }
1487
1497
  if (lowerer.collectingExprClasses.has(decl)) {
1488
1498
  for (let parent = base; parent; parent = parent.base) {
1489
- if (parent.builtinEmitter || parent.builtinStream !== undefined) {
1499
+ if (parent.builtinEmitter ||
1500
+ parent.builtinStream !== undefined ||
1501
+ parent.builtinEventTarget !== undefined) {
1490
1502
  lowerer.unsupported("SC1090", decl, "classes extending builtin bases as values (the inherited runtime constructor has no class-value adapter)");
1491
1503
  }
1492
1504
  }
@@ -1784,7 +1796,7 @@ mixin) {
1784
1796
  // The EventEmitter API surface is runtime-provided: a subclass
1785
1797
  // member with one of its names would shadow behavior the runtime
1786
1798
  // dispatches internally (meta events, once removal), so the
1787
- // override is fenced rather than silently split-brained — with ONE
1799
+ // override is fenced instead of compiling to split behavior — with ONE
1788
1800
  // exception: `emit` in the forwarding shape on a plain (non-
1789
1801
  // stream) emitter-rooted class monomorphizes per event name
1790
1802
  // (lower-event-emitter.ts's emit-overrides block). Stream-rooted classes
@@ -1825,6 +1837,15 @@ mixin) {
1825
1837
  }
1826
1838
  lowerer.unsupported("SC1090", memberName, `overriding the EventEmitter member '${memberName.text}' (the runtime owns the emitter surface)`);
1827
1839
  }
1840
+ // The inherited EventTarget/Event members read the engine's own
1841
+ // state: dispatch never calls a subclass override, and the engine
1842
+ // never reads an own field that shadows an accessor (`type`).
1843
+ if (memberName &&
1844
+ ts.isIdentifier(memberName) &&
1845
+ !(ts.getCombinedModifierFlags(member) & ts.ModifierFlags.Static) &&
1846
+ eventTargetApiMembers(base)?.has(memberName.text)) {
1847
+ lowerer.unsupported("SC1090", memberName, `overriding the ${eventTargetRootOf(base) === "target" ? "EventTarget" : "Event"} member '${memberName.text}' (the runtime owns the inherited surface)`);
1848
+ }
1828
1849
  // The stream surface is likewise runtime-provided on stream-rooted
1829
1850
  // subclasses: API members (push/read/write/...) and the property
1830
1851
  // family (readableEnded/destroyed/...) dispatch into the runtime
@@ -2767,7 +2788,7 @@ mixin) {
2767
2788
  // (conditional branches, methods) would be readable before any
2768
2789
  // assignment ran — the zeroed-memory trap a TS declaration order
2769
2790
  // forbids via strictPropertyInitialization — so they keep a named
2770
- // fence instead of a silent undefined.
2791
+ // fence instead of reading undefined without a diagnostic.
2771
2792
  if (isJsSourceFile(decl.getSourceFile())) {
2772
2793
  const hasAccessor = (name) => methods.has(`get:${name}`) ||
2773
2794
  methods.has(`set:${name}`) ||
@@ -2849,8 +2870,8 @@ mixin) {
2849
2870
  // representation follows the body — the field widens to the
2850
2871
  // undefined-armed union, so the declaring assignment and
2851
2872
  // every pre-init read carry Node's actual undefined.
2852
- // Trust-but-verify: the claim never silently narrows the
2853
- // runtime value.
2873
+ // Trust-but-verify: the claim does not narrow the runtime
2874
+ // value.
2854
2875
  {
2855
2876
  const rhsT = lowerer.typeOf(rhs);
2856
2877
  const assignsUndef = (rhsT.flags & ts.TypeFlags.Undefined) !== 0;
@@ -2984,7 +3005,7 @@ mixin) {
2984
3005
  // poisoning the class (commander's `this.required` switch
2985
3006
  // assignment, `this.runningCommand` method assignment).
2986
3007
  // Unmappable inferences and arm-less kinds keep the fence.
2987
- // TypeScript classes keep the loud fence too: an annotated
3008
+ // TypeScript classes keep the compile-time fence too: an annotated
2988
3009
  // program can spell `T | undefined` itself.
2989
3010
  if (isJsSourceFile(decl.getSourceFile())) {
2990
3011
  const original = undefArmedFieldType(lowerer, p);
@@ -3065,6 +3086,10 @@ mixin) {
3065
3086
  .map((f) => ({ name: f.name, type: f.type })),
3066
3087
  ],
3067
3088
  ...(methods.size > 0 ? { methods: [...methods.keys()] } : {}),
3089
+ ...(() => {
3090
+ const names = classPrototypeNames(decl);
3091
+ return names.length > 0 ? { prototypeNames: names } : {};
3092
+ })(),
3068
3093
  ...(abstractClass ? { abstract: true } : {}),
3069
3094
  ...(() => {
3070
3095
  const am = [...methods.entries()].filter(([, s]) => s.abstract === true).map(([n]) => n);
@@ -3880,6 +3905,7 @@ export function classValueRef(lowerer, info, blame) {
3880
3905
  }
3881
3906
  if (lowerer.inheritsBuiltinEmitterCtor(info) ||
3882
3907
  inheritsBuiltinStreamCtor(lowerer, info) ||
3908
+ eventTargetRootOf(info) !== null ||
3883
3909
  (() => {
3884
3910
  for (let c = info.base; c; c = c.base)
3885
3911
  if (c.builtinEmitter || c.builtinStream !== undefined)
@@ -3976,7 +4002,7 @@ export function lowerStaticFieldRead(lowerer, expr) {
3976
4002
  // A #private static resolves only through the DECLARING class's own
3977
4003
  // name: in JS the brand lives on that one constructor object, so
3978
4004
  // `D.#s` (a subclass receiver) throws Node's TypeError instead of
3979
- // reaching up the chain — fenced rather than silently resolved.
4005
+ // reaching up the chain — reported as SC1090 instead of resolved.
3980
4006
  if (found && expr.name.text.startsWith("#") && found.declarer !== info) {
3981
4007
  lowerer.unsupported("SC1090", expr, `reading the private static '${expr.name.text}' through the subclass '${info.def.name.replace(/^%|^%m\d+\./, "")}' (JS brands the declaring class object alone — Node throws a TypeError here; spell the declaring class's name)`);
3982
4008
  }
@@ -5511,6 +5537,33 @@ function lowerClassCtorInner(lowerer, info) {
5511
5537
  lowerer.currentClass = prevClass;
5512
5538
  }
5513
5539
  }
5540
+ /** The string keys a class declaration puts on its prototype: concrete
5541
+ * instance methods and accessors with literal names. Symbol-keyed,
5542
+ * private, static and abstract members are not prototype string keys. */
5543
+ function classPrototypeNames(decl) {
5544
+ const names = [];
5545
+ for (const member of decl.members) {
5546
+ if (!ts.isMethodDeclaration(member) &&
5547
+ !ts.isGetAccessorDeclaration(member) &&
5548
+ !ts.isSetAccessorDeclaration(member))
5549
+ continue;
5550
+ if (ts
5551
+ .getModifiers(member)
5552
+ ?.some((m) => m.kind === ts.SyntaxKind.StaticKeyword || m.kind === ts.SyntaxKind.AbstractKeyword))
5553
+ continue;
5554
+ const name = member.name;
5555
+ let text = null;
5556
+ if (ts.isIdentifier(name) || ts.isStringLiteralLike(name))
5557
+ text = name.text;
5558
+ else if (ts.isNumericLiteral(name))
5559
+ text = String(Number(name.text));
5560
+ else if (ts.isComputedPropertyName(name) && ts.isStringLiteralLike(name.expression))
5561
+ text = name.expression.text;
5562
+ if (text !== null && !names.includes(text))
5563
+ names.push(text);
5564
+ }
5565
+ return names;
5566
+ }
5514
5567
  /** The lowered method-map name of a class member: identifier text, a
5515
5568
  * COMPUTED name that folds to one compile-time string
5516
5569
  * (foldedStringKeyOf — the object-literal computed-key machinery
@@ -6382,6 +6435,8 @@ export function superCallStmt(lowerer, info, thisLocal, args, loc) {
6382
6435
  loc,
6383
6436
  };
6384
6437
  }
6438
+ if (base.builtinEventTarget)
6439
+ return eventTargetSuperCall(lowerer, base, thisRef, args, loc);
6385
6440
  if (base.builtinStream) {
6386
6441
  // The SYNTHESIZED constructor of a ctor-less stream subclass:
6387
6442
  // super() with default options (underscore methods still bind; a
@@ -6451,6 +6506,21 @@ export function lowerSuperMethodCall(lowerer, call, access) {
6451
6506
  if (viaEmitter)
6452
6507
  return viaEmitter;
6453
6508
  }
6509
+ // `super.dispatchEvent(e)`, `super.preventDefault()`: the inherited
6510
+ // runtime members over this method's own `this` (subclasses cannot
6511
+ // override them, so the static answer is the runtime's).
6512
+ if (eventTargetApiMethod(cls.base, access.name.text)) {
6513
+ const thisL = lowerer.resolveThis();
6514
+ if (!thisL)
6515
+ lowerer.unsupported("SC1080", access);
6516
+ const thisRef = {
6517
+ kind: "varRef",
6518
+ localId: thisL.id,
6519
+ type: thisL.type,
6520
+ loc: locOf(call),
6521
+ };
6522
+ return lowerEventTargetMethodCall(lowerer, call, access, cls.base, thisRef);
6523
+ }
6454
6524
  lowerer.unsupported("SC1090", access, `'super.${access.name.text}' (no base class declares it)`);
6455
6525
  }
6456
6526
  // tsc rejects super-access of abstract members (TS2513); defensive —
@@ -6615,6 +6685,67 @@ function inheritsBuiltinStreamCtor(lowerer, info) {
6615
6685
  /** Preserve argument evaluation order and option presence through builtin
6616
6686
  * and inherited Error constructors. Checked-dynamic conversion retains
6617
6687
  * Error identity and distinguishes a missing cause from undefined. */
6688
+ /** `new AggregateError(errors, message, options)` in the spec's order:
6689
+ * the message and cause install first, then `errors` iterates (a
6690
+ * non-iterable throws out of the constructor). */
6691
+ function aggregateErrorConstructor(lowerer, loc) {
6692
+ const name = "%aggregate.new";
6693
+ if (lowerer.liftedFns.some((fn) => fn.name === name))
6694
+ return name;
6695
+ const type = { kind: "object", className: "%AggregateError" };
6696
+ const context = newFnCtx(false, null, null, type);
6697
+ lowerer.fnStack.push(context);
6698
+ try {
6699
+ const params = ["errors", "message", "options"].map((id) => ({
6700
+ localId: id,
6701
+ name: id,
6702
+ type: DYN,
6703
+ }));
6704
+ const error = varRef("error", type, loc);
6705
+ const list = checkedIterableSpread(lowerer, varRef("errors", DYN, loc), "", loc);
6706
+ lowerer.liftedFns.push({
6707
+ name,
6708
+ params,
6709
+ returnType: type,
6710
+ locals: [
6711
+ ...params.map((p) => ({ id: p.localId, name: p.name, type: DYN, mutable: false })),
6712
+ { id: "error", name: "error", type, mutable: false },
6713
+ ...context.locals,
6714
+ ],
6715
+ body: [
6716
+ {
6717
+ kind: "varDecl",
6718
+ localId: "error",
6719
+ init: {
6720
+ kind: "libCall",
6721
+ fn: "error.newAggregate",
6722
+ args: [varRef("message", DYN, loc), varRef("options", DYN, loc)],
6723
+ type,
6724
+ loc,
6725
+ },
6726
+ loc,
6727
+ },
6728
+ {
6729
+ kind: "exprStmt",
6730
+ expr: {
6731
+ kind: "libCall",
6732
+ fn: "error.aggregateSetErrors",
6733
+ args: [error, list],
6734
+ type: VOID,
6735
+ loc,
6736
+ },
6737
+ loc,
6738
+ },
6739
+ { kind: "return", value: error, loc },
6740
+ ],
6741
+ loc,
6742
+ });
6743
+ }
6744
+ finally {
6745
+ lowerer.fnStack.pop();
6746
+ }
6747
+ return name;
6748
+ }
6618
6749
  export function errorConstructorArgs(lowerer, args, loc, blame) {
6619
6750
  if (args.length > 2)
6620
6751
  lowerer.unsupported("SC1090", blame, "Error constructors with more than two arguments");
@@ -6995,6 +7126,20 @@ export function lowerNew(lowerer, expr) {
6995
7126
  loc,
6996
7127
  };
6997
7128
  }
7129
+ if (errInfo && errInfo.def.name === "%AggregateError") {
7130
+ const args = expr.arguments ?? [];
7131
+ if (args.length > 3 || args.some(ts.isSpreadElement)) {
7132
+ lowerer.noLowering(`new AggregateError with this argument list`, expr);
7133
+ }
7134
+ const errors = args[0] ? lowerer.lowerExprExpecting(args[0], DYN) : dynUndefinedExpr(loc);
7135
+ return {
7136
+ kind: "call",
7137
+ callee: aggregateErrorConstructor(lowerer, loc),
7138
+ args: [errors, ...lowerer.errorConstructorArgs(args.slice(1), loc, expr)],
7139
+ type: { kind: "object", className: "%AggregateError" },
7140
+ loc,
7141
+ };
7142
+ }
6998
7143
  if (errInfo) {
6999
7144
  const args = lowerer.errorConstructorArgs(expr.arguments ?? [], loc, expr);
7000
7145
  return {