@scriptc/compiler 0.0.23 → 0.0.24
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 +100 -11
- package/dist/backend/cc.d.ts +13 -0
- package/dist/backend/cc.js +11 -0
- package/dist/backend/cc.js.map +1 -1
- package/dist/backend/emission/emit-async.d.ts +4 -0
- package/dist/backend/emission/emit-async.js +31 -1
- package/dist/backend/emission/emit-async.js.map +1 -1
- package/dist/backend/emission/emit-exprs.js +147 -14
- package/dist/backend/emission/emit-exprs.js.map +1 -1
- package/dist/backend/emission/emit-shapes.js +1 -0
- package/dist/backend/emission/emit-shapes.js.map +1 -1
- package/dist/backend/emission/emit-stmts.js +24 -5
- package/dist/backend/emission/emit-stmts.js.map +1 -1
- package/dist/backend/emission/emit-types.js +10 -0
- package/dist/backend/emission/emit-types.js.map +1 -1
- package/dist/backend/emission/emitter.d.ts +10 -2
- package/dist/backend/emission/emitter.js +49 -30
- package/dist/backend/emission/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.js +284 -25
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/shapes.js +9 -1
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/mangle.d.ts +3 -0
- package/dist/backend/mangle.js +5 -0
- package/dist/backend/mangle.js.map +1 -1
- package/dist/frontend/lowering/lower-builtins.d.ts +14 -9
- package/dist/frontend/lowering/lower-builtins.js +737 -62
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +2 -1
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-containers.d.ts +2 -1
- package/dist/frontend/lowering/lower-containers.js +99 -32
- package/dist/frontend/lowering/lower-containers.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.js +53 -2
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.js +59 -1
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +5 -0
- package/dist/frontend/lowering/lower-server.js +1 -1
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +6 -2
- package/dist/frontend/lowering/lower-stmts.js +45 -10
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +2 -2
- package/dist/frontend/lowering/lowerer.js +11 -6
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/surfaces.js +65 -13
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/types.d.ts +3 -0
- package/dist/frontend/types.js +78 -0
- package/dist/frontend/types.js.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/ir/integer-loops.d.ts +23 -0
- package/dist/ir/integer-loops.js +82 -0
- package/dist/ir/integer-loops.js.map +1 -0
- package/dist/ir/nodes.d.ts +84 -21
- package/dist/ir/nodes.js +84 -1
- package/dist/ir/nodes.js.map +1 -1
- package/dist/ir/validate.js +92 -18
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/fence-eval.js +4 -3
- package/dist/library/fence-eval.js.map +1 -1
- package/package.json +2 -2
- package/surface-manifest.json +50 -2
|
@@ -21,7 +21,7 @@ import { lowerSocketInstanceOf, lowerTlsRootCertificates } from "./lower-server.
|
|
|
21
21
|
import { findGenericMethodOn, lowerStaticFieldRead } from "./lower-classes.js";
|
|
22
22
|
import { bindingNeverReassigned, implicitMonoFile, lowerTaggedTemplate, nullishGenericBindingUnitOf, objLitGenericFnInfoOf, objLitGenericFnNodeOf, requireObjLitGenericReceiver } from "./lower-calls.js";
|
|
23
23
|
import { mixinFnOfCallee } from "./lower-mixins.js";
|
|
24
|
-
import { isConstAssertionTypeNode, isGenericCallableMemberType, underConstAssertion, unitOnlyUnion } from "../types.js";
|
|
24
|
+
import { isConstAssertionTypeNode, isGenericCallableMemberType, isParseArgsDynTypeName, underConstAssertion, unitOnlyUnion } from "../types.js";
|
|
25
25
|
import { lowerYield } from "./lower-generators.js";
|
|
26
26
|
import { lowerStreamProperty, lowerStreamStateProperty, streamSidesOf } from "./lower-stream.js";
|
|
27
27
|
/** A template piece's RAW text (String.raw's contract: escapes stay
|
|
@@ -63,6 +63,30 @@ export function abstractPropertyDeclOf(L, expr) {
|
|
|
63
63
|
.some((d) => ts.isPropertyDeclaration(d) &&
|
|
64
64
|
ts.getModifiers(d)?.some((m) => m.kind === ts.SyntaxKind.AbstractKeyword) === true);
|
|
65
65
|
}
|
|
66
|
+
/** A field declared by node:util's parseArgs checked-dynamic type family.
|
|
67
|
+
* Narrowing a ParseArgsToken exposes one anonymous union arm, so its alias
|
|
68
|
+
* identity no longer reaches mapType; declaration ancestry is the stable
|
|
69
|
+
* provenance check. */
|
|
70
|
+
function isParseArgsDynProperty(L, expr) {
|
|
71
|
+
const sym = L.checker.getSymbolAtLocation(expr.name);
|
|
72
|
+
if (!sym)
|
|
73
|
+
return false;
|
|
74
|
+
return L.checker.declarationsOf(sym).some((d) => {
|
|
75
|
+
if (!L.isStdlibFile(d.getSourceFile()))
|
|
76
|
+
return false;
|
|
77
|
+
let inParseArgsType = false;
|
|
78
|
+
for (let node = d.parent; node; node = node.parent) {
|
|
79
|
+
if ((ts.isTypeAliasDeclaration(node) || ts.isInterfaceDeclaration(node)) &&
|
|
80
|
+
isParseArgsDynTypeName(node.name.text)) {
|
|
81
|
+
inParseArgsType = true;
|
|
82
|
+
}
|
|
83
|
+
if (ts.isModuleDeclaration(node) && ts.isStringLiteral(node.name)) {
|
|
84
|
+
return inParseArgsType && (node.name.text === "util" || node.name.text === "node:util");
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return false;
|
|
88
|
+
});
|
|
89
|
+
}
|
|
66
90
|
export function lowerExpr(L, expr) {
|
|
67
91
|
if (lowerExprDepth >= LOWER_EXPR_MAX_DEPTH) {
|
|
68
92
|
L.unsupported("SC1090", expr, `expressions nested deeper than ${LOWER_EXPR_MAX_DEPTH} levels`);
|
|
@@ -1600,6 +1624,32 @@ function lowerExprInner(L, expr) {
|
|
|
1600
1624
|
return nsUndefRead(L, ambientRoot.text, expr, t);
|
|
1601
1625
|
}
|
|
1602
1626
|
}
|
|
1627
|
+
// parseArgs results/tokens live in the checked-dynamic tree. A token
|
|
1628
|
+
// discriminant check narrows its checker type to one anonymous arm,
|
|
1629
|
+
// whose ambient property symbols would otherwise hit SC2020 before
|
|
1630
|
+
// the generic dyn receiver path below. Provenance is limited to the
|
|
1631
|
+
// node:util parseArgs family; every other stdlib member keeps its
|
|
1632
|
+
// ordinary surface fence.
|
|
1633
|
+
if (isParseArgsDynProperty(L, expr)) {
|
|
1634
|
+
const recv = L.lowerExpr(expr.expression);
|
|
1635
|
+
if (recv.type.kind === "dyn") {
|
|
1636
|
+
const key = {
|
|
1637
|
+
kind: "strLit",
|
|
1638
|
+
value: expr.name.text,
|
|
1639
|
+
type: STRING,
|
|
1640
|
+
loc: locOf(expr.name),
|
|
1641
|
+
};
|
|
1642
|
+
const opt = chainGuardedByQuestionDot(expr.expression);
|
|
1643
|
+
return L.maybeNarrow({
|
|
1644
|
+
kind: "dynKeyGet",
|
|
1645
|
+
key,
|
|
1646
|
+
...(opt ? { optional: true } : {}),
|
|
1647
|
+
value: recv,
|
|
1648
|
+
type: DYN,
|
|
1649
|
+
loc,
|
|
1650
|
+
}, expr);
|
|
1651
|
+
}
|
|
1652
|
+
}
|
|
1603
1653
|
// A member read through a NULLISH generic binding (`const i: I<A &
|
|
1604
1654
|
// B> = null as any; const _i: I<A> = i.something` — the receiver
|
|
1605
1655
|
// provably holds null/undefined forever): the read throws Node's
|
|
@@ -3005,7 +3055,7 @@ export function lowerIntrinsicProperty(L, expr) {
|
|
|
3005
3055
|
if (name === "isFile" || name === "isDirectory") {
|
|
3006
3056
|
L.unsupported("SC1090", expr, `Stats methods as values (call '${name}' directly)`);
|
|
3007
3057
|
}
|
|
3008
|
-
L.noLowering(`Stats.${name}`, expr, "isFile(), isDirectory(),
|
|
3058
|
+
L.noLowering(`Stats.${name}`, expr, "isFile(), isDirectory(), isSymbolicLink(), size, blocks, nlink, atimeMs, and mtimeMs are the supported Stats members", L.checker.getSymbolAtLocation(expr.name));
|
|
3009
3059
|
}
|
|
3010
3060
|
if (kind === "date") {
|
|
3011
3061
|
const methods = new Set([
|
|
@@ -7291,6 +7341,7 @@ function typeofAnswer(arm) {
|
|
|
7291
7341
|
case "url":
|
|
7292
7342
|
case "searchParams":
|
|
7293
7343
|
case "stats":
|
|
7344
|
+
case "fileHandle":
|
|
7294
7345
|
case "spawnRes":
|
|
7295
7346
|
case "child":
|
|
7296
7347
|
case "netServer":
|