@scriptc/compiler 0.1.4 → 0.1.5
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 +75 -11
- package/dist/backend/c/c-emitter.d.ts +5 -1
- package/dist/backend/c/c-emitter.js +22 -9
- package/dist/backend/c/c-emitter.js.map +1 -1
- package/dist/backend/c/exprs.d.ts +2 -2
- package/dist/backend/c/exprs.js +264 -21
- package/dist/backend/c/exprs.js.map +1 -1
- package/dist/backend/c/stmts.js +5 -3
- package/dist/backend/c/stmts.js.map +1 -1
- package/dist/backend/c/types.d.ts +2 -3
- package/dist/backend/c/types.js +8 -1
- package/dist/backend/c/types.js.map +1 -1
- package/dist/backend/c/walkers.js +1 -1
- package/dist/backend/c/walkers.js.map +1 -1
- package/dist/backend/link-plan.d.ts +1 -0
- package/dist/backend/link-plan.js +2 -1
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/llvm/dyn.js +1 -1
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.js +25 -9
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +1 -2
- package/dist/backend/llvm/expr-bytes.js +22 -17
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-containers.d.ts +1 -0
- package/dist/backend/llvm/expr-containers.js +32 -4
- package/dist/backend/llvm/expr-containers.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +6 -2
- package/dist/backend/llvm/expr-primitives.js +22 -7
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +12 -0
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +53 -10
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +64 -0
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/native-toolchain.d.ts +2 -0
- package/dist/backend/native-toolchain.js +2 -1
- package/dist/backend/native-toolchain.js.map +1 -1
- package/dist/backend/targets.d.ts +3 -0
- package/dist/backend/targets.js +13 -0
- package/dist/backend/targets.js.map +1 -1
- package/dist/coverage/surface-manifest.js +6 -4
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +2 -0
- package/dist/executable/executable-cache.js +3 -1
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +3 -3
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/frontend/lowering/containers/bytes.d.ts +1 -1
- package/dist/frontend/lowering/containers/bytes.js +6 -5
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/containers/string-and-regexp.d.ts +7 -6
- package/dist/frontend/lowering/containers/string-and-regexp.js +237 -28
- package/dist/frontend/lowering/containers/string-and-regexp.js.map +1 -1
- package/dist/frontend/lowering/expressions/object-literals.js +8 -0
- package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
- package/dist/frontend/lowering/lower-builtins.d.ts +4 -5
- package/dist/frontend/lowering/lower-builtins.js +18 -10
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +3 -2
- package/dist/frontend/lowering/lower-calls.js +265 -88
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.js +2 -2
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-containers.d.ts +7 -9
- package/dist/frontend/lowering/lower-containers.js +143 -51
- package/dist/frontend/lowering/lower-containers.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +12 -0
- package/dist/frontend/lowering/lower-exprs.js +128 -10
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-island.js +17 -6
- package/dist/frontend/lowering/lower-island.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +2 -4
- package/dist/frontend/lowering/lower-server.js +288 -32
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +4 -4
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lowerer.js +37 -2
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/optional-arguments.d.ts +9 -1
- package/dist/frontend/lowering/optional-arguments.js +67 -1
- package/dist/frontend/lowering/optional-arguments.js.map +1 -1
- package/dist/frontend/lowering/pairs-snapshot.d.ts +3 -1
- package/dist/frontend/lowering/pairs-snapshot.js +12 -4
- package/dist/frontend/lowering/pairs-snapshot.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +8 -14
- package/dist/frontend/lowering/surfaces.js +37 -27
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/npm-static-prune.d.ts +6 -0
- package/dist/frontend/npm-static-prune.js +203 -0
- package/dist/frontend/npm-static-prune.js.map +1 -0
- package/dist/frontend/npm-static-prune.test.d.ts +1 -0
- package/dist/frontend/npm-static-prune.test.js +48 -0
- package/dist/frontend/npm-static-prune.test.js.map +1 -0
- package/dist/frontend/npm.js +7 -6
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/program.js +15 -4
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/provenance.js +8 -3
- package/dist/frontend/provenance.js.map +1 -1
- package/dist/frontend/type-mapper.js +16 -5
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +13 -41
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.d.ts +5 -3
- package/dist/ir/analysis.js +25 -11
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/analysis.test.js +50 -2
- package/dist/ir/analysis.test.js.map +1 -1
- package/dist/ir/constant-tables.d.ts +17 -0
- package/dist/ir/constant-tables.js +99 -0
- package/dist/ir/constant-tables.js.map +1 -0
- package/dist/ir/constant-tables.test.d.ts +1 -0
- package/dist/ir/constant-tables.test.js +78 -0
- package/dist/ir/constant-tables.test.js.map +1 -0
- package/dist/ir/integer-ranges.d.ts +13 -0
- package/dist/ir/integer-ranges.js +122 -0
- package/dist/ir/integer-ranges.js.map +1 -0
- package/dist/ir/integer-ranges.test.d.ts +1 -0
- package/dist/ir/integer-ranges.test.js +63 -0
- package/dist/ir/integer-ranges.test.js.map +1 -0
- package/dist/ir/ir.d.ts +42 -34
- package/dist/ir/ir.js +7 -1
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +6 -0
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/scalar-records.d.ts +8 -0
- package/dist/ir/scalar-records.js +216 -0
- package/dist/ir/scalar-records.js.map +1 -0
- package/dist/ir/scalar-records.test.d.ts +1 -0
- package/dist/ir/scalar-records.test.js +142 -0
- package/dist/ir/scalar-records.test.js.map +1 -0
- package/dist/ir/validate.js +92 -8
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.d.ts +1 -0
- package/dist/ir/validate.test.js +31 -0
- package/dist/ir/validate.test.js.map +1 -0
- package/dist/library/cache-primitives.d.ts +1 -1
- package/dist/library/cache-primitives.js +3 -3
- package/dist/library/cache-primitives.js.map +1 -1
- package/dist/library/fence-eval.js +11 -4
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/library-cache.js +0 -1
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +3 -3
- package/dist/library/library-cache.test.js.map +1 -1
- package/package.json +17 -17
- package/surface-manifest.json +55 -42
|
@@ -616,6 +616,27 @@ function jsFallbackFunctionType(lowerer, node, t) {
|
|
|
616
616
|
const ret = retT.flags & ts.TypeFlags.Void ? VOID : lowerer.mapTypeOf(retT) ?? DYN;
|
|
617
617
|
return { kind: "func", params, ret };
|
|
618
618
|
}
|
|
619
|
+
/** A JavaScript `arguments` reader has the spelled parameters plus a hidden
|
|
620
|
+
* array of all supplied arguments in the native ABI. Recover that ABI from
|
|
621
|
+
* the implementation when the function flows through a value binding. */
|
|
622
|
+
function jsArgumentsFunctionType(lowerer, t) {
|
|
623
|
+
if (!(t.flags & ts.TypeFlags.Object))
|
|
624
|
+
return null;
|
|
625
|
+
const sigs = lowerer.checker.getCallSignatures(t);
|
|
626
|
+
if (sigs.length !== 1 || sigs[0].getTypeParameters().length !== 0 || lowerer.checker.getConstructSignatures(t).length !== 0 || lowerer.checker.getPropertiesOfType(t).length !== 0)
|
|
627
|
+
return null;
|
|
628
|
+
const decl = lowerer.checker.signatureDeclaration(sigs[0]);
|
|
629
|
+
if (decl === undefined || !(ts.isFunctionDeclaration(decl) || ts.isFunctionExpression(decl)) ||
|
|
630
|
+
!isJsSourceFile(decl.getSourceFile()) || !isNodeEsmFile(decl.getSourceFile()) ||
|
|
631
|
+
decl.parameters.length === 0 ||
|
|
632
|
+
decl.parameters.some((p) => p.dotDotDotToken !== undefined) ||
|
|
633
|
+
!bodyReadsArguments(decl))
|
|
634
|
+
return null;
|
|
635
|
+
const shapes = paramShapes(lowerer, decl.parameters);
|
|
636
|
+
const retType = lowerer.checker.getReturnTypeOfSignature(sigs[0]);
|
|
637
|
+
const ret = retType.flags & ts.TypeFlags.Void ? VOID : lowerer.mapTypeOf(retType) ?? DYN;
|
|
638
|
+
return funcTypeFromParamShapes([...shapes, { type: DYN, mode: "arguments" }], ret);
|
|
639
|
+
}
|
|
619
640
|
/** The one call signature of a PURE function type — single signature, no
|
|
620
641
|
* properties, no construct signatures, no type parameters, no rest params
|
|
621
642
|
* (declared or synthesized from an `arguments` read). Null for every
|
|
@@ -1003,7 +1024,7 @@ export class Lowerer {
|
|
|
1003
1024
|
if (sig) {
|
|
1004
1025
|
return {
|
|
1005
1026
|
...fallback,
|
|
1006
|
-
params: sig.params.filter((p) => p.mode !== "dynRest").map((p) => p.type),
|
|
1027
|
+
params: sig.params.filter((p) => p.mode !== "dynRest" && p.mode !== "arguments").map((p) => p.type),
|
|
1007
1028
|
ret: sig.returnType,
|
|
1008
1029
|
};
|
|
1009
1030
|
}
|
|
@@ -2629,6 +2650,10 @@ export class Lowerer {
|
|
|
2629
2650
|
return true;
|
|
2630
2651
|
if (ts.isCallExpression(e) && this.runtimeOptionalReduceTypes.has(e))
|
|
2631
2652
|
return true;
|
|
2653
|
+
if (ts.isCallExpression(e) && e.arguments.length === 0 &&
|
|
2654
|
+
ts.isPropertyAccessExpression(e.expression) &&
|
|
2655
|
+
e.expression.name.text === "stringify" && this.isStdlibGlobal(e.expression.expression, "JSON"))
|
|
2656
|
+
return true;
|
|
2632
2657
|
if (ts.isCallExpression(e) &&
|
|
2633
2658
|
ts.isPropertyAccessExpression(e.expression) &&
|
|
2634
2659
|
(e.expression.name.text === "pop" || e.expression.name.text === "shift") &&
|
|
@@ -4364,7 +4389,8 @@ export class Lowerer {
|
|
|
4364
4389
|
/** mapType with this Lowerer's registries and (while a generic instance
|
|
4365
4390
|
* body lowers) type-parameter bindings threaded through. */
|
|
4366
4391
|
mapTypeOf(t) {
|
|
4367
|
-
|
|
4392
|
+
const mapped = mapType(t, this.typeCtx);
|
|
4393
|
+
return mapped?.kind === "func" ? jsArgumentsFunctionType(this, t) ?? mapped : mapped;
|
|
4368
4394
|
}
|
|
4369
4395
|
/** The one position where a contextual UNION must not be adopted over the
|
|
4370
4396
|
* expression's own: the LEFT operand of `&&`, `||`, or `??`. Adopting a
|
|
@@ -4524,6 +4550,9 @@ export class Lowerer {
|
|
|
4524
4550
|
// answers instead.
|
|
4525
4551
|
const mapped = neverTaintedJsType(this, node, t) ? null : this.mapTypeOf(t);
|
|
4526
4552
|
if (!mapped) {
|
|
4553
|
+
const argumentsType = jsArgumentsFunctionType(this, t);
|
|
4554
|
+
if (argumentsType !== null)
|
|
4555
|
+
return argumentsType;
|
|
4527
4556
|
// The checked-dynamic declaration fallback (dynFallbackType): a
|
|
4528
4557
|
// JAVASCRIPT binding of any inference residue, or a TypeScript
|
|
4529
4558
|
// binding of genuine checker-`any`, becomes the checked-dynamic
|
|
@@ -9491,6 +9520,12 @@ export class Lowerer {
|
|
|
9491
9520
|
if (bi.module === "module" && bi.member === "builtinModules") {
|
|
9492
9521
|
return builtinModulesArrayLit(loc);
|
|
9493
9522
|
}
|
|
9523
|
+
if (bi.module === "http" && bi.member === "METHODS") {
|
|
9524
|
+
return { kind: "libCall", fn: "http.methods", args: [], type: arrayOf(STRING), loc };
|
|
9525
|
+
}
|
|
9526
|
+
if (bi.module === "http" && bi.member === "STATUS_CODES") {
|
|
9527
|
+
return { kind: "libCall", fn: "http.statusCodes", args: [], type: DYN, loc };
|
|
9528
|
+
}
|
|
9494
9529
|
// tls.rootCertificates through the namespace: the same runtime-valued
|
|
9495
9530
|
// constant the named-import read lowers to.
|
|
9496
9531
|
{
|