edict-lang 1.2.0 → 1.5.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 (141) hide show
  1. package/dist/ast/nodes.d.ts +3 -3
  2. package/dist/ast/nodes.d.ts.map +1 -1
  3. package/dist/ast/nodes.js +1 -0
  4. package/dist/ast/nodes.js.map +1 -1
  5. package/dist/ast/type-constants.d.ts +12 -0
  6. package/dist/ast/type-constants.d.ts.map +1 -0
  7. package/dist/ast/type-constants.js +16 -0
  8. package/dist/ast/type-constants.js.map +1 -0
  9. package/dist/ast/types.d.ts +1 -1
  10. package/dist/ast/types.d.ts.map +1 -1
  11. package/dist/builtins/builtin-enums.d.ts +12 -0
  12. package/dist/builtins/builtin-enums.d.ts.map +1 -0
  13. package/dist/builtins/builtin-enums.js +45 -0
  14. package/dist/builtins/builtin-enums.js.map +1 -0
  15. package/dist/builtins/builtins.d.ts +24 -0
  16. package/dist/builtins/builtins.d.ts.map +1 -0
  17. package/dist/builtins/builtins.js +691 -0
  18. package/dist/builtins/builtins.js.map +1 -0
  19. package/dist/checker/check.d.ts.map +1 -1
  20. package/dist/checker/check.js +81 -38
  21. package/dist/checker/check.js.map +1 -1
  22. package/dist/checker/type-env.d.ts +2 -0
  23. package/dist/checker/type-env.d.ts.map +1 -1
  24. package/dist/checker/type-env.js +9 -0
  25. package/dist/checker/type-env.js.map +1 -1
  26. package/dist/codegen/browser-host-adapter.d.ts +29 -0
  27. package/dist/codegen/browser-host-adapter.d.ts.map +1 -0
  28. package/dist/codegen/browser-host-adapter.js +51 -0
  29. package/dist/codegen/browser-host-adapter.js.map +1 -0
  30. package/dist/codegen/builtins.d.ts +2 -26
  31. package/dist/codegen/builtins.d.ts.map +1 -1
  32. package/dist/codegen/builtins.js +2 -341
  33. package/dist/codegen/builtins.js.map +1 -1
  34. package/dist/codegen/closures.d.ts +17 -0
  35. package/dist/codegen/closures.d.ts.map +1 -0
  36. package/dist/codegen/closures.js +140 -0
  37. package/dist/codegen/closures.js.map +1 -0
  38. package/dist/codegen/codegen.d.ts +11 -30
  39. package/dist/codegen/codegen.d.ts.map +1 -1
  40. package/dist/codegen/codegen.js +154 -982
  41. package/dist/codegen/codegen.js.map +1 -1
  42. package/dist/codegen/collect-strings.d.ts +4 -0
  43. package/dist/codegen/collect-strings.d.ts.map +1 -0
  44. package/dist/codegen/collect-strings.js +76 -0
  45. package/dist/codegen/collect-strings.js.map +1 -0
  46. package/dist/codegen/compile-calls.d.ts +10 -0
  47. package/dist/codegen/compile-calls.d.ts.map +1 -0
  48. package/dist/codegen/compile-calls.js +344 -0
  49. package/dist/codegen/compile-calls.js.map +1 -0
  50. package/dist/codegen/compile-data.d.ts +22 -0
  51. package/dist/codegen/compile-data.d.ts.map +1 -0
  52. package/dist/codegen/compile-data.js +243 -0
  53. package/dist/codegen/compile-data.js.map +1 -0
  54. package/dist/codegen/compile-match.d.ts +7 -0
  55. package/dist/codegen/compile-match.d.ts.map +1 -0
  56. package/dist/codegen/compile-match.js +195 -0
  57. package/dist/codegen/compile-match.js.map +1 -0
  58. package/dist/codegen/compile-scalars.d.ts +25 -0
  59. package/dist/codegen/compile-scalars.d.ts.map +1 -0
  60. package/dist/codegen/compile-scalars.js +210 -0
  61. package/dist/codegen/compile-scalars.js.map +1 -0
  62. package/dist/codegen/hof-generators.d.ts +39 -0
  63. package/dist/codegen/hof-generators.d.ts.map +1 -0
  64. package/dist/codegen/hof-generators.js +336 -0
  65. package/dist/codegen/hof-generators.js.map +1 -0
  66. package/dist/codegen/host-adapter.d.ts +44 -0
  67. package/dist/codegen/host-adapter.d.ts.map +1 -0
  68. package/dist/codegen/host-adapter.js +9 -0
  69. package/dist/codegen/host-adapter.js.map +1 -0
  70. package/dist/codegen/host-functions.d.ts +35 -0
  71. package/dist/codegen/host-functions.d.ts.map +1 -0
  72. package/dist/codegen/host-functions.js +680 -0
  73. package/dist/codegen/host-functions.js.map +1 -0
  74. package/dist/codegen/imports.d.ts +12 -0
  75. package/dist/codegen/imports.d.ts.map +1 -0
  76. package/dist/codegen/imports.js +162 -0
  77. package/dist/codegen/imports.js.map +1 -0
  78. package/dist/codegen/node-host-adapter.d.ts +35 -0
  79. package/dist/codegen/node-host-adapter.d.ts.map +1 -0
  80. package/dist/codegen/node-host-adapter.js +155 -0
  81. package/dist/codegen/node-host-adapter.js.map +1 -0
  82. package/dist/codegen/runner.d.ts +36 -2
  83. package/dist/codegen/runner.d.ts.map +1 -1
  84. package/dist/codegen/runner.js +146 -271
  85. package/dist/codegen/runner.js.map +1 -1
  86. package/dist/codegen/types.d.ts +91 -0
  87. package/dist/codegen/types.d.ts.map +1 -0
  88. package/dist/codegen/types.js +63 -0
  89. package/dist/codegen/types.js.map +1 -0
  90. package/dist/compact/expand.d.ts +25 -0
  91. package/dist/compact/expand.d.ts.map +1 -0
  92. package/dist/compact/expand.js +198 -0
  93. package/dist/compact/expand.js.map +1 -0
  94. package/dist/compile.d.ts +2 -1
  95. package/dist/compile.d.ts.map +1 -1
  96. package/dist/compile.js +1 -1
  97. package/dist/compile.js.map +1 -1
  98. package/dist/contracts/translate.js.map +1 -1
  99. package/dist/effects/call-graph.d.ts.map +1 -1
  100. package/dist/effects/call-graph.js +6 -2
  101. package/dist/effects/call-graph.js.map +1 -1
  102. package/dist/errors/error-catalog.d.ts +1 -1
  103. package/dist/errors/error-catalog.d.ts.map +1 -1
  104. package/dist/errors/error-catalog.js +119 -0
  105. package/dist/errors/error-catalog.js.map +1 -1
  106. package/dist/errors/structured-errors.d.ts +6 -1
  107. package/dist/errors/structured-errors.d.ts.map +1 -1
  108. package/dist/errors/structured-errors.js +3 -0
  109. package/dist/errors/structured-errors.js.map +1 -1
  110. package/dist/index.d.ts +17 -9
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.js +24 -10
  113. package/dist/index.js.map +1 -1
  114. package/dist/lint/lint.d.ts +9 -0
  115. package/dist/lint/lint.d.ts.map +1 -0
  116. package/dist/lint/lint.js +354 -0
  117. package/dist/lint/lint.js.map +1 -0
  118. package/dist/lint/warnings.d.ts +54 -0
  119. package/dist/lint/warnings.d.ts.map +1 -0
  120. package/dist/lint/warnings.js +39 -0
  121. package/dist/lint/warnings.js.map +1 -0
  122. package/dist/mcp/create-server.d.ts.map +1 -1
  123. package/dist/mcp/create-server.js +66 -5
  124. package/dist/mcp/create-server.js.map +1 -1
  125. package/dist/mcp/handlers.d.ts +18 -4
  126. package/dist/mcp/handlers.d.ts.map +1 -1
  127. package/dist/mcp/handlers.js +54 -12
  128. package/dist/mcp/handlers.js.map +1 -1
  129. package/dist/mcp/prompts.d.ts +17 -0
  130. package/dist/mcp/prompts.d.ts.map +1 -0
  131. package/dist/mcp/prompts.js +181 -0
  132. package/dist/mcp/prompts.js.map +1 -0
  133. package/dist/mcp/server.js +1 -4
  134. package/dist/mcp/server.js.map +1 -1
  135. package/dist/resolver/resolve.d.ts.map +1 -1
  136. package/dist/resolver/resolve.js +22 -8
  137. package/dist/resolver/resolve.js.map +1 -1
  138. package/dist/validator/node-validators.d.ts.map +1 -1
  139. package/dist/validator/node-validators.js +34 -5
  140. package/dist/validator/node-validators.js.map +1 -1
  141. 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 "./codegen.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,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"}
