@scriptc/compiler 0.2.0 → 0.2.2

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 (284) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +84 -19
  2. package/dist/backend/cycle-analysis.js +1 -0
  3. package/dist/backend/cycle-analysis.js.map +1 -1
  4. package/dist/backend/llvm/classes.js +21 -5
  5. package/dist/backend/llvm/classes.js.map +1 -1
  6. package/dist/backend/llvm/dyn.d.ts +8 -0
  7. package/dist/backend/llvm/dyn.js +247 -108
  8. package/dist/backend/llvm/dyn.js.map +1 -1
  9. package/dist/backend/llvm/emitter.d.ts +6 -3
  10. package/dist/backend/llvm/emitter.js +99 -25
  11. package/dist/backend/llvm/emitter.js.map +1 -1
  12. package/dist/backend/llvm/emitter.test.js +9 -1
  13. package/dist/backend/llvm/emitter.test.js.map +1 -1
  14. package/dist/backend/llvm/expr-bytes.d.ts +1 -1
  15. package/dist/backend/llvm/expr-bytes.js +28 -17
  16. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  17. package/dist/backend/llvm/expr-containers.js +5 -0
  18. package/dist/backend/llvm/expr-containers.js.map +1 -1
  19. package/dist/backend/llvm/expr-control.js +1 -1
  20. package/dist/backend/llvm/expr-control.js.map +1 -1
  21. package/dist/backend/llvm/expr-dynamic.js +47 -13
  22. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  23. package/dist/backend/llvm/expr-primitives.js +11 -1
  24. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  25. package/dist/backend/llvm/expr-records.js +11 -3
  26. package/dist/backend/llvm/expr-records.js.map +1 -1
  27. package/dist/backend/llvm/expr-stream-bridges.js +187 -18
  28. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  29. package/dist/backend/llvm/expr-stream-callbacks.d.ts +2 -2
  30. package/dist/backend/llvm/expr-stream-callbacks.js +7 -57
  31. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  32. package/dist/backend/llvm/lib-dispatch.js +41 -3
  33. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  34. package/dist/backend/llvm/lib-filesystem.js +12 -9
  35. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  36. package/dist/backend/llvm/lib-process.js +23 -3
  37. package/dist/backend/llvm/lib-process.js.map +1 -1
  38. package/dist/backend/llvm/lib-shared.js +80 -3
  39. package/dist/backend/llvm/lib-shared.js.map +1 -1
  40. package/dist/backend/llvm/shapes.js +8 -2
  41. package/dist/backend/llvm/shapes.js.map +1 -1
  42. package/dist/backend/may-throw.js +4 -0
  43. package/dist/backend/may-throw.js.map +1 -1
  44. package/dist/backend/native-codegen.d.ts +1 -1
  45. package/dist/backend/native-codegen.js +4 -3
  46. package/dist/backend/native-codegen.js.map +1 -1
  47. package/dist/backend/native-codegen.test.js +11 -0
  48. package/dist/backend/native-codegen.test.js.map +1 -1
  49. package/dist/backend/native-toolchain.d.ts +3 -6
  50. package/dist/backend/native-toolchain.js +53 -23
  51. package/dist/backend/native-toolchain.js.map +1 -1
  52. package/dist/backend/native-toolchain.test.js +72 -0
  53. package/dist/backend/native-toolchain.test.js.map +1 -1
  54. package/dist/backend/runtime-abi.d.ts +2 -2
  55. package/dist/backend/runtime-abi.js +2 -2
  56. package/dist/backend/runtime-pack-native.js +4 -1
  57. package/dist/backend/runtime-pack-native.js.map +1 -1
  58. package/dist/backend/runtime-pack-targets.test.js +1 -1
  59. package/dist/backend/runtime-pack.test.js +1 -1
  60. package/dist/backend/target-diagnostics.d.ts +5 -0
  61. package/dist/backend/target-diagnostics.js +72 -1
  62. package/dist/backend/target-diagnostics.js.map +1 -1
  63. package/dist/backend/target-diagnostics.test.d.ts +1 -0
  64. package/dist/backend/target-diagnostics.test.js +68 -0
  65. package/dist/backend/target-diagnostics.test.js.map +1 -0
  66. package/dist/backend/targets.js +10 -6
  67. package/dist/backend/targets.js.map +1 -1
  68. package/dist/backend/targets.test.js +7 -0
  69. package/dist/backend/targets.test.js.map +1 -1
  70. package/dist/compat/fetch-profile.js +34 -4
  71. package/dist/compat/fetch-profile.js.map +1 -1
  72. package/dist/coverage/surface-manifest.js +5 -3
  73. package/dist/coverage/surface-manifest.js.map +1 -1
  74. package/dist/diagnostics/diagnostic.js +2 -7
  75. package/dist/diagnostics/diagnostic.js.map +1 -1
  76. package/dist/executable/executable-cache.d.ts +7 -3
  77. package/dist/executable/executable-cache.js +47 -11
  78. package/dist/executable/executable-cache.js.map +1 -1
  79. package/dist/executable/executable-cache.test.js +109 -2
  80. package/dist/executable/executable-cache.test.js.map +1 -1
  81. package/dist/executable/prepare.js +2 -1
  82. package/dist/executable/prepare.js.map +1 -1
  83. package/dist/frontend/builtin-modules.d.ts +1 -1
  84. package/dist/frontend/builtin-modules.js +1 -1
  85. package/dist/frontend/builtin-modules.js.map +1 -1
  86. package/dist/frontend/function-completion.d.ts +6 -0
  87. package/dist/frontend/function-completion.js +50 -0
  88. package/dist/frontend/function-completion.js.map +1 -0
  89. package/dist/frontend/lowering/abstract-equality.js +5 -1
  90. package/dist/frontend/lowering/abstract-equality.js.map +1 -1
  91. package/dist/frontend/lowering/checked-iterable-spread.d.ts +4 -0
  92. package/dist/frontend/lowering/checked-iterable-spread.js +30 -0
  93. package/dist/frontend/lowering/checked-iterable-spread.js.map +1 -0
  94. package/dist/frontend/lowering/checked-promise-all.d.ts +5 -0
  95. package/dist/frontend/lowering/checked-promise-all.js +31 -0
  96. package/dist/frontend/lowering/checked-promise-all.js.map +1 -0
  97. package/dist/frontend/lowering/class-callbacks.d.ts +4 -4
  98. package/dist/frontend/lowering/class-callbacks.js +29 -17
  99. package/dist/frontend/lowering/class-callbacks.js.map +1 -1
  100. package/dist/frontend/lowering/class-construction.d.ts +14 -0
  101. package/dist/frontend/lowering/class-construction.js +185 -0
  102. package/dist/frontend/lowering/class-construction.js.map +1 -0
  103. package/dist/frontend/lowering/class-descriptors.d.ts +2 -1
  104. package/dist/frontend/lowering/class-descriptors.js +58 -10
  105. package/dist/frontend/lowering/class-descriptors.js.map +1 -1
  106. package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +36 -1
  107. package/dist/frontend/lowering/class-dynamic-dispatch.js +965 -91
  108. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  109. package/dist/frontend/lowering/class-dynamic-dispatch.test.js +66 -3
  110. package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
  111. package/dist/frontend/lowering/class-instance-constructor.d.ts +1 -1
  112. package/dist/frontend/lowering/class-instance-constructor.js +15 -42
  113. package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
  114. package/dist/frontend/lowering/class-method-values.d.ts +20 -1
  115. package/dist/frontend/lowering/class-method-values.js +120 -24
  116. package/dist/frontend/lowering/class-method-values.js.map +1 -1
  117. package/dist/frontend/lowering/class-prototypes.d.ts +10 -3
  118. package/dist/frontend/lowering/class-prototypes.js +188 -21
  119. package/dist/frontend/lowering/class-prototypes.js.map +1 -1
  120. package/dist/frontend/lowering/class-runtime-statics.d.ts +8 -0
  121. package/dist/frontend/lowering/class-runtime-statics.js +84 -0
  122. package/dist/frontend/lowering/class-runtime-statics.js.map +1 -0
  123. package/dist/frontend/lowering/class-static-data.d.ts +1 -0
  124. package/dist/frontend/lowering/class-static-data.js +6 -4
  125. package/dist/frontend/lowering/class-static-data.js.map +1 -1
  126. package/dist/frontend/lowering/containers/bytes.js +66 -17
  127. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  128. package/dist/frontend/lowering/containers/string-and-regexp.js +24 -47
  129. package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
  130. package/dist/frontend/lowering/deferred-module-initializers.d.ts +13 -0
  131. package/dist/frontend/lowering/deferred-module-initializers.js +410 -0
  132. package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -0
  133. package/dist/frontend/lowering/deferred-module-initializers.test.d.ts +1 -0
  134. package/dist/frontend/lowering/deferred-module-initializers.test.js +92 -0
  135. package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -0
  136. package/dist/frontend/lowering/error-methods.d.ts +4 -1
  137. package/dist/frontend/lowering/error-methods.js +100 -1
  138. package/dist/frontend/lowering/error-methods.js.map +1 -1
  139. package/dist/frontend/lowering/expressions/native-proxy.js +3 -1
  140. package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
  141. package/dist/frontend/lowering/expressions/nullish-assignment.js +19 -11
  142. package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
  143. package/dist/frontend/lowering/expressions/object-literals.js +68 -7
  144. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  145. package/dist/frontend/lowering/expressions/optional-chains.d.ts +3 -4
  146. package/dist/frontend/lowering/expressions/optional-chains.js +72 -20
  147. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  148. package/dist/frontend/lowering/function-context.d.ts +11 -3
  149. package/dist/frontend/lowering/function-context.js +11 -5
  150. package/dist/frontend/lowering/function-context.js.map +1 -1
  151. package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +1 -0
  152. package/dist/frontend/lowering/generator-dynamic-dispatch.js +39 -1
  153. package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
  154. package/dist/frontend/lowering/lib-boundary.d.ts +2 -0
  155. package/dist/frontend/lowering/lib-boundary.js +54 -1
  156. package/dist/frontend/lowering/lib-boundary.js.map +1 -1
  157. package/dist/frontend/lowering/lower-builtin-values.d.ts +7 -1
  158. package/dist/frontend/lowering/lower-builtin-values.js +113 -3
  159. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  160. package/dist/frontend/lowering/lower-builtins.d.ts +10 -14
  161. package/dist/frontend/lowering/lower-builtins.js +443 -88
  162. package/dist/frontend/lowering/lower-builtins.js.map +1 -1
  163. package/dist/frontend/lowering/lower-calls.d.ts +8 -5
  164. package/dist/frontend/lowering/lower-calls.js +717 -142
  165. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  166. package/dist/frontend/lowering/lower-classes.d.ts +18 -13
  167. package/dist/frontend/lowering/lower-classes.js +1076 -188
  168. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  169. package/dist/frontend/lowering/lower-containers.d.ts +9 -0
  170. package/dist/frontend/lowering/lower-containers.js +172 -51
  171. package/dist/frontend/lowering/lower-containers.js.map +1 -1
  172. package/dist/frontend/lowering/lower-dgram.js +3 -2
  173. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  174. package/dist/frontend/lowering/lower-exprs.d.ts +12 -8
  175. package/dist/frontend/lowering/lower-exprs.js +802 -232
  176. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  177. package/dist/frontend/lowering/lower-generators.js +17 -2
  178. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  179. package/dist/frontend/lowering/lower-inspect.js +15 -1
  180. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  181. package/dist/frontend/lowering/lower-island.d.ts +2 -0
  182. package/dist/frontend/lowering/lower-island.js +36 -10
  183. package/dist/frontend/lowering/lower-island.js.map +1 -1
  184. package/dist/frontend/lowering/lower-island.test.d.ts +1 -0
  185. package/dist/frontend/lowering/lower-island.test.js +51 -0
  186. package/dist/frontend/lowering/lower-island.test.js.map +1 -0
  187. package/dist/frontend/lowering/lower-modules.d.ts +1 -3
  188. package/dist/frontend/lowering/lower-modules.js +380 -73
  189. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  190. package/dist/frontend/lowering/lower-modules.test.d.ts +1 -0
  191. package/dist/frontend/lowering/lower-modules.test.js +107 -0
  192. package/dist/frontend/lowering/lower-modules.test.js.map +1 -0
  193. package/dist/frontend/lowering/lower-stmts.d.ts +7 -3
  194. package/dist/frontend/lowering/lower-stmts.js +221 -47
  195. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  196. package/dist/frontend/lowering/lower-stmts.test.d.ts +1 -0
  197. package/dist/frontend/lowering/lower-stmts.test.js +77 -0
  198. package/dist/frontend/lowering/lower-stmts.test.js.map +1 -0
  199. package/dist/frontend/lowering/lower-stream.js +3 -1
  200. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  201. package/dist/frontend/lowering/lower-url.d.ts +2 -1
  202. package/dist/frontend/lowering/lower-url.js +32 -9
  203. package/dist/frontend/lowering/lower-url.js.map +1 -1
  204. package/dist/frontend/lowering/lowerer.d.ts +53 -10
  205. package/dist/frontend/lowering/lowerer.js +390 -77
  206. package/dist/frontend/lowering/lowerer.js.map +1 -1
  207. package/dist/frontend/lowering/lowerer.test.js +187 -3
  208. package/dist/frontend/lowering/lowerer.test.js.map +1 -1
  209. package/dist/frontend/lowering/module-namespace-elements.d.ts +7 -0
  210. package/dist/frontend/lowering/module-namespace-elements.js +54 -0
  211. package/dist/frontend/lowering/module-namespace-elements.js.map +1 -0
  212. package/dist/frontend/lowering/object-factory-new.d.ts +4 -3
  213. package/dist/frontend/lowering/object-factory-new.js +27 -14
  214. package/dist/frontend/lowering/object-factory-new.js.map +1 -1
  215. package/dist/frontend/lowering/surfaces.d.ts +3 -0
  216. package/dist/frontend/lowering/surfaces.js +48 -19
  217. package/dist/frontend/lowering/surfaces.js.map +1 -1
  218. package/dist/frontend/lowering/text-decoder-encoding.d.ts +2 -0
  219. package/dist/frontend/lowering/text-decoder-encoding.js +8 -0
  220. package/dist/frontend/lowering/text-decoder-encoding.js.map +1 -1
  221. package/dist/frontend/lowering/text-decoder-encoding.test.js +2 -1
  222. package/dist/frontend/lowering/text-decoder-encoding.test.js.map +1 -1
  223. package/dist/frontend/lowering/unregistered-class-types.test.js +3 -3
  224. package/dist/frontend/lowering/unregistered-class-types.test.js.map +1 -1
  225. package/dist/frontend/npm-static-prune.js +116 -34
  226. package/dist/frontend/npm-static-prune.js.map +1 -1
  227. package/dist/frontend/npm-static-prune.test.js +8 -0
  228. package/dist/frontend/npm-static-prune.test.js.map +1 -1
  229. package/dist/frontend/program.d.ts +1 -1
  230. package/dist/frontend/program.js +57 -26
  231. package/dist/frontend/program.js.map +1 -1
  232. package/dist/frontend/program.test.js +18 -0
  233. package/dist/frontend/program.test.js.map +1 -1
  234. package/dist/frontend/ts7/ast.js +4 -3
  235. package/dist/frontend/ts7/ast.js.map +1 -1
  236. package/dist/frontend/ts7/semantic-json.js +5 -10
  237. package/dist/frontend/ts7/semantic-json.js.map +1 -1
  238. package/dist/frontend/type-mapper.d.ts +9 -1
  239. package/dist/frontend/type-mapper.js +169 -23
  240. package/dist/frontend/type-mapper.js.map +1 -1
  241. package/dist/frontend/type-mapper.test.js +23 -0
  242. package/dist/frontend/type-mapper.test.js.map +1 -1
  243. package/dist/frontend/union-discriminants.d.ts +1 -1
  244. package/dist/frontend/union-discriminants.js +24 -9
  245. package/dist/frontend/union-discriminants.js.map +1 -1
  246. package/dist/index.js +16 -10
  247. package/dist/index.js.map +1 -1
  248. package/dist/ir/analysis.js +2 -0
  249. package/dist/ir/analysis.js.map +1 -1
  250. package/dist/ir/ir.d.ts +74 -41
  251. package/dist/ir/ir.js +167 -43
  252. package/dist/ir/ir.js.map +1 -1
  253. package/dist/ir/ir.test.js +35 -0
  254. package/dist/ir/ir.test.js.map +1 -1
  255. package/dist/ir/serialize.js +35 -3
  256. package/dist/ir/serialize.js.map +1 -1
  257. package/dist/ir/serialize.test.js +26 -1
  258. package/dist/ir/serialize.test.js.map +1 -1
  259. package/dist/ir/traverse.d.ts +0 -3
  260. package/dist/ir/traverse.js +33 -20
  261. package/dist/ir/traverse.js.map +1 -1
  262. package/dist/ir/validate.js +136 -16
  263. package/dist/ir/validate.js.map +1 -1
  264. package/dist/ir/validate.test.js +77 -1
  265. package/dist/ir/validate.test.js.map +1 -1
  266. package/dist/library/compiler-self-identity.js +1 -1
  267. package/dist/library/compiler-self-identity.test.js +2 -2
  268. package/dist/library/compiler-self-identity.test.js.map +1 -1
  269. package/dist/library/int-infer.d.ts +2 -2
  270. package/dist/library/int-infer.js +10 -7
  271. package/dist/library/int-infer.js.map +1 -1
  272. package/dist/library/int-infer.test.js +44 -0
  273. package/dist/library/int-infer.test.js.map +1 -1
  274. package/dist/library/prepare.js +2 -1
  275. package/dist/library/prepare.js.map +1 -1
  276. package/dist/native/sanitizer.js +3 -1
  277. package/dist/native/sanitizer.js.map +1 -1
  278. package/dist/native/toolchain.d.ts +1 -1
  279. package/dist/native/toolchain.js +26 -6
  280. package/dist/native/toolchain.js.map +1 -1
  281. package/dist/native/toolchain.test.js +53 -1
  282. package/dist/native/toolchain.test.js.map +1 -1
  283. package/package.json +20 -20
  284. package/surface-manifest.json +170 -93
