@scriptc/compiler 0.3.2 → 0.3.4

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 (454) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +1202 -64
  2. package/dist/backend/cycle-analysis.js +6 -1
  3. package/dist/backend/cycle-analysis.js.map +1 -1
  4. package/dist/backend/cycle-mutability.d.ts +5 -0
  5. package/dist/backend/cycle-mutability.js +62 -3
  6. package/dist/backend/cycle-mutability.js.map +1 -1
  7. package/dist/backend/executable-features.js +1 -0
  8. package/dist/backend/executable-features.js.map +1 -1
  9. package/dist/backend/library-pack.js +1 -0
  10. package/dist/backend/library-pack.js.map +1 -1
  11. package/dist/backend/llvm/alloc.js +24 -10
  12. package/dist/backend/llvm/alloc.js.map +1 -1
  13. package/dist/backend/llvm/alloc.test.js +47 -1
  14. package/dist/backend/llvm/alloc.test.js.map +1 -1
  15. package/dist/backend/llvm/array-search.d.ts +8 -0
  16. package/dist/backend/llvm/array-search.js +52 -0
  17. package/dist/backend/llvm/array-search.js.map +1 -0
  18. package/dist/backend/llvm/array-search.test.d.ts +1 -0
  19. package/dist/backend/llvm/array-search.test.js +72 -0
  20. package/dist/backend/llvm/array-search.test.js.map +1 -0
  21. package/dist/backend/llvm/call-lifetimes.d.ts +12 -1
  22. package/dist/backend/llvm/call-lifetimes.js +41 -11
  23. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  24. package/dist/backend/llvm/call-lifetimes.test.js +85 -1
  25. package/dist/backend/llvm/call-lifetimes.test.js.map +1 -1
  26. package/dist/backend/llvm/classes.js +87 -36
  27. package/dist/backend/llvm/classes.js.map +1 -1
  28. package/dist/backend/llvm/common.d.ts +6 -1
  29. package/dist/backend/llvm/common.js +8 -1
  30. package/dist/backend/llvm/common.js.map +1 -1
  31. package/dist/backend/llvm/dense-array-access.d.ts +5 -0
  32. package/dist/backend/llvm/dense-array-access.js +3 -3
  33. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  34. package/dist/backend/llvm/dyn.d.ts +44 -1
  35. package/dist/backend/llvm/dyn.js +251 -36
  36. package/dist/backend/llvm/dyn.js.map +1 -1
  37. package/dist/backend/llvm/emitter.d.ts +77 -14
  38. package/dist/backend/llvm/emitter.js +461 -108
  39. package/dist/backend/llvm/emitter.js.map +1 -1
  40. package/dist/backend/llvm/emitter.test.js +26 -3
  41. package/dist/backend/llvm/emitter.test.js.map +1 -1
  42. package/dist/backend/llvm/expr-async.js +52 -1
  43. package/dist/backend/llvm/expr-async.js.map +1 -1
  44. package/dist/backend/llvm/expr-bytes.d.ts +9 -0
  45. package/dist/backend/llvm/expr-bytes.js +169 -63
  46. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  47. package/dist/backend/llvm/expr-callbacks.js +16 -2
  48. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  49. package/dist/backend/llvm/expr-calls.d.ts +3 -1
  50. package/dist/backend/llvm/expr-calls.js +57 -2
  51. package/dist/backend/llvm/expr-calls.js.map +1 -1
  52. package/dist/backend/llvm/expr-containers.js +57 -19
  53. package/dist/backend/llvm/expr-containers.js.map +1 -1
  54. package/dist/backend/llvm/expr-dynamic.js +19 -8
  55. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  56. package/dist/backend/llvm/expr-primitives.js +28 -30
  57. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  58. package/dist/backend/llvm/expr-records.js +8 -4
  59. package/dist/backend/llvm/expr-records.js.map +1 -1
  60. package/dist/backend/llvm/expr-stream-bridges.js +35 -32
  61. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  62. package/dist/backend/llvm/expr-stream-callbacks.d.ts +13 -2
  63. package/dist/backend/llvm/expr-stream-callbacks.js +80 -5
  64. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  65. package/dist/backend/llvm/inline-unions.d.ts +48 -0
  66. package/dist/backend/llvm/inline-unions.js +134 -0
  67. package/dist/backend/llvm/inline-unions.js.map +1 -0
  68. package/dist/backend/llvm/inline-unions.test.d.ts +1 -0
  69. package/dist/backend/llvm/inline-unions.test.js +124 -0
  70. package/dist/backend/llvm/inline-unions.test.js.map +1 -0
  71. package/dist/backend/llvm/integer-remainder.d.ts +28 -5
  72. package/dist/backend/llvm/integer-remainder.js +80 -9
  73. package/dist/backend/llvm/integer-remainder.js.map +1 -1
  74. package/dist/backend/llvm/intern-tables.test.d.ts +1 -0
  75. package/dist/backend/llvm/intern-tables.test.js +77 -0
  76. package/dist/backend/llvm/intern-tables.test.js.map +1 -0
  77. package/dist/backend/llvm/lib-datagram.js +10 -0
  78. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  79. package/dist/backend/llvm/lib-dispatch.js +255 -29
  80. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  81. package/dist/backend/llvm/lib-filesystem.js +176 -7
  82. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  83. package/dist/backend/llvm/lib-network.js +25 -6
  84. package/dist/backend/llvm/lib-network.js.map +1 -1
  85. package/dist/backend/llvm/lib-process.js +2 -2
  86. package/dist/backend/llvm/lib-process.js.map +1 -1
  87. package/dist/backend/llvm/lib-shared.d.ts +5 -0
  88. package/dist/backend/llvm/lib-shared.js +212 -1
  89. package/dist/backend/llvm/lib-shared.js.map +1 -1
  90. package/dist/backend/llvm/lib-stream.js +184 -0
  91. package/dist/backend/llvm/lib-stream.js.map +1 -1
  92. package/dist/backend/llvm/lib-test.js +9 -0
  93. package/dist/backend/llvm/lib-test.js.map +1 -1
  94. package/dist/backend/llvm/local-array-reads.js +7 -3
  95. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  96. package/dist/backend/llvm/local-array-reads.test.js +6 -3
  97. package/dist/backend/llvm/local-array-reads.test.js.map +1 -1
  98. package/dist/backend/llvm/local-union-storage.d.ts +2 -0
  99. package/dist/backend/llvm/local-union-storage.js +5 -0
  100. package/dist/backend/llvm/local-union-storage.js.map +1 -1
  101. package/dist/backend/llvm/local-union-storage.test.js +1 -0
  102. package/dist/backend/llvm/local-union-storage.test.js.map +1 -1
  103. package/dist/backend/llvm/loop-array-borrows.d.ts +8 -2
  104. package/dist/backend/llvm/loop-array-borrows.js +93 -13
  105. package/dist/backend/llvm/loop-array-borrows.js.map +1 -1
  106. package/dist/backend/llvm/map-number-lookup.d.ts +24 -0
  107. package/dist/backend/llvm/map-number-lookup.js +88 -0
  108. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  109. package/dist/backend/llvm/map-number-lookup.test.d.ts +1 -0
  110. package/dist/backend/llvm/map-number-lookup.test.js +158 -0
  111. package/dist/backend/llvm/map-number-lookup.test.js.map +1 -0
  112. package/dist/backend/llvm/map-read-lifetimes.d.ts +9 -0
  113. package/dist/backend/llvm/map-read-lifetimes.js +90 -1
  114. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  115. package/dist/backend/llvm/map-read-lifetimes.test.js +129 -1
  116. package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -1
  117. package/dist/backend/llvm/publish.d.ts +9 -0
  118. package/dist/backend/llvm/publish.js +25 -4
  119. package/dist/backend/llvm/publish.js.map +1 -1
  120. package/dist/backend/llvm/record-results.d.ts +8 -5
  121. package/dist/backend/llvm/record-results.js +20 -12
  122. package/dist/backend/llvm/record-results.js.map +1 -1
  123. package/dist/backend/llvm/reference-effects.js +13 -0
  124. package/dist/backend/llvm/reference-effects.js.map +1 -1
  125. package/dist/backend/llvm/reference-writes.js +19 -2
  126. package/dist/backend/llvm/reference-writes.js.map +1 -1
  127. package/dist/backend/llvm/regions.d.ts +5 -1
  128. package/dist/backend/llvm/regions.js +24 -10
  129. package/dist/backend/llvm/regions.js.map +1 -1
  130. package/dist/backend/llvm/serialized-ir-emission.test.js +2 -0
  131. package/dist/backend/llvm/serialized-ir-emission.test.js.map +1 -1
  132. package/dist/backend/llvm/shapes.d.ts +56 -10
  133. package/dist/backend/llvm/shapes.js +178 -39
  134. package/dist/backend/llvm/shapes.js.map +1 -1
  135. package/dist/backend/llvm/shapes.test.js +61 -3
  136. package/dist/backend/llvm/shapes.test.js.map +1 -1
  137. package/dist/backend/llvm/stack-objects.js +16 -4
  138. package/dist/backend/llvm/stack-objects.js.map +1 -1
  139. package/dist/backend/llvm/stack-objects.test.js +3 -0
  140. package/dist/backend/llvm/stack-objects.test.js.map +1 -1
  141. package/dist/backend/llvm/string-reads.js +2 -2
  142. package/dist/backend/llvm/string-reads.js.map +1 -1
  143. package/dist/backend/llvm/string-slices.js +2 -2
  144. package/dist/backend/llvm/string-slices.js.map +1 -1
  145. package/dist/backend/llvm/walkers.d.ts +11 -0
  146. package/dist/backend/llvm/walkers.js +106 -10
  147. package/dist/backend/llvm/walkers.js.map +1 -1
  148. package/dist/backend/may-throw.js +13 -4
  149. package/dist/backend/may-throw.js.map +1 -1
  150. package/dist/backend/native/contracts.d.ts +5 -2
  151. package/dist/backend/native/executable.js +27 -8
  152. package/dist/backend/native/executable.js.map +1 -1
  153. package/dist/backend/native/runtime-inputs.d.ts +1 -1
  154. package/dist/backend/native/runtime-inputs.js +2 -0
  155. package/dist/backend/native/runtime-inputs.js.map +1 -1
  156. package/dist/backend/native-codegen-core.d.ts +4 -4
  157. package/dist/backend/native-codegen-core.js +4 -6
  158. package/dist/backend/native-codegen-core.js.map +1 -1
  159. package/dist/backend/native-codegen.test.js +7 -8
  160. package/dist/backend/native-codegen.test.js.map +1 -1
  161. package/dist/backend/native-link-info-core.d.ts +3 -0
  162. package/dist/backend/native-link-info-core.js.map +1 -1
  163. package/dist/backend/native-toolchain.test.js +1 -1
  164. package/dist/backend/native-toolchain.test.js.map +1 -1
  165. package/dist/backend/publication.js +3 -1
  166. package/dist/backend/publication.js.map +1 -1
  167. package/dist/backend/runtime-abi.d.ts +2 -2
  168. package/dist/backend/runtime-abi.js +2 -2
  169. package/dist/backend/runtime-pack-targets.test.js +2 -1
  170. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  171. package/dist/backend/runtime-pack.test.js +2 -1
  172. package/dist/backend/runtime-pack.test.js.map +1 -1
  173. package/dist/backend/target-diagnostics.js +11 -1
  174. package/dist/backend/target-diagnostics.js.map +1 -1
  175. package/dist/backend/target-diagnostics.test.js +4 -1
  176. package/dist/backend/target-diagnostics.test.js.map +1 -1
  177. package/dist/backend/warm-cache.js +1 -0
  178. package/dist/backend/warm-cache.js.map +1 -1
  179. package/dist/compat/fetch-profile.js +4 -4
  180. package/dist/compat/fetch-profile.js.map +1 -1
  181. package/dist/contracts/check.js +2 -0
  182. package/dist/contracts/check.js.map +1 -1
  183. package/dist/coverage/report.js +1 -1
  184. package/dist/coverage/report.js.map +1 -1
  185. package/dist/diagnostics/diagnostic.d.ts +6 -5
  186. package/dist/diagnostics/diagnostic.js +7 -6
  187. package/dist/diagnostics/diagnostic.js.map +1 -1
  188. package/dist/executable/executable-cache.d.ts +1 -0
  189. package/dist/executable/executable-cache.js +1 -0
  190. package/dist/executable/executable-cache.js.map +1 -1
  191. package/dist/executable/executable-cache.test.js +1 -0
  192. package/dist/executable/executable-cache.test.js.map +1 -1
  193. package/dist/frontend/builtin-modules.d.ts +1 -1
  194. package/dist/frontend/builtin-modules.js +1 -0
  195. package/dist/frontend/builtin-modules.js.map +1 -1
  196. package/dist/frontend/comptime-node.js +2 -2
  197. package/dist/frontend/comptime-node.js.map +1 -1
  198. package/dist/frontend/experimental-import.d.ts +5 -1
  199. package/dist/frontend/experimental-import.js +28 -3
  200. package/dist/frontend/experimental-import.js.map +1 -1
  201. package/dist/frontend/lowering/assert-instances.d.ts +38 -0
  202. package/dist/frontend/lowering/assert-instances.js +269 -0
  203. package/dist/frontend/lowering/assert-instances.js.map +1 -0
  204. package/dist/frontend/lowering/binding-analysis.d.ts +1 -1
  205. package/dist/frontend/lowering/binding-analysis.js +1 -1
  206. package/dist/frontend/lowering/builtins/arguments.d.ts +4 -0
  207. package/dist/frontend/lowering/builtins/arguments.js +8 -4
  208. package/dist/frontend/lowering/builtins/arguments.js.map +1 -1
  209. package/dist/frontend/lowering/builtins/blob.d.ts +20 -0
  210. package/dist/frontend/lowering/builtins/blob.js +167 -0
  211. package/dist/frontend/lowering/builtins/blob.js.map +1 -0
  212. package/dist/frontend/lowering/builtins/child-process-async.d.ts +2 -2
  213. package/dist/frontend/lowering/builtins/child-process-async.js +2 -2
  214. package/dist/frontend/lowering/builtins/child-process-methods.js +1 -1
  215. package/dist/frontend/lowering/builtins/child-process-methods.js.map +1 -1
  216. package/dist/frontend/lowering/builtins/child-process-sync.js +1 -1
  217. package/dist/frontend/lowering/builtins/child-process-sync.js.map +1 -1
  218. package/dist/frontend/lowering/builtins/compression.d.ts +18 -0
  219. package/dist/frontend/lowering/builtins/compression.js +178 -4
  220. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  221. package/dist/frontend/lowering/builtins/constants.js +7 -2
  222. package/dist/frontend/lowering/builtins/constants.js.map +1 -1
  223. package/dist/frontend/lowering/builtins/crypto.d.ts +6 -0
  224. package/dist/frontend/lowering/builtins/crypto.js +526 -121
  225. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  226. package/dist/frontend/lowering/builtins/errors.js +23 -0
  227. package/dist/frontend/lowering/builtins/errors.js.map +1 -1
  228. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +10 -0
  229. package/dist/frontend/lowering/builtins/filesystem-calls.js +89 -1
  230. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  231. package/dist/frontend/lowering/builtins/filesystem.d.ts +16 -7
  232. package/dist/frontend/lowering/builtins/filesystem.js +97 -15
  233. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  234. package/dist/frontend/lowering/builtins/fs-glob.d.ts +23 -0
  235. package/dist/frontend/lowering/builtins/fs-glob.js +224 -0
  236. package/dist/frontend/lowering/builtins/fs-glob.js.map +1 -0
  237. package/dist/frontend/lowering/builtins/key-object.d.ts +13 -0
  238. package/dist/frontend/lowering/builtins/key-object.js +56 -0
  239. package/dist/frontend/lowering/builtins/key-object.js.map +1 -0
  240. package/dist/frontend/lowering/builtins/module-calls.js +44 -11
  241. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  242. package/dist/frontend/lowering/builtins/performance.d.ts +25 -3
  243. package/dist/frontend/lowering/builtins/performance.js +340 -5
  244. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  245. package/dist/frontend/lowering/builtins/process.d.ts +2 -2
  246. package/dist/frontend/lowering/builtins/process.js +107 -14
  247. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  248. package/dist/frontend/lowering/builtins/properties.d.ts +0 -7
  249. package/dist/frontend/lowering/builtins/properties.js +39 -11
  250. package/dist/frontend/lowering/builtins/properties.js.map +1 -1
  251. package/dist/frontend/lowering/builtins/readline.d.ts +23 -8
  252. package/dist/frontend/lowering/builtins/readline.js +266 -90
  253. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  254. package/dist/frontend/lowering/builtins/timers.d.ts +3 -0
  255. package/dist/frontend/lowering/builtins/timers.js +109 -23
  256. package/dist/frontend/lowering/builtins/timers.js.map +1 -1
  257. package/dist/frontend/lowering/builtins/url.d.ts +8 -0
  258. package/dist/frontend/lowering/builtins/url.js +36 -0
  259. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  260. package/dist/frontend/lowering/call-arguments.js +1 -1
  261. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  262. package/dist/frontend/lowering/call-signatures.js +26 -2
  263. package/dist/frontend/lowering/call-signatures.js.map +1 -1
  264. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +2 -0
  265. package/dist/frontend/lowering/class-dynamic-dispatch.js +171 -13
  266. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  267. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +1 -0
  268. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  269. package/dist/frontend/lowering/class-protocol-dispatch.d.ts +45 -0
  270. package/dist/frontend/lowering/class-protocol-dispatch.js +516 -0
  271. package/dist/frontend/lowering/class-protocol-dispatch.js.map +1 -0
  272. package/dist/frontend/lowering/coercions/structural-plans.js +2 -1
  273. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  274. package/dist/frontend/lowering/coercions/structural.js +3 -3
  275. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  276. package/dist/frontend/lowering/collation-repertoire.js +6 -5
  277. package/dist/frontend/lowering/collation-repertoire.js.map +1 -1
  278. package/dist/frontend/lowering/containers/array-callbacks.js +4 -7
  279. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  280. package/dist/frontend/lowering/containers/array-methods.d.ts +0 -7
  281. package/dist/frontend/lowering/containers/array-methods.js +43 -2
  282. package/dist/frontend/lowering/containers/array-methods.js.map +1 -1
  283. package/dist/frontend/lowering/containers/bytes.js +38 -26
  284. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  285. package/dist/frontend/lowering/containers/for-of.d.ts +1 -1
  286. package/dist/frontend/lowering/containers/for-of.js +5 -1
  287. package/dist/frontend/lowering/containers/for-of.js.map +1 -1
  288. package/dist/frontend/lowering/containers/indexed-objects.js +1 -1
  289. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  290. package/dist/frontend/lowering/crypto-tables.d.ts +3 -3
  291. package/dist/frontend/lowering/crypto-tables.js +77 -12
  292. package/dist/frontend/lowering/crypto-tables.js.map +1 -1
  293. package/dist/frontend/lowering/expressions/nullish-assignment.js +10 -0
  294. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  295. package/dist/frontend/lowering/expressions/object-literals.js +16 -12
  296. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  297. package/dist/frontend/lowering/generic-functions.d.ts +2 -2
  298. package/dist/frontend/lowering/generic-functions.js +2 -2
  299. package/dist/frontend/lowering/generic-functions.js.map +1 -1
  300. package/dist/frontend/lowering/http2-constants.js +1 -1
  301. package/dist/frontend/lowering/intern-tables.d.ts +13 -0
  302. package/dist/frontend/lowering/intern-tables.js +536 -0
  303. package/dist/frontend/lowering/intern-tables.js.map +1 -0
  304. package/dist/frontend/lowering/lower-array-sort.d.ts +12 -1
  305. package/dist/frontend/lowering/lower-array-sort.js +561 -191
  306. package/dist/frontend/lowering/lower-array-sort.js.map +1 -1
  307. package/dist/frontend/lowering/lower-array-sort.test.js +4 -2
  308. package/dist/frontend/lowering/lower-array-sort.test.js.map +1 -1
  309. package/dist/frontend/lowering/lower-assert.js +702 -63
  310. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  311. package/dist/frontend/lowering/lower-async-iteration.d.ts +6 -3
  312. package/dist/frontend/lowering/lower-async-iteration.js +259 -4
  313. package/dist/frontend/lowering/lower-async-iteration.js.map +1 -1
  314. package/dist/frontend/lowering/lower-calls.js +118 -12
  315. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  316. package/dist/frontend/lowering/lower-classes.d.ts +11 -2
  317. package/dist/frontend/lowering/lower-classes.js +76 -9
  318. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  319. package/dist/frontend/lowering/lower-comptime.d.ts +1 -1
  320. package/dist/frontend/lowering/lower-comptime.js +4 -4
  321. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  322. package/dist/frontend/lowering/lower-dgram.js +77 -52
  323. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  324. package/dist/frontend/lowering/lower-event-target.d.ts +63 -0
  325. package/dist/frontend/lowering/lower-event-target.js +362 -0
  326. package/dist/frontend/lowering/lower-event-target.js.map +1 -0
  327. package/dist/frontend/lowering/lower-expando.js +2 -2
  328. package/dist/frontend/lowering/lower-exprs.js +124 -22
  329. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  330. package/dist/frontend/lowering/lower-inspect.d.ts +6 -0
  331. package/dist/frontend/lowering/lower-inspect.js +240 -49
  332. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  333. package/dist/frontend/lowering/lower-mixins.js +1 -1
  334. package/dist/frontend/lowering/lower-mock.d.ts +11 -0
  335. package/dist/frontend/lowering/lower-mock.js +504 -0
  336. package/dist/frontend/lowering/lower-mock.js.map +1 -0
  337. package/dist/frontend/lowering/lower-modules.d.ts +1 -1
  338. package/dist/frontend/lowering/lower-modules.js +14 -3
  339. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  340. package/dist/frontend/lowering/lower-namespaces.d.ts +2 -2
  341. package/dist/frontend/lowering/lower-namespaces.js +2 -2
  342. package/dist/frontend/lowering/lower-server.d.ts +3 -0
  343. package/dist/frontend/lowering/lower-server.js +419 -44
  344. package/dist/frontend/lowering/lower-server.js.map +1 -1
  345. package/dist/frontend/lowering/lower-stdlib.d.ts +7 -1
  346. package/dist/frontend/lowering/lower-stdlib.js +10 -3
  347. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  348. package/dist/frontend/lowering/lower-stmts.d.ts +2 -2
  349. package/dist/frontend/lowering/lower-stmts.js +69 -14
  350. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  351. package/dist/frontend/lowering/lower-stream.d.ts +10 -6
  352. package/dist/frontend/lowering/lower-stream.js +1020 -49
  353. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  354. package/dist/frontend/lowering/lower-test.js +86 -8
  355. package/dist/frontend/lowering/lower-test.js.map +1 -1
  356. package/dist/frontend/lowering/lower-timers.js +1 -1
  357. package/dist/frontend/lowering/lowerer.d.ts +45 -5
  358. package/dist/frontend/lowering/lowerer.js +317 -48
  359. package/dist/frontend/lowering/lowerer.js.map +1 -1
  360. package/dist/frontend/lowering/native-ffi.js +2 -2
  361. package/dist/frontend/lowering/native-ffi.js.map +1 -1
  362. package/dist/frontend/lowering/pairs-snapshot.d.ts +6 -0
  363. package/dist/frontend/lowering/pairs-snapshot.js +49 -0
  364. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
  365. package/dist/frontend/lowering/runtime-optional-records.d.ts +115 -0
  366. package/dist/frontend/lowering/runtime-optional-records.js +715 -0
  367. package/dist/frontend/lowering/runtime-optional-records.js.map +1 -0
  368. package/dist/frontend/lowering/runtime-optional-records.test.d.ts +1 -0
  369. package/dist/frontend/lowering/runtime-optional-records.test.js +175 -0
  370. package/dist/frontend/lowering/runtime-optional-records.test.js.map +1 -0
  371. package/dist/frontend/lowering/surfaces.d.ts +11 -3
  372. package/dist/frontend/lowering/surfaces.js +334 -37
  373. package/dist/frontend/lowering/surfaces.js.map +1 -1
  374. package/dist/frontend/lowering/zlib-constants.d.ts +1 -0
  375. package/dist/frontend/lowering/zlib-constants.js +181 -0
  376. package/dist/frontend/lowering/zlib-constants.js.map +1 -0
  377. package/dist/frontend/mock-shapes.d.ts +10 -0
  378. package/dist/frontend/mock-shapes.js +76 -0
  379. package/dist/frontend/mock-shapes.js.map +1 -0
  380. package/dist/frontend/module-syntax.d.ts +1 -1
  381. package/dist/frontend/module-syntax.js +1 -1
  382. package/dist/frontend/npm-static-prune.js +1 -1
  383. package/dist/frontend/npm-static-prune.js.map +1 -1
  384. package/dist/frontend/npm-static-rewrite-syntax.js +4 -3
  385. package/dist/frontend/npm-static-rewrite-syntax.js.map +1 -1
  386. package/dist/frontend/pipeline.js +6 -4
  387. package/dist/frontend/pipeline.js.map +1 -1
  388. package/dist/frontend/program.d.ts +3 -3
  389. package/dist/frontend/program.js +25 -18
  390. package/dist/frontend/program.js.map +1 -1
  391. package/dist/frontend/resolve.d.ts +4 -0
  392. package/dist/frontend/resolve.js +15 -1
  393. package/dist/frontend/resolve.js.map +1 -1
  394. package/dist/frontend/ts7/adapter.js +1 -1
  395. package/dist/frontend/ts7/ast-bytes.d.ts +1 -1
  396. package/dist/frontend/ts7/ast-bytes.js +1 -1
  397. package/dist/frontend/ts7/semantic-json.d.ts +1 -1
  398. package/dist/frontend/ts7/semantic-json.js +1 -1
  399. package/dist/frontend/ts7/semantic-json.js.map +1 -1
  400. package/dist/frontend/ts7/world-check.js +1 -1
  401. package/dist/frontend/tsc-codes.js +3 -2
  402. package/dist/frontend/tsc-codes.js.map +1 -1
  403. package/dist/frontend/type-mapper.d.ts +21 -1
  404. package/dist/frontend/type-mapper.js +245 -27
  405. package/dist/frontend/type-mapper.js.map +1 -1
  406. package/dist/index.js +7 -5
  407. package/dist/index.js.map +1 -1
  408. package/dist/ir/analysis.d.ts +12 -6
  409. package/dist/ir/analysis.js +26 -10
  410. package/dist/ir/analysis.js.map +1 -1
  411. package/dist/ir/analysis.test.js +15 -3
  412. package/dist/ir/analysis.test.js.map +1 -1
  413. package/dist/ir/builtin-effects.js +115 -0
  414. package/dist/ir/builtin-effects.js.map +1 -1
  415. package/dist/ir/builtin-signatures.d.ts +1 -1
  416. package/dist/ir/builtin-signatures.js +438 -46
  417. package/dist/ir/builtin-signatures.js.map +1 -1
  418. package/dist/ir/int32-slots.js +1 -0
  419. package/dist/ir/int32-slots.js.map +1 -1
  420. package/dist/ir/ir.d.ts +84 -17
  421. package/dist/ir/ir.js +54 -1
  422. package/dist/ir/ir.js.map +1 -1
  423. package/dist/ir/runtime-features.d.ts +1 -0
  424. package/dist/ir/runtime-features.js +111 -7
  425. package/dist/ir/runtime-features.js.map +1 -1
  426. package/dist/ir/serialize.js +1 -1
  427. package/dist/ir/serialize.js.map +1 -1
  428. package/dist/ir/traverse.js +1 -0
  429. package/dist/ir/traverse.js.map +1 -1
  430. package/dist/ir/validate.js +295 -14
  431. package/dist/ir/validate.js.map +1 -1
  432. package/dist/ir/validate.test.js +60 -0
  433. package/dist/ir/validate.test.js.map +1 -1
  434. package/dist/library/fence-eval.d.ts +1 -1
  435. package/dist/library/fence-eval.js +5 -4
  436. package/dist/library/fence-eval.js.map +1 -1
  437. package/dist/library/ir-policy.js +11 -4
  438. package/dist/library/ir-policy.js.map +1 -1
  439. package/dist/library/library-profile.js +13 -13
  440. package/dist/library/library-profile.js.map +1 -1
  441. package/dist/library/prepare.js +1 -1
  442. package/dist/library/prepare.js.map +1 -1
  443. package/dist/library/sidecar.js +3 -3
  444. package/dist/library/sidecar.js.map +1 -1
  445. package/dist/native/cli.js +1 -0
  446. package/dist/native/cli.js.map +1 -1
  447. package/dist/native/compiler.js +1 -3
  448. package/dist/native/compiler.js.map +1 -1
  449. package/dist/native/prepare.js +4 -2
  450. package/dist/native/prepare.js.map +1 -1
  451. package/dist/native/sanitizer.test.js +1 -0
  452. package/dist/native/sanitizer.test.js.map +1 -1
  453. package/package.json +20 -20
  454. package/surface-manifest.json +1279 -221
