edict-lang 0.1.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 (111) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +202 -0
  3. package/dist/ast/nodes.d.ts +248 -0
  4. package/dist/ast/nodes.d.ts.map +1 -0
  5. package/dist/ast/nodes.js +95 -0
  6. package/dist/ast/nodes.js.map +1 -0
  7. package/dist/ast/types.d.ts +78 -0
  8. package/dist/ast/types.d.ts.map +1 -0
  9. package/dist/ast/types.js +7 -0
  10. package/dist/ast/types.js.map +1 -0
  11. package/dist/check.d.ts +19 -0
  12. package/dist/check.d.ts.map +1 -0
  13. package/dist/check.js +49 -0
  14. package/dist/check.js.map +1 -0
  15. package/dist/checker/check.d.ts +7 -0
  16. package/dist/checker/check.d.ts.map +1 -0
  17. package/dist/checker/check.js +548 -0
  18. package/dist/checker/check.js.map +1 -0
  19. package/dist/checker/type-env.d.ts +24 -0
  20. package/dist/checker/type-env.d.ts.map +1 -0
  21. package/dist/checker/type-env.js +67 -0
  22. package/dist/checker/type-env.js.map +1 -0
  23. package/dist/checker/types-equal.d.ts +18 -0
  24. package/dist/checker/types-equal.d.ts.map +1 -0
  25. package/dist/checker/types-equal.js +79 -0
  26. package/dist/checker/types-equal.js.map +1 -0
  27. package/dist/codegen/builtins.d.ts +27 -0
  28. package/dist/codegen/builtins.d.ts.map +1 -0
  29. package/dist/codegen/builtins.js +54 -0
  30. package/dist/codegen/builtins.js.map +1 -0
  31. package/dist/codegen/codegen.d.ts +32 -0
  32. package/dist/codegen/codegen.d.ts.map +1 -0
  33. package/dist/codegen/codegen.js +1192 -0
  34. package/dist/codegen/codegen.js.map +1 -0
  35. package/dist/codegen/runner.d.ts +16 -0
  36. package/dist/codegen/runner.d.ts.map +1 -0
  37. package/dist/codegen/runner.js +82 -0
  38. package/dist/codegen/runner.js.map +1 -0
  39. package/dist/codegen/string-table.d.ts +35 -0
  40. package/dist/codegen/string-table.d.ts.map +1 -0
  41. package/dist/codegen/string-table.js +62 -0
  42. package/dist/codegen/string-table.js.map +1 -0
  43. package/dist/compile.d.ts +18 -0
  44. package/dist/compile.d.ts.map +1 -0
  45. package/dist/compile.js +40 -0
  46. package/dist/compile.js.map +1 -0
  47. package/dist/contracts/translate.d.ts +39 -0
  48. package/dist/contracts/translate.d.ts.map +1 -0
  49. package/dist/contracts/translate.js +372 -0
  50. package/dist/contracts/translate.js.map +1 -0
  51. package/dist/contracts/verify.d.ts +8 -0
  52. package/dist/contracts/verify.d.ts.map +1 -0
  53. package/dist/contracts/verify.js +400 -0
  54. package/dist/contracts/verify.js.map +1 -0
  55. package/dist/contracts/z3-context.d.ts +14 -0
  56. package/dist/contracts/z3-context.d.ts.map +1 -0
  57. package/dist/contracts/z3-context.js +24 -0
  58. package/dist/contracts/z3-context.js.map +1 -0
  59. package/dist/effects/call-graph.d.ts +21 -0
  60. package/dist/effects/call-graph.d.ts.map +1 -0
  61. package/dist/effects/call-graph.js +135 -0
  62. package/dist/effects/call-graph.js.map +1 -0
  63. package/dist/effects/effect-check.d.ts +13 -0
  64. package/dist/effects/effect-check.d.ts.map +1 -0
  65. package/dist/effects/effect-check.js +48 -0
  66. package/dist/effects/effect-check.js.map +1 -0
  67. package/dist/errors/structured-errors.d.ts +193 -0
  68. package/dist/errors/structured-errors.d.ts.map +1 -0
  69. package/dist/errors/structured-errors.js +96 -0
  70. package/dist/errors/structured-errors.js.map +1 -0
  71. package/dist/index.d.ts +34 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +37 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/mcp/create-server.d.ts +3 -0
  76. package/dist/mcp/create-server.d.ts.map +1 -0
  77. package/dist/mcp/create-server.js +157 -0
  78. package/dist/mcp/create-server.js.map +1 -0
  79. package/dist/mcp/handlers.d.ts +44 -0
  80. package/dist/mcp/handlers.d.ts.map +1 -0
  81. package/dist/mcp/handlers.js +112 -0
  82. package/dist/mcp/handlers.js.map +1 -0
  83. package/dist/mcp/server.d.ts +3 -0
  84. package/dist/mcp/server.d.ts.map +1 -0
  85. package/dist/mcp/server.js +129 -0
  86. package/dist/mcp/server.js.map +1 -0
  87. package/dist/resolver/levenshtein.d.ts +12 -0
  88. package/dist/resolver/levenshtein.d.ts.map +1 -0
  89. package/dist/resolver/levenshtein.js +54 -0
  90. package/dist/resolver/levenshtein.js.map +1 -0
  91. package/dist/resolver/resolve.d.ts +7 -0
  92. package/dist/resolver/resolve.d.ts.map +1 -0
  93. package/dist/resolver/resolve.js +393 -0
  94. package/dist/resolver/resolve.js.map +1 -0
  95. package/dist/resolver/scope.d.ts +34 -0
  96. package/dist/resolver/scope.d.ts.map +1 -0
  97. package/dist/resolver/scope.js +51 -0
  98. package/dist/resolver/scope.js.map +1 -0
  99. package/dist/validator/id-tracker.d.ts +14 -0
  100. package/dist/validator/id-tracker.d.ts.map +1 -0
  101. package/dist/validator/id-tracker.js +28 -0
  102. package/dist/validator/id-tracker.js.map +1 -0
  103. package/dist/validator/node-validators.d.ts +6 -0
  104. package/dist/validator/node-validators.d.ts.map +1 -0
  105. package/dist/validator/node-validators.js +808 -0
  106. package/dist/validator/node-validators.js.map +1 -0
  107. package/dist/validator/validate.d.ts +17 -0
  108. package/dist/validator/validate.d.ts.map +1 -0
  109. package/dist/validator/validate.js +27 -0
  110. package/dist/validator/validate.js.map +1 -0
  111. package/package.json +75 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/checker/check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { TypeExpr } from "../ast/types.js";