@@ -4,9 +4,11 @@ export type { WidthLift } from "./width-lift.js";
4
4
  import { type FnCtx } from "./function-context.js";
5
5
  export { newFnCtx, type FnCtx } from "./function-context.js";
6
6
  import type { FrontendServices } from "../services.js";
7
+ import { DeferredModuleInitializers } from "./deferred-module-initializers.js";
7
8
  import type { ClassSymbolKey } from "./symbol-fields.js";
8
9
  import type { HttpClientFnBinding } from "./lower-server.js";
9
10
  import * as ts from "../ts7/adapter.js";
11
+ import { type UnionLiteral } from "../union-discriminants.js";
10
12
  import type { ScrDiagnostic } from "../../diagnostics/diagnostic.js";
11
13
  import { UNSUPPORTED } from "../../diagnostics/diagnostic.js";
12
14
  import type { IrClassDef, IrExpr, IrFfiImport, IrFunction, IrGlobal, IrLocal, IrModule, IrParam, IrRecordShape, IrStmt, IrType, IrUnionDef, SrcLoc } from "../../ir/ir.js";
@@ -290,7 +292,7 @@ export declare function dynUndefinedExpr(loc: SrcLoc): IrExpr;
290
292
  * symbol-to-string TypeError). kind 0 Error / 1 TypeError / 2 RangeError;
