edict-lang 1.2.0 → 1.6.0
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/README.md +39 -13
- package/dist/ast/nodes.d.ts +4 -3
- package/dist/ast/nodes.d.ts.map +1 -1
- package/dist/ast/nodes.js +1 -0
- package/dist/ast/nodes.js.map +1 -1
- package/dist/ast/type-constants.d.ts +12 -0
- package/dist/ast/type-constants.d.ts.map +1 -0
- package/dist/ast/type-constants.js +16 -0
- package/dist/ast/type-constants.js.map +1 -0
- package/dist/ast/types.d.ts +1 -1
- package/dist/ast/types.d.ts.map +1 -1
- package/dist/builtins/builtin-enums.d.ts +12 -0
- package/dist/builtins/builtin-enums.d.ts.map +1 -0
- package/dist/builtins/builtin-enums.js +45 -0
- package/dist/builtins/builtin-enums.js.map +1 -0
- package/dist/builtins/builtin-types.d.ts +20 -0
- package/dist/builtins/builtin-types.d.ts.map +1 -0
- package/dist/builtins/builtin-types.js +6 -0
- package/dist/builtins/builtin-types.js.map +1 -0
- package/dist/builtins/builtins.d.ts +3 -0
- package/dist/builtins/builtins.d.ts.map +1 -0
- package/dist/builtins/builtins.js +3 -0
- package/dist/builtins/builtins.js.map +1 -0
- package/dist/builtins/domains/array.d.ts +3 -0
- package/dist/builtins/domains/array.d.ts.map +1 -0
- package/dist/builtins/domains/array.js +236 -0
- package/dist/builtins/domains/array.js.map +1 -0
- package/dist/builtins/domains/core.d.ts +3 -0
- package/dist/builtins/domains/core.d.ts.map +1 -0
- package/dist/builtins/domains/core.js +45 -0
- package/dist/builtins/domains/core.js.map +1 -0
- package/dist/builtins/domains/crypto.d.ts +3 -0
- package/dist/builtins/domains/crypto.d.ts.map +1 -0
- package/dist/builtins/domains/crypto.js +49 -0
- package/dist/builtins/domains/crypto.js.map +1 -0
- package/dist/builtins/domains/datetime.d.ts +3 -0
- package/dist/builtins/domains/datetime.d.ts.map +1 -0
- package/dist/builtins/domains/datetime.js +45 -0
- package/dist/builtins/domains/datetime.js.map +1 -0
- package/dist/builtins/domains/http.d.ts +3 -0
- package/dist/builtins/domains/http.d.ts.map +1 -0
- package/dist/builtins/domains/http.js +55 -0
- package/dist/builtins/domains/http.js.map +1 -0
- package/dist/builtins/domains/int64.d.ts +3 -0
- package/dist/builtins/domains/int64.d.ts.map +1 -0
- package/dist/builtins/domains/int64.js +31 -0
- package/dist/builtins/domains/int64.js.map +1 -0
- package/dist/builtins/domains/io.d.ts +3 -0
- package/dist/builtins/domains/io.d.ts.map +1 -0
- package/dist/builtins/domains/io.js +79 -0
- package/dist/builtins/domains/io.js.map +1 -0
- package/dist/builtins/domains/json.d.ts +3 -0
- package/dist/builtins/domains/json.d.ts.map +1 -0
- package/dist/builtins/domains/json.js +47 -0
- package/dist/builtins/domains/json.js.map +1 -0
- package/dist/builtins/domains/math.d.ts +3 -0
- package/dist/builtins/domains/math.d.ts.map +1 -0
- package/dist/builtins/domains/math.js +47 -0
- package/dist/builtins/domains/math.js.map +1 -0
- package/dist/builtins/domains/option.d.ts +3 -0
- package/dist/builtins/domains/option.d.ts.map +1 -0
- package/dist/builtins/domains/option.js +56 -0
- package/dist/builtins/domains/option.js.map +1 -0
- package/dist/builtins/domains/random.d.ts +3 -0
- package/dist/builtins/domains/random.d.ts.map +1 -0
- package/dist/builtins/domains/random.js +50 -0
- package/dist/builtins/domains/random.js.map +1 -0
- package/dist/builtins/domains/regex.d.ts +3 -0
- package/dist/builtins/domains/regex.d.ts.map +1 -0
- package/dist/builtins/domains/regex.js +69 -0
- package/dist/builtins/domains/regex.js.map +1 -0
- package/dist/builtins/domains/result.d.ts +3 -0
- package/dist/builtins/domains/result.d.ts.map +1 -0
- package/dist/builtins/domains/result.js +84 -0
- package/dist/builtins/domains/result.js.map +1 -0
- package/dist/builtins/domains/string.d.ts +3 -0
- package/dist/builtins/domains/string.d.ts.map +1 -0
- package/dist/builtins/domains/string.js +139 -0
- package/dist/builtins/domains/string.js.map +1 -0
- package/dist/builtins/domains/type-conversion.d.ts +3 -0
- package/dist/builtins/domains/type-conversion.d.ts.map +1 -0
- package/dist/builtins/domains/type-conversion.js +42 -0
- package/dist/builtins/domains/type-conversion.js.map +1 -0
- package/dist/builtins/host-helpers.d.ts +66 -0
- package/dist/builtins/host-helpers.d.ts.map +1 -0
- package/dist/builtins/host-helpers.js +127 -0
- package/dist/builtins/host-helpers.js.map +1 -0
- package/dist/builtins/registry.d.ts +48 -0
- package/dist/builtins/registry.d.ts.map +1 -0
- package/dist/builtins/registry.js +118 -0
- package/dist/builtins/registry.js.map +1 -0
- package/dist/check.d.ts +9 -2
- package/dist/check.d.ts.map +1 -1
- package/dist/check.js +30 -9
- package/dist/check.js.map +1 -1
- package/dist/checker/check.d.ts +18 -1
- package/dist/checker/check.d.ts.map +1 -1
- package/dist/checker/check.js +157 -108
- package/dist/checker/check.js.map +1 -1
- package/dist/checker/type-env.d.ts +2 -0
- package/dist/checker/type-env.d.ts.map +1 -1
- package/dist/checker/type-env.js +9 -0
- package/dist/checker/type-env.js.map +1 -1
- package/dist/codegen/browser-host-adapter.d.ts +29 -0
- package/dist/codegen/browser-host-adapter.d.ts.map +1 -0
- package/dist/codegen/browser-host-adapter.js +51 -0
- package/dist/codegen/browser-host-adapter.js.map +1 -0
- package/dist/codegen/builtins.d.ts +2 -26
- package/dist/codegen/builtins.d.ts.map +1 -1
- package/dist/codegen/builtins.js +2 -341
- package/dist/codegen/builtins.js.map +1 -1
- package/dist/codegen/closures.d.ts +17 -0
- package/dist/codegen/closures.d.ts.map +1 -0
- package/dist/codegen/closures.js +140 -0
- package/dist/codegen/closures.js.map +1 -0
- package/dist/codegen/codegen.d.ts +6 -30
- package/dist/codegen/codegen.d.ts.map +1 -1
- package/dist/codegen/codegen.js +154 -1103
- package/dist/codegen/codegen.js.map +1 -1
- package/dist/codegen/collect-strings.d.ts +4 -0
- package/dist/codegen/collect-strings.d.ts.map +1 -0
- package/dist/codegen/collect-strings.js +76 -0
- package/dist/codegen/collect-strings.js.map +1 -0
- package/dist/codegen/compile-calls.d.ts +10 -0
- package/dist/codegen/compile-calls.d.ts.map +1 -0
- package/dist/codegen/compile-calls.js +374 -0
- package/dist/codegen/compile-calls.js.map +1 -0
- package/dist/codegen/compile-data.d.ts +22 -0
- package/dist/codegen/compile-data.d.ts.map +1 -0
- package/dist/codegen/compile-data.js +243 -0
- package/dist/codegen/compile-data.js.map +1 -0
- package/dist/codegen/compile-expr.d.ts +10 -0
- package/dist/codegen/compile-expr.d.ts.map +1 -0
- package/dist/codegen/compile-expr.js +156 -0
- package/dist/codegen/compile-expr.js.map +1 -0
- package/dist/codegen/compile-match.d.ts +7 -0
- package/dist/codegen/compile-match.d.ts.map +1 -0
- package/dist/codegen/compile-match.js +195 -0
- package/dist/codegen/compile-match.js.map +1 -0
- package/dist/codegen/compile-scalars.d.ts +25 -0
- package/dist/codegen/compile-scalars.d.ts.map +1 -0
- package/dist/codegen/compile-scalars.js +211 -0
- package/dist/codegen/compile-scalars.js.map +1 -0
- package/dist/codegen/hof-generators.d.ts +39 -0
- package/dist/codegen/hof-generators.d.ts.map +1 -0
- package/dist/codegen/hof-generators.js +336 -0
- package/dist/codegen/hof-generators.js.map +1 -0
- package/dist/codegen/host-adapter.d.ts +44 -0
- package/dist/codegen/host-adapter.d.ts.map +1 -0
- package/dist/codegen/host-adapter.js +9 -0
- package/dist/codegen/host-adapter.js.map +1 -0
- package/dist/codegen/imports.d.ts +15 -0
- package/dist/codegen/imports.d.ts.map +1 -0
- package/dist/codegen/imports.js +165 -0
- package/dist/codegen/imports.js.map +1 -0
- package/dist/codegen/node-host-adapter.d.ts +35 -0
- package/dist/codegen/node-host-adapter.d.ts.map +1 -0
- package/dist/codegen/node-host-adapter.js +155 -0
- package/dist/codegen/node-host-adapter.js.map +1 -0
- package/dist/codegen/runner.d.ts +36 -2
- package/dist/codegen/runner.d.ts.map +1 -1
- package/dist/codegen/runner.js +147 -271
- package/dist/codegen/runner.js.map +1 -1
- package/dist/codegen/types.d.ts +96 -0
- package/dist/codegen/types.d.ts.map +1 -0
- package/dist/codegen/types.js +63 -0
- package/dist/codegen/types.js.map +1 -0
- package/dist/compact/expand.d.ts +25 -0
- package/dist/compact/expand.d.ts.map +1 -0
- package/dist/compact/expand.js +199 -0
- package/dist/compact/expand.js.map +1 -0
- package/dist/compile.d.ts +2 -1
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +2 -2
- package/dist/compile.js.map +1 -1
- package/dist/contracts/translate.js.map +1 -1
- package/dist/contracts/verify.d.ts +10 -2
- package/dist/contracts/verify.d.ts.map +1 -1
- package/dist/contracts/verify.js +26 -21
- package/dist/contracts/verify.js.map +1 -1
- package/dist/effects/call-graph.d.ts.map +1 -1
- package/dist/effects/call-graph.js +27 -4
- package/dist/effects/call-graph.js.map +1 -1
- package/dist/effects/effect-check.d.ts +10 -2
- package/dist/effects/effect-check.d.ts.map +1 -1
- package/dist/effects/effect-check.js +12 -7
- package/dist/effects/effect-check.js.map +1 -1
- package/dist/errors/error-catalog.d.ts +1 -1
- package/dist/errors/error-catalog.d.ts.map +1 -1
- package/dist/errors/error-catalog.js +119 -0
- package/dist/errors/error-catalog.js.map +1 -1
- package/dist/errors/structured-errors.d.ts +28 -1
- package/dist/errors/structured-errors.d.ts.map +1 -1
- package/dist/errors/structured-errors.js +9 -0
- package/dist/errors/structured-errors.js.map +1 -1
- package/dist/index.d.ts +20 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -10
- package/dist/index.js.map +1 -1
- package/dist/lint/lint.d.ts +9 -0
- package/dist/lint/lint.d.ts.map +1 -0
- package/dist/lint/lint.js +354 -0
- package/dist/lint/lint.js.map +1 -0
- package/dist/lint/warnings.d.ts +54 -0
- package/dist/lint/warnings.d.ts.map +1 -0
- package/dist/lint/warnings.js +39 -0
- package/dist/lint/warnings.js.map +1 -0
- package/dist/mcp/create-server.d.ts.map +1 -1
- package/dist/mcp/create-server.js +66 -5
- package/dist/mcp/create-server.js.map +1 -1
- package/dist/mcp/handlers.d.ts +21 -5
- package/dist/mcp/handlers.d.ts.map +1 -1
- package/dist/mcp/handlers.js +65 -15
- package/dist/mcp/handlers.js.map +1 -1
- package/dist/mcp/prompts.d.ts +17 -0
- package/dist/mcp/prompts.d.ts.map +1 -0
- package/dist/mcp/prompts.js +181 -0
- package/dist/mcp/prompts.js.map +1 -0
- package/dist/mcp/server.js +1 -4
- package/dist/mcp/server.js.map +1 -1
- package/dist/resolver/resolve.d.ts.map +1 -1
- package/dist/resolver/resolve.js +62 -16
- package/dist/resolver/resolve.js.map +1 -1
- package/dist/validator/node-validators.d.ts.map +1 -1
- package/dist/validator/node-validators.js +60 -5
- package/dist/validator/node-validators.js.map +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-calls.js","sourceRoot":"","sources":["../../src/codegen/compile-calls.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import binaryen from "binaryen";
|
|
2
|
+
import type { Expression } from "../ast/nodes.js";
|
|
3
|
+
import { type CompilationContext, FunctionContext } from "./types.js";
|
|
4
|
+
export declare function compileRecordExpr(expr: Expression & {
|
|
5
|
+
kind: "record_expr";
|
|
6
|
+
}, cc: CompilationContext, ctx: FunctionContext): binaryen.ExpressionRef;
|
|
7
|
+
export declare function compileTupleExpr(expr: Expression & {
|
|
8
|
+
kind: "tuple_expr";
|
|
9
|
+
}, cc: CompilationContext, ctx: FunctionContext): binaryen.ExpressionRef;
|
|
10
|
+
export declare function compileEnumConstructor(expr: Expression & {
|
|
11
|
+
kind: "enum_constructor";
|
|
12
|
+
}, cc: CompilationContext, ctx: FunctionContext): binaryen.ExpressionRef;
|
|
13
|
+
export declare function compileAccess(expr: Expression & {
|
|
14
|
+
kind: "access";
|
|
15
|
+
}, cc: CompilationContext, ctx: FunctionContext): binaryen.ExpressionRef;
|
|
16
|
+
export declare function compileArrayExpr(expr: Expression & {
|
|
17
|
+
kind: "array";
|
|
18
|
+
}, cc: CompilationContext, ctx: FunctionContext): binaryen.ExpressionRef;
|
|
19
|
+
export declare function compileStringInterp(expr: Expression & {
|
|
20
|
+
kind: "string_interp";
|
|
21
|
+
}, cc: CompilationContext, ctx: FunctionContext): binaryen.ExpressionRef;
|
|
22
|
+
//# sourceMappingURL=compile-data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-data.d.ts","sourceRoot":"","sources":["../../src/codegen/compile-data.ts"],"names":[],"mappings":"AAKA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EACH,KAAK,kBAAkB,EACvB,eAAe,EAClB,MAAM,YAAY,CAAC;AAGpB,wBAAgB,iBAAiB,CAC7B,IAAI,EAAE,UAAU,GAAG;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,EAC1C,EAAE,EAAE,kBAAkB,EACtB,GAAG,EAAE,eAAe,GACrB,QAAQ,CAAC,aAAa,CA0DxB;AAED,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,UAAU,GAAG;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,EACzC,EAAE,EAAE,kBAAkB,EACtB,GAAG,EAAE,eAAe,GACrB,QAAQ,CAAC,aAAa,CA+BxB;AAED,wBAAgB,sBAAsB,CAClC,IAAI,EAAE,UAAU,GAAG;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,EAC/C,EAAE,EAAE,kBAAkB,EACtB,GAAG,EAAE,eAAe,GACrB,QAAQ,CAAC,aAAa,CA+CxB;AAED,wBAAgB,aAAa,CACzB,IAAI,EAAE,UAAU,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,EACrC,EAAE,EAAE,kBAAkB,EACtB,GAAG,EAAE,eAAe,GACrB,QAAQ,CAAC,aAAa,CAsCxB;AAOD,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,UAAU,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,EACpC,EAAE,EAAE,kBAAkB,EACtB,GAAG,EAAE,eAAe,GACrB,QAAQ,CAAC,aAAa,CA+CxB;AAED,wBAAgB,mBAAmB,CAC/B,IAAI,EAAE,UAAU,GAAG;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,EAC5C,EAAE,EAAE,kBAAkB,EACtB,GAAG,EAAE,eAAe,GACrB,QAAQ,CAAC,aAAa,CAsFxB"}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Data structure expression compilers — record, tuple, enum, access, array,
|
|
3
|
+
// string interpolation
|
|
4
|
+
// =============================================================================
|
|
5
|
+
import binaryen from "binaryen";
|
|
6
|
+
import { wasmValidationError } from "../errors/structured-errors.js";
|
|
7
|
+
import { compileExpr, inferExprWasmType } from "./compile-expr.js";
|
|
8
|
+
export function compileRecordExpr(expr, cc, ctx) {
|
|
9
|
+
const { mod, errors } = cc;
|
|
10
|
+
const layout = cc.recordLayouts.get(expr.name);
|
|
11
|
+
if (!layout) {
|
|
12
|
+
errors.push(wasmValidationError(`unknown record type: ${expr.name}`));
|
|
13
|
+
return mod.unreachable();
|
|
14
|
+
}
|
|
15
|
+
// Allocate heap space
|
|
16
|
+
// ptr = __heap_ptr
|
|
17
|
+
// __heap_ptr = ptr + layout.totalSize
|
|
18
|
+
const ptrIndex = ctx.addLocal(`__record_ptr_${expr.id}`, binaryen.i32);
|
|
19
|
+
const setPtr = mod.local.set(ptrIndex, mod.global.get("__heap_ptr", binaryen.i32));
|
|
20
|
+
const incrementHeap = mod.global.set("__heap_ptr", mod.i32.add(mod.local.get(ptrIndex, binaryen.i32), mod.i32.const(layout.totalSize)));
|
|
21
|
+
// Evaluate and store each field
|
|
22
|
+
const stores = [];
|
|
23
|
+
for (const fieldInit of expr.fields) {
|
|
24
|
+
const fieldLayout = layout.fields.find((f) => f.name === fieldInit.name);
|
|
25
|
+
if (!fieldLayout) {
|
|
26
|
+
errors.push(wasmValidationError(`unknown field '${fieldInit.name}' on record '${expr.name}'`));
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
const valueExpr = compileExpr(fieldInit.value, cc, ctx);
|
|
30
|
+
if (fieldLayout.wasmType === binaryen.f64) {
|
|
31
|
+
stores.push(mod.f64.store(fieldLayout.offset, 0, // align
|
|
32
|
+
mod.local.get(ptrIndex, binaryen.i32), valueExpr));
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
stores.push(mod.i32.store(fieldLayout.offset, 0, // align
|
|
36
|
+
mod.local.get(ptrIndex, binaryen.i32), valueExpr));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// Return the pointer
|
|
40
|
+
const returnPtr = mod.local.get(ptrIndex, binaryen.i32);
|
|
41
|
+
return mod.block(null, [setPtr, incrementHeap, ...stores, returnPtr], binaryen.i32);
|
|
42
|
+
}
|
|
43
|
+
export function compileTupleExpr(expr, cc, ctx) {
|
|
44
|
+
const { mod } = cc;
|
|
45
|
+
const totalSize = expr.elements.length * 8;
|
|
46
|
+
const ptrIndex = ctx.addLocal(`__tuple_ptr_${expr.id}`, binaryen.i32);
|
|
47
|
+
const setPtr = mod.local.set(ptrIndex, mod.global.get("__heap_ptr", binaryen.i32));
|
|
48
|
+
const incrementHeap = mod.global.set("__heap_ptr", mod.i32.add(mod.local.get(ptrIndex, binaryen.i32), mod.i32.const(totalSize)));
|
|
49
|
+
const stores = [];
|
|
50
|
+
for (let i = 0; i < expr.elements.length; i++) {
|
|
51
|
+
const elExpr = expr.elements[i];
|
|
52
|
+
const valWasm = compileExpr(elExpr, cc, ctx);
|
|
53
|
+
const valType = inferExprWasmType(elExpr, cc, ctx);
|
|
54
|
+
const offset = i * 8;
|
|
55
|
+
const ptrExpr = mod.local.get(ptrIndex, binaryen.i32);
|
|
56
|
+
if (valType === binaryen.f64) {
|
|
57
|
+
stores.push(mod.f64.store(offset, 0, ptrExpr, valWasm));
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
stores.push(mod.i32.store(offset, 0, ptrExpr, valWasm));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const returnPtr = mod.local.get(ptrIndex, binaryen.i32);
|
|
64
|
+
return mod.block(null, [setPtr, incrementHeap, ...stores, returnPtr], binaryen.i32);
|
|
65
|
+
}
|
|
66
|
+
export function compileEnumConstructor(expr, cc, ctx) {
|
|
67
|
+
const { mod, errors } = cc;
|
|
68
|
+
const enumLayout = cc.enumLayouts.get(expr.enumName);
|
|
69
|
+
if (!enumLayout) {
|
|
70
|
+
errors.push(wasmValidationError(`Enum layout not found for ${expr.enumName}`));
|
|
71
|
+
return mod.unreachable();
|
|
72
|
+
}
|
|
73
|
+
const variantLayout = enumLayout.variants.find(v => v.name === expr.variant);
|
|
74
|
+
if (!variantLayout) {
|
|
75
|
+
errors.push(wasmValidationError(`Variant layout not found for ${expr.enumName}.${expr.variant}`));
|
|
76
|
+
return mod.unreachable();
|
|
77
|
+
}
|
|
78
|
+
const ptrIndex = ctx.addLocal(`__enum_ptr_${expr.id}`, binaryen.i32);
|
|
79
|
+
const setPtr = mod.local.set(ptrIndex, mod.global.get("__heap_ptr", binaryen.i32));
|
|
80
|
+
const incrementHeap = mod.global.set("__heap_ptr", mod.i32.add(mod.local.get(ptrIndex, binaryen.i32), mod.i32.const(variantLayout.totalSize)));
|
|
81
|
+
const stores = [];
|
|
82
|
+
// Store tag
|
|
83
|
+
const ptrExpr = mod.local.get(ptrIndex, binaryen.i32);
|
|
84
|
+
stores.push(mod.i32.store(0, 0, ptrExpr, mod.i32.const(variantLayout.tag)));
|
|
85
|
+
// Store fields
|
|
86
|
+
for (const fieldInit of expr.fields) {
|
|
87
|
+
const valWasm = compileExpr(fieldInit.value, cc, ctx);
|
|
88
|
+
const fieldLayout = variantLayout.fields.find(f => f.name === fieldInit.name);
|
|
89
|
+
if (!fieldLayout)
|
|
90
|
+
continue; // Should be caught by type checker
|
|
91
|
+
const ptrExprForField = mod.local.get(ptrIndex, binaryen.i32);
|
|
92
|
+
if (fieldLayout.wasmType === binaryen.f64) {
|
|
93
|
+
stores.push(mod.f64.store(fieldLayout.offset, 0, ptrExprForField, valWasm));
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
stores.push(mod.i32.store(fieldLayout.offset, 0, ptrExprForField, valWasm));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const returnPtr = mod.local.get(ptrIndex, binaryen.i32);
|
|
100
|
+
return mod.block(null, [setPtr, incrementHeap, ...stores, returnPtr], binaryen.i32);
|
|
101
|
+
}
|
|
102
|
+
export function compileAccess(expr, cc, ctx) {
|
|
103
|
+
const { mod, errors } = cc;
|
|
104
|
+
let recordTypeName;
|
|
105
|
+
// Try to infer record type from target
|
|
106
|
+
if (expr.target.kind === "ident") {
|
|
107
|
+
const local = ctx.getLocal(expr.target.name);
|
|
108
|
+
if (local && local.edictTypeName) {
|
|
109
|
+
recordTypeName = local.edictTypeName;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else if (expr.target.kind === "record_expr") {
|
|
113
|
+
recordTypeName = expr.target.name;
|
|
114
|
+
}
|
|
115
|
+
if (!recordTypeName) {
|
|
116
|
+
errors.push(wasmValidationError(`cannot resolve record type for field access '${expr.field}'`));
|
|
117
|
+
return mod.unreachable();
|
|
118
|
+
}
|
|
119
|
+
const layout = cc.recordLayouts.get(recordTypeName);
|
|
120
|
+
if (!layout) {
|
|
121
|
+
errors.push(wasmValidationError(`unknown record type: ${recordTypeName}`));
|
|
122
|
+
return mod.unreachable();
|
|
123
|
+
}
|
|
124
|
+
const fieldLayout = layout.fields.find((f) => f.name === expr.field);
|
|
125
|
+
if (!fieldLayout) {
|
|
126
|
+
errors.push(wasmValidationError(`unknown field '${expr.field}' on record '${recordTypeName}'`));
|
|
127
|
+
return mod.unreachable();
|
|
128
|
+
}
|
|
129
|
+
const ptrExpr = compileExpr(expr.target, cc, ctx);
|
|
130
|
+
if (fieldLayout.wasmType === binaryen.f64) {
|
|
131
|
+
return mod.f64.load(fieldLayout.offset, 0, ptrExpr);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
return mod.i32.load(fieldLayout.offset, 0, ptrExpr);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// =============================================================================
|
|
138
|
+
// Array expression compilation
|
|
139
|
+
// =============================================================================
|
|
140
|
+
export function compileArrayExpr(expr, cc, ctx) {
|
|
141
|
+
const { mod } = cc;
|
|
142
|
+
const elements = expr.elements;
|
|
143
|
+
// Layout: [length: i32] [elem0: i32] [elem1: i32] ...
|
|
144
|
+
const headerSize = 4; // i32 for length
|
|
145
|
+
const elemSize = 4; // i32 per element
|
|
146
|
+
const totalSize = headerSize + elements.length * elemSize;
|
|
147
|
+
const ptrIndex = ctx.addLocal(`__array_ptr_${expr.id}`, binaryen.i32);
|
|
148
|
+
const setPtr = mod.local.set(ptrIndex, mod.global.get("__heap_ptr", binaryen.i32));
|
|
149
|
+
const incrementHeap = mod.global.set("__heap_ptr", mod.i32.add(mod.local.get(ptrIndex, binaryen.i32), mod.i32.const(totalSize)));
|
|
150
|
+
// Store length at offset 0
|
|
151
|
+
const storeLength = mod.i32.store(0, 0, mod.local.get(ptrIndex, binaryen.i32), mod.i32.const(elements.length));
|
|
152
|
+
// Store each element
|
|
153
|
+
const stores = [];
|
|
154
|
+
for (let i = 0; i < elements.length; i++) {
|
|
155
|
+
const valueExpr = compileExpr(elements[i], cc, ctx);
|
|
156
|
+
stores.push(mod.i32.store(headerSize + i * elemSize, 0, mod.local.get(ptrIndex, binaryen.i32), valueExpr));
|
|
157
|
+
}
|
|
158
|
+
return mod.block(null, [
|
|
159
|
+
setPtr,
|
|
160
|
+
incrementHeap,
|
|
161
|
+
storeLength,
|
|
162
|
+
...stores,
|
|
163
|
+
mod.local.get(ptrIndex, binaryen.i32), // return pointer
|
|
164
|
+
], binaryen.i32);
|
|
165
|
+
}
|
|
166
|
+
export function compileStringInterp(expr, cc, ctx) {
|
|
167
|
+
const { mod, strings } = cc;
|
|
168
|
+
const parts = expr.parts;
|
|
169
|
+
// Edge case: no parts → empty string
|
|
170
|
+
if (parts.length === 0) {
|
|
171
|
+
const empty = strings.intern("");
|
|
172
|
+
// Set __str_ret_len so downstream consumers read correct length
|
|
173
|
+
return mod.block(null, [
|
|
174
|
+
mod.global.set("__str_ret_len", mod.i32.const(empty.length)),
|
|
175
|
+
mod.i32.const(empty.offset),
|
|
176
|
+
], binaryen.i32);
|
|
177
|
+
}
|
|
178
|
+
// Single part → compile directly (no concat needed)
|
|
179
|
+
// For string literals, must also set __str_ret_len
|
|
180
|
+
if (parts.length === 1) {
|
|
181
|
+
const part = parts[0];
|
|
182
|
+
if (part.kind === "literal" && typeof part.value === "string") {
|
|
183
|
+
const interned = strings.intern(part.value);
|
|
184
|
+
return mod.block(null, [
|
|
185
|
+
mod.global.set("__str_ret_len", mod.i32.const(interned.length)),
|
|
186
|
+
mod.i32.const(interned.offset),
|
|
187
|
+
], binaryen.i32);
|
|
188
|
+
}
|
|
189
|
+
// Non-literal — __str_ret_len already set by callee
|
|
190
|
+
return compileExpr(part, cc, ctx);
|
|
191
|
+
}
|
|
192
|
+
// Helper: compile a part and return [ptrExpr, lenExpr]
|
|
193
|
+
function compilePart(part) {
|
|
194
|
+
if (part.kind === "literal" && typeof part.value === "string") {
|
|
195
|
+
const interned = strings.intern(part.value);
|
|
196
|
+
return [mod.i32.const(interned.offset), mod.i32.const(interned.length)];
|
|
197
|
+
}
|
|
198
|
+
if (part.kind === "ident") {
|
|
199
|
+
// String variable — use companion __str_len_ local if available
|
|
200
|
+
const ptrExpr = compileExpr(part, cc, ctx);
|
|
201
|
+
const lenLocal = ctx.getLocal(`__str_len_${part.name}`);
|
|
202
|
+
if (lenLocal) {
|
|
203
|
+
return [ptrExpr, mod.local.get(lenLocal.index, binaryen.i32)];
|
|
204
|
+
}
|
|
205
|
+
return [ptrExpr, mod.global.get("__str_ret_len", binaryen.i32)];
|
|
206
|
+
}
|
|
207
|
+
const ptrExpr = compileExpr(part, cc, ctx);
|
|
208
|
+
return [ptrExpr, mod.global.get("__str_ret_len", binaryen.i32)];
|
|
209
|
+
}
|
|
210
|
+
// Left-fold: concat(concat(concat(parts[0], parts[1]), parts[2]), ...)
|
|
211
|
+
// Must save intermediate results to temp locals to prevent __str_ret_len clobbering.
|
|
212
|
+
const stmts = [];
|
|
213
|
+
// Compile first part, save ptr+len to temp locals
|
|
214
|
+
const [ptr0, len0] = compilePart(parts[0]);
|
|
215
|
+
const accPtrIdx = ctx.addLocal(`__interp_ptr_${expr.id}`, binaryen.i32);
|
|
216
|
+
const accLenIdx = ctx.addLocal(`__interp_len_${expr.id}`, binaryen.i32);
|
|
217
|
+
stmts.push(mod.local.set(accPtrIdx, ptr0));
|
|
218
|
+
stmts.push(mod.local.set(accLenIdx, len0));
|
|
219
|
+
// For each subsequent part, concat with accumulator
|
|
220
|
+
for (let i = 1; i < parts.length; i++) {
|
|
221
|
+
const [partPtr, partLen] = compilePart(parts[i]);
|
|
222
|
+
// Save part ptr+len to temp locals (partLen may reference __str_ret_len
|
|
223
|
+
// which gets overwritten by the concat call)
|
|
224
|
+
const tmpPartPtrIdx = ctx.addLocal(`__interp_p${i}_ptr_${expr.id}`, binaryen.i32);
|
|
225
|
+
const tmpPartLenIdx = ctx.addLocal(`__interp_p${i}_len_${expr.id}`, binaryen.i32);
|
|
226
|
+
stmts.push(mod.local.set(tmpPartPtrIdx, partPtr));
|
|
227
|
+
stmts.push(mod.local.set(tmpPartLenIdx, partLen));
|
|
228
|
+
// Call string_concat(accPtr, accLen, partPtr, partLen)
|
|
229
|
+
const concatResult = mod.call("string_concat", [
|
|
230
|
+
mod.local.get(accPtrIdx, binaryen.i32),
|
|
231
|
+
mod.local.get(accLenIdx, binaryen.i32),
|
|
232
|
+
mod.local.get(tmpPartPtrIdx, binaryen.i32),
|
|
233
|
+
mod.local.get(tmpPartLenIdx, binaryen.i32),
|
|
234
|
+
], binaryen.i32);
|
|
235
|
+
// Save result ptr and new __str_ret_len
|
|
236
|
+
stmts.push(mod.local.set(accPtrIdx, concatResult));
|
|
237
|
+
stmts.push(mod.local.set(accLenIdx, mod.global.get("__str_ret_len", binaryen.i32)));
|
|
238
|
+
}
|
|
239
|
+
// Return the final accumulated pointer
|
|
240
|
+
stmts.push(mod.local.get(accPtrIdx, binaryen.i32));
|
|
241
|
+
return mod.block(null, stmts, binaryen.i32);
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=compile-data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-data.js","sourceRoot":"","sources":["../../src/codegen/compile-data.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import binaryen from "binaryen";
|
|
2
|
+
import type { Expression } from "../ast/nodes.js";
|
|
3
|
+
import { type CompilationContext, FunctionContext } from "./types.js";
|
|
4
|
+
/**
|
|
5
|
+
* Infer the WASM type an expression will produce at runtime.
|
|
6
|
+
* Used to dispatch i32 vs f64 instructions in binops, unops, and block types.
|
|
7
|
+
*/
|
|
8
|
+
export declare function inferExprWasmType(expr: Expression, cc: CompilationContext, ctx: FunctionContext): binaryen.Type;
|
|
9
|
+
export declare function compileExpr(expr: Expression, cc: CompilationContext, ctx: FunctionContext): binaryen.ExpressionRef;
|
|
10
|
+
//# sourceMappingURL=compile-expr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-expr.d.ts","sourceRoot":"","sources":["../../src/codegen/compile-expr.ts"],"names":[],"mappings":"AAQA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EACH,KAAK,kBAAkB,EACvB,eAAe,EAElB,MAAM,YAAY,CAAC;AAWpB;;;GAGG;AACH,wBAAgB,iBAAiB,CAC7B,IAAI,EAAE,UAAU,EAChB,EAAE,EAAE,kBAAkB,EACtB,GAAG,EAAE,eAAe,GACrB,QAAQ,CAAC,IAAI,CAkFf;AAOD,wBAAgB,WAAW,CACvB,IAAI,EAAE,UAAU,EAChB,EAAE,EAAE,kBAAkB,EACtB,GAAG,EAAE,eAAe,GACrB,QAAQ,CAAC,aAAa,CAsDxB"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Expression compilation — dispatches to compile-{scalars,calls,data,match}.ts
|
|
3
|
+
// =============================================================================
|
|
4
|
+
// Extracted from codegen.ts to break circular dependencies.
|
|
5
|
+
// All compile-*.ts modules import compileExpr/inferExprWasmType from HERE,
|
|
6
|
+
// not from codegen.ts. This file is the only one that imports from all
|
|
7
|
+
// compile-*.ts modules.
|
|
8
|
+
import binaryen from "binaryen";
|
|
9
|
+
import { wasmValidationError } from "../errors/structured-errors.js";
|
|
10
|
+
import { edictTypeToWasm, } from "./types.js";
|
|
11
|
+
import { compileLiteral, compileIdent, compileBinop, compileUnop, compileIf, compileLet, compileBlock } from "./compile-scalars.js";
|
|
12
|
+
import { compileCall, compileLambdaExpr } from "./compile-calls.js";
|
|
13
|
+
import { compileRecordExpr, compileTupleExpr, compileEnumConstructor, compileAccess, compileArrayExpr, compileStringInterp } from "./compile-data.js";
|
|
14
|
+
import { compileMatch } from "./compile-match.js";
|
|
15
|
+
// =============================================================================
|
|
16
|
+
// Compile-time WASM type inference for expressions
|
|
17
|
+
// =============================================================================
|
|
18
|
+
/**
|
|
19
|
+
* Infer the WASM type an expression will produce at runtime.
|
|
20
|
+
* Used to dispatch i32 vs f64 instructions in binops, unops, and block types.
|
|
21
|
+
*/
|
|
22
|
+
export function inferExprWasmType(expr, cc, ctx) {
|
|
23
|
+
switch (expr.kind) {
|
|
24
|
+
case "literal": {
|
|
25
|
+
// If the literal has an explicit type annotation, use it
|
|
26
|
+
if (expr.type)
|
|
27
|
+
return edictTypeToWasm(expr.type);
|
|
28
|
+
const val = expr.value;
|
|
29
|
+
if (typeof val === "number" && !Number.isInteger(val))
|
|
30
|
+
return binaryen.f64;
|
|
31
|
+
return binaryen.i32; // int, bool, string → i32
|
|
32
|
+
}
|
|
33
|
+
case "ident": {
|
|
34
|
+
const local = ctx.getLocal(expr.name);
|
|
35
|
+
if (local)
|
|
36
|
+
return local.type;
|
|
37
|
+
const globalType = cc.constGlobals.get(expr.name);
|
|
38
|
+
if (globalType)
|
|
39
|
+
return globalType;
|
|
40
|
+
return binaryen.i32;
|
|
41
|
+
}
|
|
42
|
+
case "binop": {
|
|
43
|
+
// Comparison/logical ops always return i32 (boolean)
|
|
44
|
+
const cmpOps = ["==", "!=", "<", ">", "<=", ">=", "and", "or", "implies"];
|
|
45
|
+
if (cmpOps.includes(expr.op))
|
|
46
|
+
return binaryen.i32;
|
|
47
|
+
// Arithmetic: infer from left operand
|
|
48
|
+
return inferExprWasmType(expr.left, cc, ctx);
|
|
49
|
+
}
|
|
50
|
+
case "unop":
|
|
51
|
+
if (expr.op === "not")
|
|
52
|
+
return binaryen.i32;
|
|
53
|
+
return inferExprWasmType(expr.operand, cc, ctx);
|
|
54
|
+
case "call": {
|
|
55
|
+
if (expr.fn.kind === "ident") {
|
|
56
|
+
const sig = cc.fnSigs.get(expr.fn.name);
|
|
57
|
+
if (sig)
|
|
58
|
+
return sig.returnType;
|
|
59
|
+
}
|
|
60
|
+
return binaryen.i32;
|
|
61
|
+
}
|
|
62
|
+
case "if":
|
|
63
|
+
// Type of if is the type of the then branch's last expression
|
|
64
|
+
if (expr.then.length > 0) {
|
|
65
|
+
return inferExprWasmType(expr.then[expr.then.length - 1], cc, ctx);
|
|
66
|
+
}
|
|
67
|
+
return binaryen.i32;
|
|
68
|
+
case "let":
|
|
69
|
+
return binaryen.none; // let is a statement (local.set), returns void
|
|
70
|
+
case "block":
|
|
71
|
+
if (expr.body.length > 0) {
|
|
72
|
+
return inferExprWasmType(expr.body[expr.body.length - 1], cc, ctx);
|
|
73
|
+
}
|
|
74
|
+
return binaryen.none;
|
|
75
|
+
case "match":
|
|
76
|
+
// Type of match is the type of the first arm's body
|
|
77
|
+
if (expr.arms.length > 0 && expr.arms[0].body.length > 0) {
|
|
78
|
+
const firstBody = expr.arms[0].body;
|
|
79
|
+
return inferExprWasmType(firstBody[firstBody.length - 1], cc, ctx);
|
|
80
|
+
}
|
|
81
|
+
return binaryen.i32;
|
|
82
|
+
case "array":
|
|
83
|
+
case "tuple_expr":
|
|
84
|
+
case "enum_constructor":
|
|
85
|
+
case "record_expr":
|
|
86
|
+
return binaryen.i32; // heap pointer
|
|
87
|
+
case "string_interp":
|
|
88
|
+
return binaryen.i32; // string pointer
|
|
89
|
+
case "access": {
|
|
90
|
+
let recordTypeName;
|
|
91
|
+
if (expr.target.kind === "ident") {
|
|
92
|
+
const local = ctx.getLocal(expr.target.name);
|
|
93
|
+
if (local && local.edictTypeName) {
|
|
94
|
+
recordTypeName = local.edictTypeName;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
else if (expr.target.kind === "record_expr") {
|
|
98
|
+
recordTypeName = expr.target.name;
|
|
99
|
+
}
|
|
100
|
+
if (recordTypeName) {
|
|
101
|
+
const layout = cc.recordLayouts.get(recordTypeName);
|
|
102
|
+
if (layout) {
|
|
103
|
+
const fieldLayout = layout.fields.find((f) => f.name === expr.field);
|
|
104
|
+
if (fieldLayout)
|
|
105
|
+
return fieldLayout.wasmType;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return binaryen.i32; // fallback
|
|
109
|
+
}
|
|
110
|
+
default:
|
|
111
|
+
return binaryen.i32;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// =============================================================================
|
|
115
|
+
// Expression compilation dispatcher
|
|
116
|
+
// =============================================================================
|
|
117
|
+
export function compileExpr(expr, cc, ctx) {
|
|
118
|
+
switch (expr.kind) {
|
|
119
|
+
case "literal":
|
|
120
|
+
return compileLiteral(expr, cc);
|
|
121
|
+
case "ident":
|
|
122
|
+
return compileIdent(expr, cc, ctx);
|
|
123
|
+
case "binop":
|
|
124
|
+
return compileBinop(expr, cc, ctx);
|
|
125
|
+
case "unop":
|
|
126
|
+
return compileUnop(expr, cc, ctx);
|
|
127
|
+
case "call":
|
|
128
|
+
return compileCall(expr, cc, ctx);
|
|
129
|
+
case "if":
|
|
130
|
+
return compileIf(expr, cc, ctx);
|
|
131
|
+
case "let":
|
|
132
|
+
return compileLet(expr, cc, ctx);
|
|
133
|
+
case "block":
|
|
134
|
+
return compileBlock(expr, cc, ctx);
|
|
135
|
+
case "match":
|
|
136
|
+
return compileMatch(expr, cc, ctx);
|
|
137
|
+
case "record_expr":
|
|
138
|
+
return compileRecordExpr(expr, cc, ctx);
|
|
139
|
+
case "tuple_expr":
|
|
140
|
+
return compileTupleExpr(expr, cc, ctx);
|
|
141
|
+
case "enum_constructor":
|
|
142
|
+
return compileEnumConstructor(expr, cc, ctx);
|
|
143
|
+
case "access":
|
|
144
|
+
return compileAccess(expr, cc, ctx);
|
|
145
|
+
case "array":
|
|
146
|
+
return compileArrayExpr(expr, cc, ctx);
|
|
147
|
+
case "lambda":
|
|
148
|
+
return compileLambdaExpr(expr, cc, ctx);
|
|
149
|
+
case "string_interp":
|
|
150
|
+
return compileStringInterp(expr, cc, ctx);
|
|
151
|
+
default:
|
|
152
|
+
cc.errors.push(wasmValidationError(`unsupported expression kind: ${expr.kind}`));
|
|
153
|
+
return cc.mod.unreachable();
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=compile-expr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-expr.js","sourceRoot":"","sources":["../../src/codegen/compile-expr.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import binaryen from "binaryen";
|
|
2
|
+
import type { Expression } from "../ast/nodes.js";
|
|
3
|
+
import { type CompilationContext, FunctionContext } from "./types.js";
|
|
4
|
+
export declare function compileMatch(expr: Expression & {
|
|
5
|
+
kind: "match";
|
|
6
|
+
}, cc: CompilationContext, ctx: FunctionContext): binaryen.ExpressionRef;
|
|
7
|
+
//# sourceMappingURL=compile-match.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-match.d.ts","sourceRoot":"","sources":["../../src/codegen/compile-match.ts"],"names":[],"mappings":"AAIA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAW,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EACH,KAAK,kBAAkB,EACvB,eAAe,EAClB,MAAM,YAAY,CAAC;AAGpB,wBAAgB,YAAY,CACxB,IAAI,EAAE,UAAU,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,EACpC,EAAE,EAAE,kBAAkB,EACtB,GAAG,EAAE,eAAe,GACrB,QAAQ,CAAC,aAAa,CA8LxB"}
|