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
@@ -1 +1 @@
1
- {"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../src/codegen/builtins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../src/codegen/builtins.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import binaryen from "binaryen";
2
+ import type { Expression } from "../ast/nodes.js";
3
+ import { type FunctionSig, FunctionContext } from "./types.js";
4
+ /**
5
+ * Walk a lambda body and collect identifiers that reference variables from
6
+ * the enclosing scope ("free variables"). These are the values that must be
7
+ * stored in a closure environment record.
8
+ */
9
+ export declare function collectFreeVariables(body: Expression[], paramNames: Set<string>, constGlobals: Map<string, binaryen.Type>, fnSigs: Map<string, FunctionSig>): Map<string, {
10
+ wasmType: binaryen.Type;
11
+ }>;
12
+ /**
13
+ * Allocate a closure pair on the heap: [table_index: i32, env_ptr: i32].
14
+ * Returns a block expression that evaluates to the pair's heap pointer.
15
+ */
16
+ export declare function allocClosurePair(mod: binaryen.Module, ctx: FunctionContext, tableIndexExpr: binaryen.ExpressionRef, envPtrExpr: binaryen.ExpressionRef, uniqueId: string): binaryen.ExpressionRef;
17
+ //# sourceMappingURL=closures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"closures.d.ts","sourceRoot":"","sources":["../../src/codegen/closures.ts"],"names":[],"mappings":"AAKA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,KAAK,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAM/D;;;;GAIG;AACH,wBAAgB,oBAAoB,CAChC,IAAI,EAAE,UAAU,EAAE,EAClB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EACvB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EACxC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GACjC,GAAG,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAA;CAAE,CAAC,CAqG1C;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC5B,GAAG,EAAE,QAAQ,CAAC,MAAM,EACpB,GAAG,EAAE,eAAe,EACpB,cAAc,EAAE,QAAQ,CAAC,aAAa,EACtC,UAAU,EAAE,QAAQ,CAAC,aAAa,EAClC,QAAQ,EAAE,MAAM,GACjB,QAAQ,CAAC,aAAa,CA2BxB"}
@@ -0,0 +1,140 @@
1
+ // =============================================================================
2
+ // Closure Helpers — free variable collection and closure pair allocation
3
+ // =============================================================================
4
+ // Extracted from codegen.ts for modularity.
5
+ import binaryen from "binaryen";
6
+ import { BUILTIN_FUNCTIONS } from "../builtins/builtins.js";
7
+ // =============================================================================
8
+ // Free variable collection
9
+ // =============================================================================
10
+ /**
11
+ * Walk a lambda body and collect identifiers that reference variables from
12
+ * the enclosing scope ("free variables"). These are the values that must be
13
+ * stored in a closure environment record.
14
+ */
15
+ export function collectFreeVariables(body, paramNames, constGlobals, fnSigs) {
16
+ const free = new Map();
17
+ const locallyDefined = new Set();
18
+ function walk(expr) {
19
+ switch (expr.kind) {
20
+ case "ident":
21
+ if (!paramNames.has(expr.name) &&
22
+ !constGlobals.has(expr.name) &&
23
+ !fnSigs.has(expr.name) &&
24
+ !BUILTIN_FUNCTIONS.has(expr.name) &&
25
+ !locallyDefined.has(expr.name) &&
26
+ !free.has(expr.name)) {
27
+ // This is a free variable — we'll determine its WASM type later
28
+ // during compilation when we have access to the enclosing context.
29
+ free.set(expr.name, { wasmType: binaryen.i32 }); // placeholder
30
+ }
31
+ break;
32
+ case "let":
33
+ walk(expr.value);
34
+ locallyDefined.add(expr.name);
35
+ break;
36
+ case "binop":
37
+ walk(expr.left);
38
+ walk(expr.right);
39
+ break;
40
+ case "unop":
41
+ walk(expr.operand);
42
+ break;
43
+ case "call":
44
+ walk(expr.fn);
45
+ for (const a of expr.args)
46
+ walk(a);
47
+ break;
48
+ case "if":
49
+ walk(expr.condition);
50
+ for (const e of expr.then)
51
+ walk(e);
52
+ if (expr.else)
53
+ for (const e of expr.else)
54
+ walk(e);
55
+ break;
56
+ case "block":
57
+ for (const e of expr.body)
58
+ walk(e);
59
+ break;
60
+ case "match":
61
+ walk(expr.target);
62
+ for (const arm of expr.arms) {
63
+ for (const e of arm.body)
64
+ walk(e);
65
+ }
66
+ break;
67
+ case "lambda":
68
+ // Nested lambda — its params shadow, but we still walk its body
69
+ // to find free variables from OUR scope
70
+ {
71
+ const innerParams = new Set(expr.params.map(p => p.name));
72
+ const innerFree = collectFreeVariables(expr.body, innerParams, constGlobals, fnSigs);
73
+ // Any free var from the inner lambda that isn't our param
74
+ // or locally defined is also free in our scope
75
+ for (const [name, info] of innerFree) {
76
+ if (!paramNames.has(name) &&
77
+ !locallyDefined.has(name) &&
78
+ !constGlobals.has(name) &&
79
+ !fnSigs.has(name) &&
80
+ !BUILTIN_FUNCTIONS.has(name) &&
81
+ !free.has(name)) {
82
+ free.set(name, info);
83
+ }
84
+ }
85
+ }
86
+ break;
87
+ case "array":
88
+ for (const e of expr.elements)
89
+ walk(e);
90
+ break;
91
+ case "tuple_expr":
92
+ for (const e of expr.elements)
93
+ walk(e);
94
+ break;
95
+ case "record_expr":
96
+ for (const f of expr.fields)
97
+ walk(f.value);
98
+ break;
99
+ case "enum_constructor":
100
+ for (const f of expr.fields)
101
+ walk(f.value);
102
+ break;
103
+ case "access":
104
+ walk(expr.target);
105
+ break;
106
+ case "string_interp":
107
+ for (const p of expr.parts)
108
+ walk(p);
109
+ break;
110
+ case "literal":
111
+ break;
112
+ }
113
+ }
114
+ for (const expr of body)
115
+ walk(expr);
116
+ return free;
117
+ }
118
+ // =============================================================================
119
+ // Closure pair allocation
120
+ // =============================================================================
121
+ /**
122
+ * Allocate a closure pair on the heap: [table_index: i32, env_ptr: i32].
123
+ * Returns a block expression that evaluates to the pair's heap pointer.
124
+ */
125
+ export function allocClosurePair(mod, ctx, tableIndexExpr, envPtrExpr, uniqueId) {
126
+ const ptrIndex = ctx.addLocal(`__closure_ptr_${uniqueId}`, binaryen.i32);
127
+ return mod.block(null, [
128
+ // ptr = __heap_ptr
129
+ mod.local.set(ptrIndex, mod.global.get("__heap_ptr", binaryen.i32)),
130
+ // __heap_ptr += 8
131
+ mod.global.set("__heap_ptr", mod.i32.add(mod.local.get(ptrIndex, binaryen.i32), mod.i32.const(8))),
132
+ // store table_index at offset 0
133
+ mod.i32.store(0, 0, mod.local.get(ptrIndex, binaryen.i32), tableIndexExpr),
134
+ // store env_ptr at offset 4
135
+ mod.i32.store(4, 0, mod.local.get(ptrIndex, binaryen.i32), envPtrExpr),
136
+ // return the pair pointer
137
+ mod.local.get(ptrIndex, binaryen.i32),
138
+ ], binaryen.i32);
139
+ }
140
+ //# sourceMappingURL=closures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"closures.js","sourceRoot":"","sources":["../../src/codegen/closures.ts"],"names":[],"mappings":"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"}
@@ -1,32 +1,8 @@
1
- import binaryen from "binaryen";
2
1
  import type { EdictModule } from "../ast/nodes.js";
3
- export interface CompileSuccess {
4
- ok: true;
5
- wasm: Uint8Array;
6
- wat: string;
7
- }
8
- export interface CompileFailure {
9
- ok: false;
10
- errors: string[];
11
- }
12
- export type CompileResult = CompileSuccess | CompileFailure;
13
- export interface FieldLayout {
14
- name: string;
15
- offset: number;
16
- wasmType: binaryen.Type;
17
- }
18
- export interface EnumVariantLayout {
19
- name: string;
20
- tag: number;
21
- fields: FieldLayout[];
22
- totalSize: number;
23
- }
24
- export interface EnumLayout {
25
- variants: EnumVariantLayout[];
26
- }
27
- export interface RecordLayout {
28
- fields: FieldLayout[];
29
- totalSize: number;
30
- }
31
- export declare function compile(module: EdictModule): CompileResult;
2
+ import { type CompileResult, type CompileSuccess, type CompileFailure, type CompileOptions, type FieldLayout, type EnumVariantLayout, type EnumLayout, type RecordLayout } from "./types.js";
3
+ import { compileExpr, inferExprWasmType } from "./compile-expr.js";
4
+ export type { CompileResult, CompileSuccess, CompileFailure, CompileOptions };
5
+ export type { FieldLayout, EnumVariantLayout, EnumLayout, RecordLayout };
6
+ export { compileExpr, inferExprWasmType };
7
+ export declare function compile(module: EdictModule, options?: CompileOptions): CompileResult;
32
8
  //# sourceMappingURL=codegen.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/codegen/codegen.ts"],"names":[],"mappings":"AAOA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EACR,WAAW,EAId,MAAM,iBAAiB,CAAC;AASzB,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,cAAc,CAAC;AAiJ5D,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACvB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACrB;AA0CD,wBAAgB,OAAO,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,CAkN1D"}
1
+ {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/codegen/codegen.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACR,WAAW,EAEd,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAEH,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EAGnB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,YAAY,EAGpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGnE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;AAC9E,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;AAGzE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;AAU1C,wBAAgB,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,aAAa,CA2TpF"}