291
293
  * an empty code means no code slot. `type` is the replaced expression's
292
294
  * own (never materialized — the global.undefRead pattern). */
293
- export declare function nodeThrowExpr(kind: 0 | 1 | 2, code: string, message: string, type: IrType, loc: SrcLoc): IrExpr;
295
+ export declare function nodeThrowExpr(kind: 0 | 1 | 2 | 5, code: string, message: string, type: IrType, loc: SrcLoc): IrExpr;
294
296
  /** The post-validation fence STRING a validation-ladder Chk libCall
295
297
  * throws after its Node-order checks pass: the same SC2020 text the
296
298
  * per-statement runtime fence would have thrown (message + "[code at
@@ -323,15 +325,13 @@ export declare function ladderFenceExpr(lowerer: Lowerer, surface: string, node:
323
325
  *
324
326
  * Null for void (no value exists to represent). */
325
327
  export declare function dynFallbackType(lowerer: Lowerer, node: ts.Node, t: ts.Type): IrType | null;
326
- /** The best-effort JS `Function.prototype.name` of an expression flowing
327
- * into a dyn slot (the boxed function kind's inspect/error name):
328
- * identifier and property reads answer the referenced NAME (a
329
- * REFERENCE-SITE approximation of JS's creation-site naming — an aliased
330
- * binding reports the alias; SEMANTICS.md), named function expressions
328
+ /** The JS `Function.prototype.name` of an expression flowing into a dyn
329
+ * slot. Immutable identifier aliases retain their creation-site name; property
330
+ * reads answer the referenced name. Named function expressions
331
331
  * their own name, anonymous function/arrow expressions their
332
332
  * NamedEvaluation home (a variable initializer or property assignment).
333
333
  * Null when nothing names the value (the box stays anonymous). */
