@scriptc/compiler 0.1.4 → 0.1.6
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 +298 -27
- 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 +58 -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 +20 -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-process.js +4 -3
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +65 -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 +12 -5
- 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/array-indexed-mutation.d.ts +8 -0
- package/dist/frontend/lowering/array-indexed-mutation.js +176 -0
- package/dist/frontend/lowering/array-indexed-mutation.js.map +1 -0
- 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 +14 -6
- package/dist/frontend/lowering/containers/string-and-regexp.js +420 -34
- 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/indexed-comparison.d.ts +6 -0
- package/dist/frontend/lowering/indexed-comparison.js +30 -0
- package/dist/frontend/lowering/indexed-comparison.js.map +1 -0
- package/dist/frontend/lowering/lower-builtins.d.ts +5 -6
- package/dist/frontend/lowering/lower-builtins.js +24 -16
- 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 +522 -89
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.js +5 -29
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-containers.d.ts +15 -11
- package/dist/frontend/lowering/lower-containers.js +588 -146
- 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 +145 -11
- 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 +10 -14
- package/dist/frontend/lowering/surfaces.js +50 -28
- 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 +56 -35
- package/dist/ir/ir.js +9 -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 +135 -34
- package/dist/ir/validate.js.map +1 -1
- package/dist/ir/validate.test.d.ts +1 -0
- package/dist/ir/validate.test.js +48 -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 +90 -45
|
@@ -18,7 +18,7 @@ import { builtinModuleFnOf, FS_READDIR_DOCUMENTED_OPTIONS, FS_WATCH_DOCUMENTED_O
|
|
|
18
18
|
import { lowerAbsenceProbe } from "./lower-exprs.js";
|
|
19
19
|
import { conditionalSpreadOf, lowerDynObjectLiteral } from "./expressions/object-literals.js";
|
|
20
20
|
import { isSafeToDiscard } from "./expressions/evaluation-safety.js";
|
|
21
|
-
import { defaultAfterUndefined, lowerStaticallyUndefinedArgument } from "./optional-arguments.js";
|
|
21
|
+
import { defaultAfterUndefined, lowerOptionalArgument, lowerStaticallyUndefinedArgument, lowerStringSearchArgument } from "./optional-arguments.js";
|
|
22
22
|
import { HTTP2_CONSTANTS } from "./http2-constants.js";
|
|
23
23
|
import { CRYPTO_CIPHERS, CRYPTO_CONSTANTS, CRYPTO_CURVES, CRYPTO_HASHES } from "./crypto-tables.js";
|
|
24
24
|
import { generatorMeta, timerStyleCallback } from "./lower-calls.js";
|
|
@@ -4206,6 +4206,9 @@ export function lowerJsonMethodCall(lowerer, call, access) {
|
|
|
4206
4206
|
}
|
|
4207
4207
|
if (member === "stringify") {
|
|
4208
4208
|
const indent = stringifySpaceIndent(lowerer, call);
|
|
4209
|
+
if (call.arguments.length === 0) {
|
|
4210
|
+
return lowerer.wrappedUndefined(lowerer.withUndefinedArm(STRING), loc);
|
|
4211
|
+
}
|
|
4209
4212
|
const argNode = call.arguments[0];
|
|
4210
4213
|
const value = lowerer.lowerExpr(argNode);
|
|
4211
4214
|
const optionalString = lowerOptionalStringifyRoot(lowerer, value, indent, loc);
|
|
@@ -6037,7 +6040,7 @@ export function lowerFsConstantsProperty(lowerer, expr) {
|
|
|
6037
6040
|
/** `process.stdin/stdout/stderr.isTTY` → isatty(3) on the stream's fd
|
|
6038
6041
|
* (a REAL boolean: Node's non-TTY streams expose `undefined` here — the
|
|
6039
6042
|
* documented divergence; truthiness tests, the actual usage, agree), and
|
|
6040
|
-
* `process.stdout/stderr.columns` → ioctl(TIOCGWINSZ) on the fd, with
|
|
6043
|
+
* `process.stdout/stderr.columns/rows` → ioctl(TIOCGWINSZ) on the fd, with
|
|
6041
6044
|
* Node's non-TTY answer intact: the read is `number | undefined` and a
|
|
6042
6045
|
* non-TTY (or ioctl-refusing) stream yields the undefined arm. The
|
|
6043
6046
|
* receiver match sees through parens and as-casts to the SYMBOL —
|
|
@@ -6052,7 +6055,7 @@ export function lowerProcessStreamProperty(lowerer, expr) {
|
|
|
6052
6055
|
if (expr.questionDotToken)
|
|
6053
6056
|
return null;
|
|
6054
6057
|
const member = expr.name.text;
|
|
6055
|
-
if (member !== "isTTY" && member !== "columns")
|
|
6058
|
+
if (member !== "isTTY" && member !== "columns" && member !== "rows")
|
|
6056
6059
|
return null;
|
|
6057
6060
|
let recv = expr.expression;
|
|
6058
6061
|
while (ts.isParenthesizedExpression(recv) || ts.isAsExpression(recv) || ts.isTypeAssertion(recv))
|
|
@@ -6086,17 +6089,17 @@ export function lowerProcessStreamProperty(lowerer, expr) {
|
|
|
6086
6089
|
return { kind: "libCall", fn: "process.isTTY", args: [fd], type: BOOL, loc };
|
|
6087
6090
|
}
|
|
6088
6091
|
if (stream === "stdin")
|
|
6089
|
-
return null; // no
|
|
6092
|
+
return null; // no geometry on a ReadStream — generic fences apply
|
|
6090
6093
|
const declared = lowerer.mapTypeOf(lowerer.typeOf(expr));
|
|
6091
6094
|
const want = lowerer.withUndefinedArm(F64);
|
|
6092
6095
|
// JS files skip the annotation fence: there is no annotation to fix —
|
|
6093
6096
|
// the read IS Node's `number | undefined` and lowers to exactly that
|
|
6094
6097
|
// (commander's `isTTY ? columns : undefined` help-width probes).
|
|
6095
6098
|
if ((!declared || typeKey(declared) !== typeKey(want)) && !isJsSourceFile(expr.getSourceFile())) {
|
|
6096
|
-
lowerer.noLowering(`process.${stream}
|
|
6097
|
-
`(process.${stream} as typeof process.${stream} & {
|
|
6099
|
+
lowerer.noLowering(`process.${stream}.${member} as a plain number`, expr, `on a non-TTY stream Node's .${member} is undefined — type the read to admit it: ` +
|
|
6100
|
+
`(process.${stream} as typeof process.${stream} & { ${member}?: number }).${member}`);
|
|
6098
6101
|
}
|
|
6099
|
-
return { kind: "libCall", fn: "process.columns", args: [fd], type: want, loc };
|
|
6102
|
+
return { kind: "libCall", fn: member === "rows" ? "process.rows" : "process.columns", args: [fd], type: want, loc };
|
|
6100
6103
|
}
|
|
6101
6104
|
/** `process.argv` / `process.platform` / `process.pid` property READS
|
|
6102
6105
|
* lower to zero-arg libCalls (argv returns +1 on one interned array —
|
|
@@ -7467,7 +7470,7 @@ export function lowerDateCall(lowerer, call, access) {
|
|
|
7467
7470
|
if (name === "toISOString") {
|
|
7468
7471
|
return { kind: "libCall", fn: "date.toISOStringValue", args: [receiver], type: STRING, loc };
|
|
7469
7472
|
}
|
|
7470
|
-
const fn = DATE_GETTER_FNS
|
|
7473
|
+
const fn = own(DATE_GETTER_FNS, name);
|
|
7471
7474
|
if (fn !== undefined) {
|
|
7472
7475
|
return { kind: "libCall", fn, args: [receiver], type: F64, loc };
|
|
7473
7476
|
}
|
|
@@ -7828,11 +7831,10 @@ export function lowerStringStaticCall(lowerer, call, access) {
|
|
|
7828
7831
|
const packed = { kind: "arrayLit", elems, type: arrayOf(F64), loc };
|
|
7829
7832
|
return { kind: "libCall", fn: "string.fromCharCode", args: [packed], type: STRING, loc };
|
|
7830
7833
|
}
|
|
7831
|
-
/** `s.lastIndexOf(
|
|
7832
|
-
*
|
|
7833
|
-
*
|
|
7834
|
-
*
|
|
7835
|
-
* fences per site. Null for non-string receivers / other members. */
|
|
7834
|
+
/** `s.lastIndexOf(searchValue?, position?)` on string receivers, using UTF-16
|
|
7835
|
+
* indices. An omitted search value searches for "undefined". Omitted or undefined positions clamp to the string's end;
|
|
7836
|
+
* MAX_SAFE_INTEGER has the same effect for every representable string.
|
|
7837
|
+
* Null for non-string receivers and other members. */
|
|
7836
7838
|
export function lowerStringLastIndexOfCall(lowerer, call, access) {
|
|
7837
7839
|
if (call.questionDotToken || access.questionDotToken)
|
|
7838
7840
|
return null;
|
|
@@ -7843,12 +7845,18 @@ export function lowerStringLastIndexOfCall(lowerer, call, access) {
|
|
|
7843
7845
|
if (!lowerer.isStdlibMember(access))
|
|
7844
7846
|
return null;
|
|
7845
7847
|
const loc = locOf(call);
|
|
7846
|
-
if (call.arguments.length
|
|
7847
|
-
lowerer.noLowering("lastIndexOf with
|
|
7848
|
+
if (call.arguments.length > 2 || call.arguments.some(ts.isSpreadElement)) {
|
|
7849
|
+
lowerer.noLowering("lastIndexOf with this argument shape", call, "pass no arguments, or a search value with an optional numeric position");
|
|
7848
7850
|
}
|
|
7849
7851
|
const receiver = lowerer.lowerExprExpecting(access.expression, STRING);
|
|
7852
|
+
const positionNode = call.arguments[1];
|
|
7853
|
+
if (!positionNode) {
|
|
7854
|
+
const needle = lowerStringSearchArgument(lowerer, call.arguments[0], loc);
|
|
7855
|
+
return { kind: "libCall", fn: "string.lastIndexOf", args: [receiver, needle], type: F64, loc };
|
|
7856
|
+
}
|
|
7850
7857
|
const needle = lowerer.lowerExprExpecting(call.arguments[0], STRING);
|
|
7851
|
-
|
|
7858
|
+
const position = lowerOptionalArgument(lowerer, positionNode, F64, numLit(Number.MAX_SAFE_INTEGER, loc));
|
|
7859
|
+
return { kind: "libCall", fn: "string.lastIndexOfFrom", args: [receiver, needle, position], type: F64, loc };
|
|
7852
7860
|
}
|
|
7853
7861
|
/** `Promise.race([...])` on THE Promise global: the entries lower
|
|
7854
7862
|
* individually (the array never materializes — promise-element arrays
|