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.
Files changed (227) hide show
  1. package/README.md +39 -13
  2. package/dist/ast/nodes.d.ts +4 -3
  3. package/dist/ast/nodes.d.ts.map +1 -1
  4. package/dist/ast/nodes.js +1 -0
  5. package/dist/ast/nodes.js.map +1 -1
  6. package/dist/ast/type-constants.d.ts +12 -0
  7. package/dist/ast/type-constants.d.ts.map +1 -0
  8. package/dist/ast/type-constants.js +16 -0
  9. package/dist/ast/type-constants.js.map +1 -0
  10. package/dist/ast/types.d.ts +1 -1
  11. package/dist/ast/types.d.ts.map +1 -1
  12. package/dist/builtins/builtin-enums.d.ts +12 -0
  13. package/dist/builtins/builtin-enums.d.ts.map +1 -0
  14. package/dist/builtins/builtin-enums.js +45 -0
  15. package/dist/builtins/builtin-enums.js.map +1 -0
  16. package/dist/builtins/builtin-types.d.ts +20 -0
  17. package/dist/builtins/builtin-types.d.ts.map +1 -0
  18. package/dist/builtins/builtin-types.js +6 -0
  19. package/dist/builtins/builtin-types.js.map +1 -0
  20. package/dist/builtins/builtins.d.ts +3 -0
  21. package/dist/builtins/builtins.d.ts.map +1 -0
  22. package/dist/builtins/builtins.js +3 -0
  23. package/dist/builtins/builtins.js.map +1 -0
  24. package/dist/builtins/domains/array.d.ts +3 -0
  25. package/dist/builtins/domains/array.d.ts.map +1 -0
  26. package/dist/builtins/domains/array.js +236 -0
  27. package/dist/builtins/domains/array.js.map +1 -0
  28. package/dist/builtins/domains/core.d.ts +3 -0
  29. package/dist/builtins/domains/core.d.ts.map +1 -0
  30. package/dist/builtins/domains/core.js +45 -0
  31. package/dist/builtins/domains/core.js.map +1 -0
  32. package/dist/builtins/domains/crypto.d.ts +3 -0
  33. package/dist/builtins/domains/crypto.d.ts.map +1 -0
  34. package/dist/builtins/domains/crypto.js +49 -0
  35. package/dist/builtins/domains/crypto.js.map +1 -0
  36. package/dist/builtins/domains/datetime.d.ts +3 -0
  37. package/dist/builtins/domains/datetime.d.ts.map +1 -0
  38. package/dist/builtins/domains/datetime.js +45 -0
  39. package/dist/builtins/domains/datetime.js.map +1 -0
  40. package/dist/builtins/domains/http.d.ts +3 -0
  41. package/dist/builtins/domains/http.d.ts.map +1 -0
  42. package/dist/builtins/domains/http.js +55 -0
  43. package/dist/builtins/domains/http.js.map +1 -0
  44. package/dist/builtins/domains/int64.d.ts +3 -0
  45. package/dist/builtins/domains/int64.d.ts.map +1 -0
  46. package/dist/builtins/domains/int64.js +31 -0
  47. package/dist/builtins/domains/int64.js.map +1 -0
  48. package/dist/builtins/domains/io.d.ts +3 -0
  49. package/dist/builtins/domains/io.d.ts.map +1 -0
  50. package/dist/builtins/domains/io.js +79 -0
  51. package/dist/builtins/domains/io.js.map +1 -0
  52. package/dist/builtins/domains/json.d.ts +3 -0
  53. package/dist/builtins/domains/json.d.ts.map +1 -0
  54. package/dist/builtins/domains/json.js +47 -0
  55. package/dist/builtins/domains/json.js.map +1 -0
  56. package/dist/builtins/domains/math.d.ts +3 -0
  57. package/dist/builtins/domains/math.d.ts.map +1 -0
  58. package/dist/builtins/domains/math.js +47 -0
  59. package/dist/builtins/domains/math.js.map +1 -0
  60. package/dist/builtins/domains/option.d.ts +3 -0
  61. package/dist/builtins/domains/option.d.ts.map +1 -0
  62. package/dist/builtins/domains/option.js +56 -0
  63. package/dist/builtins/domains/option.js.map +1 -0
  64. package/dist/builtins/domains/random.d.ts +3 -0
  65. package/dist/builtins/domains/random.d.ts.map +1 -0
  66. package/dist/builtins/domains/random.js +50 -0
  67. package/dist/builtins/domains/random.js.map +1 -0
  68. package/dist/builtins/domains/regex.d.ts +3 -0
  69. package/dist/builtins/domains/regex.d.ts.map +1 -0
  70. package/dist/builtins/domains/regex.js +69 -0
  71. package/dist/builtins/domains/regex.js.map +1 -0
  72. package/dist/builtins/domains/result.d.ts +3 -0
  73. package/dist/builtins/domains/result.d.ts.map +1 -0
  74. package/dist/builtins/domains/result.js +84 -0
  75. package/dist/builtins/domains/result.js.map +1 -0
  76. package/dist/builtins/domains/string.d.ts +3 -0
  77. package/dist/builtins/domains/string.d.ts.map +1 -0
  78. package/dist/builtins/domains/string.js +139 -0
  79. package/dist/builtins/domains/string.js.map +1 -0
  80. package/dist/builtins/domains/type-conversion.d.ts +3 -0
  81. package/dist/builtins/domains/type-conversion.d.ts.map +1 -0
  82. package/dist/builtins/domains/type-conversion.js +42 -0
  83. package/dist/builtins/domains/type-conversion.js.map +1 -0
  84. package/dist/builtins/host-helpers.d.ts +66 -0
  85. package/dist/builtins/host-helpers.d.ts.map +1 -0
  86. package/dist/builtins/host-helpers.js +127 -0
  87. package/dist/builtins/host-helpers.js.map +1 -0
  88. package/dist/builtins/registry.d.ts +48 -0
  89. package/dist/builtins/registry.d.ts.map +1 -0
  90. package/dist/builtins/registry.js +118 -0
  91. package/dist/builtins/registry.js.map +1 -0
  92. package/dist/check.d.ts +9 -2
  93. package/dist/check.d.ts.map +1 -1
  94. package/dist/check.js +30 -9
  95. package/dist/check.js.map +1 -1
  96. package/dist/checker/check.d.ts +18 -1
  97. package/dist/checker/check.d.ts.map +1 -1
  98. package/dist/checker/check.js +157 -108
  99. package/dist/checker/check.js.map +1 -1
  100. package/dist/checker/type-env.d.ts +2 -0
  101. package/dist/checker/type-env.d.ts.map +1 -1
  102. package/dist/checker/type-env.js +9 -0
  103. package/dist/checker/type-env.js.map +1 -1
  104. package/dist/codegen/browser-host-adapter.d.ts +29 -0
  105. package/dist/codegen/browser-host-adapter.d.ts.map +1 -0
  106. package/dist/codegen/browser-host-adapter.js +51 -0
  107. package/dist/codegen/browser-host-adapter.js.map +1 -0
  108. package/dist/codegen/builtins.d.ts +2 -26
  109. package/dist/codegen/builtins.d.ts.map +1 -1
  110. package/dist/codegen/builtins.js +2 -341
  111. package/dist/codegen/builtins.js.map +1 -1
  112. package/dist/codegen/closures.d.ts +17 -0
  113. package/dist/codegen/closures.d.ts.map +1 -0
  114. package/dist/codegen/closures.js +140 -0
  115. package/dist/codegen/closures.js.map +1 -0
  116. package/dist/codegen/codegen.d.ts +6 -30
  117. package/dist/codegen/codegen.d.ts.map +1 -1
  118. package/dist/codegen/codegen.js +154 -1103
  119. package/dist/codegen/codegen.js.map +1 -1
  120. package/dist/codegen/collect-strings.d.ts +4 -0
  121. package/dist/codegen/collect-strings.d.ts.map +1 -0
  122. package/dist/codegen/collect-strings.js +76 -0
  123. package/dist/codegen/collect-strings.js.map +1 -0
  124. package/dist/codegen/compile-calls.d.ts +10 -0
  125. package/dist/codegen/compile-calls.d.ts.map +1 -0
  126. package/dist/codegen/compile-calls.js +374 -0
  127. package/dist/codegen/compile-calls.js.map +1 -0
  128. package/dist/codegen/compile-data.d.ts +22 -0
  129. package/dist/codegen/compile-data.d.ts.map +1 -0
  130. package/dist/codegen/compile-data.js +243 -0
  131. package/dist/codegen/compile-data.js.map +1 -0
  132. package/dist/codegen/compile-expr.d.ts +10 -0
  133. package/dist/codegen/compile-expr.d.ts.map +1 -0
  134. package/dist/codegen/compile-expr.js +156 -0
  135. package/dist/codegen/compile-expr.js.map +1 -0
  136. package/dist/codegen/compile-match.d.ts +7 -0
  137. package/dist/codegen/compile-match.d.ts.map +1 -0
  138. package/dist/codegen/compile-match.js +195 -0
  139. package/dist/codegen/compile-match.js.map +1 -0
  140. package/dist/codegen/compile-scalars.d.ts +25 -0
  141. package/dist/codegen/compile-scalars.d.ts.map +1 -0
  142. package/dist/codegen/compile-scalars.js +211 -0
  143. package/dist/codegen/compile-scalars.js.map +1 -0
  144. package/dist/codegen/hof-generators.d.ts +39 -0
  145. package/dist/codegen/hof-generators.d.ts.map +1 -0
  146. package/dist/codegen/hof-generators.js +336 -0
  147. package/dist/codegen/hof-generators.js.map +1 -0
  148. package/dist/codegen/host-adapter.d.ts +44 -0
  149. package/dist/codegen/host-adapter.d.ts.map +1 -0
  150. package/dist/codegen/host-adapter.js +9 -0
  151. package/dist/codegen/host-adapter.js.map +1 -0
  152. package/dist/codegen/imports.d.ts +15 -0
  153. package/dist/codegen/imports.d.ts.map +1 -0
  154. package/dist/codegen/imports.js +165 -0
  155. package/dist/codegen/imports.js.map +1 -0
  156. package/dist/codegen/node-host-adapter.d.ts +35 -0
  157. package/dist/codegen/node-host-adapter.d.ts.map +1 -0
  158. package/dist/codegen/node-host-adapter.js +155 -0
  159. package/dist/codegen/node-host-adapter.js.map +1 -0
  160. package/dist/codegen/runner.d.ts +36 -2
  161. package/dist/codegen/runner.d.ts.map +1 -1
  162. package/dist/codegen/runner.js +147 -271
  163. package/dist/codegen/runner.js.map +1 -1
  164. package/dist/codegen/types.d.ts +96 -0
  165. package/dist/codegen/types.d.ts.map +1 -0
  166. package/dist/codegen/types.js +63 -0
  167. package/dist/codegen/types.js.map +1 -0
  168. package/dist/compact/expand.d.ts +25 -0
  169. package/dist/compact/expand.d.ts.map +1 -0
  170. package/dist/compact/expand.js +199 -0
  171. package/dist/compact/expand.js.map +1 -0
  172. package/dist/compile.d.ts +2 -1
  173. package/dist/compile.d.ts.map +1 -1
  174. package/dist/compile.js +2 -2
  175. package/dist/compile.js.map +1 -1
  176. package/dist/contracts/translate.js.map +1 -1
  177. package/dist/contracts/verify.d.ts +10 -2
  178. package/dist/contracts/verify.d.ts.map +1 -1
  179. package/dist/contracts/verify.js +26 -21
  180. package/dist/contracts/verify.js.map +1 -1
  181. package/dist/effects/call-graph.d.ts.map +1 -1
  182. package/dist/effects/call-graph.js +27 -4
  183. package/dist/effects/call-graph.js.map +1 -1
  184. package/dist/effects/effect-check.d.ts +10 -2
  185. package/dist/effects/effect-check.d.ts.map +1 -1
  186. package/dist/effects/effect-check.js +12 -7
  187. package/dist/effects/effect-check.js.map +1 -1
  188. package/dist/errors/error-catalog.d.ts +1 -1
  189. package/dist/errors/error-catalog.d.ts.map +1 -1
  190. package/dist/errors/error-catalog.js +119 -0
  191. package/dist/errors/error-catalog.js.map +1 -1
  192. package/dist/errors/structured-errors.d.ts +28 -1
  193. package/dist/errors/structured-errors.d.ts.map +1 -1
  194. package/dist/errors/structured-errors.js +9 -0
  195. package/dist/errors/structured-errors.js.map +1 -1
  196. package/dist/index.d.ts +20 -9
  197. package/dist/index.d.ts.map +1 -1
  198. package/dist/index.js +26 -10
  199. package/dist/index.js.map +1 -1
  200. package/dist/lint/lint.d.ts +9 -0
  201. package/dist/lint/lint.d.ts.map +1 -0
  202. package/dist/lint/lint.js +354 -0
  203. package/dist/lint/lint.js.map +1 -0
  204. package/dist/lint/warnings.d.ts +54 -0
  205. package/dist/lint/warnings.d.ts.map +1 -0
  206. package/dist/lint/warnings.js +39 -0
  207. package/dist/lint/warnings.js.map +1 -0
  208. package/dist/mcp/create-server.d.ts.map +1 -1
  209. package/dist/mcp/create-server.js +66 -5
  210. package/dist/mcp/create-server.js.map +1 -1
  211. package/dist/mcp/handlers.d.ts +21 -5
  212. package/dist/mcp/handlers.d.ts.map +1 -1
  213. package/dist/mcp/handlers.js +65 -15
  214. package/dist/mcp/handlers.js.map +1 -1
  215. package/dist/mcp/prompts.d.ts +17 -0
  216. package/dist/mcp/prompts.d.ts.map +1 -0
  217. package/dist/mcp/prompts.js +181 -0
  218. package/dist/mcp/prompts.js.map +1 -0
  219. package/dist/mcp/server.js +1 -4
  220. package/dist/mcp/server.js.map +1 -1
  221. package/dist/resolver/resolve.d.ts.map +1 -1
  222. package/dist/resolver/resolve.js +62 -16
  223. package/dist/resolver/resolve.js.map +1 -1
  224. package/dist/validator/node-validators.d.ts.map +1 -1
  225. package/dist/validator/node-validators.js +60 -5
  226. package/dist/validator/node-validators.js.map +1 -1
  227. 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"}