@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.
- package/ambient/scriptc-node-fallback.d.ts +84 -19
- package/dist/backend/cycle-analysis.js +1 -0
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/llvm/classes.js +21 -5
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/dyn.d.ts +8 -0
- package/dist/backend/llvm/dyn.js +247 -108
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +6 -3
- package/dist/backend/llvm/emitter.js +99 -25
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +9 -1
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +1 -1
- package/dist/backend/llvm/expr-bytes.js +28 -17
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +5 -0
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-control.js +1 -1
- package/dist/backend/llvm/expr-control.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +47 -13
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +11 -1
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-records.js +11 -3
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +187 -18
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +2 -2
- package/dist/backend/llvm/expr-stream-callbacks.js +7 -57
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +41 -3
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +12 -9
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +23 -3
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +80 -3
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/shapes.js +8 -2
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/may-throw.js +4 -0
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +1 -1
- package/dist/backend/native-codegen.js +4 -3
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +11 -0
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-toolchain.d.ts +3 -6
- package/dist/backend/native-toolchain.js +53 -23
- package/dist/backend/native-toolchain.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +72 -0
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/runtime-abi.d.ts +2 -2
- package/dist/backend/runtime-abi.js +2 -2
- package/dist/backend/runtime-pack-native.js +4 -1
- package/dist/backend/runtime-pack-native.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +1 -1
- package/dist/backend/runtime-pack.test.js +1 -1
- package/dist/backend/target-diagnostics.d.ts +5 -0
- package/dist/backend/target-diagnostics.js +72 -1
- package/dist/backend/target-diagnostics.js.map +1 -1
- package/dist/backend/target-diagnostics.test.d.ts +1 -0
- package/dist/backend/target-diagnostics.test.js +68 -0
- package/dist/backend/target-diagnostics.test.js.map +1 -0
- package/dist/backend/targets.js +10 -6
- package/dist/backend/targets.js.map +1 -1
- package/dist/backend/targets.test.js +7 -0
- package/dist/backend/targets.test.js.map +1 -1
- package/dist/compat/fetch-profile.js +34 -4
- package/dist/compat/fetch-profile.js.map +1 -1
- package/dist/coverage/surface-manifest.js +5 -3
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/diagnostics/diagnostic.js +2 -7
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +7 -3
- package/dist/executable/executable-cache.js +47 -11
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +109 -2
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/executable/prepare.js +2 -1
- package/dist/executable/prepare.js.map +1 -1
- package/dist/frontend/builtin-modules.d.ts +1 -1
- package/dist/frontend/builtin-modules.js +1 -1
- package/dist/frontend/builtin-modules.js.map +1 -1
- package/dist/frontend/function-completion.d.ts +6 -0
- package/dist/frontend/function-completion.js +50 -0
- package/dist/frontend/function-completion.js.map +1 -0
- package/dist/frontend/lowering/abstract-equality.js +5 -1
- package/dist/frontend/lowering/abstract-equality.js.map +1 -1
- package/dist/frontend/lowering/checked-iterable-spread.d.ts +4 -0
- package/dist/frontend/lowering/checked-iterable-spread.js +30 -0
- package/dist/frontend/lowering/checked-iterable-spread.js.map +1 -0
- package/dist/frontend/lowering/checked-promise-all.d.ts +5 -0
- package/dist/frontend/lowering/checked-promise-all.js +31 -0
- package/dist/frontend/lowering/checked-promise-all.js.map +1 -0
- package/dist/frontend/lowering/class-callbacks.d.ts +4 -4
- package/dist/frontend/lowering/class-callbacks.js +29 -17
- package/dist/frontend/lowering/class-callbacks.js.map +1 -1
- package/dist/frontend/lowering/class-construction.d.ts +14 -0
- package/dist/frontend/lowering/class-construction.js +185 -0
- package/dist/frontend/lowering/class-construction.js.map +1 -0
- package/dist/frontend/lowering/class-descriptors.d.ts +2 -1
- package/dist/frontend/lowering/class-descriptors.js +58 -10
- package/dist/frontend/lowering/class-descriptors.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.d.ts +36 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.js +965 -91
- package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js +66 -3
- package/dist/frontend/lowering/class-dynamic-dispatch.test.js.map +1 -1
- package/dist/frontend/lowering/class-instance-constructor.d.ts +1 -1
- package/dist/frontend/lowering/class-instance-constructor.js +15 -42
- package/dist/frontend/lowering/class-instance-constructor.js.map +1 -1
- package/dist/frontend/lowering/class-method-values.d.ts +20 -1
- package/dist/frontend/lowering/class-method-values.js +120 -24
- package/dist/frontend/lowering/class-method-values.js.map +1 -1
- package/dist/frontend/lowering/class-prototypes.d.ts +10 -3
- package/dist/frontend/lowering/class-prototypes.js +188 -21
- package/dist/frontend/lowering/class-prototypes.js.map +1 -1
- package/dist/frontend/lowering/class-runtime-statics.d.ts +8 -0
- package/dist/frontend/lowering/class-runtime-statics.js +84 -0
- package/dist/frontend/lowering/class-runtime-statics.js.map +1 -0
- package/dist/frontend/lowering/class-static-data.d.ts +1 -0
- package/dist/frontend/lowering/class-static-data.js +6 -4
- package/dist/frontend/lowering/class-static-data.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.js +66 -17
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.js +24 -47
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/deferred-module-initializers.d.ts +13 -0
- package/dist/frontend/lowering/deferred-module-initializers.js +410 -0
- package/dist/frontend/lowering/deferred-module-initializers.js.map +1 -0
- package/dist/frontend/lowering/deferred-module-initializers.test.d.ts +1 -0
- package/dist/frontend/lowering/deferred-module-initializers.test.js +92 -0
- package/dist/frontend/lowering/deferred-module-initializers.test.js.map +1 -0
- package/dist/frontend/lowering/error-methods.d.ts +4 -1
- package/dist/frontend/lowering/error-methods.js +100 -1
- package/dist/frontend/lowering/error-methods.js.map +1 -1
- package/dist/frontend/lowering/expressions/native-proxy.js +3 -1
- package/dist/frontend/lowering/expressions/native-proxy.js.map +1 -1
- package/dist/frontend/lowering/expressions/nullish-assignment.js +19 -11
- package/dist/frontend/lowering/expressions/nullish-assignment.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +68 -7
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/expressions/optional-chains.d.ts +3 -4
- package/dist/frontend/lowering/expressions/optional-chains.js +72 -20
- package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
- package/dist/frontend/lowering/function-context.d.ts +11 -3
- package/dist/frontend/lowering/function-context.js +11 -5
- package/dist/frontend/lowering/function-context.js.map +1 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.d.ts +1 -0
- package/dist/frontend/lowering/generator-dynamic-dispatch.js +39 -1
- package/dist/frontend/lowering/generator-dynamic-dispatch.js.map +1 -1
- package/dist/frontend/lowering/lib-boundary.d.ts +2 -0
- package/dist/frontend/lowering/lib-boundary.js +54 -1
- package/dist/frontend/lowering/lib-boundary.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +7 -1
- package/dist/frontend/lowering/lower-builtin-values.js +113 -3
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-builtins.d.ts +10 -14
- package/dist/frontend/lowering/lower-builtins.js +443 -88
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +8 -5
- package/dist/frontend/lowering/lower-calls.js +717 -142
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +18 -13
- package/dist/frontend/lowering/lower-classes.js +1076 -188
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-containers.d.ts +9 -0
- package/dist/frontend/lowering/lower-containers.js +172 -51
- package/dist/frontend/lowering/lower-containers.js.map +1 -1
- package/dist/frontend/lowering/lower-dgram.js +3 -2
- package/dist/frontend/lowering/lower-dgram.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +12 -8
- package/dist/frontend/lowering/lower-exprs.js +802 -232
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-generators.js +17 -2
- package/dist/frontend/lowering/lower-generators.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +15 -1
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-island.d.ts +2 -0
- package/dist/frontend/lowering/lower-island.js +36 -10
- package/dist/frontend/lowering/lower-island.js.map +1 -1
- package/dist/frontend/lowering/lower-island.test.d.ts +1 -0
- package/dist/frontend/lowering/lower-island.test.js +51 -0
- package/dist/frontend/lowering/lower-island.test.js.map +1 -0
- package/dist/frontend/lowering/lower-modules.d.ts +1 -3
- package/dist/frontend/lowering/lower-modules.js +380 -73
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.test.d.ts +1 -0
- package/dist/frontend/lowering/lower-modules.test.js +107 -0
- package/dist/frontend/lowering/lower-modules.test.js.map +1 -0
- package/dist/frontend/lowering/lower-stmts.d.ts +7 -3
- package/dist/frontend/lowering/lower-stmts.js +221 -47
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.test.d.ts +1 -0
- package/dist/frontend/lowering/lower-stmts.test.js +77 -0
- package/dist/frontend/lowering/lower-stmts.test.js.map +1 -0
- package/dist/frontend/lowering/lower-stream.js +3 -1
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lower-url.d.ts +2 -1
- package/dist/frontend/lowering/lower-url.js +32 -9
- package/dist/frontend/lowering/lower-url.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +53 -10
- package/dist/frontend/lowering/lowerer.js +390 -77
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/lowerer.test.js +187 -3
- package/dist/frontend/lowering/lowerer.test.js.map +1 -1
- package/dist/frontend/lowering/module-namespace-elements.d.ts +7 -0
- package/dist/frontend/lowering/module-namespace-elements.js +54 -0
- package/dist/frontend/lowering/module-namespace-elements.js.map +1 -0
- package/dist/frontend/lowering/object-factory-new.d.ts +4 -3
- package/dist/frontend/lowering/object-factory-new.js +27 -14
- package/dist/frontend/lowering/object-factory-new.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +3 -0
- package/dist/frontend/lowering/surfaces.js +48 -19
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/lowering/text-decoder-encoding.d.ts +2 -0
- package/dist/frontend/lowering/text-decoder-encoding.js +8 -0
- package/dist/frontend/lowering/text-decoder-encoding.js.map +1 -1
- package/dist/frontend/lowering/text-decoder-encoding.test.js +2 -1
- package/dist/frontend/lowering/text-decoder-encoding.test.js.map +1 -1
- package/dist/frontend/lowering/unregistered-class-types.test.js +3 -3
- package/dist/frontend/lowering/unregistered-class-types.test.js.map +1 -1
- package/dist/frontend/npm-static-prune.js +116 -34
- package/dist/frontend/npm-static-prune.js.map +1 -1
- package/dist/frontend/npm-static-prune.test.js +8 -0
- package/dist/frontend/npm-static-prune.test.js.map +1 -1
- package/dist/frontend/program.d.ts +1 -1
- package/dist/frontend/program.js +57 -26
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/program.test.js +18 -0
- package/dist/frontend/program.test.js.map +1 -1
- package/dist/frontend/ts7/ast.js +4 -3
- package/dist/frontend/ts7/ast.js.map +1 -1
- package/dist/frontend/ts7/semantic-json.js +5 -10
- package/dist/frontend/ts7/semantic-json.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +9 -1
- package/dist/frontend/type-mapper.js +169 -23
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/frontend/type-mapper.test.js +23 -0
- package/dist/frontend/type-mapper.test.js.map +1 -1
- package/dist/frontend/union-discriminants.d.ts +1 -1
- package/dist/frontend/union-discriminants.js +24 -9
- package/dist/frontend/union-discriminants.js.map +1 -1
- package/dist/index.js +16 -10
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +2 -0
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/ir.d.ts +74 -41
- package/dist/ir/ir.js +167 -43
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +35 -0
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/serialize.js +35 -3
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/serialize.test.js +26 -1
- package/dist/ir/serialize.test.js.map +1 -1
- package/dist/ir/traverse.d.ts +0 -3
- package/dist/ir/traverse.js +33 -20
- package/dist/ir/traverse.js.map +1 -1
- package/dist/ir/validate.js +136 -16
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +77 -1
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/compiler-self-identity.js +1 -1
- package/dist/library/compiler-self-identity.test.js +2 -2
- package/dist/library/compiler-self-identity.test.js.map +1 -1
- package/dist/library/int-infer.d.ts +2 -2
- package/dist/library/int-infer.js +10 -7
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/int-infer.test.js +44 -0
- package/dist/library/int-infer.test.js.map +1 -1
- package/dist/library/prepare.js +2 -1
- package/dist/library/prepare.js.map +1 -1
- package/dist/native/sanitizer.js +3 -1
- package/dist/native/sanitizer.js.map +1 -1
- package/dist/native/toolchain.d.ts +1 -1
- package/dist/native/toolchain.js +26 -6
- package/dist/native/toolchain.js.map +1 -1
- package/dist/native/toolchain.test.js +53 -1
- package/dist/native/toolchain.test.js.map +1 -1
- package/package.json +20 -20
- 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
|
|
327
|
-
*
|
|
328
|
-
*
|
|
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
|
|
511
|
-
*
|
|
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;
|