@scriptc/compiler 0.0.35 → 0.1.1

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 (439) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +14 -11
  2. package/ambient/scriptc-overrides.d.ts +0 -7
  3. package/ambient/scriptc.d.ts +1 -1
  4. package/dist/backend/build-cache.d.ts +44 -0
  5. package/dist/backend/build-cache.js +241 -0
  6. package/dist/backend/build-cache.js.map +1 -0
  7. package/dist/backend/{emission/emit-async.d.ts → c/async.d.ts} +21 -30
  8. package/dist/backend/{emission/emit-async.js → c/async.js} +270 -286
  9. package/dist/backend/c/async.js.map +1 -0
  10. package/dist/backend/{emission/emitter.d.ts → c/c-emitter.d.ts} +6 -23
  11. package/dist/backend/{emission/emitter.js → c/c-emitter.js} +53 -107
  12. package/dist/backend/c/c-emitter.js.map +1 -0
  13. package/dist/backend/c/exprs.d.ts +8 -0
  14. package/dist/backend/c/exprs.js +7937 -0
  15. package/dist/backend/c/exprs.js.map +1 -0
  16. package/dist/backend/{emission/emit-island.d.ts → c/island.d.ts} +5 -5
  17. package/dist/backend/{emission/emit-island.js → c/island.js} +24 -22
  18. package/dist/backend/c/island.js.map +1 -0
  19. package/dist/backend/{emission → c}/may-throw.d.ts +1 -1
  20. package/dist/backend/{emission → c}/may-throw.js +4 -1
  21. package/dist/backend/c/may-throw.js.map +1 -0
  22. package/dist/backend/{emission/emit-shapes.d.ts → c/shapes.d.ts} +19 -19
  23. package/dist/backend/{emission/emit-shapes.js → c/shapes.js} +78 -87
  24. package/dist/backend/c/shapes.js.map +1 -0
  25. package/dist/backend/{emission/emit-stmts.d.ts → c/stmts.d.ts} +12 -12
  26. package/dist/backend/{emission/emit-stmts.js → c/stmts.js} +395 -343
  27. package/dist/backend/c/stmts.js.map +1 -0
  28. package/dist/backend/{emission/emit-types.d.ts → c/types.d.ts} +1 -1
  29. package/dist/backend/{emission/emit-types.js → c/types.js} +42 -286
  30. package/dist/backend/c/types.js.map +1 -0
  31. package/dist/backend/c/types.test.js +25 -0
  32. package/dist/backend/c/types.test.js.map +1 -0
  33. package/dist/backend/{emission/emit-walkers.d.ts → c/walkers.d.ts} +19 -41
  34. package/dist/backend/{emission/emit-walkers.js → c/walkers.js} +242 -304
  35. package/dist/backend/c/walkers.js.map +1 -0
  36. package/dist/backend/external-c.d.ts +33 -0
  37. package/dist/backend/external-c.js +51 -0
  38. package/dist/backend/external-c.js.map +1 -0
  39. package/dist/backend/ffi-callbacks.d.ts +1 -1
  40. package/dist/backend/ffi-callbacks.js +4 -3
  41. package/dist/backend/ffi-callbacks.js.map +1 -1
  42. package/dist/backend/{library-identity.d.ts → library-identity-markers.d.ts} +0 -4
  43. package/dist/backend/{library-identity.js → library-identity-markers.js} +10 -9
  44. package/dist/backend/library-identity-markers.js.map +1 -0
  45. package/dist/backend/link-plan.d.ts +37 -0
  46. package/dist/backend/link-plan.js +26 -0
  47. package/dist/backend/link-plan.js.map +1 -0
  48. package/dist/backend/linker.d.ts +22 -0
  49. package/dist/backend/linker.js +236 -0
  50. package/dist/backend/linker.js.map +1 -0
  51. package/dist/backend/llvm/blocks.d.ts +4 -0
  52. package/dist/backend/llvm/blocks.js +29 -0
  53. package/dist/backend/llvm/blocks.js.map +1 -1
  54. package/dist/backend/llvm/classes.d.ts +2 -19
  55. package/dist/backend/llvm/classes.js +20 -52
  56. package/dist/backend/llvm/classes.js.map +1 -1
  57. package/dist/backend/llvm/common.d.ts +4 -0
  58. package/dist/backend/llvm/common.js +27 -0
  59. package/dist/backend/llvm/common.js.map +1 -0
  60. package/dist/backend/llvm/dyn.d.ts +3 -8
  61. package/dist/backend/llvm/dyn.js +159 -224
  62. package/dist/backend/llvm/dyn.js.map +1 -1
  63. package/dist/backend/llvm/emitter.d.ts +4 -1
  64. package/dist/backend/llvm/emitter.js +548 -9988
  65. package/dist/backend/llvm/emitter.js.map +1 -1
  66. package/dist/backend/llvm/expr-async.d.ts +4 -0
  67. package/dist/backend/llvm/expr-async.js +726 -0
  68. package/dist/backend/llvm/expr-async.js.map +1 -0
  69. package/dist/backend/llvm/expr-bytes.d.ts +13 -0
  70. package/dist/backend/llvm/expr-bytes.js +456 -0
  71. package/dist/backend/llvm/expr-bytes.js.map +1 -0
  72. package/dist/backend/llvm/expr-callbacks.d.ts +22 -0
  73. package/dist/backend/llvm/expr-callbacks.js +520 -0
  74. package/dist/backend/llvm/expr-callbacks.js.map +1 -0
  75. package/dist/backend/llvm/expr-calls.d.ts +2 -0
  76. package/dist/backend/llvm/expr-calls.js +618 -0
  77. package/dist/backend/llvm/expr-calls.js.map +1 -0
  78. package/dist/backend/llvm/expr-containers.d.ts +25 -0
  79. package/dist/backend/llvm/expr-containers.js +637 -0
  80. package/dist/backend/llvm/expr-containers.js.map +1 -0
  81. package/dist/backend/llvm/expr-context.d.ts +255 -0
  82. package/dist/backend/llvm/expr-context.js +2 -0
  83. package/dist/backend/llvm/expr-context.js.map +1 -0
  84. package/dist/backend/llvm/expr-control.d.ts +2 -0
  85. package/dist/backend/llvm/expr-control.js +473 -0
  86. package/dist/backend/llvm/expr-control.js.map +1 -0
  87. package/dist/backend/llvm/expr-dispatch.d.ts +4 -0
  88. package/dist/backend/llvm/expr-dispatch.js +153 -0
  89. package/dist/backend/llvm/expr-dispatch.js.map +1 -0
  90. package/dist/backend/llvm/expr-dynamic.d.ts +2 -0
  91. package/dist/backend/llvm/expr-dynamic.js +810 -0
  92. package/dist/backend/llvm/expr-dynamic.js.map +1 -0
  93. package/dist/backend/llvm/expr-island.d.ts +15 -0
  94. package/dist/backend/llvm/expr-island.js +690 -0
  95. package/dist/backend/llvm/expr-island.js.map +1 -0
  96. package/dist/backend/llvm/expr-primitives.d.ts +6 -0
  97. package/dist/backend/llvm/expr-primitives.js +642 -0
  98. package/dist/backend/llvm/expr-primitives.js.map +1 -0
  99. package/dist/backend/llvm/expr-records.d.ts +9 -0
  100. package/dist/backend/llvm/expr-records.js +299 -0
  101. package/dist/backend/llvm/expr-records.js.map +1 -0
  102. package/dist/backend/llvm/expr-stream-bridges.d.ts +13 -0
  103. package/dist/backend/llvm/expr-stream-bridges.js +420 -0
  104. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -0
  105. package/dist/backend/llvm/expr-stream-callbacks.d.ts +12 -0
  106. package/dist/backend/llvm/expr-stream-callbacks.js +360 -0
  107. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -0
  108. package/dist/backend/llvm/lib-dispatch.d.ts +5 -0
  109. package/dist/backend/llvm/lib-dispatch.js +267 -0
  110. package/dist/backend/llvm/lib-dispatch.js.map +1 -0
  111. package/dist/backend/llvm/lib-filesystem.d.ts +6 -0
  112. package/dist/backend/llvm/lib-filesystem.js +594 -0
  113. package/dist/backend/llvm/lib-filesystem.js.map +1 -0
  114. package/dist/backend/llvm/lib-network.d.ts +2 -0
  115. package/dist/backend/llvm/lib-network.js +429 -0
  116. package/dist/backend/llvm/lib-network.js.map +1 -0
  117. package/dist/backend/llvm/lib-process.d.ts +5 -0
  118. package/dist/backend/llvm/lib-process.js +585 -0
  119. package/dist/backend/llvm/lib-process.js.map +1 -0
  120. package/dist/backend/llvm/lib-shared.d.ts +6 -0
  121. package/dist/backend/llvm/lib-shared.js +687 -0
  122. package/dist/backend/llvm/lib-shared.js.map +1 -0
  123. package/dist/backend/llvm/lib-stream.d.ts +2 -0
  124. package/dist/backend/llvm/lib-stream.js +470 -0
  125. package/dist/backend/llvm/lib-stream.js.map +1 -0
  126. package/dist/backend/llvm/shapes.d.ts +12 -2
  127. package/dist/backend/llvm/shapes.js +66 -307
  128. package/dist/backend/llvm/shapes.js.map +1 -1
  129. package/dist/backend/llvm/shapes.test.js +52 -0
  130. package/dist/backend/llvm/shapes.test.js.map +1 -0
  131. package/dist/backend/llvm/unsupported.d.ts +1 -1
  132. package/dist/backend/llvm/walkers.d.ts +2 -3
  133. package/dist/backend/llvm/walkers.js +195 -222
  134. package/dist/backend/llvm/walkers.js.map +1 -1
  135. package/dist/backend/native-codegen.d.ts +45 -0
  136. package/dist/backend/native-codegen.js +275 -0
  137. package/dist/backend/native-codegen.js.map +1 -0
  138. package/dist/backend/native-codegen.test.js +226 -0
  139. package/dist/backend/native-codegen.test.js.map +1 -0
  140. package/dist/backend/native-link-info.d.ts +96 -0
  141. package/dist/backend/native-link-info.js +243 -0
  142. package/dist/backend/native-link-info.js.map +1 -0
  143. package/dist/backend/native-link-info.test.d.ts +1 -0
  144. package/dist/backend/native-link-info.test.js +134 -0
  145. package/dist/backend/native-link-info.test.js.map +1 -0
  146. package/dist/backend/{cc.d.ts → native-toolchain.d.ts} +54 -34
  147. package/dist/backend/{cc.js → native-toolchain.js} +231 -810
  148. package/dist/backend/native-toolchain.js.map +1 -0
  149. package/dist/backend/native-toolchain.test.d.ts +1 -0
  150. package/dist/backend/{cc-cache.test.js → native-toolchain.test.js} +219 -7
  151. package/dist/backend/native-toolchain.test.js.map +1 -0
  152. package/dist/backend/object-localize.js +1 -1
  153. package/dist/backend/runtime-abi.d.ts +10 -0
  154. package/dist/backend/runtime-abi.js +11 -0
  155. package/dist/backend/runtime-abi.js.map +1 -0
  156. package/dist/backend/runtime-pack-targets.test.d.ts +1 -0
  157. package/dist/backend/runtime-pack-targets.test.js +54 -0
  158. package/dist/backend/runtime-pack-targets.test.js.map +1 -0
  159. package/dist/backend/runtime-pack.d.ts +112 -0
  160. package/dist/backend/runtime-pack.js +305 -0
  161. package/dist/backend/runtime-pack.js.map +1 -0
  162. package/dist/backend/runtime-pack.test.d.ts +1 -0
  163. package/dist/backend/runtime-pack.test.js +473 -0
  164. package/dist/backend/runtime-pack.test.js.map +1 -0
  165. package/dist/backend/targets.d.ts +76 -0
  166. package/dist/backend/targets.js +262 -0
  167. package/dist/backend/targets.js.map +1 -0
  168. package/dist/backend/targets.test.d.ts +1 -0
  169. package/dist/backend/targets.test.js +41 -0
  170. package/dist/backend/targets.test.js.map +1 -0
  171. package/dist/backend/vendor-archives.d.ts +41 -0
  172. package/dist/backend/vendor-archives.js +462 -0
  173. package/dist/backend/vendor-archives.js.map +1 -0
  174. package/dist/compat/fetch-profile.d.ts +0 -1
  175. package/dist/compat/fetch-profile.js +0 -1
  176. package/dist/compat/fetch-profile.js.map +1 -1
  177. package/dist/coverage/report.js +3 -3
  178. package/dist/coverage/report.js.map +1 -1
  179. package/dist/coverage/surface-manifest.js +35 -33
  180. package/dist/coverage/surface-manifest.js.map +1 -1
  181. package/dist/diagnostics/diagnostic.d.ts +11 -12
  182. package/dist/diagnostics/diagnostic.js +19 -17
  183. package/dist/diagnostics/diagnostic.js.map +1 -1
  184. package/dist/diagnostics/render.d.ts +1 -1
  185. package/dist/diagnostics/render.js +1 -1
  186. package/dist/diagnostics/render.js.map +1 -1
  187. package/dist/errors.d.ts +5 -0
  188. package/dist/errors.js +9 -0
  189. package/dist/errors.js.map +1 -0
  190. package/dist/executable/{early-cache.d.ts → executable-cache.d.ts} +2 -2
  191. package/dist/executable/{early-cache.js → executable-cache.js} +36 -98
  192. package/dist/executable/executable-cache.js.map +1 -0
  193. package/dist/executable/executable-cache.test.d.ts +1 -0
  194. package/dist/executable/{early-cache.test.js → executable-cache.test.js} +3 -3
  195. package/dist/executable/executable-cache.test.js.map +1 -0
  196. package/dist/ffi/{profile.js → ffi-manifest.js} +1 -1
  197. package/dist/ffi/ffi-manifest.js.map +1 -0
  198. package/dist/frontend/builtin-modules.d.ts +21 -0
  199. package/dist/frontend/builtin-modules.js +82 -0
  200. package/dist/frontend/builtin-modules.js.map +1 -0
  201. package/dist/frontend/cjs-lexer.d.ts +7 -0
  202. package/dist/frontend/cjs-lexer.js +15 -17
  203. package/dist/frontend/cjs-lexer.js.map +1 -1
  204. package/dist/frontend/dts-paths.d.ts +26 -0
  205. package/dist/frontend/dts-paths.js +41 -0
  206. package/dist/frontend/dts-paths.js.map +1 -0
  207. package/dist/frontend/input-tracker.d.ts +0 -2
  208. package/dist/frontend/input-tracker.js +1 -4
  209. package/dist/frontend/input-tracker.js.map +1 -1
  210. package/dist/frontend/lib-contract.d.ts +1 -5
  211. package/dist/frontend/lib-contract.js +1 -1
  212. package/dist/frontend/lib-contract.js.map +1 -1
  213. package/dist/frontend/lib-exports.d.ts +1 -1
  214. package/dist/frontend/lowering/array-values.d.ts +8 -0
  215. package/dist/frontend/lowering/array-values.js +60 -0
  216. package/dist/frontend/lowering/array-values.js.map +1 -0
  217. package/dist/frontend/lowering/call-position.d.ts +4 -0
  218. package/dist/frontend/lowering/call-position.js +7 -0
  219. package/dist/frontend/lowering/call-position.js.map +1 -0
  220. package/dist/frontend/lowering/callback-arg.d.ts +20 -0
  221. package/dist/frontend/lowering/callback-arg.js +44 -0
  222. package/dist/frontend/lowering/callback-arg.js.map +1 -0
  223. package/dist/frontend/lowering/lib-boundary.d.ts +1 -1
  224. package/dist/frontend/lowering/lib-boundary.js +34 -34
  225. package/dist/frontend/lowering/lib-boundary.js.map +1 -1
  226. package/dist/frontend/lowering/lower-array-sort.d.ts +22 -0
  227. package/dist/frontend/lowering/lower-array-sort.js +619 -0
  228. package/dist/frontend/lowering/lower-array-sort.js.map +1 -0
  229. package/dist/frontend/lowering/lower-assert.d.ts +3 -3
  230. package/dist/frontend/lowering/lower-assert.js +214 -241
  231. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  232. package/dist/frontend/lowering/lower-builtins.d.ts +74 -146
  233. package/dist/frontend/lowering/lower-builtins.js +1285 -1233
  234. package/dist/frontend/lowering/lower-builtins.js.map +1 -1
  235. package/dist/frontend/lowering/lower-calls.d.ts +59 -192
  236. package/dist/frontend/lowering/lower-calls.js +1644 -1506
  237. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  238. package/dist/frontend/lowering/lower-classes.d.ts +62 -125
  239. package/dist/frontend/lowering/lower-classes.js +832 -866
  240. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  241. package/dist/frontend/lowering/lower-comptime.d.ts +5 -12
  242. package/dist/frontend/lowering/lower-comptime.js +32 -31
  243. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  244. package/dist/frontend/lowering/lower-containers.d.ts +35 -135
  245. package/dist/frontend/lowering/lower-containers.js +1984 -2227
  246. package/dist/frontend/lowering/lower-containers.js.map +1 -1
  247. package/dist/frontend/lowering/lower-dgram.d.ts +3 -7
  248. package/dist/frontend/lowering/lower-dgram.js +97 -111
  249. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  250. package/dist/frontend/lowering/lower-enums.d.ts +4 -4
  251. package/dist/frontend/lowering/lower-enums.js +30 -30
  252. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  253. package/dist/frontend/lowering/{lower-emitter.d.ts → lower-event-emitter.d.ts} +7 -18
  254. package/dist/frontend/lowering/{lower-emitter.js → lower-event-emitter.js} +172 -174
  255. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -0
  256. package/dist/frontend/lowering/lower-expando.d.ts +5 -5
  257. package/dist/frontend/lowering/lower-expando.js +40 -40
  258. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  259. package/dist/frontend/lowering/lower-exprs.d.ts +60 -264
  260. package/dist/frontend/lowering/lower-exprs.js +2361 -1765
  261. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  262. package/dist/frontend/lowering/lower-generators.d.ts +6 -6
  263. package/dist/frontend/lowering/lower-generators.js +73 -72
  264. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  265. package/dist/frontend/lowering/lower-inspect.d.ts +5 -17
  266. package/dist/frontend/lowering/lower-inspect.js +273 -261
  267. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  268. package/dist/frontend/lowering/lower-island.d.ts +39 -49
  269. package/dist/frontend/lowering/lower-island.js +447 -513
  270. package/dist/frontend/lowering/lower-island.js.map +1 -1
  271. package/dist/frontend/lowering/lower-mixins.d.ts +7 -10
  272. package/dist/frontend/lowering/lower-mixins.js +85 -85
  273. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  274. package/dist/frontend/lowering/lower-modules.d.ts +12 -18
  275. package/dist/frontend/lowering/lower-modules.js +284 -283
  276. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  277. package/dist/frontend/lowering/lower-namespaces.d.ts +23 -49
  278. package/dist/frontend/lowering/lower-namespaces.js +123 -115
  279. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  280. package/dist/frontend/lowering/lower-server.d.ts +18 -25
  281. package/dist/frontend/lowering/lower-server.js +909 -899
  282. package/dist/frontend/lowering/lower-server.js.map +1 -1
  283. package/dist/frontend/lowering/lower-stmts.d.ts +30 -149
  284. package/dist/frontend/lowering/lower-stmts.js +1463 -1285
  285. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  286. package/dist/frontend/lowering/lower-stream.d.ts +12 -12
  287. package/dist/frontend/lowering/lower-stream.js +300 -301
  288. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  289. package/dist/frontend/lowering/lower-test.d.ts +5 -5
  290. package/dist/frontend/lowering/lower-test.js +82 -82
  291. package/dist/frontend/lowering/lower-test.js.map +1 -1
  292. package/dist/frontend/lowering/lowerer.d.ts +134 -22
  293. package/dist/frontend/lowering/lowerer.js +1277 -126
  294. package/dist/frontend/lowering/lowerer.js.map +1 -1
  295. package/dist/frontend/lowering/pairs-snapshot.d.ts +11 -0
  296. package/dist/frontend/lowering/pairs-snapshot.js +85 -0
  297. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -0
  298. package/dist/frontend/lowering/static-this.d.ts +6 -0
  299. package/dist/frontend/lowering/static-this.js +24 -0
  300. package/dist/frontend/lowering/static-this.js.map +1 -0
  301. package/dist/frontend/lowering/surfaces.d.ts +24 -35
  302. package/dist/frontend/lowering/surfaces.js +78 -66
  303. package/dist/frontend/lowering/surfaces.js.map +1 -1
  304. package/dist/frontend/npm-static-rewrite.js +6 -28
  305. package/dist/frontend/npm-static-rewrite.js.map +1 -1
  306. package/dist/frontend/npm-static.d.ts +0 -10
  307. package/dist/frontend/npm-static.js +4 -7
  308. package/dist/frontend/npm-static.js.map +1 -1
  309. package/dist/frontend/npm.d.ts +0 -24
  310. package/dist/frontend/npm.js +11 -85
  311. package/dist/frontend/npm.js.map +1 -1
  312. package/dist/frontend/program.d.ts +3 -1
  313. package/dist/frontend/program.js +9 -4
  314. package/dist/frontend/program.js.map +1 -1
  315. package/dist/frontend/provenance-registry.d.ts +0 -2
  316. package/dist/frontend/provenance-registry.js +0 -10
  317. package/dist/frontend/provenance-registry.js.map +1 -1
  318. package/dist/frontend/provenance.js +4 -7
  319. package/dist/frontend/provenance.js.map +1 -1
  320. package/dist/frontend/resolve.d.ts +7 -2
  321. package/dist/frontend/resolve.js +12 -17
  322. package/dist/frontend/resolve.js.map +1 -1
  323. package/dist/frontend/resolve.test.d.ts +1 -0
  324. package/dist/frontend/resolve.test.js +29 -0
  325. package/dist/frontend/resolve.test.js.map +1 -0
  326. package/dist/frontend/ts7/adapter.d.ts +2 -2
  327. package/dist/frontend/ts7/adapter.js +1 -1
  328. package/dist/frontend/ts7/adapter.js.map +1 -1
  329. package/dist/frontend/ts7/checker.js +2 -36
  330. package/dist/frontend/ts7/checker.js.map +1 -1
  331. package/dist/frontend/ts7/enums.js +2 -1
  332. package/dist/frontend/ts7/enums.js.map +1 -1
  333. package/dist/frontend/ts7/{program.js → program-adapter.js} +7 -6
  334. package/dist/frontend/ts7/program-adapter.js.map +1 -0
  335. package/dist/frontend/ts7/world-check.d.ts +1 -3
  336. package/dist/frontend/ts7/world-check.js +3 -1
  337. package/dist/frontend/ts7/world-check.js.map +1 -1
  338. package/dist/frontend/tsc-codes.d.ts +8 -0
  339. package/dist/frontend/tsc-codes.js +109 -0
  340. package/dist/frontend/tsc-codes.js.map +1 -0
  341. package/dist/frontend/{types.d.ts → type-mapper.d.ts} +2 -25
  342. package/dist/frontend/{types.js → type-mapper.js} +12 -11
  343. package/dist/frontend/type-mapper.js.map +1 -0
  344. package/dist/frontend/workspace-registry.d.ts +26 -0
  345. package/dist/frontend/workspace-registry.js +71 -0
  346. package/dist/frontend/workspace-registry.js.map +1 -0
  347. package/dist/index.d.ts +113 -31
  348. package/dist/index.js +536 -128
  349. package/dist/index.js.map +1 -1
  350. package/dist/ir/analysis.d.ts +37 -0
  351. package/dist/ir/analysis.js +118 -0
  352. package/dist/ir/analysis.js.map +1 -0
  353. package/dist/ir/analysis.test.d.ts +1 -0
  354. package/dist/ir/analysis.test.js +21 -0
  355. package/dist/ir/analysis.test.js.map +1 -0
  356. package/dist/ir/build.d.ts +9 -0
  357. package/dist/ir/build.js +33 -0
  358. package/dist/ir/build.js.map +1 -0
  359. package/dist/ir/integer-loops.d.ts +1 -1
  360. package/dist/ir/{nodes.d.ts → ir.d.ts} +119 -37
  361. package/dist/ir/{nodes.js → ir.js} +170 -166
  362. package/dist/ir/ir.js.map +1 -0
  363. package/dist/ir/ir.test.d.ts +1 -0
  364. package/dist/ir/ir.test.js +17 -0
  365. package/dist/ir/ir.test.js.map +1 -0
  366. package/dist/ir/serialize.d.ts +2 -2
  367. package/dist/ir/serialize.js +3 -2
  368. package/dist/ir/serialize.js.map +1 -1
  369. package/dist/ir/validate.d.ts +1 -1
  370. package/dist/ir/validate.js +93 -41
  371. package/dist/ir/validate.js.map +1 -1
  372. package/dist/library/cache-primitives.d.ts +24 -0
  373. package/dist/library/cache-primitives.js +83 -0
  374. package/dist/library/cache-primitives.js.map +1 -0
  375. package/dist/library/cache-reset.test.d.ts +1 -0
  376. package/dist/library/cache-reset.test.js +47 -0
  377. package/dist/library/cache-reset.test.js.map +1 -0
  378. package/dist/library/{implementation-identity.js → compiler-self-identity.js} +1 -1
  379. package/dist/library/compiler-self-identity.js.map +1 -0
  380. package/dist/library/fence-eval.d.ts +3 -1
  381. package/dist/library/fence-eval.js +8 -2
  382. package/dist/library/fence-eval.js.map +1 -1
  383. package/dist/library/int-infer.d.ts +1 -36
  384. package/dist/library/int-infer.js +29 -18
  385. package/dist/library/int-infer.js.map +1 -1
  386. package/dist/library/int-infer.test.js +4 -4
  387. package/dist/library/{early-cache.d.ts → library-cache.d.ts} +1 -1
  388. package/dist/library/{early-cache.js → library-cache.js} +34 -89
  389. package/dist/library/library-cache.js.map +1 -0
  390. package/dist/library/library-cache.test.d.ts +1 -0
  391. package/dist/library/{early-cache.test.js → library-cache.test.js} +7 -7
  392. package/dist/library/library-cache.test.js.map +1 -0
  393. package/dist/library/{profile.d.ts → library-profile.d.ts} +4 -7
  394. package/dist/library/{profile.js → library-profile.js} +18 -11
  395. package/dist/library/library-profile.js.map +1 -0
  396. package/dist/library/semantic-source.js +2 -1
  397. package/dist/library/semantic-source.js.map +1 -1
  398. package/dist/library/sidecar.d.ts +5 -2
  399. package/dist/library/sidecar.js +11 -5
  400. package/dist/library/sidecar.js.map +1 -1
  401. package/dist/startup-cache.d.ts +11 -3
  402. package/dist/startup-cache.js +17 -2
  403. package/dist/startup-cache.js.map +1 -1
  404. package/package.json +19 -2
  405. package/surface-manifest.json +5 -5
  406. package/dist/backend/cc-cache.test.js.map +0 -1
  407. package/dist/backend/cc.js.map +0 -1
  408. package/dist/backend/emission/emit-async.js.map +0 -1
  409. package/dist/backend/emission/emit-exprs.d.ts +0 -13
  410. package/dist/backend/emission/emit-exprs.js +0 -7407
  411. package/dist/backend/emission/emit-exprs.js.map +0 -1
  412. package/dist/backend/emission/emit-island.js.map +0 -1
  413. package/dist/backend/emission/emit-shapes.js.map +0 -1
  414. package/dist/backend/emission/emit-stmts.js.map +0 -1
  415. package/dist/backend/emission/emit-types.js.map +0 -1
  416. package/dist/backend/emission/emit-walkers.js.map +0 -1
  417. package/dist/backend/emission/emitter.js.map +0 -1
  418. package/dist/backend/emission/may-throw.js.map +0 -1
  419. package/dist/backend/library-identity.js.map +0 -1
  420. package/dist/executable/early-cache.js.map +0 -1
  421. package/dist/executable/early-cache.test.js.map +0 -1
  422. package/dist/ffi/profile.js.map +0 -1
  423. package/dist/frontend/lowering/lower-emitter.js.map +0 -1
  424. package/dist/frontend/shared.d.ts +0 -82
  425. package/dist/frontend/shared.js +0 -308
  426. package/dist/frontend/shared.js.map +0 -1
  427. package/dist/frontend/ts7/program.js.map +0 -1
  428. package/dist/frontend/types.js.map +0 -1
  429. package/dist/ir/nodes.js.map +0 -1
  430. package/dist/library/early-cache.js.map +0 -1
  431. package/dist/library/early-cache.test.js.map +0 -1
  432. package/dist/library/implementation-identity.js.map +0 -1
  433. package/dist/library/profile.js.map +0 -1
  434. /package/dist/backend/{cc-cache.test.d.ts → c/types.test.d.ts} +0 -0
  435. /package/dist/{executable/early-cache.test.d.ts → backend/llvm/shapes.test.d.ts} +0 -0
  436. /package/dist/{library/early-cache.test.d.ts → backend/native-codegen.test.d.ts} +0 -0
  437. /package/dist/ffi/{profile.d.ts → ffi-manifest.d.ts} +0 -0
  438. /package/dist/frontend/ts7/{program.d.ts → program-adapter.d.ts} +0 -0
  439. /package/dist/library/{implementation-identity.d.ts → compiler-self-identity.d.ts} +0 -0
