@scriptc/compiler 0.0.0 → 0.0.2
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/LICENSE +202 -0
- package/ambient/package.json +3 -0
- package/ambient/scriptc-node-fallback.d.ts +3001 -0
- package/ambient/scriptc-overrides.d.ts +95 -0
- package/ambient/scriptc.d.ts +74 -0
- package/dist/backend/cc.d.ts +169 -0
- package/dist/backend/cc.js +897 -0
- package/dist/backend/cc.js.map +1 -0
- package/dist/backend/emission/emit-async.d.ts +145 -0
- package/dist/backend/emission/emit-async.js +996 -0
- package/dist/backend/emission/emit-async.js.map +1 -0
- package/dist/backend/emission/emit-exprs.d.ts +3 -0
- package/dist/backend/emission/emit-exprs.js +5949 -0
- package/dist/backend/emission/emit-exprs.js.map +1 -0
- package/dist/backend/emission/emit-island.d.ts +45 -0
- package/dist/backend/emission/emit-island.js +271 -0
- package/dist/backend/emission/emit-island.js.map +1 -0
- package/dist/backend/emission/emit-shapes.d.ts +142 -0
- package/dist/backend/emission/emit-shapes.js +575 -0
- package/dist/backend/emission/emit-shapes.js.map +1 -0
- package/dist/backend/emission/emit-stmts.d.ts +78 -0
- package/dist/backend/emission/emit-stmts.js +960 -0
- package/dist/backend/emission/emit-stmts.js.map +1 -0
- package/dist/backend/emission/emit-types.d.ts +65 -0
- package/dist/backend/emission/emit-types.js +652 -0
- package/dist/backend/emission/emit-types.js.map +1 -0
- package/dist/backend/emission/emit-walkers.d.ts +154 -0
- package/dist/backend/emission/emit-walkers.js +1587 -0
- package/dist/backend/emission/emit-walkers.js.map +1 -0
- package/dist/backend/emission/emitter.d.ts +452 -0
- package/dist/backend/emission/emitter.js +1249 -0
- package/dist/backend/emission/emitter.js.map +1 -0
- package/dist/backend/emission/may-throw.d.ts +15 -0
- package/dist/backend/emission/may-throw.js +250 -0
- package/dist/backend/emission/may-throw.js.map +1 -0
- package/dist/backend/llvm/blocks.d.ts +21 -0
- package/dist/backend/llvm/blocks.js +68 -0
- package/dist/backend/llvm/blocks.js.map +1 -0
- package/dist/backend/llvm/classes.d.ts +84 -0
- package/dist/backend/llvm/classes.js +438 -0
- package/dist/backend/llvm/classes.js.map +1 -0
- package/dist/backend/llvm/dyn.d.ts +123 -0
- package/dist/backend/llvm/dyn.js +2624 -0
- package/dist/backend/llvm/dyn.js.map +1 -0
- package/dist/backend/llvm/emitter.d.ts +3 -0
- package/dist/backend/llvm/emitter.js +10102 -0
- package/dist/backend/llvm/emitter.js.map +1 -0
- package/dist/backend/llvm/shapes.d.ts +78 -0
- package/dist/backend/llvm/shapes.js +754 -0
- package/dist/backend/llvm/shapes.js.map +1 -0
- package/dist/backend/llvm/unsupported.d.ts +6 -0
- package/dist/backend/llvm/unsupported.js +12 -0
- package/dist/backend/llvm/unsupported.js.map +1 -0
- package/dist/backend/llvm/walkers.d.ts +58 -0
- package/dist/backend/llvm/walkers.js +793 -0
- package/dist/backend/llvm/walkers.js.map +1 -0
- package/dist/backend/mangle.d.ts +124 -0
- package/dist/backend/mangle.js +232 -0
- package/dist/backend/mangle.js.map +1 -0
- package/dist/coverage/report.d.ts +65 -0
- package/dist/coverage/report.js +238 -0
- package/dist/coverage/report.js.map +1 -0
- package/dist/diagnostics/diagnostic.d.ts +140 -0
- package/dist/diagnostics/diagnostic.js +458 -0
- package/dist/diagnostics/diagnostic.js.map +1 -0
- package/dist/diagnostics/render.d.ts +11 -0
- package/dist/diagnostics/render.js +58 -0
- package/dist/diagnostics/render.js.map +1 -0
- package/dist/frontend/cjs-lexer.d.ts +20 -0
- package/dist/frontend/cjs-lexer.js +813 -0
- package/dist/frontend/cjs-lexer.js.map +1 -0
- package/dist/frontend/lowering/http2-constants.d.ts +1 -0
- package/dist/frontend/lowering/http2-constants.js +251 -0
- package/dist/frontend/lowering/http2-constants.js.map +1 -0
- package/dist/frontend/lowering/lib-boundary.d.ts +6 -0
- package/dist/frontend/lowering/lib-boundary.js +143 -0
- package/dist/frontend/lowering/lib-boundary.js.map +1 -0
- package/dist/frontend/lowering/lower-assert.d.ts +18 -0
- package/dist/frontend/lowering/lower-assert.js +1269 -0
- package/dist/frontend/lowering/lower-assert.js.map +1 -0
- package/dist/frontend/lowering/lower-builtins.d.ts +511 -0
- package/dist/frontend/lowering/lower-builtins.js +5249 -0
- package/dist/frontend/lowering/lower-builtins.js.map +1 -0
- package/dist/frontend/lowering/lower-calls.d.ts +581 -0
- package/dist/frontend/lowering/lower-calls.js +6286 -0
- package/dist/frontend/lowering/lower-calls.js.map +1 -0
- package/dist/frontend/lowering/lower-classes.d.ts +727 -0
- package/dist/frontend/lowering/lower-classes.js +4701 -0
- package/dist/frontend/lowering/lower-classes.js.map +1 -0
- package/dist/frontend/lowering/lower-comptime.d.ts +53 -0
- package/dist/frontend/lowering/lower-comptime.js +244 -0
- package/dist/frontend/lowering/lower-comptime.js.map +1 -0
- package/dist/frontend/lowering/lower-containers.d.ts +486 -0
- package/dist/frontend/lowering/lower-containers.js +6345 -0
- package/dist/frontend/lowering/lower-containers.js.map +1 -0
- package/dist/frontend/lowering/lower-dgram.d.ts +20 -0
- package/dist/frontend/lowering/lower-dgram.js +319 -0
- package/dist/frontend/lowering/lower-dgram.js.map +1 -0
- package/dist/frontend/lowering/lower-emitter.d.ts +10 -0
- package/dist/frontend/lowering/lower-emitter.js +688 -0
- package/dist/frontend/lowering/lower-emitter.js.map +1 -0
- package/dist/frontend/lowering/lower-enums.d.ts +22 -0
- package/dist/frontend/lowering/lower-enums.js +235 -0
- package/dist/frontend/lowering/lower-enums.js.map +1 -0
- package/dist/frontend/lowering/lower-expando.d.ts +35 -0
- package/dist/frontend/lowering/lower-expando.js +276 -0
- package/dist/frontend/lowering/lower-expando.js.map +1 -0
- package/dist/frontend/lowering/lower-exprs.d.ts +524 -0
- package/dist/frontend/lowering/lower-exprs.js +8111 -0
- package/dist/frontend/lowering/lower-exprs.js.map +1 -0
- package/dist/frontend/lowering/lower-generators.d.ts +50 -0
- package/dist/frontend/lowering/lower-generators.js +421 -0
- package/dist/frontend/lowering/lower-generators.js.map +1 -0
- package/dist/frontend/lowering/lower-inspect.d.ts +20 -0
- package/dist/frontend/lowering/lower-inspect.js +1074 -0
- package/dist/frontend/lowering/lower-inspect.js.map +1 -0
- package/dist/frontend/lowering/lower-island.d.ts +108 -0
- package/dist/frontend/lowering/lower-island.js +650 -0
- package/dist/frontend/lowering/lower-island.js.map +1 -0
- package/dist/frontend/lowering/lower-mixins.d.ts +96 -0
- package/dist/frontend/lowering/lower-mixins.js +534 -0
- package/dist/frontend/lowering/lower-mixins.js.map +1 -0
- package/dist/frontend/lowering/lower-modules.d.ts +135 -0
- package/dist/frontend/lowering/lower-modules.js +1613 -0
- package/dist/frontend/lowering/lower-modules.js.map +1 -0
- package/dist/frontend/lowering/lower-namespaces.d.ts +168 -0
- package/dist/frontend/lowering/lower-namespaces.js +706 -0
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -0
- package/dist/frontend/lowering/lower-server.d.ts +90 -0
- package/dist/frontend/lowering/lower-server.js +3471 -0
- package/dist/frontend/lowering/lower-server.js.map +1 -0
- package/dist/frontend/lowering/lower-stmts.d.ts +361 -0
- package/dist/frontend/lowering/lower-stmts.js +5341 -0
- package/dist/frontend/lowering/lower-stmts.js.map +1 -0
- package/dist/frontend/lowering/lower-stream.d.ts +88 -0
- package/dist/frontend/lowering/lower-stream.js +1533 -0
- package/dist/frontend/lowering/lower-stream.js.map +1 -0
- package/dist/frontend/lowering/lower-test.d.ts +27 -0
- package/dist/frontend/lowering/lower-test.js +353 -0
- package/dist/frontend/lowering/lower-test.js.map +1 -0
- package/dist/frontend/lowering/lowerer.d.ts +1748 -0
- package/dist/frontend/lowering/lowerer.js +6257 -0
- package/dist/frontend/lowering/lowerer.js.map +1 -0
- package/dist/frontend/lowering/surfaces.d.ts +272 -0
- package/dist/frontend/lowering/surfaces.js +1096 -0
- package/dist/frontend/lowering/surfaces.js.map +1 -0
- package/dist/frontend/npm-static.d.ts +55 -0
- package/dist/frontend/npm-static.js +300 -0
- package/dist/frontend/npm-static.js.map +1 -0
- package/dist/frontend/npm.d.ts +330 -0
- package/dist/frontend/npm.js +1259 -0
- package/dist/frontend/npm.js.map +1 -0
- package/dist/frontend/program.d.ts +186 -0
- package/dist/frontend/program.js +2255 -0
- package/dist/frontend/program.js.map +1 -0
- package/dist/frontend/provenance-registry.d.ts +48 -0
- package/dist/frontend/provenance-registry.js +87 -0
- package/dist/frontend/provenance-registry.js.map +1 -0
- package/dist/frontend/provenance.d.ts +6 -0
- package/dist/frontend/provenance.js +459 -0
- package/dist/frontend/provenance.js.map +1 -0
- package/dist/frontend/resolve.d.ts +56 -0
- package/dist/frontend/resolve.js +682 -0
- package/dist/frontend/resolve.js.map +1 -0
- package/dist/frontend/shared.d.ts +67 -0
- package/dist/frontend/shared.js +241 -0
- package/dist/frontend/shared.js.map +1 -0
- package/dist/frontend/ts7/adapter.d.ts +7 -0
- package/dist/frontend/ts7/adapter.js +54 -0
- package/dist/frontend/ts7/adapter.js.map +1 -0
- package/dist/frontend/ts7/ast.d.ts +50 -0
- package/dist/frontend/ts7/ast.js +211 -0
- package/dist/frontend/ts7/ast.js.map +1 -0
- package/dist/frontend/ts7/census-check.d.ts +1 -0
- package/dist/frontend/ts7/census-check.js +12 -0
- package/dist/frontend/ts7/census-check.js.map +1 -0
- package/dist/frontend/ts7/checker.d.ts +140 -0
- package/dist/frontend/ts7/checker.js +544 -0
- package/dist/frontend/ts7/checker.js.map +1 -0
- package/dist/frontend/ts7/enums.d.ts +18 -0
- package/dist/frontend/ts7/enums.js +43 -0
- package/dist/frontend/ts7/enums.js.map +1 -0
- package/dist/frontend/ts7/program.d.ts +99 -0
- package/dist/frontend/ts7/program.js +278 -0
- package/dist/frontend/ts7/program.js.map +1 -0
- package/dist/frontend/ts7/world-check.d.ts +3 -0
- package/dist/frontend/ts7/world-check.js +34 -0
- package/dist/frontend/ts7/world-check.js.map +1 -0
- package/dist/frontend/types.d.ts +205 -0
- package/dist/frontend/types.js +2485 -0
- package/dist/frontend/types.js.map +1 -0
- package/dist/index.d.ts +85 -0
- package/dist/index.js +429 -0
- package/dist/index.js.map +1 -0
- package/dist/ir/nodes.d.ts +4334 -0
- package/dist/ir/nodes.js +1906 -0
- package/dist/ir/nodes.js.map +1 -0
- package/dist/ir/serialize.d.ts +4 -0
- package/dist/ir/serialize.js +34 -0
- package/dist/ir/serialize.js.map +1 -0
- package/dist/ir/validate.d.ts +36 -0
- package/dist/ir/validate.js +4885 -0
- package/dist/ir/validate.js.map +1 -0
- package/package.json +30 -6
- package/README.md +0 -3
- package/index.js +0 -2
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { CEmitter, ScopeEntry } from "./emitter.js";
|
|
2
|
+
import type { IrFunction } from "../../ir/nodes.js";
|
|
3
|
+
import { IrExpr, IrStmt } from "../../ir/nodes.js";
|
|
4
|
+
export declare function emitFunction(E: CEmitter, fn: IrFunction): void;
|
|
5
|
+
/** Emits a block in its own lexical scope (refcounted locals released at
|
|
6
|
+
* end). `setup` runs after the scope opens, before the statements — the
|
|
7
|
+
* catch-binding hook: it may emit prelude lines and register entries the
|
|
8
|
+
* scope owns (released on every exit, jumps and unwinds included). */
|
|
9
|
+
export declare function emitBlock(E: CEmitter, stmts: IrStmt[], setup?: (scope: ScopeEntry[]) => void): void;
|
|
10
|
+
export declare function emitStmts(E: CEmitter, stmts: IrStmt[]): void;
|
|
11
|
+
export declare function emitStmt(E: CEmitter, s: IrStmt): void;
|
|
12
|
+
/** try/catch/finally via pending-flag unwinding. Entering a try emits NO
|
|
13
|
+
* code: the try context is compile-time state (tryStack) that redirects
|
|
14
|
+
* unwinds inside the region to a label here instead of out of the
|
|
15
|
+
* function. Shape:
|
|
16
|
+
*
|
|
17
|
+
* { try body } unwinds inside release frames/scopes down to
|
|
18
|
+
* this statement's depths, then goto the handler
|
|
19
|
+
* goto after; (normal completion skips the handler)
|
|
20
|
+
* sc_catch_N:; (emitted only when some unwind targets it)
|
|
21
|
+
* scr_exc_clear(); catch TAKES the exception (payload discarded —
|
|
22
|
+
* { catch body } the supported catch form is bindingless)
|
|
23
|
+
* after/sc_fin_N:;
|
|
24
|
+
* { finally body } normal path
|
|
25
|
+
* goto sc_tryend_N;
|
|
26
|
+
* sc_finexc_N:; exception path: pending flag still set
|
|
27
|
+
* { finally body } (emitted twice — fresh temps/labels each time;
|
|
28
|
+
* <unwind> duplication is safe, and the pending flag is
|
|
29
|
+
* sc_tryend_N:; the dispatch)
|
|
30
|
+
*
|
|
31
|
+
* Without a catch, unwinds in the try body target sc_finexc_N directly.
|
|
32
|
+
* A catch body's own exceptions target sc_finexc_N (when a finally
|
|
33
|
+
* exists) or the ENCLOSING context — never its own handler. After the
|
|
34
|
+
* exception-path finally, propagation continues (emitUnwind: enclosing
|
|
35
|
+
* handler or dummy return). A `return` inside the try/catch body rides a
|
|
36
|
+
* THIRD finally copy (sc_finret_N — the pending-return path: value
|
|
37
|
+
* snapshotted into sc_pret at the return site, dispatch outward after
|
|
38
|
+
* the copy runs); break/continue never cross a finally and no jump
|
|
39
|
+
* leaves a finally body (frontend fence + validator backstop), so
|
|
40
|
+
* normal, exception, and pending-return are the only paths a finally
|
|
41
|
+
* must model; jumps out of PLAIN try/catch need nothing here —
|
|
42
|
+
* release-on-jump already walks the try scopes. */
|
|
43
|
+
export declare function emitTryCatch(E: CEmitter, s: IrStmt & {
|
|
44
|
+
kind: "tryCatch";
|
|
45
|
+
}): void;
|
|
46
|
+
/** JS-exact switch as a goto chain — C `switch` cannot express lazily
|
|
47
|
+
* evaluated, arbitrary-expression case tests. Shape:
|
|
48
|
+
*
|
|
49
|
+
* disc temp
|
|
50
|
+
* NULL-reset of refcounted case-body locals (see below)
|
|
51
|
+
* per test, in source order: eval test; if (== disc) goto case_i;
|
|
52
|
+
* goto default (or end when there is none)
|
|
53
|
+
* case_0:; body_0 ─┐ bodies in source order fall through
|
|
54
|
+
* case_1:; body_1 ─┘ naturally, JS-exact
|
|
55
|
+
* scope releases (natural fall-off path)
|
|
56
|
+
* end:; (break jumps here, after releasing scopes itself)
|
|
57
|
+
*
|
|
58
|
+
* All case bodies share ONE scope (JS: one lexical scope per switch body).
|
|
59
|
+
* Because dispatch can jump PAST a varDecl into a later case, a refcounted
|
|
60
|
+
* local of a skipped body is never written — and inside an enclosing loop
|
|
61
|
+
* it still holds the pointer a previous iteration's scope exit already
|
|
62
|
+
* released. The declarations are therefore NULL-reset up front; the
|
|
63
|
+
* scope-exit releases rely on the runtime's NULL-tolerant release calls. */
|
|
64
|
+
export declare function emitSwitch(E: CEmitter, s: IrStmt & {
|
|
65
|
+
kind: "switch";
|
|
66
|
+
}): void;
|
|
67
|
+
/** Emits `if (cond) ` followed by a block on the same line for readability. */
|
|
68
|
+
export declare function mergeBrace(E: CEmitter, emitBlockFn: () => void): void;
|
|
69
|
+
/** Evaluates `expr` in its own statement frame inside an already-open
|
|
70
|
+
* branch and moves the result into the C lvalue `target`: the chosen
|
|
71
|
+
* value's ownership transfers, every other temp the evaluation allocated
|
|
72
|
+
* releases inside the branch. The shared core of the lazily-branched
|
|
73
|
+
* expressions (`logical`, `ternary`); the caller owns the surrounding
|
|
74
|
+
* braces/indentation and registers `target` in ITS frame. */
|
|
75
|
+
export declare function emitBranchInto(E: CEmitter, target: string, expr: IrExpr): void;
|
|
76
|
+
/** Evaluates a condition; its string temps are released before the branch,
|
|
77
|
+
* which is safe because the result is a scalar bool. */
|
|
78
|
+
export declare function emitCondition(E: CEmitter, cond: IrExpr): string;
|