@scriptc/compiler 0.0.36 → 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.
- package/ambient/scriptc-node-fallback.d.ts +7 -5
- package/ambient/scriptc-overrides.d.ts +0 -7
- package/ambient/scriptc.d.ts +1 -1
- package/dist/backend/c/exprs.js +69 -45
- package/dist/backend/c/exprs.js.map +1 -1
- package/dist/backend/c/may-throw.js +3 -0
- package/dist/backend/c/may-throw.js.map +1 -1
- package/dist/backend/c/stmts.js +18 -0
- package/dist/backend/c/stmts.js.map +1 -1
- package/dist/backend/c/walkers.js +5 -7
- package/dist/backend/c/walkers.js.map +1 -1
- package/dist/backend/external-c.d.ts +33 -0
- package/dist/backend/external-c.js +51 -0
- package/dist/backend/external-c.js.map +1 -0
- package/dist/backend/link-plan.d.ts +37 -0
- package/dist/backend/link-plan.js +26 -0
- package/dist/backend/link-plan.js.map +1 -0
- package/dist/backend/linker.d.ts +22 -0
- package/dist/backend/linker.js +236 -0
- package/dist/backend/linker.js.map +1 -0
- package/dist/backend/llvm/dyn.js +7 -0
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.js +34 -7
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-containers.js +68 -54
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +1 -1
- package/dist/backend/llvm/expr-dispatch.js +2 -0
- package/dist/backend/llvm/expr-dispatch.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.d.ts +1 -1
- package/dist/backend/llvm/expr-primitives.js +20 -0
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +25 -1
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/walkers.js +31 -4
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/native-codegen.d.ts +8 -1
- package/dist/backend/native-codegen.js +39 -25
- package/dist/backend/native-codegen.js.map +1 -1
- package/dist/backend/native-codegen.test.js +42 -4
- package/dist/backend/native-codegen.test.js.map +1 -1
- package/dist/backend/native-link-info.d.ts +1 -1
- package/dist/backend/native-link-info.js +42 -18
- package/dist/backend/native-link-info.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +5 -1
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.d.ts +1 -0
- package/dist/backend/runtime-pack-targets.test.js +54 -0
- package/dist/backend/runtime-pack-targets.test.js.map +1 -0
- package/dist/backend/runtime-pack.d.ts +5 -30
- package/dist/backend/runtime-pack.js +46 -141
- package/dist/backend/runtime-pack.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +49 -14
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/targets.d.ts +63 -17
- package/dist/backend/targets.js +251 -35
- package/dist/backend/targets.js.map +1 -1
- package/dist/backend/targets.test.js +27 -5
- package/dist/backend/targets.test.js.map +1 -1
- package/dist/coverage/surface-manifest.js +10 -1
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/frontend/lowering/array-values.d.ts +8 -0
- package/dist/frontend/lowering/array-values.js +60 -0
- package/dist/frontend/lowering/array-values.js.map +1 -0
- package/dist/frontend/lowering/lower-array-sort.d.ts +22 -0
- package/dist/frontend/lowering/lower-array-sort.js +619 -0
- package/dist/frontend/lowering/lower-array-sort.js.map +1 -0
- package/dist/frontend/lowering/lower-builtins.js +164 -4
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +3 -4
- package/dist/frontend/lowering/lower-calls.js +260 -27
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-containers.js +728 -655
- package/dist/frontend/lowering/lower-containers.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +4 -0
- package/dist/frontend/lowering/lower-exprs.js +769 -101
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +47 -33
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-island.d.ts +5 -4
- package/dist/frontend/lowering/lower-island.js +10 -5
- package/dist/frontend/lowering/lower-island.js.map +1 -1
- package/dist/frontend/lowering/lower-server.js +10 -0
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +302 -71
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +74 -2
- package/dist/frontend/lowering/lowerer.js +1087 -10
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +10 -2
- package/dist/frontend/lowering/surfaces.js +15 -3
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +45 -23
- package/dist/index.js.map +1 -1
- package/dist/ir/ir.d.ts +65 -11
- package/dist/ir/ir.js +25 -25
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +1 -1
- package/dist/ir/validate.js +84 -37
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/fence-eval.js +3 -1
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/int-infer.js +12 -1
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/library-cache.test.js +5 -5
- package/dist/startup-cache.d.ts +9 -1
- package/dist/startup-cache.js +16 -1
- package/dist/startup-cache.js.map +1 -1
- package/package.json +17 -4
- package/surface-manifest.json +5 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lower-array-sort.js","sourceRoot":"","sources":["../../../src/frontend/lowering/lower-array-sort.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ import { isNpmStaticPackage } from "../npm-static.js";
|
|
|
14
14
|
import { trackedReadFile } from "../input-tracker.js";
|
|
15
15
|
import { invalidJsonModuleDiag, requiresDynamicImportDiag } from "../../diagnostics/diagnostic.js";
|
|
16
16
|
import { builtinModuleFnOf, FS_READDIR_DOCUMENTED_OPTIONS, FS_WATCH_DOCUMENTED_OPTIONS, FS_WRITE_FILE_DOCUMENTED_OPTIONS, QS_PARSE_DOCUMENTED_OPTIONS, QS_STRINGIFY_DOCUMENTED_OPTIONS, READLINE_DOCUMENTED_OPTIONS, builtinConstLit, fenceOrDropOptionKey, isChildSurfaceMember, } from "./surfaces.js";
|
|
17
|
-
import { conditionalSpreadOf, droppableStatic, lowerDynObjectLiteral } from "./lower-exprs.js";
|
|
17
|
+
import { conditionalSpreadOf, droppableStatic, lowerAbsenceProbe, lowerDynObjectLiteral } from "./lower-exprs.js";
|
|
18
18
|
import { HTTP2_CONSTANTS } from "./http2-constants.js";
|
|
19
19
|
import { CRYPTO_CIPHERS, CRYPTO_CONSTANTS, CRYPTO_CURVES, CRYPTO_HASHES } from "./crypto-tables.js";
|
|
20
20
|
import { timerStyleCallback } from "./lower-calls.js";
|
|
@@ -22,6 +22,74 @@ import { registerHttpClientFnBinding, voidizedCallback } from "./lower-server.js
|
|
|
22
22
|
import { pairsSnapshotHelper } from "./pairs-snapshot.js";
|
|
23
23
|
import { BOOL, BYTES_U8, CHILD_T, CHILDSTREAM_T, DYN, F64, FILEHANDLE_T, FSWATCHER_T, PROCSTREAM_T, JSVAL, NULL_T, SEARCH_PARAMS_T, SPAWNRES_T, STRING, UNDEFINED_T, VOID, arrayOf, canBoxFuncIntoDyn, canConvertToDyn, funcOf, isUnitType, typeEquals, typeKey } from "../../ir/ir.js";
|
|
24
24
|
import { boolLit, countedFor, numLit, strLit, varRef } from "../../ir/build.js";
|
|
25
|
+
function optionalStringTags(lowerer, type) {
|
|
26
|
+
if (type.kind !== "union")
|
|
27
|
+
return null;
|
|
28
|
+
const def = lowerer.unions.get(type.unionId);
|
|
29
|
+
if (!def || def.arms.length !== 2)
|
|
30
|
+
return null;
|
|
31
|
+
const stringTag = lowerer.armTag(type.unionId, STRING);
|
|
32
|
+
const undefinedTag = lowerer.armTag(type.unionId, UNDEFINED_T);
|
|
33
|
+
return stringTag >= 0 && undefinedTag >= 0 ? { stringTag, undefinedTag } : null;
|
|
34
|
+
}
|
|
35
|
+
function lowerBuiltinValuePreservingUndefined(lowerer, node) {
|
|
36
|
+
return lowerer.runtimeOptionalIdentifierValue(node)?.value ??
|
|
37
|
+
lowerAbsenceProbe(lowerer, node) ??
|
|
38
|
+
lowerer.lowerExpr(node);
|
|
39
|
+
}
|
|
40
|
+
function checkedOptionalBuiltinArm(lowerer, value, target) {
|
|
41
|
+
const widened = lowerer.runtimeOptionalWidening(value.type, target);
|
|
42
|
+
if (!widened || widened.kind !== "union")
|
|
43
|
+
return null;
|
|
44
|
+
const helper = lowerer.narrowedArmHelper(widened.unionId, target, value.loc);
|
|
45
|
+
return helper
|
|
46
|
+
? { kind: "call", callee: helper, args: [value], type: target, loc: value.loc }
|
|
47
|
+
: null;
|
|
48
|
+
}
|
|
49
|
+
function lowerOptionalNumberPredicate(lowerer, value, fn, loc) {
|
|
50
|
+
const widened = lowerer.runtimeOptionalWidening(value.type, F64);
|
|
51
|
+
if (!widened || widened.kind !== "union")
|
|
52
|
+
return null;
|
|
53
|
+
const numberTag = lowerer.armTag(widened.unionId, F64);
|
|
54
|
+
const undefinedTag = lowerer.armTag(widened.unionId, UNDEFINED_T);
|
|
55
|
+
if (numberTag < 0 || undefinedTag < 0)
|
|
56
|
+
return null;
|
|
57
|
+
const key = `number.optionalPredicate:${fn}:${widened.unionId}`;
|
|
58
|
+
let helper = lowerer.widthHelpers.get(key);
|
|
59
|
+
if (!helper) {
|
|
60
|
+
helper = `%number.optionalPredicate.${lowerer.widthHelpers.size}`;
|
|
61
|
+
lowerer.widthHelpers.set(key, helper);
|
|
62
|
+
const input = varRef("value.0", widened, loc);
|
|
63
|
+
lowerer.liftedFns.push({
|
|
64
|
+
name: helper,
|
|
65
|
+
params: [{ localId: "value.0", name: "value", type: widened }],
|
|
66
|
+
returnType: BOOL,
|
|
67
|
+
locals: [{ id: "value.0", name: "value", type: widened, mutable: false }],
|
|
68
|
+
body: [
|
|
69
|
+
{
|
|
70
|
+
kind: "if",
|
|
71
|
+
cond: { kind: "unionIsTag", unionId: widened.unionId, tag: undefinedTag, negated: false, value: input, type: BOOL, loc },
|
|
72
|
+
then: [{ kind: "return", value: boolLit(false, loc), loc }],
|
|
73
|
+
else_: null,
|
|
74
|
+
loc,
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
kind: "return",
|
|
78
|
+
value: {
|
|
79
|
+
kind: "libCall",
|
|
80
|
+
fn,
|
|
81
|
+
args: [{ kind: "unionNarrow", unionId: widened.unionId, tag: numberTag, value: input, type: F64, loc }],
|
|
82
|
+
type: BOOL,
|
|
83
|
+
loc,
|
|
84
|
+
},
|
|
85
|
+
loc,
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
loc,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
return { kind: "call", callee: helper, args: [value], type: BOOL, loc };
|
|
92
|
+
}
|
|
25
93
|
/** Lower an optional builtin argument whose checker type is statically
|
|
26
94
|
* undefined/void. The returned expression exists only to preserve effects;
|
|
27
95
|
* callers replace its value with the API default. */
|
|
@@ -3181,7 +3249,8 @@ export function lowerStringDecoderMethodCall(lowerer, call, access) {
|
|
|
3181
3249
|
const receiver = lowerer.lowerExpr(access.expression);
|
|
3182
3250
|
if (receiver.type.kind !== "record")
|
|
3183
3251
|
lowerer.badType(access.expression, lowerer.typeOf(access.expression));
|
|
3184
|
-
|
|
3252
|
+
let chunk = lowerBuiltinValuePreservingUndefined(lowerer, call.arguments[0]);
|
|
3253
|
+
chunk = checkedOptionalBuiltinArm(lowerer, chunk, BYTES_U8) ?? chunk;
|
|
3185
3254
|
if (!(chunk.type.kind === "bytes" && chunk.type.elem === "u8")) {
|
|
3186
3255
|
lowerer.noLowering(`StringDecoder.write of '${lowerer.fmt(chunk.type)}' data`, call.arguments[0], "Buffer/Uint8Array chunks decode (narrow unions first)");
|
|
3187
3256
|
}
|
|
@@ -3314,6 +3383,9 @@ export function lowerJsonMethodCall(lowerer, call, access) {
|
|
|
3314
3383
|
const indent = stringifySpaceIndent(lowerer, call);
|
|
3315
3384
|
const argNode = call.arguments[0];
|
|
3316
3385
|
const value = lowerer.lowerExpr(argNode);
|
|
3386
|
+
const optionalString = lowerOptionalStringifyRoot(lowerer, value, indent, loc);
|
|
3387
|
+
if (optionalString)
|
|
3388
|
+
return optionalString;
|
|
3317
3389
|
// An ISLAND value (`JSON.stringify(err)` on a package handle — the
|
|
3318
3390
|
// island error-inspection idiom): the ENGINE's own JSON.stringify
|
|
3319
3391
|
// runs, so key order, nesting, toJSON, and getters match Node by
|
|
@@ -3343,7 +3415,7 @@ export function lowerJsonMethodCall(lowerer, call, access) {
|
|
|
3343
3415
|
// types the return `string`, so no static consumer can tell), and a
|
|
3344
3416
|
// runtime handle inside the tree throws (Node would walk its own
|
|
3345
3417
|
// enumerable props, which the handle does not model).
|
|
3346
|
-
if (!lowerer.
|
|
3418
|
+
if (!lowerer.jsonStringifySafe(value.type) && value.type.kind !== "dyn") {
|
|
3347
3419
|
// Bare undefined-armed unions get their own wording: Node's
|
|
3348
3420
|
// stringify of bare undefined is not a string at all — per-type
|
|
3349
3421
|
// serialization cannot match that exactly, so the fence is
|
|
@@ -3370,6 +3442,48 @@ export function lowerJsonMethodCall(lowerer, call, access) {
|
|
|
3370
3442
|
}
|
|
3371
3443
|
return null; // unknown members are tsc errors before lowering
|
|
3372
3444
|
}
|
|
3445
|
+
function lowerOptionalStringifyRoot(lowerer, value, indent, loc) {
|
|
3446
|
+
const tags = optionalStringTags(lowerer, value.type);
|
|
3447
|
+
if (!tags || value.type.kind !== "union")
|
|
3448
|
+
return null;
|
|
3449
|
+
const resultT = lowerer.withUndefinedArm(STRING);
|
|
3450
|
+
const key = `json.optionalString:${value.type.unionId}:${JSON.stringify(indent)}`;
|
|
3451
|
+
let helper = lowerer.widthHelpers.get(key);
|
|
3452
|
+
if (!helper) {
|
|
3453
|
+
helper = `%json.optionalString.${lowerer.widthHelpers.size}`;
|
|
3454
|
+
lowerer.widthHelpers.set(key, helper);
|
|
3455
|
+
const input = varRef("value.0", value.type, loc);
|
|
3456
|
+
const serialized = {
|
|
3457
|
+
kind: "jsonStringify",
|
|
3458
|
+
value: { kind: "unionNarrow", unionId: value.type.unionId, tag: tags.stringTag, value: input, type: STRING, loc },
|
|
3459
|
+
type: STRING,
|
|
3460
|
+
loc,
|
|
3461
|
+
};
|
|
3462
|
+
if (indent !== "")
|
|
3463
|
+
serialized.indent = indent;
|
|
3464
|
+
const missing = lowerer.wrappedUndefined(resultT, loc);
|
|
3465
|
+
if (!missing)
|
|
3466
|
+
throw new InternalCompilerError("optional JSON.stringify result needs an undefined arm");
|
|
3467
|
+
lowerer.liftedFns.push({
|
|
3468
|
+
name: helper,
|
|
3469
|
+
params: [{ localId: "value.0", name: "value", type: value.type }],
|
|
3470
|
+
returnType: resultT,
|
|
3471
|
+
locals: [{ id: "value.0", name: "value", type: value.type, mutable: false }],
|
|
3472
|
+
body: [
|
|
3473
|
+
{
|
|
3474
|
+
kind: "if",
|
|
3475
|
+
cond: { kind: "unionIsTag", unionId: value.type.unionId, tag: tags.undefinedTag, negated: false, value: input, type: BOOL, loc },
|
|
3476
|
+
then: [{ kind: "return", value: missing, loc }],
|
|
3477
|
+
else_: null,
|
|
3478
|
+
loc,
|
|
3479
|
+
},
|
|
3480
|
+
{ kind: "return", value: lowerer.coerceToExpected(serialized, resultT), loc },
|
|
3481
|
+
],
|
|
3482
|
+
loc,
|
|
3483
|
+
});
|
|
3484
|
+
}
|
|
3485
|
+
return { kind: "call", callee: helper, args: [value], type: resultT, loc };
|
|
3486
|
+
}
|
|
3373
3487
|
/** The compile-time indent of a `JSON.stringify(v[, replacer[, space]])`
|
|
3374
3488
|
* call, with Node's space rules applied: a number clamps to 0–10 spaces
|
|
3375
3489
|
* (ToInteger truncation), a string truncates to its first 10 code units,
|
|
@@ -3652,6 +3766,9 @@ export function lowerSearchParamsNew(lowerer, expr, loc) {
|
|
|
3652
3766
|
if (init.type.kind === "string") {
|
|
3653
3767
|
return { kind: "libCall", fn: "sp.parse", args: [init], type: SEARCH_PARAMS_T, loc };
|
|
3654
3768
|
}
|
|
3769
|
+
const optionalString = lowerOptionalStringSearchParams(lowerer, init, loc);
|
|
3770
|
+
if (optionalString)
|
|
3771
|
+
return optionalString;
|
|
3655
3772
|
if (init.type.kind === "searchParams") {
|
|
3656
3773
|
// Node ITERATES the source list — the copy is a snapshot, not a
|
|
3657
3774
|
// live alias (mutating the copy never touches the source or its
|
|
@@ -3666,6 +3783,46 @@ export function lowerSearchParamsNew(lowerer, expr, loc) {
|
|
|
3666
3783
|
}
|
|
3667
3784
|
lowerer.unsupported("SC1090", arg, `URLSearchParams from '${lowerer.fmt(init.type)}' inits (a string, a string[][], another URLSearchParams, or an inline { key: value } literal — narrow unions first)`);
|
|
3668
3785
|
}
|
|
3786
|
+
function lowerOptionalStringSearchParams(lowerer, init, loc) {
|
|
3787
|
+
const tags = optionalStringTags(lowerer, init.type);
|
|
3788
|
+
if (!tags || init.type.kind !== "union")
|
|
3789
|
+
return null;
|
|
3790
|
+
const key = `sp.optionalString:${init.type.unionId}`;
|
|
3791
|
+
let helper = lowerer.widthHelpers.get(key);
|
|
3792
|
+
if (!helper) {
|
|
3793
|
+
helper = `%sp.optionalString.${lowerer.widthHelpers.size}`;
|
|
3794
|
+
lowerer.widthHelpers.set(key, helper);
|
|
3795
|
+
const value = varRef("init.0", init.type, loc);
|
|
3796
|
+
lowerer.liftedFns.push({
|
|
3797
|
+
name: helper,
|
|
3798
|
+
params: [{ localId: "init.0", name: "init", type: init.type }],
|
|
3799
|
+
returnType: SEARCH_PARAMS_T,
|
|
3800
|
+
locals: [{ id: "init.0", name: "init", type: init.type, mutable: false }],
|
|
3801
|
+
body: [
|
|
3802
|
+
{
|
|
3803
|
+
kind: "if",
|
|
3804
|
+
cond: { kind: "unionIsTag", unionId: init.type.unionId, tag: tags.undefinedTag, negated: false, value, type: BOOL, loc },
|
|
3805
|
+
then: [{ kind: "return", value: { kind: "libCall", fn: "sp.new", args: [], type: SEARCH_PARAMS_T, loc }, loc }],
|
|
3806
|
+
else_: null,
|
|
3807
|
+
loc,
|
|
3808
|
+
},
|
|
3809
|
+
{
|
|
3810
|
+
kind: "return",
|
|
3811
|
+
value: {
|
|
3812
|
+
kind: "libCall",
|
|
3813
|
+
fn: "sp.parse",
|
|
3814
|
+
args: [{ kind: "unionNarrow", unionId: init.type.unionId, tag: tags.stringTag, value, type: STRING, loc }],
|
|
3815
|
+
type: SEARCH_PARAMS_T,
|
|
3816
|
+
loc,
|
|
3817
|
+
},
|
|
3818
|
+
loc,
|
|
3819
|
+
},
|
|
3820
|
+
],
|
|
3821
|
+
loc,
|
|
3822
|
+
});
|
|
3823
|
+
}
|
|
3824
|
+
return { kind: "call", callee: helper, args: [init], type: SEARCH_PARAMS_T, loc };
|
|
3825
|
+
}
|
|
3669
3826
|
/** Method calls on URLSearchParams-typed receivers — the WHATWG list
|
|
3670
3827
|
* surface over the runtime's decoded pairs. get answers `string | null`
|
|
3671
3828
|
* (the checker's own union; the runtime's +1-or-NULL builds the arms);
|
|
@@ -5874,7 +6031,7 @@ export function lowerNumberStaticCall(lowerer, call, access) {
|
|
|
5874
6031
|
lowerer.noLowering(`Number.${member} with ${call.arguments.length} arguments`, call);
|
|
5875
6032
|
}
|
|
5876
6033
|
const argNode = call.arguments[0];
|
|
5877
|
-
const arg = lowerer
|
|
6034
|
+
const arg = lowerBuiltinValuePreservingUndefined(lowerer, argNode);
|
|
5878
6035
|
// An ISLAND ('any'-typed) argument evaluates the predicate in the
|
|
5879
6036
|
// engine — the statics never coerce, so the engine's answer over the
|
|
5880
6037
|
// real value is JS-exact where a static fence would refuse the
|
|
@@ -5886,6 +6043,9 @@ export function lowerNumberStaticCall(lowerer, call, access) {
|
|
|
5886
6043
|
const raw = { kind: "jsOp", op: "callMethod", name: member, args: [numberGlobal, arg], type: JSVAL, loc };
|
|
5887
6044
|
return { kind: "jsExit", value: raw, type: BOOL, loc };
|
|
5888
6045
|
}
|
|
6046
|
+
const optional = lowerOptionalNumberPredicate(lowerer, arg, fn, loc);
|
|
6047
|
+
if (optional)
|
|
6048
|
+
return optional;
|
|
5889
6049
|
if (arg.type.kind !== "f64") {
|
|
5890
6050
|
lowerer.noLowering(`Number.${member} of '${lowerer.fmt(arg.type)}' values`, argNode, "the Number statics never coerce — a statically non-number argument is constantly false in JS (narrow unions first, or write the constant)");
|
|
5891
6051
|
}
|