@@ -1,3 +1,4 @@
1
+ import { type ArraySearchKind } from "./array-search.js";
1
2
  import type { IrBytesElem, IrExpr, IrFfiImport, IrFunction, IrLocal, IrModule, IrRecordShape, IrStmt, IrType, IrUnionDef, SrcLoc } from "../../ir/ir.js";
2
3
  import { type SplitSpan } from "./split-loops.js";
3
4
  import { type IntegerRanges } from "../../ir/integer-ranges.js";
@@ -10,6 +11,7 @@ import { type CallLifetimes } from "./call-lifetimes.js";
10
11
  import { type UnionSources } from "./local-union-storage.js";
11
12
  import { BlockBuilder } from "./blocks.js";
12
13
  import { NullableRefFields, type NullableRefField } from "./nullable-fields.js";
14
+ import { InlineUnionFields } from "./inline-unions.js";
13
15
  import { OptionalArrayReads, type LocalArrayRead } from "./local-array-reads.js";
14
16
  import { CheckedNarrows } from "./checked-narrows.js";
15
17
  import { type MapReadLifetimes } from "./map-read-lifetimes.js";
@@ -19,11 +21,12 @@ import { StackCallbacks } from "./stack-callbacks.js";
19
21
  import { AmbientReceiverReaders } from "./constant-callbacks.js";
