@scriptc/compiler 0.0.17 → 0.0.19
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 +4 -4
- package/dist/backend/cc.d.ts +5 -0
- package/dist/backend/cc.js +2 -0
- package/dist/backend/cc.js.map +1 -1
- package/dist/backend/emission/emit-async.js +35 -2
- package/dist/backend/emission/emit-async.js.map +1 -1
- package/dist/backend/emission/emit-exprs.js +40 -4
- package/dist/backend/emission/emit-exprs.js.map +1 -1
- package/dist/backend/emission/emitter.js +69 -11
- package/dist/backend/emission/emitter.js.map +1 -1
- package/dist/backend/emission/may-throw.d.ts +3 -3
- package/dist/backend/emission/may-throw.js +15 -4
- package/dist/backend/emission/may-throw.js.map +1 -1
- package/dist/backend/llvm/emitter.js +199 -21
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/frontend/lib-contract.d.ts +1 -0
- package/dist/frontend/lib-contract.js +2 -2
- package/dist/frontend/lib-contract.js.map +1 -1
- package/dist/frontend/lowering/lower-builtins.js +4 -7
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +17 -9
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-containers.d.ts +22 -17
- package/dist/frontend/lowering/lower-containers.js +628 -51
- package/dist/frontend/lowering/lower-containers.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.js +19 -1
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-island.js +55 -7
- package/dist/frontend/lowering/lower-island.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.js +144 -10
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +8 -0
- package/dist/frontend/lowering/lower-stmts.js +408 -21
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +38 -0
- package/dist/frontend/lowering/lowerer.js +149 -2
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/surfaces.js +4 -0
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/index.js +97 -21
- package/dist/index.js.map +1 -1
- package/dist/ir/nodes.d.ts +46 -12
- package/dist/ir/nodes.js +41 -0
- package/dist/ir/nodes.js.map +1 -1
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +1 -1
- package/dist/ir/validate.js +98 -39
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/int-infer.d.ts +6 -1
- package/dist/library/int-infer.js +306 -53
- package/dist/library/int-infer.js.map +1 -1
- package/dist/library/int-infer.test.js +271 -1
- package/dist/library/int-infer.test.js.map +1 -1
- package/dist/library/profile.d.ts +6 -5
- package/dist/library/profile.js.map +1 -1
- package/dist/library/sidecar-validate.js +4 -1
- package/dist/library/sidecar-validate.js.map +1 -1
- package/dist/library/sidecar.d.ts +32 -4
- package/dist/library/sidecar.js +264 -47
- package/dist/library/sidecar.js.map +1 -1
- package/package.json +2 -2
- package/surface-manifest.json +25 -1
|
@@ -4453,19 +4453,27 @@ export function lowerPrimitiveProtoCall(L, call, recv, name, memberSym) {
|
|
|
4453
4453
|
if (name === "toFixed" && recvKind === "f64" && call.arguments.length === 1) {
|
|
4454
4454
|
const operand = L.lowerExpr(recv);
|
|
4455
4455
|
let digits = L.lowerExpr(call.arguments[0]);
|
|
4456
|
-
// The optional parameter also admits undefined.
|
|
4457
|
-
//
|
|
4458
|
-
// optional number
|
|
4459
|
-
//
|
|
4456
|
+
// The optional parameter also admits undefined. Exact unit values
|
|
4457
|
+
// become the default 0 after preserving any evaluation effects; an
|
|
4458
|
+
// optional number selects 0 at runtime through the same narrowed
|
|
4459
|
+
// nullish IR used by `digits ?? 0`.
|
|
4460
4460
|
const zero = { kind: "numLit", value: 0, type: F64, loc: digits.loc };
|
|
4461
|
-
|
|
4462
|
-
|
|
4463
|
-
|
|
4461
|
+
const defaultUnitDigits = (value) => droppableStatic(value)
|
|
4462
|
+
? zero
|
|
4463
|
+
: {
|
|
4464
|
+
kind: "seqExpr",
|
|
4465
|
+
stmts: [{ kind: "exprStmt", expr: value, loc: value.loc }],
|
|
4466
|
+
result: zero,
|
|
4467
|
+
type: F64,
|
|
4468
|
+
loc: value.loc,
|
|
4469
|
+
};
|
|
4470
|
+
if (digits.type.kind === "undefinedT" || digits.type.kind === "void") {
|
|
4471
|
+
digits = defaultUnitDigits(digits);
|
|
4464
4472
|
}
|
|
4465
4473
|
else if (digits.type.kind === "union") {
|
|
4466
4474
|
const def = L.unions.get(digits.type.unionId);
|
|
4467
|
-
if (def?.arms.every(isUnitType)
|
|
4468
|
-
digits =
|
|
4475
|
+
if (def?.arms.every(isUnitType)) {
|
|
4476
|
+
digits = defaultUnitDigits(digits);
|
|
4469
4477
|
}
|
|
4470
4478
|
else if (def?.arms.length === 2 &&
|
|
4471
4479
|
def.arms.some((arm) => arm.kind === "f64") &&
|