@@ -5,7 +5,7 @@ import { chmod, cp, mkdir, mkdtemp, readdir, readFile, rm, stat, symlink, utimes
5
5
  import { tmpdir } from "node:os";
6
6
  import { delimiter, join } from "node:path";
7
7
  import { afterAll, afterEach, expect, test as vitestTest } from "vitest";
8
- import { cacheTargetIdentity, ccVersionOnce, compileC, compileLibArchive, executableNativeEnvironmentFingerprint, implicitDependencyProbeIncludes, parseLinkTraceFiles, resolveBuildCacheRoot, runtimeFingerprint, runtimeSrcDir, stageRuntimeObjects, supportedNativeCacheWarmProfiles, toolchainEnvironmentCachePolicy, toolchainEnvironmentFingerprint, vendorCacheBuildIdentity, vendorCacheTargetFlavor, warmNativeCaches, } from "./cc.js";
8
+ import { cacheTargetIdentity, ccVersion, compileC, compileLibArchive, executableSectionEliminationFlags, executableNativeEnvironmentFingerprint, implicitDependencyProbeIncludes, parseLinkTraceFiles, resolveBuildCacheRoot, runtimeFingerprint, runtimeSrcDir, stageRuntimeObjects, supportedNativeCacheWarmProfiles, toolchainEnvironmentCachePolicy, toolchainEnvironmentFingerprint, vendorCacheBuildIdentity, vendorCacheTargetFlavor, warmNativeCaches, } from "./native-toolchain.js";
9
9
  import { splitLlvmProgram } from "./llvm/split.js";
10
10
  const scratch = [];
11
11
  const TEST_CACHE_IDENTITY = "cc-cache-tests-v1";
@@ -96,6 +96,21 @@ test("the production cache root follows overrides, platform defaults, and the ha
96
96
  expect(resolveBuildCacheRoot({}, "darwin", "/Users/tester")).toBe("/Users/tester/Library/Caches/scriptc/build");
97
97
  expect(resolveBuildCacheRoot({ LOCALAPPDATA: "/Users/tester/AppData/Local" }, "win32", "/Users/tester")).toBe("/Users/tester/AppData/Local/scriptc/cache/build");
98
98
  });
