@scriptc/compiler 0.1.2 → 0.1.4
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 +258 -64
- package/dist/backend/c/async.d.ts +30 -0
- package/dist/backend/c/async.js +224 -0
- package/dist/backend/c/async.js.map +1 -1
- package/dist/backend/c/c-emitter.d.ts +13 -0
- package/dist/backend/c/c-emitter.js +28 -9
- package/dist/backend/c/c-emitter.js.map +1 -1
- package/dist/backend/c/exprs.d.ts +8 -1
- package/dist/backend/c/exprs.js +445 -60
- package/dist/backend/c/exprs.js.map +1 -1
- package/dist/backend/c/shapes.js +15 -13
- package/dist/backend/c/shapes.js.map +1 -1
- package/dist/backend/c/types.d.ts +4 -0
- package/dist/backend/c/types.js +20 -1
- package/dist/backend/c/types.js.map +1 -1
- package/dist/backend/c/types.test.js +8 -1
- package/dist/backend/c/types.test.js.map +1 -1
- package/dist/backend/c/walkers.js +32 -11
- package/dist/backend/c/walkers.js.map +1 -1
- package/dist/backend/json-literal.d.ts +7 -0
- package/dist/backend/json-literal.js +17 -0
- package/dist/backend/json-literal.js.map +1 -0
- package/dist/backend/json-literal.test.d.ts +1 -0
- package/dist/backend/json-literal.test.js +17 -0
- package/dist/backend/json-literal.test.js.map +1 -0
- package/dist/backend/link-plan.d.ts +2 -1
- package/dist/backend/link-plan.js +6 -1
- package/dist/backend/link-plan.js.map +1 -1
- package/dist/backend/llvm/classes.js +8 -7
- package/dist/backend/llvm/classes.js.map +1 -1
- package/dist/backend/llvm/common.d.ts +4 -0
- package/dist/backend/llvm/common.js +6 -0
- package/dist/backend/llvm/common.js.map +1 -1
- package/dist/backend/llvm/common.test.d.ts +1 -0
- package/dist/backend/llvm/common.test.js +9 -0
- package/dist/backend/llvm/common.test.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +4 -0
- package/dist/backend/llvm/dyn.js +24 -13
- package/dist/backend/llvm/dyn.js.map +1 -1
- package/dist/backend/llvm/emitter.js +54 -12
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/backend/llvm/expr-bytes.d.ts +1 -1
- package/dist/backend/llvm/expr-bytes.js +8 -8
- package/dist/backend/llvm/expr-bytes.js.map +1 -1
- package/dist/backend/llvm/expr-callbacks.d.ts +9 -0
- package/dist/backend/llvm/expr-callbacks.js +125 -0
- package/dist/backend/llvm/expr-callbacks.js.map +1 -1
- package/dist/backend/llvm/expr-context.d.ts +18 -2
- package/dist/backend/llvm/expr-dispatch.js +1 -0
- package/dist/backend/llvm/expr-dispatch.js.map +1 -1
- package/dist/backend/llvm/expr-dynamic.js +9 -0
- package/dist/backend/llvm/expr-dynamic.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.d.ts +1 -1
- package/dist/backend/llvm/expr-primitives.js +38 -9
- package/dist/backend/llvm/expr-primitives.js.map +1 -1
- package/dist/backend/llvm/expr-primitives.test.d.ts +1 -0
- package/dist/backend/llvm/expr-primitives.test.js +38 -0
- package/dist/backend/llvm/expr-primitives.test.js.map +1 -0
- package/dist/backend/llvm/expr-records.js +3 -3
- package/dist/backend/llvm/expr-records.js.map +1 -1
- package/dist/backend/llvm/expr-stream-bridges.js +2 -1
- package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
- package/dist/backend/llvm/expr-stream-callbacks.d.ts +6 -0
- package/dist/backend/llvm/expr-stream-callbacks.js +122 -0
- package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
- package/dist/backend/llvm/lib-dispatch.js +22 -0
- package/dist/backend/llvm/lib-dispatch.js.map +1 -1
- package/dist/backend/llvm/lib-filesystem.js +68 -10
- package/dist/backend/llvm/lib-filesystem.js.map +1 -1
- package/dist/backend/llvm/lib-network.js +18 -2
- package/dist/backend/llvm/lib-network.js.map +1 -1
- package/dist/backend/llvm/lib-process.js +206 -11
- package/dist/backend/llvm/lib-process.js.map +1 -1
- package/dist/backend/llvm/lib-shared.js +82 -0
- package/dist/backend/llvm/lib-shared.js.map +1 -1
- package/dist/backend/llvm/lib-stream.js +23 -0
- package/dist/backend/llvm/lib-stream.js.map +1 -1
- package/dist/backend/llvm/shapes.js +10 -8
- package/dist/backend/llvm/shapes.js.map +1 -1
- package/dist/backend/llvm/walkers.js +7 -5
- package/dist/backend/llvm/walkers.js.map +1 -1
- package/dist/backend/native-link-info.d.ts +2 -1
- package/dist/backend/native-link-info.js +4 -0
- package/dist/backend/native-link-info.js.map +1 -1
- package/dist/backend/native-link-info.test.js +24 -1
- package/dist/backend/native-link-info.test.js.map +1 -1
- package/dist/backend/native-toolchain.d.ts +11 -6
- package/dist/backend/native-toolchain.js +30 -13
- package/dist/backend/native-toolchain.js.map +1 -1
- package/dist/backend/native-toolchain.test.js +36 -1
- package/dist/backend/native-toolchain.test.js.map +1 -1
- package/dist/backend/runtime-pack-targets.test.js +1 -1
- package/dist/backend/runtime-pack-targets.test.js.map +1 -1
- package/dist/backend/runtime-pack.test.js +29 -10
- package/dist/backend/runtime-pack.test.js.map +1 -1
- package/dist/backend/targets.d.ts +9 -0
- package/dist/backend/targets.js +22 -0
- package/dist/backend/targets.js.map +1 -1
- package/dist/backend/targets.test.js +13 -1
- package/dist/backend/targets.test.js.map +1 -1
- package/dist/coverage/surface-manifest.js +9 -0
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/diagnostics/diagnostic.js +4 -4
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/executable/executable-cache.d.ts +3 -0
- package/dist/executable/executable-cache.js +4 -0
- package/dist/executable/executable-cache.js.map +1 -1
- package/dist/executable/executable-cache.test.js +1 -0
- package/dist/executable/executable-cache.test.js.map +1 -1
- package/dist/frontend/fork-target.d.ts +17 -0
- package/dist/frontend/fork-target.js +256 -0
- package/dist/frontend/fork-target.js.map +1 -0
- package/dist/frontend/lowering/abstract-equality.d.ts +6 -0
- package/dist/frontend/lowering/abstract-equality.js +250 -0
- package/dist/frontend/lowering/abstract-equality.js.map +1 -0
- package/dist/frontend/lowering/containers/bytes.d.ts +0 -4
- package/dist/frontend/lowering/containers/bytes.js +112 -28
- package/dist/frontend/lowering/containers/bytes.js.map +1 -1
- package/dist/frontend/lowering/lower-assert.js +87 -12
- package/dist/frontend/lowering/lower-assert.js.map +1 -1
- package/dist/frontend/lowering/lower-builtins.d.ts +72 -44
- package/dist/frontend/lowering/lower-builtins.js +1323 -165
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.d.ts +37 -27
- package/dist/frontend/lowering/lower-calls.js +682 -132
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.js +39 -8
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-containers.js +162 -8
- package/dist/frontend/lowering/lower-containers.js.map +1 -1
- package/dist/frontend/lowering/lower-event-emitter.js +212 -21
- package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.js +238 -87
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-inspect.d.ts +4 -0
- package/dist/frontend/lowering/lower-inspect.js +8 -1
- package/dist/frontend/lowering/lower-inspect.js.map +1 -1
- package/dist/frontend/lowering/lower-island.d.ts +6 -3
- package/dist/frontend/lowering/lower-island.js +165 -6
- package/dist/frontend/lowering/lower-island.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +6 -0
- package/dist/frontend/lowering/lower-modules.js +192 -38
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.js +7 -0
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-server.d.ts +1 -1
- package/dist/frontend/lowering/lower-server.js +130 -27
- package/dist/frontend/lowering/lower-server.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.d.ts +5 -4
- package/dist/frontend/lowering/lower-stmts.js +141 -21
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.d.ts +3 -0
- package/dist/frontend/lowering/lower-stream.js +7 -0
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +90 -13
- package/dist/frontend/lowering/lowerer.js +416 -76
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +31 -3
- package/dist/frontend/lowering/surfaces.js +173 -90
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/npm-static-declarations.d.ts +4 -0
- package/dist/frontend/npm-static-declarations.js +83 -14
- package/dist/frontend/npm-static-declarations.js.map +1 -1
- package/dist/frontend/npm-static-declarations.test.js +33 -2
- package/dist/frontend/npm-static-declarations.test.js.map +1 -1
- package/dist/frontend/npm-static.js +6 -5
- package/dist/frontend/npm-static.js.map +1 -1
- package/dist/frontend/npm.d.ts +15 -3
- package/dist/frontend/npm.js +80 -8
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/npm.test.js +76 -9
- package/dist/frontend/npm.test.js.map +1 -1
- package/dist/frontend/program.js +110 -12
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/resolve.d.ts +28 -7
- package/dist/frontend/resolve.js +90 -26
- package/dist/frontend/resolve.js.map +1 -1
- package/dist/frontend/resolve.test.js +21 -1
- package/dist/frontend/resolve.test.js.map +1 -1
- package/dist/frontend/type-mapper.d.ts +5 -0
- package/dist/frontend/type-mapper.js +115 -33
- package/dist/frontend/type-mapper.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.js +30 -3
- package/dist/index.js.map +1 -1
- package/dist/ir/analysis.js +1 -0
- package/dist/ir/analysis.js.map +1 -1
- package/dist/ir/ir.d.ts +155 -66
- package/dist/ir/ir.js +143 -6
- package/dist/ir/ir.js.map +1 -1
- package/dist/ir/ir.test.js +14 -1
- package/dist/ir/ir.test.js.map +1 -1
- package/dist/ir/serialize.d.ts +1 -1
- package/dist/ir/serialize.js +1 -1
- package/dist/ir/serialize.js.map +1 -1
- package/dist/ir/validate.js +242 -18
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/int-infer.test.js +4 -4
- package/dist/library/int-infer.test.js.map +1 -1
- package/dist/library/library-cache.d.ts +1 -0
- package/dist/library/library-cache.js +1 -0
- package/dist/library/library-cache.js.map +1 -1
- package/dist/library/library-cache.test.js +18 -5
- package/dist/library/library-cache.test.js.map +1 -1
- package/package.json +17 -17
- package/surface-manifest.json +163 -54
|
@@ -15,12 +15,15 @@ export type ParamMode = "required" | "omittable" | "rest" | "dynRest" | "islandR
|
|
|
15
15
|
* `type` is the ABI type — what the emitted C parameter carries: the
|
|
16
16
|
* checker's `T | undefined` union for `x?: T`, a synthesized `T | undefined`
|
|
17
17
|
* union for `x: T = e`, `T[]` for `...xs: T[]`, the plain declared type
|
|
18
|
-
* otherwise. `bodyType` is present exactly for DEFAULTED params:
|
|
19
|
-
* the body sees after the prologue applies the default (see
|
|
18
|
+
* otherwise. `bodyType` is present exactly for DEFAULTED program params:
|
|
19
|
+
* the plain T the body sees after the prologue applies the default (see
|
|
20
|
+
* declareParams). `callDefault` is the compile-time default value for a
|
|
21
|
+
* table-backed builtin's omittable slot. */
|
|
20
22
|
export interface ParamShape {
|
|
21
23
|
type: IrType;
|
|
22
24
|
mode: ParamMode;
|
|
23
25
|
bodyType?: IrType;
|
|
26
|
+
callDefault?: IrExpr;
|
|
24
27
|
}
|
|
25
28
|
export interface FnSig {
|
|
26
29
|
name: string;
|
|
@@ -41,6 +44,21 @@ export interface FnSig {
|
|
|
41
44
|
};
|
|
42
45
|
};
|
|
43
46
|
}
|
|
47
|
+
/** The one func-type projection of completed parameter shapes. Typed rest
|
|
48
|
+
* parameters keep their packed array as the trailing native ABI slot and
|
|
49
|
+
* mark the value variadic so indirect call sites run completeArgs before
|
|
50
|
+
* callValue. Dynamic rest remains the historical hidden ScrDyn slot, while
|
|
51
|
+
* island rest spells its engine-array slot directly. */
|
|
52
|
+
export declare function funcTypeFromParamShapes(shapes: readonly ParamShape[], ret: IrType): IrType & {
|
|
53
|
+
kind: "func";
|
|
54
|
+
};
|
|
55
|
+
/** Registers `const alias = overloadedDeclaration` as a compile-time
|
|
56
|
+
* callable projection. The source function's one implementation ABI is
|
|
57
|
+
* already collected in fnSigsBySymbol; each direct call still uses the
|
|
58
|
+
* TS7-resolved overload result bridge. The alias owns no storage, and a
|
|
59
|
+
* value read materializes the source function's interned closure, so JS
|
|
60
|
+
* identity (`alias === source`) is preserved. */
|
|
61
|
+
export declare function registerOverloadedCallableAlias(lowerer: Lowerer, decl: ts.VariableDeclaration): boolean;
|
|
44
62
|
export declare function generatorMeta(lowerer: Lowerer, type: IrType & {
|
|
45
63
|
kind: "generator";
|
|
46
64
|
}): NonNullable<IrFunction["generator"]>;
|
|
@@ -171,14 +189,6 @@ export declare function paramShapes(lowerer: Lowerer, params: readonly ts.Parame
|
|
|
171
189
|
* defaultRunner` and `skip: Set<string> = new Set()` arm like any ref
|
|
172
190
|
* kind — the nullable-callback union shape, built by the compiler. */
|
|
173
191
|
export declare function checkDefaultParamBodyType(lowerer: Lowerer, param: ts.ParameterDeclaration, bodyType: IrType): void;
|
|
174
|
-
/** CALL-SITE COMPLETION — the frontend half of the one-signature contract
|
|
175
|
-
* (docs/ir.md): every call lowers to exactly the callee's full ABI
|
|
176
|
-
* parameter list, so backends and the validator stay count-exact and no
|
|
177
|
-
* runtime arity machinery exists. Omitted trailing args for omittable
|
|
178
|
-
* params become the interned undefined arm (which is also what an
|
|
179
|
-
* explicitly-passed `undefined` wraps to — both trigger a default, JS-
|
|
180
|
-
* exact); a rest param packs the surplus args (possibly zero) into one
|
|
181
|
-
* array literal, evaluated in source order at the call site. */
|
|
182
192
|
export declare function completeArgs(lowerer: Lowerer, argNodes: readonly ts.Expression[], shapes: readonly ParamShape[], loc: SrcLoc, blame: ts.Node,
|
|
183
193
|
/** Pre-lowered values virtually PREPENDED to the argument list — the
|
|
184
194
|
* tagged-template strings object, which has no ts.Expression to lower
|
|
@@ -201,13 +211,12 @@ export declare function wrappedUndefined(lowerer: Lowerer, type: IrType, loc: Sr
|
|
|
201
211
|
* (direct calls and calls through func-typed values). */
|
|
202
212
|
export declare function omittedArgFor(lowerer: Lowerer, type: IrType, loc: SrcLoc): IrExpr | null;
|
|
203
213
|
export declare function undefinedArgFor(lowerer: Lowerer, type: IrType, loc: SrcLoc, blame: ts.Node): IrExpr;
|
|
204
|
-
/** DECISION (docs/ir.md): function VALUES
|
|
205
|
-
*
|
|
206
|
-
*
|
|
207
|
-
*
|
|
208
|
-
*
|
|
209
|
-
*
|
|
210
|
-
* types reject). Direct calls get the full feature. */
|
|
214
|
+
/** DECISION (docs/ir.md): function VALUES carry one completed native ABI.
|
|
215
|
+
* Optional/default parameters appear as literal `T | undefined` slots;
|
|
216
|
+
* typed rest parameters appear as one trailing typed-array slot plus the
|
|
217
|
+
* typed-rest marker that makes indirect call sites pack source arguments.
|
|
218
|
+
* A value is admitted only where its target type projects to that same
|
|
219
|
+
* completed signature. */
|
|
211
220
|
export declare function requireExactArityValue(lowerer: Lowerer, blame: ts.Node, contextual: ts.Expression | null, shapes: readonly ParamShape[], funcType: IrType): void;
|
|
212
221
|
/** The BODY-facing return type of a (possibly async) function: an async
|
|
213
222
|
* body's `return v` fulfills its promise with v, so the body returns the
|
|
@@ -394,18 +403,19 @@ export declare function lowerTaggedTemplate(lowerer: Lowerer, expr: ts.TaggedTem
|
|
|
394
403
|
* FLATTENED namespace block count — splitFiles hoisted them into the
|
|
395
404
|
* same collection lists top-level declarations ride. */
|
|
396
405
|
export declare function isTopLevelFnSymbol(lowerer: Lowerer, ident: ts.Identifier): boolean;
|
|
397
|
-
/** Nested `function name(...) {...}`:
|
|
398
|
-
*
|
|
399
|
-
*
|
|
400
|
-
*
|
|
401
|
-
*
|
|
402
|
-
*
|
|
406
|
+
/** Nested `function name(...) {...}`: declare the mutable function binding
|
|
407
|
+
* before lowering its body, then initialize it with the lifted closure.
|
|
408
|
+
* The early declaration is observable only when another nested closure
|
|
409
|
+
* captures the binding: its box must exist before either side of a mutual
|
|
410
|
+
* recursion cycle builds its closure. Forward source references use the
|
|
411
|
+
* same split declaration/assignment through predeclareForwardFnDecl.
|
|
412
|
+
* Self-references inside the body lower to `selfRef`, not a capture: a box
|
|
413
|
+
* holding its own closure would be an RC cycle. */
|
|
403
414
|
export declare function lowerNestedFunctionDecl(lowerer: Lowerer, stmt: ts.FunctionDeclaration): IrStmt;
|
|
404
415
|
/** Signature checks + param shapes + IR func type for any lambda-like
|
|
405
|
-
* node. The func type's params are the ABI types
|
|
406
|
-
*
|
|
407
|
-
*
|
|
408
|
-
* value rule (requireExactArityValue decides who may become a value). */
|
|
416
|
+
* node. The func type's params are the ABI types: optional/default params
|
|
417
|
+
* become `T | undefined`, and typed rest becomes one packed-array slot.
|
|
418
|
+
* requireExactArityValue decides whether that completed ABI may escape. */
|
|
409
419
|
export declare function lambdaSignature(lowerer: Lowerer, node: ts.ArrowFunction | ts.FunctionExpression | ts.FunctionDeclaration | ts.MethodDeclaration | ts.GetAccessorDeclaration | ts.SetAccessorDeclaration): {
|
|
410
420
|
shapes: ParamShape[];
|
|
411
421
|
funcType: IrType & {
|