2
+ import type { TypeDef, RecordDef, EnumDef } from "../ast/nodes.js";
3
+ export declare class TypeEnv {
4
+ private bindings;
5
+ private typeDefs;
6
+ private parent;
7
+ constructor(parent?: TypeEnv | null);
8
+ bind(name: string, type: TypeExpr): void;
9
+ getType(name: string): TypeExpr | undefined;
10
+ registerTypeDef(name: string, def: TypeDef | RecordDef | EnumDef): void;
11
+ lookupTypeDef(name: string): TypeDef | RecordDef | EnumDef | undefined;
12
+ /**
13
+ * Resolve a named type alias to its underlying definition.
14
+ * If the type is `Named("Foo")` and Foo is a TypeDef, returns the definition type.
15
+ * Otherwise returns the type as-is.
16
+ */
17
+ resolveAlias(type: TypeExpr): TypeExpr;
18
+ /**
19
+ * Collect all type definition names of a specific kind, walking the parent chain.
20
+ */
21
+ allTypeDefNames(kind: "record" | "enum" | "type"): string[];
22
+ child(): TypeEnv;
23
+ }
24
+ //# sourceMappingURL=type-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-env.d.ts","sourceRoot":"","sources":["../../src/checker/type-env.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEnE,qBAAa,OAAO;IAChB,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,QAAQ,CAAyD;IACzE,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,GAAE,OAAO,GAAG,IAAW;IAIzC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI;IAIxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAM3C,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI;IAIvE,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS;IAMtE;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ;IAYtC;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE;IAa3D,KAAK,IAAI,OAAO;CAGnB"}
@@ -0,0 +1,67 @@
1
+ // =============================================================================
2
+ // Type Environment — Type bindings for the type checker
3
+ // =============================================================================
4
+ export class TypeEnv {
5
+ bindings = new Map();
6
+ typeDefs = new Map();
7
+ parent;
8
+ constructor(parent = null) {
9
+ this.parent = parent;
10
+ }
11
+ bind(name, type) {
12
+ this.bindings.set(name, type);
13
+ }
14
+ getType(name) {
15
+ const local = this.bindings.get(name);
16
+ if (local)
17
+ return local;
18
+ return this.parent?.getType(name);
19
+ }
20
+ registerTypeDef(name, def) {
21
+ this.typeDefs.set(name, def);
22
+ }
23
+ lookupTypeDef(name) {
24
+ const local = this.typeDefs.get(name);
25
+ if (local)
26
+ return local;
27
+ return this.parent?.lookupTypeDef(name);
28
+ }
29
+ /**
30
+ * Resolve a named type alias to its underlying definition.
31
+ * If the type is `Named("Foo")` and Foo is a TypeDef, returns the definition type.
32
+ * Otherwise returns the type as-is.
33
+ */
34
+ resolveAlias(type) {
35
+ if (type.kind !== "named")
36
+ return type;
37
+ const def = this.lookupTypeDef(type.name);
38
+ if (!def)
39
+ return type; // unknown — treated as opaque
40
+ if (def.kind === "type") {
41
+ // TypeDef: recurse in case of chained aliases
42
+ return this.resolveAlias(def.definition);
43
+ }
44
+ // RecordDef or EnumDef: Named("X") is the de-facto type
45
+ return type;
46
+ }
47
+ /**
48
+ * Collect all type definition names of a specific kind, walking the parent chain.
49
+ */
50
+ allTypeDefNames(kind) {
51
+ const names = new Set();
52
+ for (const [name, def] of this.typeDefs) {
53
+ if (def.kind === kind)
54
+ names.add(name);
55
+ }
56
+ if (this.parent) {
57
+ for (const n of this.parent.allTypeDefNames(kind)) {
58
+ names.add(n);
59
+ }
60
+ }
61
+ return [...names];
62
+ }
63
+ child() {
64
+ return new TypeEnv(this);
65
+ }
66
+ }
67
+ //# sourceMappingURL=type-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-env.js","sourceRoot":"","sources":["../../src/checker/type-env.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,wDAAwD;AACxD,gFAAgF;AAKhF,MAAM,OAAO,OAAO;IACR,QAAQ,GAA0B,IAAI,GAAG,EAAE,CAAC;IAC5C,QAAQ,GAA+C,IAAI,GAAG,EAAE,CAAC;IACjE,MAAM,CAAiB;IAE/B,YAAY,SAAyB,IAAI;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,IAAY,EAAE,IAAc;QAC7B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,IAAY;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QACxB,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,eAAe,CAAC,IAAY,EAAE,GAAkC;QAC5D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,aAAa,CAAC,IAAY;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QACxB,OAAO,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,IAAc;QACvB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC,CAAC,8BAA8B;QACrD,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACtB,8CAA8C;YAC9C,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC;QACD,wDAAwD;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,IAAgC;QAC5C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI;gBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChD,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;QACL,CAAC;QACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,KAAK;QACD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACJ"}
@@ -0,0 +1,18 @@
1
+ import type { TypeExpr } from "../ast/types.js";
2
+ import type { TypeEnv } from "./type-env.js";
3
+ /**
4
+ * Check structural type equality after alias resolution.
5
+ * - `unknown` is compatible with anything (returns true).
6
+ * - `RefinedType { base: T }` is compatible with `T` (refinement erasure).
7
+ */
8
+ export declare function typesEqual(a: TypeExpr, b: TypeExpr, env: TypeEnv): boolean;
9
+ /**
10
+ * Resolve a type for comparison: alias resolution + refinement erasure.
11
+ */
12
+ export declare function resolveType(type: TypeExpr, env: TypeEnv): TypeExpr;
13
+ /**
14
+ * Check if a type is "unknown" (an unresolvable named type).
15
+ * We encode `unknown` as Named("unknown") — imported symbols get this type.
16
+ */
17
+ export declare function isUnknown(type: TypeExpr): boolean;
18
+ //# sourceMappingURL=types-equal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-equal.d.ts","sourceRoot":"","sources":["../../src/checker/types-equal.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CA2D1E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,GAAG,QAAQ,CAMlE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAEjD"}
@@ -0,0 +1,79 @@
1
+ // =============================================================================
2
+ // Structural Type Equality
3
+ // =============================================================================
4
+ /**
5
+ * Check structural type equality after alias resolution.
6
+ * - `unknown` is compatible with anything (returns true).
7
+ * - `RefinedType { base: T }` is compatible with `T` (refinement erasure).
8
+ */
9
+ export function typesEqual(a, b, env) {
10
+ // Resolve aliases first
11
+ const ra = resolveType(a, env);
12
+ const rb = resolveType(b, env);
13
+ // unknown propagation — always compatible
14
+ if (isUnknown(ra) || isUnknown(rb))
15
+ return true;
16
+ // Same kind check
17
+ if (ra.kind !== rb.kind)
18
+ return false;
19
+ switch (ra.kind) {
20
+ case "basic":
21
+ return rb.kind === "basic" && ra.name === rb.name;
22
+ case "array":
23
+ return rb.kind === "array" && typesEqual(ra.element, rb.element, env);
24
+ case "option":
25
+ return rb.kind === "option" && typesEqual(ra.inner, rb.inner, env);
26
+ case "result":
27
+ return (rb.kind === "result" &&
28
+ typesEqual(ra.ok, rb.ok, env) &&
29
+ typesEqual(ra.err, rb.err, env));
30
+ case "unit_type":
31
+ return (rb.kind === "unit_type" &&
32
+ ra.base === rb.base &&
33
+ ra.unit === rb.unit);
34
+ case "fn_type":
35
+ if (rb.kind !== "fn_type")
36
+ return false;
37
+ if (ra.params.length !== rb.params.length)
38
+ return false;
39
+ for (let i = 0; i < ra.params.length; i++) {
40
+ if (!typesEqual(ra.params[i], rb.params[i], env))
41
+ return false;
42
+ }
43
+ return typesEqual(ra.returnType, rb.returnType, env);
44
+ case "named":
45
+ return rb.kind === "named" && ra.name === rb.name;
46
+ case "tuple":
47
+ if (rb.kind !== "tuple")
48
+ return false;
49
+ if (ra.elements.length !== rb.elements.length)
50
+ return false;
51
+ for (let i = 0; i < ra.elements.length; i++) {
52
+ if (!typesEqual(ra.elements[i], rb.elements[i], env))
53
+ return false;
54
+ }
55
+ return true;
56
+ case "refined":
57
+ // After erasure this is already handled by resolveForComparison
58
+ // But if both are refined, compare bases
59
+ return rb.kind === "refined" && typesEqual(ra.base, rb.base, env);
60
+ }
61
+ }
62
+ /**
63
+ * Resolve a type for comparison: alias resolution + refinement erasure.
64
+ */
65
+ export function resolveType(type, env) {
66
+ let resolved = env.resolveAlias(type);
67
+ if (resolved.kind === "refined") {
68
+ resolved = resolveType(resolved.base, env);
69
+ }
70
+ return resolved;
71
+ }
72
+ /**
73
+ * Check if a type is "unknown" (an unresolvable named type).
74
+ * We encode `unknown` as Named("unknown") — imported symbols get this type.
75
+ */
76
+ export function isUnknown(type) {
77
+ return type.kind === "named" && type.name === "unknown";
78
+ }
79
+ //# sourceMappingURL=types-equal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-equal.js","sourceRoot":"","sources":["../../src/checker/types-equal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { FunctionType } from "../ast/types.js";
2
+ import type { Effect } from "../ast/nodes.js";
3
+ export interface BuiltinFunction {
4
+ /** Edict-level function type signature */
5
+ type: FunctionType;
6
+ /** Which effects this builtin performs */
7
+ effects: Effect[];
8
+ /** WASM import: [module, base] names */
9
+ wasmImport: [string, string];
10
+ }
11
+ /**
12
+ * All built-in functions.
13
+ *
14
+ * `print` takes a String and returns a String (the value printed).
15
+ * At the WASM level, it's imported as host.print(ptr, len) → ptr
16
+ * (returns the same pointer for passthrough).
17
+ */
18
+ export declare const BUILTIN_FUNCTIONS: ReadonlyMap<string, BuiltinFunction>;
19
+ /**
20
+ * Check if a name refers to a built-in function.
21
+ */
22
+ export declare function isBuiltin(name: string): boolean;
23
+ /**
24
+ * Get the built-in function definition, or undefined.
25
+ */
26
+ export declare function getBuiltin(name: string): BuiltinFunction | undefined;
27
+ //# sourceMappingURL=builtins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/codegen/builtins.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAY,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC5B,0CAA0C;IAC1C,IAAI,EAAE,YAAY,CAAC;IACnB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,wCAAwC;IACxC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAID;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CA2BjE,CAAC;AAEH;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAEpE"}
@@ -0,0 +1,54 @@
1
+ // =============================================================================
2
+ // Builtins — Built-in functions available to all Edict programs
3
+ // =============================================================================
4
+ // These are not defined in user code. The resolver and type checker
5
+ // register them automatically. The codegen imports them from the host.
6
+ const STRING_TYPE = { kind: "basic", name: "String" };
7
+ /**
8
+ * All built-in functions.
9
+ *
10
+ * `print` takes a String and returns a String (the value printed).
11
+ * At the WASM level, it's imported as host.print(ptr, len) → ptr
12
+ * (returns the same pointer for passthrough).
13
+ */
14
+ export const BUILTIN_FUNCTIONS = new Map([
15
+ [
16
+ "print",
17
+ {
18
+ type: {
19
+ kind: "fn_type",
20
+ params: [STRING_TYPE],
21
+ effects: ["io"],
22
+ returnType: STRING_TYPE,
23
+ },
24
+ effects: ["io"],
25
+ wasmImport: ["host", "print"],
26
+ },
27
+ ],
28
+ [
29
+ "string_replace",
30
+ {
31
+ type: {
32
+ kind: "fn_type",
33
+ params: [STRING_TYPE, STRING_TYPE, STRING_TYPE],
34
+ effects: ["pure"],
35
+ returnType: STRING_TYPE,
36
+ },
37
+ effects: ["pure"],
38
+ wasmImport: ["host", "string_replace"],
39
+ },
40
+ ],
41
+ ]);
42
+ /**
43
+ * Check if a name refers to a built-in function.
44
+ */
45
+ export function isBuiltin(name) {
46
+ return BUILTIN_FUNCTIONS.has(name);
47
+ }
48
+ /**
49
+ * Get the built-in function definition, or undefined.
50
+ */
51
+ export function getBuiltin(name) {
52
+ return BUILTIN_FUNCTIONS.get(name);
53
+ }
54
+ //# sourceMappingURL=builtins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../src/codegen/builtins.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,gEAAgE;AAChE,gFAAgF;AAChF,oEAAoE;AACpE,uEAAuE;AAcvE,MAAM,WAAW,GAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAyC,IAAI,GAAG,CAAC;IAC3E;QACI,OAAO;QACP;YACI,IAAI,EAAE;gBACF,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,CAAC,WAAW,CAAC;gBACrB,OAAO,EAAE,CAAC,IAAI,CAAC;gBACf,UAAU,EAAE,WAAW;aAC1B;YACD,OAAO,EAAE,CAAC,IAAI,CAAC;YACf,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;SAChC;KACJ;IACD;QACI,gBAAgB;QAChB;YACI,IAAI,EAAE;gBACF,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC;gBAC/C,OAAO,EAAE,CAAC,MAAM,CAAC;gBACjB,UAAU,EAAE,WAAW;aAC1B;YACD,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,UAAU,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC;SACzC;KACJ;CACJ,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IAClC,OAAO,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACnC,OAAO,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,32 @@
1
+ import binaryen from "binaryen";
2
+ 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;
32
+ //# sourceMappingURL=codegen.d.ts.map
@@ -0,0 +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;AA+I5D,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,CAwM1D"}