99
+ test("executable section elimination flags are target-aware and never enter library recipes", () => {
100
+ expect(executableSectionEliminationFlags("darwin")).toEqual({
101
+ compile: [],
102
+ link: ["-Wl,-dead_strip"],
103
+ });
104
+ expect(executableSectionEliminationFlags("linux")).toEqual({
105
+ compile: ["-ffunction-sections", "-fdata-sections"],
106
+ link: ["-Wl,--gc-sections"],
107
+ });
108
+ expect(executableSectionEliminationFlags("win32")).toEqual({
109
+ compile: ["-ffunction-sections", "-fdata-sections"],
110
+ link: ["-Wl,--gc-sections"],
111
+ });
112
+ expect(executableSectionEliminationFlags("wasi")).toEqual({ compile: [], link: [] });
113
+ });
99
114
  test.skipIf(process.platform === "win32")("the early executable identity follows a compiler selected behind a stable driver", async () => {
100
115
  const dir = await mkdtemp(join(tmpdir(), "scriptc-effective-compiler-"));
101
116
  scratch.push(dir);
@@ -134,6 +149,95 @@ test("native cache identities separate host architectures while cross targets re
134
149
  expect(vendorCacheTargetFlavor({ target: null }, "darwin", "x64")).toBe("native-darwin-x64");
135
150
  expect(vendorCacheTargetFlavor({ target: "x86_64-linux-gnu.2.36" }, "darwin", "arm64")).toBe("x86_64-linux-gnu.2.36");
136
151
  });
152
+ test.skipIf(process.platform === "win32" || zigExecutable === undefined ||
153
+ clangExecutable === undefined || arExecutable === undefined)("targetless Zig vendor caches are separate from host-clang and reusable", async () => {
154
+ const dir = await mkdtemp(join(tmpdir(), "scriptc-zig-vendor-cache-"));
155
+ scratch.push(dir);
156
+ const cacheRoot = join(dir, "cache");
157
+ const vendorRoot = join(dir, "vendor-cache");
158
+ const cPath = join(dir, "program.c");
159
+ const oldCacheDir = process.env["SCRIPTC_CACHE_DIR"];
160
+ const oldNoCache = process.env["SCRIPTC_NO_CACHE"];
161
+ const oldVendorCacheDir = process.env["SCRIPTC_TEST_VENDOR_CACHE_DIR"];
162
+ const oldCc = process.env["SCRIPTC_CC"];
163
+ const oldTarget = process.env["SCRIPTC_TARGET"];
164
+ try {
165
+ await writeFile(cPath, "int main(void) { return 0; }\n");
166
+ process.env["SCRIPTC_CACHE_DIR"] = cacheRoot;
167
+ process.env["SCRIPTC_TEST_VENDOR_CACHE_DIR"] = vendorRoot;
168
+ delete process.env["SCRIPTC_NO_CACHE"];
169
+ delete process.env["SCRIPTC_TARGET"];
170
+ process.env["SCRIPTC_CC"] = "clang";
171
+ await compileC({
172
+ cPath,
173
+ outPath: join(dir, "host"),
174
+ cacheIdentity: TEST_CACHE_IDENTITY,
175
+ dynamic: true,
176
+ net: true,
177
+ http: true,
178
+ tls: true,
179
+ zlib: true,
180
+ // Keep the complete executable tier out of this test: the second Zig
181
+ // invocation must walk the vendor cache and prove its artifacts are
182
+ // reusable independently of the output path.
183
+ systemLibraries: ["m"],
184
+ });
185
+ const hostEngine = (await readdir(vendorRoot)).find((name) => /^3c8f3d689539-plain-/.test(name));
186
+ const hostTls = (await readdir(vendorRoot)).find((name) => name.startsWith("mbedtls-"));
187
+ expect(hostEngine).toBeDefined();
188
+ expect(hostTls).toBeDefined();
189
+ process.env["SCRIPTC_CC"] = "zigcc";
190
+ const zigOptions = {
191
+ cPath,
192
+ cacheIdentity: TEST_CACHE_IDENTITY,
193
+ dynamic: true,
194
+ net: true,
195
+ http: true,
196
+ tls: true,
197
+ zlib: true,
198
+ systemLibraries: ["m"],
199
+ };
200
+ await compileC({ ...zigOptions, outPath: join(dir, "zig-first") });
201
+ let vendorEntries = await readdir(vendorRoot);
202
+ expect(vendorEntries.filter((name) => /^3c8f3d689539-plain-/.test(name))).toHaveLength(2);
203
+ expect(vendorEntries.filter((name) => name.startsWith("mbedtls-")).length).toBe(2);
204
+ // Host clang uses system zlib, so only the Zig build materializes a zlib
205
+ // object family in the shared vendor root.
206
+ expect(vendorEntries.filter((name) => name.startsWith("zlib-")).length).toBe(1);
207
+ // Invalidate the host archive. A targetless Zig rebuild must continue to
208
+ // use the separately keyed Zig archive instead of repairing or consuming
209
+ // the host-clang entry.
210
+ await writeFile(join(vendorRoot, hostEngine, "libqjs.a"), "host archive intentionally invalid\n");
211
+ await writeFile(join(vendorRoot, hostTls, "libmbedtls.a"), "host archive intentionally invalid\n");
212
+ await compileC({ ...zigOptions, outPath: join(dir, "zig-second") });
213
+ vendorEntries = await readdir(vendorRoot);
214
+ expect(vendorEntries.filter((name) => /^3c8f3d689539-plain-/.test(name))).toHaveLength(2);
215
+ expect(await readFile(join(vendorRoot, hostEngine, "libqjs.a"), "utf8")).toBe("host archive intentionally invalid\n");
216
+ expect(await readFile(join(vendorRoot, hostTls, "libmbedtls.a"), "utf8")).toBe("host archive intentionally invalid\n");
217
+ }
218
+ finally {
219
+ if (oldCacheDir === undefined)
220
+ delete process.env["SCRIPTC_CACHE_DIR"];
221
+ else
222
+ process.env["SCRIPTC_CACHE_DIR"] = oldCacheDir;
223
+ if (oldNoCache === undefined)
224
+ delete process.env["SCRIPTC_NO_CACHE"];
225
+ else
226
+ process.env["SCRIPTC_NO_CACHE"] = oldNoCache;
227
+ if (oldVendorCacheDir === undefined)
228
+ delete process.env["SCRIPTC_TEST_VENDOR_CACHE_DIR"];
229
+ else
230
+ process.env["SCRIPTC_TEST_VENDOR_CACHE_DIR"] = oldVendorCacheDir;
231
+ if (oldCc === undefined)
232
+ delete process.env["SCRIPTC_CC"];
233
+ else
234
+ process.env["SCRIPTC_CC"] = oldCc;
235
+ if (oldTarget === undefined)
236
+ delete process.env["SCRIPTC_TARGET"];
237
+ else
238
+ process.env["SCRIPTC_TARGET"] = oldTarget;
239
+ }
240
+ }, 600_000);
137
241
  test("Zig COFF dry-run parsing retains every linker input on its single command line", async () => {
138
242
  const dir = await mkdtemp(join(tmpdir(), "scriptc-link-trace-"));
139
243
  scratch.push(dir);
@@ -218,7 +322,7 @@ printf 'fake zig cc version probe\n'
218
322
  // Zig 0.16 creates cwd/a.o for `zig cc --version`. Model that side
219
323
  // effect directly so this regression does not depend on Zig being
220
324
  // installed in every generic test shard.
221
- await ccVersionOnce([fakeCompiler, "cc"], `version-probe-${dir}`);
325
+ await ccVersion([fakeCompiler, "cc"], `version-probe-${dir}`);
222
326
  expect(await readdir(probeTmp)).toEqual([]);
223
327
  }
224
328
  finally {
@@ -349,6 +453,69 @@ test("implicit dependency seeds include separately compiled vendor system header
349
453
  // to the native object/cache identity.
350
454
  expect(includes).toContain("<stdatomic.h>");
351
455
  });
456
+ test.skipIf(process.platform === "win32" || clangExecutable === undefined || arExecutable === undefined ||
457
+ ldExecutable === undefined)("public native builds re-probe ccache availability after PATH changes", async () => {
458
+ const dir = await mkdtemp(join(tmpdir(), "scriptc-ccache-reset-"));
459
+ scratch.push(dir);
460
+ const binDir = join(dir, "bin");
461
+ const cacheRoot = join(dir, "cache");
462
+ const cPath = join(dir, "program.c");
463
+ const ccacheLog = join(dir, "ccache.log");
464
+ const oldCacheDir = process.env["SCRIPTC_CACHE_DIR"];
465
+ const oldNoCache = process.env["SCRIPTC_NO_CACHE"];
466
+ const oldPath = process.env["PATH"];
467
+ const oldCcacheLog = process.env["SCRIPTC_TEST_CCACHE_LOG"];
468
+ try {
469
+ await Promise.all([mkdir(binDir), mkdir(cacheRoot, { mode: 0o700 })]);
470
+ await Promise.all([
471
+ symlink(clangExecutable, join(binDir, "clang")),
472
+ symlink(arExecutable, join(binDir, "ar")),
473
+ symlink(ldExecutable, join(binDir, "ld")),
474
+ writeFile(cPath, "int main(void) { return 0; }\n"),
475
+ ]);
476
+ process.env["SCRIPTC_CACHE_DIR"] = cacheRoot;
477
+ process.env["PATH"] = binDir;
478
+ delete process.env["SCRIPTC_NO_CACHE"];
479
+ await compileC({
480
+ cPath,
481
+ outPath: join(dir, "first"),
482
+ cacheIdentity: TEST_CACHE_IDENTITY,
483
+ regex: true,
484
+ });
485
+ await writeFile(join(binDir, "ccache"), `#!/bin/sh
486
+ if [ "$1" = "--version" ]; then exit 0; fi
487
+ printf '%s\n' "$*" >> "$SCRIPTC_TEST_CCACHE_LOG"
488
+ exec "$@"
489
+ `);
490
+ await chmod(join(binDir, "ccache"), 0o755);
491
+ process.env["SCRIPTC_TEST_CCACHE_LOG"] = ccacheLog;
492
+ await compileC({
493
+ cPath,
494
+ outPath: join(dir, "second"),
495
+ cacheIdentity: TEST_CACHE_IDENTITY,
496
+ dynamic: true,
497
+ });
498
+ expect((await readFile(ccacheLog, "utf8")).trim()).not.toBe("");
499
+ }
500
+ finally {
501
+ if (oldCacheDir === undefined)
502
+ delete process.env["SCRIPTC_CACHE_DIR"];
503
+ else
504
+ process.env["SCRIPTC_CACHE_DIR"] = oldCacheDir;
505
+ if (oldNoCache === undefined)
506
+ delete process.env["SCRIPTC_NO_CACHE"];
507
+ else
508
+ process.env["SCRIPTC_NO_CACHE"] = oldNoCache;
509
+ if (oldPath === undefined)
510
+ delete process.env["PATH"];
511
+ else
512
+ process.env["PATH"] = oldPath;
513
+ if (oldCcacheLog === undefined)
514
+ delete process.env["SCRIPTC_TEST_CCACHE_LOG"];
515
+ else
516
+ process.env["SCRIPTC_TEST_CCACHE_LOG"] = oldCcacheLog;
517
+ }
518
+ });
352
519
  test.skipIf(process.platform === "win32")("opaque compiler wrappers bypass persistent caches", async () => {
353
520
  const dir = await mkdtemp(join(tmpdir(), "scriptc-cache-compiler-wrapper-"));
354
521
  scratch.push(dir);
@@ -2560,7 +2727,11 @@ done
2560
2727
  exec "$SCRIPTC_TEST_REAL_CLANG" "$@"
2561
2728
  `);
2562
2729
  await chmod(wrapper, 0o755);
2563
- await writeFile(cPath, "int main(void) { return 0; }\n");
2730
+ // Keep the injected datum reachable. With executable section GC an
2731
+ // unreferenced test-only global is rightly removed before the binary
2732
+ // assertion below can observe it.
2733
+ await writeFile(cPath, "extern int scriptc_runtime_race_marker(void);\n" +
2734
+ "int main(void) { return scriptc_runtime_race_marker(); }\n");
2564
2735
  process.env["SCRIPTC_CACHE_DIR"] = cacheRoot;
2565
2736
  process.env["SCRIPTC_TEST_RUNTIME_SRC_DIR"] = fakeRuntime;
2566
2737
  process.env["SCRIPTC_TEST_REAL_CLANG"] = realClang;
@@ -2585,7 +2756,11 @@ exec "$SCRIPTC_TEST_REAL_CLANG" "$@"
2585
2756
  throw new Error("timed out waiting for runtime compile");
2586
2757
  await new Promise((resolveWait) => setTimeout(resolveWait, 10));
2587
2758
  }
2588
- await writeFile(raceSource, `${originalRuntimeSource}\nconst char scriptc_runtime_race_marker[] = "${marker}";\n`);
2759
+ await writeFile(raceSource, `${originalRuntimeSource}\n` +
2760
+ `volatile const char scriptc_runtime_race_marker_data[] = "${marker}";\n` +
2761
+ "int scriptc_runtime_race_marker(void) {\n" +
2762
+ " return scriptc_runtime_race_marker_data[0] == '\\0';\n" +
2763
+ "}\n");
2589
2764
  await writeFile(release, "go");
2590
2765
  await firstBuild;
2591
2766
  expect((await readFile(firstOut)).includes(Buffer.from(marker))).toBe(true);
@@ -2814,6 +2989,39 @@ test("frontend-generated same-output builds no-op only while output and dependen
2814
2989
  process.umask(oldUmask);
2815
2990
  }
2816
2991
  });
2992
+ test("pre-section-GC output-local stamps cannot restore an old executable", async () => {
2993
+ const dir = await mkdtemp(join(tmpdir(), "scriptc-section-gc-local-stamp-"));
2994
+ scratch.push(dir);
2995
+ const cacheRoot = join(dir, "cache");
2996
+ const cPath = join(dir, "program.c");
2997
+ const outPath = join(dir, "program");
2998
+ const oldCacheDir = process.env["SCRIPTC_CACHE_DIR"];
2999
+ const oldNoCache = process.env["SCRIPTC_NO_CACHE"];
3000
+ try {
3001
+ process.env["SCRIPTC_CACHE_DIR"] = cacheRoot;
3002
+ delete process.env["SCRIPTC_NO_CACHE"];
3003
+ await writeFile(cPath, "int main(void) { return 0; }\n");
3004
+ await compileC({ cPath, outPath, cacheIdentity: "scriptc-generated-v1" });
3005
+ const stampPath = join(cacheRoot, "local", createHash("sha256").update(outPath).digest("hex"));
3006
+ const current = JSON.parse(await readFile(stampPath, "utf8"));
3007
+ const legacy = { ...current, key: "old-non-gc-output", version: 1 };
3008
+ await writeFile(stampPath, `${JSON.stringify(legacy)}\n`);
3009
+ const pinnedTime = new Date("2001-01-01T00:00:00.000Z");
3010
+ await utimes(outPath, pinnedTime, pinnedTime);
3011
+ await compileC({ cPath, outPath, cacheIdentity: "scriptc-generated-v1" });
3012
+ expect((await stat(outPath)).mtimeMs).toBeGreaterThan(pinnedTime.getTime());
3013
+ }
3014
+ finally {
3015
+ if (oldCacheDir === undefined)
3016
+ delete process.env["SCRIPTC_CACHE_DIR"];
3017
+ else
3018
+ process.env["SCRIPTC_CACHE_DIR"] = oldCacheDir;
3019
+ if (oldNoCache === undefined)
3020
+ delete process.env["SCRIPTC_NO_CACHE"];
3021
+ else
3022
+ process.env["SCRIPTC_NO_CACHE"] = oldNoCache;
3023
+ }
3024
+ });
2817
3025
  test("artifact-ready callbacks expose native dependencies on builds and validated hits", async () => {
2818
3026
  const dir = await mkdtemp(join(tmpdir(), "scriptc-artifact-ready-"));
2819
3027
  scratch.push(dir);
@@ -2930,7 +3138,7 @@ test("fresh processes preserve output-local dependency coverage after source edi
2930
3138
  delete childEnv["SCRIPTC_NO_CACHE"];
2931
3139
  delete childEnv["SCRIPTC_TEST_STABLE_TOOLCHAIN"];
2932
3140
  delete childEnv["SCRIPTC_TEST_TRUST_COMPILER_WRAPPER"];
2933
- await writeFile(helperPath, `import { compileC } from ${JSON.stringify(new URL("./cc.ts", import.meta.url).href)};\n` +
3141
+ await writeFile(helperPath, `import { compileC } from ${JSON.stringify(new URL("./native-toolchain.ts", import.meta.url).href)};\n` +
2934
3142
  `await compileC({ cPath: process.argv[2], outPath: process.argv[3], cacheIdentity: "scriptc-generated-v1" });\n`);
2935
3143
  const compileInFreshProcess = () => {
2936
3144
  execFileSync(process.execPath, ["--import", "tsx", helperPath, cPath, outPath], {
@@ -3805,7 +4013,11 @@ test.skipIf(process.platform === "win32" || clangExecutable === undefined || arE
3805
4013
  const probeSource = join(dir, "probe.c");
3806
4014
  const probe = join(dir, "probe");
3807
4015
  await writeFile(probeSource, "long long public_value(void);\nint main(void) { return public_value() != 7; }\n");
3808
- execFileSync(clangExecutable, [probeSource, outPath, "-lm", "-o", probe]);
4016
+ // The failed linker belongs only to the shard-merge probe. Link the
4017
+ // resulting archive with the real host tools to verify its fallback.
4018
+ execFileSync(clangExecutable, [probeSource, outPath, "-lm", "-o", probe], {
4019
+ env: { ...process.env, PATH: oldPath },
4020
+ });
3809
4021
  expect(execFileSync(probe, { encoding: "utf8" })).toBe("");
3810
4022
  // The canonical retry is valid for this invocation, but must not occupy a
3811
4023
  // key describing merged shard bytes. A repaired merge tool retries the
@@ -3895,4 +4107,4 @@ test.skipIf(process.platform === "win32" || zigExecutable === undefined)("cross-
3895
4107
  process.env["SCRIPTC_TARGET"] = oldTarget;
3896
4108
  }
3897
4109
  });
3898
- //# sourceMappingURL=cc-cache.test.js.map
4110
+ //# sourceMappingURL=native-toolchain.test.js.map