334
- export declare function jsFuncNameOf(node: ts.Node): string | null;
334
+ export declare function jsFuncNameOf(node: ts.Node, lowerer?: Lowerer): string | null;
335
335
  export declare class Lowerer {
336
336
  readonly program: ts.Program;
337
337
  readonly entry: ts.SourceFile;
@@ -360,6 +360,9 @@ export declare class Lowerer {
360
360
  /** Per-symbol result of the never-reassigned file scan
361
361
  * (bindingNeverReassigned — object-literal generic-method receivers). */
362
362
  readonly neverReassignedCache: Map<ts.Symbol, boolean>;
363
+ /** Syntactic writes indexed once per JS scope. Symbol and RHS type
364
+ * checks remain contextual to each binding probe. */
365
+ readonly jsBindingWritesByOwner: Map<import("../ts7/ast-node.js").AstNode, Map<string, ts.BinaryExpression[]>>;
363
366
  /** TRAP bindings: declarations whose initializer provably throws before
364
367
  * producing a value (its chain roots at an ambient-undefined name —
365
368
  * ambientUndefVarRootOf). Module init unwinds at the declaration, so no
@@ -507,8 +510,8 @@ export declare class Lowerer {
507
510
  } | null;
508
511
  /** Recover the original optional union when a checked single-arm helper
509
512
  * was installed before a strict property consumer could name its member.
510
- * Recovery is limited to array element reads and storage roots marked by
511
- * the optional-read analysis, so ordinary assertions keep their generic
513
+ * Recovery covers member reads and storage roots marked by the
514
+ * optional-read analysis, so ordinary assertions keep their generic
512
515
  * checked-narrow behavior. */
513
516
  runtimeOptionalSourceValue(node: ts.Expression, value: IrExpr): IrExpr | null;
514
517
  /** A strict property or method receiver over an array-derived optional
@@ -588,6 +591,17 @@ export declare class Lowerer {
588
591
  /** Union re-tag helpers (%union.retag.N), interned per (from, to)
589
592
  * unionId pair — see unionRetagHelper. */
590
593
  readonly retagHelpers: Map<string, string>;
594
+ /** Copy-only routes depend on the two union contracts and discriminator
595
+ * layouts, without recursive width assumptions or evolving class members. */
596
+ private readonly copyRetagHelpers;
597
+ private readonly unionLiteralOwners;
598
+ private readonly strippedUndefinedArms;
599
+ private readonly addedUndefinedArms;
600
+ private readonly stdlibSymbols;
601
+ /** Method adapter names are owned by class-method-values. Looking them
602
+ * up must not scan and retain every unrelated lifted function. */
603
+ readonly classMethodValueHelpers: Set<string>;
604
+ readonly classMethodValueSelections: Map<string, import("./class-method-values.js").ClassMethodValueSelection>;
591
605
  /** Callee names of every interned coercion helper whose CALL mints a
592
606
  * FRESH closure per evaluation (%fn.width.*, %fn.adapt.*,
593
607
  * %fnval.spawnres.*). Registered at the mint site — NOT recovered by
@@ -689,12 +703,21 @@ export declare class Lowerer {
689
703
  /** Keyed by program-wide qualified class name (what IR object types carry). */
690
704
  readonly classes: Map<string, ClassInfo>;
691
705
  readonly classBySymbol: Map<ts.Symbol, ClassInfo>;
706
+ /** Named method slots observed before class collection need a callable
707
+ * ABI and shared prototype descriptors instead of call-site specialization. */
708
+ readonly prototypeMethodAccesses: Map<string, import("../ts7/ast-node.js").AstNode>;
692
709
  /** Inferred JS methods participating in an override chain keep a vtable
693
710
  * ABI instead of call-site specialization. Filled before class collection. */
694
711
  readonly virtualJsMethods: Set<ts.MethodDeclaration>;
712
+ /** Descendant writes must widen the original JS field before collecting
713
+ * any class layout; base and derived instances share its storage ABI. */
714
+ readonly inheritedJsFieldWrites: Map<ts.ClassDeclaration | ts.ClassExpression, Map<string, ts.ExpressionBase[]>>;
695
715
  /** Largest fixed argument list below a JS method, discovered before any
696
716
  * base vtable signature is collected. Unused checked slots carry undefined. */
697
717
  readonly virtualJsMethodArity: Map<ts.MethodDeclaration, number>;
718
+ readonly checkedVirtualJsMethods: Set<ts.MethodDeclaration>;
719
+ readonly checkedVirtualJsAccessors: Set<ts.GetAccessorDeclaration | ts.SetAccessorDeclaration>;
720
+ readonly checkedVirtualJsValueReturns: Set<ts.MethodDeclaration>;
698
721
  /** The class whose members are lowering — `super` binds lexically to it
699
722
  * (arrows inside methods lower within this window, so they see it too). */
700
723
  currentClass: ClassInfo | null;
@@ -836,12 +859,16 @@ export declare class Lowerer {
836
859
  * a reference to a lowerable body reports its name here — recorded even
837
860
  * when the enclosing statement later poisons. */
838
861
  onEdge: ((name: string) => void) | null;
862
+ deferredModuleInitializers: DeferredModuleInitializers | null;
839
863
  fnStack: FnCtx[];
840
864
  readonly liftedFns: IrFunction[];
841
865
  /** One Error-method helper belongs to this lowering session. Its cached
842
866
  * dispatch revision needs no weak-key identity or process-global state. */
843
867
  errorMethodDispatchRevision: string | null;
868
+ errorPropertyDispatchRevision: string | null;
844
869
  lambdaCounter: number;
870
+ readonly preparedClassFactories: Map<ts.ArrowFunction | ts.FunctionExpression, IrExpr>;
871
+ readonly preparingClassFactories: Set<ts.ArrowFunction | ts.FunctionExpression>;
845
872
  /** Statement lists currently mid-lowering, innermost last: the forward-
846
873
  * capture machinery needs to know which later statements of an OPEN list
847
874
  * a symbol's declaration sits in, which scope frame list-level declarations
@@ -868,6 +895,12 @@ export declare class Lowerer {
868
895
  * is assembled directly. The configured reachable set remains null so
869
896
  * demand-driven instance lowering keeps its existing gates. */
870
897
  reachableForArtifacts: ReadonlySet<string> | null;
898
+ /** Constructors retained by the active worklist. A boxed base receiver
899
+ * can contain any retained descendant, but importing its declaration
900
+ * alone does not make every descendant constructible. */
901
+ private constructedClasses;
902
+ private readonly virtualEdges;
903
+ classCanBeConstructed(info: ClassInfo): boolean;
871
904
  /** Coverage remainder mode: the reachability gate inverts (see wantBody)
872
905
  * and no module is built. */
873
906
  readonly remainder: boolean;
@@ -1278,6 +1311,11 @@ export declare class Lowerer {
1278
1311
  * this is THE tag for that (union, arm) pair program-wide — every wrap,
1279
1312
  * narrow, and tag test agrees by construction. */
1280
1313
  armTag(unionId: string, arm: IrType): number;
1314
+ /** Literal ownership depends only on the union contract and record layouts.
1315
+ * Recheck it when recursive placeholders close, not for every literal. */
1316
+ literalUnionArm(unionId: string, values: readonly UnionLiteral[]): (IrType & {
1317
+ kind: "record";
1318
+ }) | null;
1281
1319
  /** Implicit union construction. Wherever a value flows into a typed slot
1282
1320
  * (initializer, assignment, call argument, return, field write, record
1283
1321
  * literal field, ternary arm) whose expected type is a union and the
@@ -1831,6 +1869,11 @@ export declare class Lowerer {
1831
1869
  * BEFORE that statement (JS's order for the supported whole-initializer
1832
1870
  * positions). */
1833
1871
  readonly pendingClassExprInits: IrStmt[];
1872
+ readonly computedClassBases: Map<string, {
1873
+ value: IrExpr;
1874
+ classInfo: ClassInfo;
1875
+ }>;
1876
+ readonly computedCallableBases: Map<ts.ClassLikeDeclaration, IrExpr>;
1834
1877
  /** Discovery hook: registers a just-collected expression class's member
1835
1878
  * bodies as worklist units (the units map is otherwise built before
1836
1879
  * lowering starts). Null in the emit pass. */
@@ -2219,7 +2262,7 @@ export declare class Lowerer {
2219
2262
  lowerDcChannelProperty(access: ts.PropertyAccessExpression): IrExpr | null;
2220
2263
  lowerDcTracingChannelMethodCall(call: ts.CallExpression, access: ts.PropertyAccessExpression): IrExpr | null;
2221
2264
  lowerDcTracingChannelProperty(access: ts.PropertyAccessExpression): IrExpr | null;
2222
- strdecHelper(op: "write" | "end", shapeId: string, loc: SrcLoc): string;
2265
+ strdecHelper(op: "write" | "end" | "endChunk" | "endString" | "writeString", shapeId: string, loc: SrcLoc): string;
2223
2266
  lowerProcessProperty(expr: ts.PropertyAccessExpression): IrExpr | null;
2224
2267
  lowerFsConstantsProperty(expr: ts.PropertyAccessExpression): IrExpr | null;
2225
2268
  lowerBuiltinConstantsProperty(expr: ts.PropertyAccessExpression): IrExpr | null;