20
22
  import { type StringSliceSnapshot } from "./string-slices.js";
21
23
  import { type PublishedTypes } from "../publication.js";
24
+ import { type BytesThunkValue } from "./expr-stream-callbacks.js";
22
25
  import { type LlClassMeta } from "./classes.js";
23
26
  import { LlDyn, type DynHost } from "./dyn.js";
24
27
  import { LlWalkers } from "./walkers.js";
25
28
  import { NullableUnions } from "./nullable-unions.js";
26
- import { type MapKeyAccess } from "./shapes.js";
29
+ import { type InlineRcMode, type MapKeyAccess } from "./shapes.js";
27
30
  import type { ExprOf, LibCallExpr, LlStreamTypedRefAdapter, LlValue } from "./expr-context.js";
28
31
  export { LlvmUnsupportedError } from "./unsupported.js";
29
32
  export interface LlvmTargetOptions {
@@ -39,16 +42,20 @@ export interface LlvmTargetOptions {
39
42
  * separate translation unit. Public/direct emission keeps them by default. */
40
43
  emitLibraryIdentity?: boolean;
41
44
  /** Program objects carry a strong reference to the matching runtime ABI
42
- * marker so manual links against an incompatible runtime fail loudly. */
45
+ * marker so a manual link against an incompatible runtime fails. */
43
46
  runtimeAbiMarker?: boolean;
44
47
  /** Emit live-object audit notes in emitted new/free helpers. Only the
45
48
  * sanitized lane's SCR_RC_AUDIT runtime counts them; production plain
46
49
  * builds pass false so release/dev objects carry no empty calls.
47
50
  * Defaults to true for direct emission. */
48
51
  objectAudit?: boolean;
49
- /** Emit retain/release fast paths inline (the `speed` posture). Off, every
50
- * retain and release is a runtime call. */
51
- inlineRc?: boolean;
52
+ /** Emit retain/release fast paths inline: `speed` for every family with a
53
+ * fast path, `release` for the string retain and the dyn retain and
54
+ * release (shapes.ts InlineRcMode). Off, every retain and release is a
55
+ * runtime call. */
56
+ inlineRc?: InlineRcMode;
57
+ /** Define the inline RC fast-path helpers `noinline` (sanitized builds). */
58
+ rcHelpersNoinline?: boolean;
52
59
  /** Define `scr_detached_exit` so the Linux runtime hands the address-space
53
60
  * teardown after `process.exit` to a helper process (`--detached-exit`).
54
61
  * Executables only; the runtime's weak default keeps it off. */
@@ -134,6 +141,8 @@ export declare class LlEmitter {
134
141
  private readonly unitInstances;
135
142
  /** unionId → symbol of the union's immortal ABSENT field-slot instance. */
136
143
  private readonly absentInstances;
144
+ /** The zeroed box an inline store reads for a NULL union dummy. */
145
+ private needsUnionNone;
137
146
  /** unionId → symbol of a flag set once a checked-dynamic cast caches one
138
147
  * of the union's boxes. A cached box is refreshed in place, possibly with
139
148
  * a tag that another union numbers apart, so it is never shared. */
@@ -185,6 +194,8 @@ export declare class LlEmitter {
185
194
  /** Inline RC fast-path helpers requested by call sites (shapes.ts); null
186
195
  * when inline RC is off. */
187
196
  private readonly rcHelpers;
197
+ private readonly rcMode;
198
+ private readonly rcHelpersNoinline;
188
199
  readonly fnByName: Map<string, IrFunction>;
189
200
  /** Empty literals that construct with inline slots (appended-array-literals.ts). */
190
201
  appendedArrayLiterals: ReadonlySet<IrExpr>;
@@ -204,6 +215,7 @@ export declare class LlEmitter {
204
215
  readonly checkedNarrows: CheckedNarrows;
205
216
  callArrayReads: Map<IrExpr, LocalArrayRead>;
206
217
  mapReadLifetimes: MapReadLifetimes;
218
+ readNumberMapWrites: ReadonlySet<IrExpr>;
207
219
  readonly callLifetimes: CallLifetimes;
208
220
  readonly constantCallbacks: Map<string, Map<string, string>>;
209
221
  currentConstantCallbacks: ReadonlyMap<string, string>;
@@ -292,6 +304,8 @@ export declare class LlEmitter {
292
304
  * typeKey → thunk symbol. */
293
305
  readonly resolveThunks: Map<string, string>;
294
306
  readonly resolveThunkDefs: string[];
307
+ /** Inline array searches used by the module (array-search.ts). */
308
+ readonly arraySearchKinds: Set<ArraySearchKind>;
295
309
  /** Typed-ref recipe constants by type key (lazy receivers). */
296
310
  readonly typedRefRecipes: Map<string, string>;
297
311
  /** ReadableStream.from adapters keep typed arrays by reference and box
@@ -305,6 +319,7 @@ export declare class LlEmitter {
305
319
  readonly dynPromiseAdapters: Map<string, string>;
306
320
  readonly unionsById: Map<string, IrUnionDef>;
307
321
  readonly nullableFields: NullableRefFields;
322
+ readonly inlineUnions: InlineUnionFields;
308
323
  /** Unions whose values are nullable arm pointers (nullable-unions.ts). */
309
324
  readonly nullableUnions: NullableUnions;
310
325
  /** The union table without nullable unions: the stack-box analyses. */
@@ -504,7 +519,7 @@ export declare class LlEmitter {
504
519
  * programs keep fibers too: their fiber epilogue owns context
505
520
  * termination (a stopping worker rejects and observes the promise), which
506
521
  * the fiberless wrapper does not reproduce. A missed suspension still
507
- * cannot reorder silently: the runtime traps when a context parks while a
522
+ * cannot reorder execution undetected: the runtime traps when a context parks while a
508
523
  * fiberless body is on its stack. */
509
524
  private fiberlessAsyncFunctions;
510
525
  /** The spawn wrapper of a fiberless async function: runs the body on the
@@ -588,7 +603,7 @@ export declare class LlEmitter {
588
603
  * holding the ABSENT state surfaces as the ordinary undefined arm, so
589
604
  * absence never travels beyond its slot (a later `{ f: r.f }` is an
590
605
  * explicit, present property). */
591
- loadRecordField(ptr: string, t: IrType): string;
606
+ loadRecordField(ptr: string, t: IrType, inline: boolean): string;
592
607
  declare(decl: string): void;
593
608
  needOom(): void;
594
609
  private currentFrame;
@@ -673,6 +688,11 @@ export declare class LlEmitter {
673
688
  * conditions in expr-calls.ts). */
674
689
  private callTestsPending;
675
690
  private workerLoopBudget;
691
+ /** The amortized cancellation poll, emitted on the loop's back edge (the
692
+ * continue target), after the body. A poll in the header would be a loop
693
+ * exit ahead of the body; LLVM then cannot rotate the loop, so loads that
694
+ * the body repeats on every iteration (a typed array's length, for one)
695
+ * stay in the loop. */
676
696
  private emitWorkerLoopCheck;
677
697
  /** Moves an already-evaluated value into the runtime's exception cell —
678
698
  * the `throw` statement's kind dispatch (stmts.ts's), shared with
@@ -692,7 +712,7 @@ export declare class LlEmitter {
692
712
  unionTag(uName: string, unionId: string): string;
693
713
  /** Guard for helpers that build or read a union's `%ScrUnion` box
694
714
  * directly (library-shaped unions with fixed arms): a nullable union
695
- * reaching one is an emitter bug, never a silent miscompile. */
715
+ * reaching one is an emitter bug and throws InternalCompilerError. */
696
716
  requireBoxedUnion(unionId: string): void;
697
717
  /** The BORROWED payload pointer of a ref arm (scr_union_peek inlined —
698
718
  * the runtime's is a static inline); a nullable union is its payload. */
@@ -723,6 +743,7 @@ export declare class LlEmitter {
723
743
  classFieldPtr(objName: string, className: string, field: string): {
724
744
  ptr: string;
725
745
  type: IrType;
746
+ inline: boolean;
726
747
  };
727
748
  /** `o->vt->pre` — the dynamic class's preorder number (borrowed object;
728
749
  * the static class names which struct spelling carries the vt word). */
@@ -736,17 +757,35 @@ export declare class LlEmitter {
736
757
  * same offset on every target. Share one field-read block per matching
737
758
  * prefix; class variants retain their own concrete layout dispatch. */
738
759
  unionFieldGroups(def: IrUnionDef, field: string): number[][];
739
- /** The field-slot pointer of a record member (rc header at index 0). */
760
+ /** The zeroed `%ScrUnion` constant (inline-unions.ts unionBoxBits). */
761
+ unionNoneRef(): string;
762
+ /** The field-slot pointer of a record member (rc header at index 0).
763
+ * `inline`: the slot stores a scalar union's tag and bits. */
740
764
  recordFieldPtr(objName: string, shapeId: string, field: string): {
741
765
  ptr: string;
742
766
  type: IrType;
767
+ inline: boolean;
743
768
  };
744
769
  /** The overflow map's slot pointer on an index-signature shape. */
745
770
  recordOvfPtr(objName: string, shapeId: string): string;
746
- /** Loads a record field (i8-stored bools trunc to i1). */
747
- loadField(ptr: string, t: IrType): string;
748
- /** Stores a record field (i1 zext to the i8 storage). */
749
- storeField(ptr: string, t: IrType, value: string): void;
771
+ /** Loads a record field (i8-stored bools trunc to i1). An inline union
772
+ * field answers a private stack box with the slot's own bits, ABSENT
773
+ * included: it may only be borrowed. */
774
+ loadField(ptr: string, t: IrType, inline: boolean): string;
775
+ /** A record field of this shape stores its scalar union inline. */
776
+ recordFieldInline(shapeId: string, field: string): boolean;
777
+ /** The value a field store writes: an inline union slot copies the tag
778
+ * and bits of a borrowed projection, so no box is built for it. */
779
+ emitFieldValue(value: IrExpr, inline: boolean): LlValue;
780
+ /** Overwrites a field with `v` (from emitFieldValue). A reference moves
781
+ * in, and the old value is released AFTER the field is overwritten. */
782
+ replaceField(ptr: string, type: IrType, inline: boolean, v: LlValue): void;
783
+ /** Stores `v` (from emitFieldValue) into a fresh field slot. */
784
+ initField(ptr: string, type: IrType, inline: boolean, v: LlValue): void;
785
+ /** Stores a record field (i1 zext to the i8 storage). An inline union
786
+ * field copies the tag and bits of the union value, which its owner
787
+ * keeps. */
788
+ storeField(ptr: string, t: IrType, value: string, inline: boolean): void;
750
789
  /** Reads an int32-specialized class field: the i32 slot is the value,
751
790
  * and its widening is the exact double every program observation sees. */
752
791
  loadInt32Field(ptr: string, type: IrType): LlValue;
@@ -832,6 +871,12 @@ export declare class LlEmitter {
832
871
  /** A fresh heap box (+1) for a SCALAR_UNION_RESULT pair of `type`; the
833
872
  * exception dummy (tag -1) answers NULL. */
834
873
  boxScalarUnion(pair: string, type: IrType): string;
874
+ /** A fresh heap box (+1) for an inline union field's value; the ABSENT
875
+ * state reads as the undefined arm. */
876
+ inlineFieldUnion(ptr: string, type: IrType): string;
877
+ /** boxScalarUnion over a separate tag and payload bits. Unit arms answer
878
+ * their immortal instances whatever the bits. */
879
+ boxScalarUnionBits(tag: string, bits: string, type: IrType): string;
835
880
  /** The i32 bits of a number proven an int32 (a direct call's i32
836
881
  * argument or an i32 result): its exact integer when the value carries
837
882
  * one, else the conversion the proof makes exact. */
@@ -979,6 +1024,10 @@ export declare class LlEmitter {
979
1024
  * value, making the snapshot unique unless a real observable alias exists.
980
1025
  */
981
1026
  emitStringSelfConcatAssign(localId: string, left: IrExpr, suffix: IrExpr, retainForYield: boolean): LlValue;
1027
+ /** The code of a one-argument `String.fromCharCode(c)` suffix, emitted, so
1028
+ * `s += String.fromCharCode(c)` appends the character without building
1029
+ * the one-character string; null for any other suffix. */
1030
+ private emitSingleCharCode;
982
1031
  /** `local = local + suffix` when the suffix cannot read or write the
983
1032
  * local (an unboxed binding is only reachable through this function's own
984
1033
  * expressions): reading the binding after the suffix gives the value the
@@ -993,6 +1042,12 @@ export declare class LlEmitter {
993
1042
  emitRecordExpr(e: ExprOf<"fieldGet" | "recordGet" | "recordLit" | "recordClone" | "recordKeyGet" | "recordOvfKeys" | "recordOvfHas" | "recordHas" | "fieldAbsent">): LlValue;
994
1043
  emitDynamicExpr(e: ExprOf<"dynFrom" | "dynCall" | "dynInvoke" | "dynArrLit" | "dynObjLit" | "unionWrap" | "unionNarrow" | "unionDisc" | "unionKeyGet" | "unionIsTag" | "dynKeyGet" | "dynHasKey" | "dynScalarEq" | "dynTest" | "unionEq" | "unionFuncEq" | "caughtTest" | "caughtCheck" | "caughtNarrow" | "caughtToDyn">): LlValue;
995
1044
  emitIntrinsicExpr(e: ExprOf<"intrinsic">): LlValue;
1045
+ /** InternTable's runtime calls (scr_itable.c). Table and entry handles
1046
+ * are f64 values carrying pointer bits; entry values are 64-bit slots
1047
+ * (double bits, a bool, or a pointer to an immortal value) that the
1048
+ * table neither retains nor releases. Lookups and inserts of array keys
1049
+ * throw a TypeError for keys longer than a table accepts. */
1050
+ private emitInternTableIntrinsic;
996
1051
  /** Lifetime regions in modules with lifetimeRegions (llvm/regions.ts).
997
1052
  * Created with the class graph; null elsewhere. */
998
1053
  private regions;
@@ -1039,6 +1094,9 @@ export declare class LlEmitter {
1039
1094
  /** True for union sources that emitReadReceiver can produce as a private
1040
1095
  * stack box with an independently owned payload (no heap union). */
1041
1096
  isStackUnionSource(e: IrExpr): boolean;
1097
+ /** A read of a record or class field that stores its scalar union
1098
+ * inline. */
1099
+ inlineFieldGet(e: IrExpr): boolean;
1042
1100
  /** The nullable-pointer representation behind a union-typed class field
1043
1101
  * read, or null for every other expression. */
1044
1102
  nullableFieldGet(e: IrExpr): NullableRefField | null;
@@ -1074,6 +1132,8 @@ export declare class LlEmitter {
1074
1132
  * and projection-only parameters (callers may pass stack boxes). Such a
1075
1133
  * box must only be projected: never retained, released, or stored. */
1076
1134
  isStackUnionLocal(localId: string): boolean;
1135
+ /** The instance of a capsule known to hold exactly this class (borrowed). */
1136
+ emitExactCapsuleObject(value: IrExpr, type: IrType): LlValue;
1077
1137
  canBorrowReceiver(e: IrExpr): boolean;
1078
1138
  /** A reference held as one plain pointer that emitReadReceiver can read
1079
1139
  * without owning: class instances, records, arrays, strings and
@@ -1144,7 +1204,10 @@ export declare class LlEmitter {
1144
1204
  }): string;
1145
1205
  cryptoBytesThunkFor(cbT: IrType & {
1146
1206
  kind: "func";
1147
- }, arrayBuffer?: boolean): string;
1207
+ }, arrayBuffer?: boolean, valueMode?: BytesThunkValue): string;
1208
+ cryptoIntThunkFor(cbT: IrType & {
1209
+ kind: "func";
1210
+ }): string;
1148
1211
  zlibBytesThunkFor(cbT: IrType & {
1149
1212
  kind: "func";
1150
1213
  }): string;