@scriptc/compiler 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ambient/scriptc-node-fallback.d.ts +99 -27
- package/dist/backend/cycle-analysis.js +63 -50
- package/dist/backend/cycle-analysis.js.map +1 -1
- package/dist/backend/cycle-analysis.test.js +51 -0
- package/dist/backend/cycle-analysis.test.js.map +1 -1
- package/dist/backend/llvm/borrowed-receivers.d.ts +9 -0
- package/dist/backend/llvm/borrowed-receivers.js +58 -0
- package/dist/backend/llvm/borrowed-receivers.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.d.ts +20 -0
- package/dist/backend/llvm/call-lifetimes.js +179 -0
- package/dist/backend/llvm/call-lifetimes.js.map +1 -0
- package/dist/backend/llvm/call-lifetimes.test.d.ts +1 -0
- package/dist/backend/llvm/call-lifetimes.test.js +205 -0
- package/dist/backend/llvm/call-lifetimes.test.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +2 -2
- package/dist/backend/llvm/dyn.js +79 -35
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.d.ts +33 -0
- package/dist/backend/llvm/emitter.js +189 -16
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.test.js +20 -1
- package/dist/backend/llvm/emitter.test.js.map +1 -1
- package/dist/backend/llvm/expr-async.js +1 -1
- package/dist/backend/llvm/expr-async.js.map +1 -1
- package/dist/backend/llvm/expr-calls.js +42 -5
- package/dist/backend/llvm/expr-calls.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +70 -13
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +1 -1
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.js +6 -5
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-records.js +1 -1
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +5 -10
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +35 -1
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/local-array-reads.d.ts +44 -0
- package/dist/backend/llvm/local-array-reads.js +313 -0
- package/dist/backend/llvm/local-array-reads.js.map +1 -0
- package/dist/backend/llvm/local-array-reads.test.d.ts +1 -0
- package/dist/backend/llvm/local-array-reads.test.js +446 -0
- package/dist/backend/llvm/local-array-reads.test.js.map +1 -0
- package/dist/backend/llvm/map-read-lifetimes.d.ts +36 -0
- package/dist/backend/llvm/map-read-lifetimes.js +128 -0
- package/dist/backend/llvm/map-read-lifetimes.js.map +1 -0
- package/dist/backend/llvm/map-read-lifetimes.test.d.ts +1 -0
- package/dist/backend/llvm/map-read-lifetimes.test.js +123 -0
- package/dist/backend/llvm/map-read-lifetimes.test.js.map +1 -0
- package/dist/backend/llvm/shapes.js +1 -0
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/split.js +15 -5
- package/dist/backend/llvm/split.js.map +1 -1
- package/dist/backend/llvm/split.test.js +17 -0
- package/dist/backend/llvm/split.test.js.map +1 -1
- package/dist/backend/llvm/stack-unions.d.ts +20 -0
- package/dist/backend/llvm/stack-unions.js +61 -0
- package/dist/backend/llvm/stack-unions.js.map +1 -0
- package/dist/backend/llvm/stack-unions.test.d.ts +1 -0
- package/dist/backend/llvm/stack-unions.test.js +241 -0
- package/dist/backend/llvm/stack-unions.test.js.map +1 -0
- package/dist/backend/llvm/string-lifetimes.d.ts +12 -0
- package/dist/backend/llvm/string-lifetimes.js +70 -0
- package/dist/backend/llvm/string-lifetimes.js.map +1 -0
- package/dist/backend/llvm/string-lifetimes.test.d.ts +1 -0
- package/dist/backend/llvm/string-lifetimes.test.js +230 -0
- package/dist/backend/llvm/string-lifetimes.test.js.map +1 -0
- package/dist/backend/mangle.d.ts +2 -0
- package/dist/backend/mangle.js +4 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/backend/may-throw.js +67 -29
- package/dist/backend/may-throw.js.map +1 -1
- package/dist/backend/may-throw.test.js +104 -1
- package/dist/backend/may-throw.test.js.map +1 -1
- package/dist/backend/native-toolchain.d.ts +2 -2
- package/dist/backend/native-toolchain.js +2 -0
- package/dist/backend/native-toolchain.js.map +1 -1
- package/dist/frontend/input-tracker.js +3 -3
- package/dist/frontend/input-tracker.js.map +1 -1
- package/dist/frontend/input-tracker.test.js +38 -2
- package/dist/frontend/input-tracker.test.js.map +1 -1
- package/dist/frontend/lowering/collection-ingestion.d.ts +31 -0
- package/dist/frontend/lowering/collection-ingestion.js +215 -0
- package/dist/frontend/lowering/collection-ingestion.js.map +1 -0
- package/dist/frontend/lowering/containers/bytes.js +2 -0
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/import-meta.d.ts +10 -0
- package/dist/frontend/lowering/import-meta.js +52 -0
- package/dist/frontend/lowering/import-meta.js.map +1 -0
- package/dist/frontend/lowering/lower-assert.js +105 -41
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-builtin-values.d.ts +2 -0
- package/dist/frontend/lowering/lower-builtin-values.js +22 -1
- package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
- package/dist/frontend/lowering/lower-builtins.d.ts +3 -13
- package/dist/frontend/lowering/lower-builtins.js +150 -46
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +6 -3
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.js +4 -4
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-containers.d.ts +5 -1
- package/dist/frontend/lowering/lower-containers.js +40 -3
- package/dist/frontend/lowering/lower-containers.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.js +35 -41
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +43 -0
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +72 -68
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-system-errors.d.ts +6 -0
- package/dist/frontend/lowering/lower-system-errors.js +29 -0
- package/dist/frontend/lowering/lower-system-errors.js.map +1 -0
- package/dist/frontend/lowering/lowerer.d.ts +4 -3
- package/dist/frontend/lowering/lowerer.js +50 -22
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +2 -2
- package/dist/frontend/lowering/surfaces.js +69 -21
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/module-syntax.d.ts +1 -1
- package/dist/frontend/module-syntax.js +8 -1
- package/dist/frontend/module-syntax.js.map +1 -1
- package/dist/frontend/module-syntax.test.js +10 -0
- package/dist/frontend/module-syntax.test.js.map +1 -1
- package/dist/frontend/npm.d.ts +4 -0
- package/dist/frontend/npm.js +86 -33
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/npm.test.js +103 -0
- package/dist/frontend/npm.test.js.map +1 -1
- package/dist/frontend/pipeline-native.js +2 -1
- package/dist/frontend/pipeline-native.js.map +1 -1
- package/dist/frontend/services-node.js +3 -2
- package/dist/frontend/services-node.js.map +1 -1
- package/dist/frontend/services.d.ts +5 -1
- package/dist/frontend/services.js +9 -1
- package/dist/frontend/services.js.map +1 -1
- package/dist/frontend/services.test.js +21 -0
- package/dist/frontend/services.test.js.map +1 -1
- package/dist/frontend/ts7/ast-node.d.ts +2 -0
- package/dist/frontend/ts7/ast-node.js +30 -4
- package/dist/frontend/ts7/ast-node.js.map +1 -1
- package/dist/frontend/ts7/ast-node.test.js +60 -1
- package/dist/frontend/ts7/ast-node.test.js.map +1 -1
- package/dist/frontend/type-mapper.js +6 -0
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +1 -0
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +7 -0
- package/dist/ir/integer-loops.js +23 -0
- package/dist/ir/integer-loops.js.map +1 -1
- package/dist/ir/integer-loops.test.d.ts +1 -0
- package/dist/ir/integer-loops.test.js +41 -0
- package/dist/ir/integer-loops.test.js.map +1 -0
- package/dist/ir/ir.d.ts +21 -17
- package/dist/ir/ir.js +43 -9
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +18 -0
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/validate.js +161 -76
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.js +227 -0
- package/dist/ir/validate.test.js.map +1 -1
- package/dist/library/fence-eval.js +9 -2
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/fence-eval.test.d.ts +1 -0
- package/dist/library/fence-eval.test.js +21 -0
- package/dist/library/fence-eval.test.js.map +1 -0
- package/dist/native/runtime-typescript.d.ts +4 -0
- package/dist/native/runtime-typescript.js +61 -0
- package/dist/native/runtime-typescript.js.map +1 -0
- package/dist/native/runtime-typescript.test.d.ts +1 -0
- package/dist/native/runtime-typescript.test.js +41 -0
- package/dist/native/runtime-typescript.test.js.map +1 -0
- package/package.json +20 -20
- package/surface-manifest.json +271 -17
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Lowerer } from "./lowerer.js";
|
|
2
|
+
import { type IrExpr, type SrcLoc } from "../../ir/ir.js";
|
|
3
|
+
/** Build the native Map through the same checked entry conversion as
|
|
4
|
+
* new Map(iterable), so its values use the ordinary mutable tuple layout. */
|
|
5
|
+
export declare function lowerSystemErrorMap(lowerer: Lowerer, loc: SrcLoc): IrExpr;
|
|
6
|
+
export declare function lowerSystemErrorMapValue(lowerer: Lowerer, loc: SrcLoc): IrExpr;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { DYN, F64, STRING } from "../../ir/ir.js";
|
|
2
|
+
import { mapFromSeedValue } from "./lower-containers.js";
|
|
3
|
+
import { InternalCompilerError } from "../../errors.js";
|
|
4
|
+
/** Build the native Map through the same checked entry conversion as
|
|
5
|
+
* new Map(iterable), so its values use the ordinary mutable tuple layout. */
|
|
6
|
+
export function lowerSystemErrorMap(lowerer, loc) {
|
|
7
|
+
const pair = { kind: "record", shapeId: lowerer.shapes.intern([
|
|
8
|
+
{ name: "0", type: STRING }, { name: "1", type: STRING },
|
|
9
|
+
], true) };
|
|
10
|
+
const map = { kind: "map", key: F64, value: pair };
|
|
11
|
+
const entries = { kind: "libCall", fn: "util.systemErrorEntries", args: [], type: DYN, loc };
|
|
12
|
+
const result = mapFromSeedValue(lowerer, entries, map);
|
|
13
|
+
if (!result)
|
|
14
|
+
throw new InternalCompilerError("system error entries must seed a native Map");
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
export function lowerSystemErrorMapValue(lowerer, loc) {
|
|
18
|
+
const key = "%builtin.util.getSystemErrorMap";
|
|
19
|
+
let name = lowerer.builtinCallableValueFns.get(key);
|
|
20
|
+
const result = lowerSystemErrorMap(lowerer, loc);
|
|
21
|
+
if (!name) {
|
|
22
|
+
name = key;
|
|
23
|
+
lowerer.builtinCallableValueFns.set(key, name);
|
|
24
|
+
lowerer.liftedFns.push({ name, params: [], returnType: result.type, locals: [],
|
|
25
|
+
body: [{ kind: "return", value: result, loc }], loc });
|
|
26
|
+
}
|
|
27
|
+
return { kind: "closure", fnName: name, captures: [], type: { kind: "func", params: [], ret: result.type }, loc };
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=lower-system-errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lower-system-errors.js","sourceRoot":"","sources":["../../../src/frontend/lowering/lower-system-errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAyC,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD;6EAC6E;AAC7E,MAAM,UAAU,mBAAmB,CAAC,OAAgB,EAAE,GAAW;IAC/D,MAAM,IAAI,GAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;YACpE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;SACzD,EAAE,IAAI,CAAC,EAAE,CAAC;IACX,MAAM,GAAG,GAA6B,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC7E,MAAM,OAAO,GAAW,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,yBAAyB,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACrG,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,qBAAqB,CAAC,6CAA6C,CAAC,CAAC;IAC5F,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAgB,EAAE,GAAW;IACpE,MAAM,GAAG,GAAG,iCAAiC,CAAC;IAC9C,IAAI,IAAI,GAAG,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACjD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,GAAG,CAAC;QACX,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/C,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAC5E,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC;AACpH,CAAC"}
|
|
@@ -1927,9 +1927,10 @@ export declare class Lowerer {
|
|
|
1927
1927
|
exactClassOfReceiver(expr: ts.Expression): ClassInfo | null;
|
|
1928
1928
|
lowerClassMembers(info: ClassInfo): IrFunction[];
|
|
1929
1929
|
lowerStaticFieldInits(info: ClassInfo): IrStmt[];
|
|
1930
|
-
/**
|
|
1931
|
-
*
|
|
1932
|
-
|
|
1930
|
+
/** Method-like members with their collected method-map names. Body
|
|
1931
|
+
* lowering omits abstract declarations; ABI analysis must include them
|
|
1932
|
+
* because an abstract-typed call selects the same virtual slot. */
|
|
1933
|
+
classMethodMembers(info: ClassInfo, includeAbstract?: boolean): Generator<{
|
|
1933
1934
|
mName: string;
|
|
1934
1935
|
member: ts.MethodDeclaration | ts.AccessorDeclaration;
|
|
1935
1936
|
}>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { pathModuleValue } from "./lower-builtin-values.js";
|
|
1
|
+
import { lowerUtilTypeValue, pathModuleValue, utilTypesModuleValue } from "./lower-builtin-values.js";
|
|
2
2
|
import { everyExprChild, everyStmtChild, transformStmtList } from "../../ir/traverse.js";
|
|
3
3
|
import { RuntimeOptionalLocals } from "./runtime-optional-locals.js";
|
|
4
4
|
import { sanitizeUnregisteredClassTypes } from "./sanitize-class-types.js";
|
|
@@ -58,6 +58,7 @@ import { lowerDgramDnsModuleCall, lowerDgramMethodCall } from "./lower-dgram.js"
|
|
|
58
58
|
import { lowerNodeTestModuleCall, lowerTestDirectCall, lowerTestMethodCall, lowerTestCtxProperty } from "./lower-test.js";
|
|
59
59
|
import { lowerAssertModuleCall, lowerAssertDirectCall } from "./lower-assert.js";
|
|
60
60
|
import { lowerUtilModuleCall } from "./lower-inspect.js";
|
|
61
|
+
import { lowerSystemErrorMapValue } from "./lower-system-errors.js";
|
|
61
62
|
import { lowerComptime, comptimeBakeable, rejectComptimeCaptures, comptimeValueToIr } from "./lower-comptime.js";
|
|
62
63
|
import { lowerStmts, hasJsTypeAnnotation, noteBlockedBindings, isBlockedBinding, lowerScopedBlock, predeclareForwardCapture, predeclareForwardFnDecl, predeclareForwardVar, lowerStmt, lowerVarStatement, lowerDestructuringDecl, lowerDestructuringAssignParts, lowerBindingPattern, lowerJsvalBindingPattern, checkBindingElement, bindPatternTarget, isParseArgsDynCheckerType, lowerVarDeclList, lowerVarDecl, lowerSwitch, lowerTry, lowerExprStatement, lowerForOf, lowerForStatement } from "./lower-stmts.js";
|
|
63
64
|
import { lowerExpr, maybeNarrow, lowerUnitComparison, lowerNullishCoalesce, lowerCondition, ensureBool, requireTruthyUnion, eqComparableUnion, lowerIntrinsicProperty, lowerArrayLiteral, lowerElementAccess, lowerElementWrite, lowerRecordKeyRead, ensureString, lowerTemplate, lowerAsExpression, lowerPrefixUnary, lowerBinary, lowerCaughtTypeofTest, caughtRead, caughtLocalOf, caughtToString, lowerInstanceOf, lowerRegexLiteral, lowerFieldRead, lowerUnionProperty, fieldTarget, fieldGetExpr, fieldSetStmt, lowerFieldCompound, uniqueSymbolKeyOf } from "./lower-exprs.js";
|
|
@@ -2789,7 +2790,7 @@ export class Lowerer {
|
|
|
2789
2790
|
});
|
|
2790
2791
|
}
|
|
2791
2792
|
for (const info of this.classes.values()) {
|
|
2792
|
-
for (const { mName, member } of this.classMethodMembers(info)) {
|
|
2793
|
+
for (const { mName, member } of this.classMethodMembers(info, true)) {
|
|
2793
2794
|
if (!member.name || !(ts.isIdentifier(member.name) || ts.isStringLiteral(member.name)))
|
|
2794
2795
|
continue;
|
|
2795
2796
|
const symbol = symbolOf(member.name);
|
|
@@ -3459,21 +3460,32 @@ export class Lowerer {
|
|
|
3459
3460
|
}
|
|
3460
3461
|
return;
|
|
3461
3462
|
}
|
|
3462
|
-
|
|
3463
|
-
|
|
3464
|
-
|
|
3465
|
-
|
|
3466
|
-
|
|
3467
|
-
if (
|
|
3468
|
-
|
|
3469
|
-
|
|
3470
|
-
const
|
|
3471
|
-
if (
|
|
3472
|
-
|
|
3473
|
-
|
|
3474
|
-
|
|
3475
|
-
|
|
3476
|
-
|
|
3463
|
+
// A virtual slot has one argument representation, even when
|
|
3464
|
+
// the unchecked read reaches only a base-typed call site.
|
|
3465
|
+
// Promote every implementation and its parameter bindings so
|
|
3466
|
+
// downstream calls and returns see the same optional value.
|
|
3467
|
+
const family = familyBySymbol.get(symbol);
|
|
3468
|
+
if (family)
|
|
3469
|
+
optionalMethodFamilies.add(family);
|
|
3470
|
+
for (const target of family ?? [symbol]) {
|
|
3471
|
+
const parameterShape = signatureBySymbol.get(target)?.params[i];
|
|
3472
|
+
if (!parameterShape)
|
|
3473
|
+
continue;
|
|
3474
|
+
parameterShape.type = addUndefined(parameterShape.type);
|
|
3475
|
+
const set = optionalParams.get(target) ?? new Set();
|
|
3476
|
+
const before = set.size;
|
|
3477
|
+
set.add(i);
|
|
3478
|
+
optionalParams.set(target, set);
|
|
3479
|
+
if (set.size !== before) {
|
|
3480
|
+
changed = true;
|
|
3481
|
+
const parameter = functionDeclBySymbol.get(target)?.parameters[i];
|
|
3482
|
+
if (parameter) {
|
|
3483
|
+
for (const bound of boundIdentifiersOf(parameter.name)) {
|
|
3484
|
+
const boundSymbol = symbolOf(bound);
|
|
3485
|
+
if (boundSymbol && !optionalSymbols.has(boundSymbol)) {
|
|
3486
|
+
optionalSymbols.add(boundSymbol);
|
|
3487
|
+
changed = true;
|
|
3488
|
+
}
|
|
3477
3489
|
}
|
|
3478
3490
|
}
|
|
3479
3491
|
}
|
|
@@ -8749,9 +8761,10 @@ export class Lowerer {
|
|
|
8749
8761
|
lowerStaticFieldInits(info) {
|
|
8750
8762
|
return lowerStaticFieldInits(this, info);
|
|
8751
8763
|
}
|
|
8752
|
-
/**
|
|
8753
|
-
*
|
|
8754
|
-
|
|
8764
|
+
/** Method-like members with their collected method-map names. Body
|
|
8765
|
+
* lowering omits abstract declarations; ABI analysis must include them
|
|
8766
|
+
* because an abstract-typed call selects the same virtual slot. */
|
|
8767
|
+
*classMethodMembers(info, includeAbstract = false) {
|
|
8755
8768
|
if (!info.decl)
|
|
8756
8769
|
return; // builtin error classes: runtime-provided bodies
|
|
8757
8770
|
for (const member of info.decl.members) {
|
|
@@ -8775,7 +8788,8 @@ export class Lowerer {
|
|
|
8775
8788
|
if (baseName === null)
|
|
8776
8789
|
continue;
|
|
8777
8790
|
const mName = ts.isMethodDeclaration(fnLike) ? baseName : `${ts.isGetAccessor(fnLike) ? "get" : "set"}:${baseName}`;
|
|
8778
|
-
|
|
8791
|
+
const signature = info.methods.get(mName);
|
|
8792
|
+
if (!signature || (!fnLike.body && !(includeAbstract && signature.abstract)))
|
|
8779
8793
|
continue;
|
|
8780
8794
|
yield { mName, member: fnLike };
|
|
8781
8795
|
}
|
|
@@ -9946,6 +9960,9 @@ export class Lowerer {
|
|
|
9946
9960
|
// methods and properties keep their existing process lowerings.
|
|
9947
9961
|
if (stdlibGlobalNameOf(this, expr) === "process")
|
|
9948
9962
|
return null;
|
|
9963
|
+
const imported = ts.isIdentifier(expr) ? this.builtinImportOf(expr) : null;
|
|
9964
|
+
if (imported?.module === "util" && imported.member === "types")
|
|
9965
|
+
return "util/types";
|
|
9949
9966
|
const stored = ts.isIdentifier(expr)
|
|
9950
9967
|
? (this.peekLocal(expr)?.type ?? this.globalOf(expr)?.type)
|
|
9951
9968
|
: undefined;
|
|
@@ -10231,6 +10248,12 @@ export class Lowerer {
|
|
|
10231
10248
|
* deliberately narrower than table membership because many table rows
|
|
10232
10249
|
* are only dispatch sentinels for call-site-specific lowering. */
|
|
10233
10250
|
lowerBuiltinCallableValue(bi, loc) {
|
|
10251
|
+
if (bi.module === "util" && bi.member === "types")
|
|
10252
|
+
return utilTypesModuleValue(this, loc);
|
|
10253
|
+
if (bi.module === "util/types" && builtinModuleFnOf(this, bi.module, bi.member))
|
|
10254
|
+
return lowerUtilTypeValue(this, bi.member, loc);
|
|
10255
|
+
if (bi.module === "util" && bi.member === "getSystemErrorMap")
|
|
10256
|
+
return lowerSystemErrorMapValue(this, loc);
|
|
10234
10257
|
if (bi.module === "fs" && builtinModuleFnOf(this, bi.module, bi.member)?.fn === "fs.callbackCall") {
|
|
10235
10258
|
return { kind: "libCall", fn: "fs.callbackValue", args: [{ kind: "strLit", value: bi.member, type: STRING, loc }], type: DYN, loc };
|
|
10236
10259
|
}
|
|
@@ -10245,6 +10268,8 @@ export class Lowerer {
|
|
|
10245
10268
|
if (param.mode === "rest")
|
|
10246
10269
|
return { mode: "rest", type: arrayOf(param.type) };
|
|
10247
10270
|
if (param.mode === "optional") {
|
|
10271
|
+
if (param.type.kind === "dyn" && param.defaultValue === undefined)
|
|
10272
|
+
return { mode: "omittable", type: DYN };
|
|
10248
10273
|
return { mode: "omittable", type: this.withUndefinedArm(param.type), bodyType: param.type };
|
|
10249
10274
|
}
|
|
10250
10275
|
return { mode: "required", type: param.type };
|
|
@@ -10276,7 +10301,10 @@ export class Lowerer {
|
|
|
10276
10301
|
};
|
|
10277
10302
|
if (valueParam.mode !== "optional")
|
|
10278
10303
|
return ref;
|
|
10279
|
-
|
|
10304
|
+
// Checked runtime APIs consume undefined directly for omitted options.
|
|
10305
|
+
if (valueParam.type.kind === "dyn" && valueParam.defaultValue === undefined)
|
|
10306
|
+
return ref;
|
|
10307
|
+
if (valueParam.defaultValue === undefined || (valueParam.type.kind !== "string" && valueParam.type.kind !== "f64") || param.type.kind !== "union") {
|
|
10280
10308
|
throw new InternalCompilerError(`builtin callable value '${display}' has an unsupported optional default`);
|
|
10281
10309
|
}
|
|
10282
10310
|
const undefTag = this.armTag(param.type.unionId, UNDEFINED_T);
|