@@ -0,0 +1,195 @@
1
+ // =============================================================================
2
+ // Match expression compiler — pattern matching
3
+ // =============================================================================
4
+ import binaryen from "binaryen";
5
+ import { wasmValidationError } from "../errors/structured-errors.js";
6
+ import { compileExpr, inferExprWasmType } from "./codegen.js";
7
+ export function compileMatch(expr, cc, ctx) {
8
+ const { mod, strings, errors } = cc;
9
+ // Attempt to determine the Edict type name of the target for enum matching
10
+ let targetEdictTypeName;
11
+ if (expr.target.kind === "ident") {
12
+ const local = ctx.getLocal(expr.target.name);
13
+ targetEdictTypeName = local?.edictTypeName;
14
+ }
15
+ else if (expr.target.kind === "call") {
16
+ // Can't easily infer return named type yet without a type env here,
17
+ // but let's be pragmatic if it's annotated
18
+ }
19
+ else if ("type" in expr.target && expr.target.type && expr.target.type.kind === "named") {
20
+ targetEdictTypeName = expr.target.type.name;
21
+ }
22
+ else if ("type" in expr.target && expr.target.type && expr.target.type.kind === "option") {
23
+ targetEdictTypeName = "Option";
24
+ }
25
+ else if ("type" in expr.target && expr.target.type && expr.target.type.kind === "result") {
26
+ targetEdictTypeName = "Result";
27
+ }
28
+ // Infer the target and result types
29
+ const targetType = inferExprWasmType(expr.target, cc, ctx);
30
+ const matchResultType = inferExprWasmType(expr, cc, ctx);
31
+ // Evaluate target once and store in a temporary local
32
+ const targetExpr = compileExpr(expr.target, cc, ctx);
33
+ const tmpIndex = ctx.addLocal(`__match_${expr.id}`, targetType);
34
+ const setTarget = mod.local.set(tmpIndex, targetExpr);
35
+ const getTarget = () => mod.local.get(tmpIndex, targetType);
36
+ // Compile body of a match arm (list of expressions → single expression)
37
+ function compileArmBody(body) {
38
+ const compiled = body.map((e) => compileExpr(e, cc, ctx));
39
+ if (compiled.length === 0)
40
+ return mod.nop();
41
+ if (compiled.length === 1)
42
+ return compiled[0];
43
+ const bodyType = body.length > 0
44
+ ? inferExprWasmType(body[body.length - 1], cc, ctx)
45
+ : binaryen.i32;
46
+ return mod.block(null, compiled, bodyType);
47
+ }
48
+ // Build condition for a pattern match against the target
49
+ function compilePatternCondition(pattern) {
50
+ switch (pattern.kind) {
51
+ case "literal_pattern": {
52
+ const val = pattern.value;
53
+ // Int64 literal pattern — value may be string or number
54
+ if (pattern.type?.kind === "basic" && pattern.type.name === "Int64") {
55
+ const big = BigInt(val);
56
+ const low = Number(big & 0xffffffffn);
57
+ const high = Number((big >> 32n) & 0xffffffffn);
58
+ return mod.i64.eq(getTarget(), mod.i64.const(low, high));
59
+ }
60
+ if (typeof val === "number" && Number.isInteger(val)) {
61
+ return mod.i32.eq(getTarget(), mod.i32.const(val));
62
+ }
63
+ if (typeof val === "boolean") {
64
+ return mod.i32.eq(getTarget(), mod.i32.const(val ? 1 : 0));
65
+ }
66
+ // String/float literal patterns — compare i32 representation
67
+ if (typeof val === "number") {
68
+ // Float literal pattern — not yet supported in i32 mode
69
+ errors.push(wasmValidationError(`float literal patterns not yet supported in match`));
70
+ return null;
71
+ }
72
+ if (typeof val === "string") {
73
+ const interned = strings.intern(val);
74
+ return mod.i32.eq(getTarget(), mod.i32.const(interned.offset));
75
+ }
76
+ return null;
77
+ }
78
+ case "wildcard":
79
+ return null; // always matches
80
+ case "binding":
81
+ return null; // always matches (binding is set up in compileArmWithBinding)
82
+ case "constructor": {
83
+ // Determine the tag value from the enum layout
84
+ let tagValue = -1;
85
+ if (targetEdictTypeName) {
86
+ const enumLayout = cc.enumLayouts.get(targetEdictTypeName);
87
+ if (enumLayout) {
88
+ const variantLayout = enumLayout.variants.find(v => v.name === pattern.name);
89
+ if (variantLayout) {
90
+ tagValue = variantLayout.tag;
91
+ }
92
+ else {
93
+ errors.push(wasmValidationError(`unknown variant ${pattern.name} for enum ${targetEdictTypeName}`));
94
+ return null;
95
+ }
96
+ }
97
+ else {
98
+ errors.push(wasmValidationError(`unknown enum ${targetEdictTypeName}`));
99
+ return null;
100
+ }
101
+ }
102
+ else {
103
+ errors.push(wasmValidationError(`cannot infer enum type for match target ${expr.id}`));
104
+ return null;
105
+ }
106
+ if (tagValue === -1)
107
+ return null;
108
+ // Load tag at offset 0 from the heap pointer (target)
109
+ const loadTag = mod.i32.load(0, 0, getTarget());
110
+ return mod.i32.eq(loadTag, mod.i32.const(tagValue));
111
+ }
112
+ }
113
+ }
114
+ // Pre-register binding locals so they're available during body compilation.
115
+ // We must do this before compiling arm bodies, otherwise ident lookups
116
+ // for bound names will fail.
117
+ const bindingLocals = new Map(); // arm index → local index
118
+ const constructorFieldBindings = new Map();
119
+ for (let i = 0; i < expr.arms.length; i++) {
120
+ const pattern = expr.arms[i].pattern;
121
+ if (pattern.kind === "binding") {
122
+ const bindIndex = ctx.addLocal(pattern.name, targetType);
123
+ bindingLocals.set(i, bindIndex);
124
+ }
125
+ else if (pattern.kind === "constructor") {
126
+ if (targetEdictTypeName) {
127
+ const enumLayout = cc.enumLayouts.get(targetEdictTypeName);
128
+ if (enumLayout) {
129
+ const variantLayout = enumLayout.variants.find(v => v.name === pattern.name);
130
+ if (variantLayout) {
131
+ const fieldBindings = [];
132
+ for (let j = 0; j < pattern.fields.length; j++) {
133
+ const subPattern = pattern.fields[j];
134
+ if (subPattern.kind === "binding") {
135
+ const fieldLayout = variantLayout.fields[j];
136
+ if (fieldLayout) {
137
+ const bindIndex = ctx.addLocal(subPattern.name, fieldLayout.wasmType);
138
+ fieldBindings.push({
139
+ localIndex: bindIndex,
140
+ offset: fieldLayout.offset,
141
+ wasmType: fieldLayout.wasmType
142
+ });
143
+ }
144
+ }
145
+ else if (subPattern.kind !== "wildcard") {
146
+ errors.push(wasmValidationError(`nested patterns inside constructor patterns not yet supported`));
147
+ }
148
+ }
149
+ constructorFieldBindings.set(i, fieldBindings);
150
+ }
151
+ }
152
+ }
153
+ }
154
+ }
155
+ // Build nested if/else chain from arms (right to left)
156
+ // Start from the last arm and work backwards
157
+ let result = mod.unreachable();
158
+ for (let i = expr.arms.length - 1; i >= 0; i--) {
159
+ const arm = expr.arms[i];
160
+ const bodyExpr = compileArmBody(arm.body);
161
+ // Wrap with binding set if this is a binding pattern
162
+ let armExpr = bodyExpr;
163
+ const bindIndex = bindingLocals.get(i);
164
+ if (bindIndex !== undefined) {
165
+ const setBinding = mod.local.set(bindIndex, getTarget());
166
+ armExpr = mod.block(null, [setBinding, bodyExpr], matchResultType);
167
+ }
168
+ else if (arm.pattern.kind === "constructor") {
169
+ const fieldBindings = constructorFieldBindings.get(i);
170
+ if (fieldBindings && fieldBindings.length > 0) {
171
+ const sets = [];
172
+ for (const binding of fieldBindings) {
173
+ const loadField = binding.wasmType === binaryen.f64
174
+ ? mod.f64.load(binding.offset, 0, getTarget())
175
+ : mod.i32.load(binding.offset, 0, getTarget());
176
+ sets.push(mod.local.set(binding.localIndex, loadField));
177
+ }
178
+ armExpr = mod.block(null, [...sets, bodyExpr], matchResultType);
179
+ }
180
+ }
181
+ const condition = compilePatternCondition(arm.pattern);
182
+ if (condition === null) {
183
+ // Wildcard or binding — this arm always matches
184
+ // It becomes the else (or the whole result if it's the only/last arm)
185
+ result = armExpr;
186
+ }
187
+ else {
188
+ // Conditional arm — if condition then this arm else previous result
189
+ result = mod.if(condition, armExpr, result);
190
+ }
191
+ }
192
+ // Wrap: set target, then evaluate the if/else chain
193
+ return mod.block(null, [setTarget, result], matchResultType);
194
+ }
195
+ //# sourceMappingURL=compile-match.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile-match.js","sourceRoot":"","sources":["../../src/codegen/compile-match.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
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 compileLiteral(expr: Expression & {
5
+ kind: "literal";
6
+ }, cc: CompilationContext): binaryen.ExpressionRef;
7
+ export declare function compileIdent(expr: Expression & {
8
+ kind: "ident";
9
+ }, cc: CompilationContext, ctx: FunctionContext): binaryen.ExpressionRef;
10
+ export declare function compileBinop(expr: Expression & {
11
+ kind: "binop";
12
+ }, cc: CompilationContext, ctx: FunctionContext): binaryen.ExpressionRef;
13
+ export declare function compileUnop(expr: Expression & {
14
+ kind: "unop";
15
+ }, cc: CompilationContext, ctx: FunctionContext): binaryen.ExpressionRef;
16
+ export declare function compileIf(expr: Expression & {
17
+ kind: "if";
18
+ }, cc: CompilationContext, ctx: FunctionContext): binaryen.ExpressionRef;
19
+ export declare function compileLet(expr: Expression & {
20
+ kind: "let";
21
+ }, cc: CompilationContext, ctx: FunctionContext): binaryen.ExpressionRef;
22
+ export declare function compileBlock(expr: Expression & {
23
+ kind: "block";
24
+ }, cc: CompilationContext, ctx: FunctionContext): binaryen.ExpressionRef;
25
+ //# sourceMappingURL=compile-scalars.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile-scalars.d.ts","sourceRoot":"","sources":["../../src/codegen/compile-scalars.ts"],"names":[],"mappings":"AAIA,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;AAIpB,wBAAgB,cAAc,CAC1B,IAAI,EAAE,UAAU,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,EACtC,EAAE,EAAE,kBAAkB,GACvB,QAAQ,CAAC,aAAa,CAoCxB;AAED,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,CAuBxB;AAED,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,CAiDxB;AAED,wBAAgB,WAAW,CACvB,IAAI,EAAE,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EACnC,EAAE,EAAE,kBAAkB,EACtB,GAAG,EAAE,eAAe,GACrB,QAAQ,CAAC,aAAa,CAqBxB;AAED,wBAAgB,SAAS,CACrB,IAAI,EAAE,UAAU,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,EACjC,EAAE,EAAE,kBAAkB,EACtB,GAAG,EAAE,eAAe,GACrB,QAAQ,CAAC,aAAa,CA6BxB;AAED,wBAAgB,UAAU,CACtB,IAAI,EAAE,UAAU,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,EAClC,EAAE,EAAE,kBAAkB,EACtB,GAAG,EAAE,eAAe,GACrB,QAAQ,CAAC,aAAa,CA6CxB;AAED,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,CASxB"}