bonescript-compiler 0.2.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 (146) hide show
  1. package/LICENSE +21 -0
  2. package/dist/algorithm_catalog.d.ts +32 -0
  3. package/dist/algorithm_catalog.js +323 -0
  4. package/dist/algorithm_catalog.js.map +1 -0
  5. package/dist/ast.d.ts +244 -0
  6. package/dist/ast.js +8 -0
  7. package/dist/ast.js.map +1 -0
  8. package/dist/cli.d.ts +4 -0
  9. package/dist/cli.js +605 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/emit_batch.d.ts +7 -0
  12. package/dist/emit_batch.js +133 -0
  13. package/dist/emit_batch.js.map +1 -0
  14. package/dist/emit_capability.d.ts +7 -0
  15. package/dist/emit_capability.js +376 -0
  16. package/dist/emit_capability.js.map +1 -0
  17. package/dist/emit_composition.d.ts +22 -0
  18. package/dist/emit_composition.js +184 -0
  19. package/dist/emit_composition.js.map +1 -0
  20. package/dist/emit_deploy.d.ts +9 -0
  21. package/dist/emit_deploy.js +191 -0
  22. package/dist/emit_deploy.js.map +1 -0
  23. package/dist/emit_events.d.ts +14 -0
  24. package/dist/emit_events.js +305 -0
  25. package/dist/emit_events.js.map +1 -0
  26. package/dist/emit_extras.d.ts +12 -0
  27. package/dist/emit_extras.js +234 -0
  28. package/dist/emit_extras.js.map +1 -0
  29. package/dist/emit_full.d.ts +13 -0
  30. package/dist/emit_full.js +273 -0
  31. package/dist/emit_full.js.map +1 -0
  32. package/dist/emit_maintenance.d.ts +16 -0
  33. package/dist/emit_maintenance.js +442 -0
  34. package/dist/emit_maintenance.js.map +1 -0
  35. package/dist/emit_runtime.d.ts +13 -0
  36. package/dist/emit_runtime.js +691 -0
  37. package/dist/emit_runtime.js.map +1 -0
  38. package/dist/emit_sourcemap.d.ts +29 -0
  39. package/dist/emit_sourcemap.js +123 -0
  40. package/dist/emit_sourcemap.js.map +1 -0
  41. package/dist/emit_tests.d.ts +15 -0
  42. package/dist/emit_tests.js +185 -0
  43. package/dist/emit_tests.js.map +1 -0
  44. package/dist/emit_websocket.d.ts +6 -0
  45. package/dist/emit_websocket.js +223 -0
  46. package/dist/emit_websocket.js.map +1 -0
  47. package/dist/emitter.d.ts +25 -0
  48. package/dist/emitter.js +511 -0
  49. package/dist/emitter.js.map +1 -0
  50. package/dist/extension_manager.d.ts +38 -0
  51. package/dist/extension_manager.js +170 -0
  52. package/dist/extension_manager.js.map +1 -0
  53. package/dist/formatter.d.ts +34 -0
  54. package/dist/formatter.js +317 -0
  55. package/dist/formatter.js.map +1 -0
  56. package/dist/index.d.ts +42 -0
  57. package/dist/index.js +113 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/ir.d.ts +168 -0
  60. package/dist/ir.js +10 -0
  61. package/dist/ir.js.map +1 -0
  62. package/dist/lexer.d.ts +195 -0
  63. package/dist/lexer.js +619 -0
  64. package/dist/lexer.js.map +1 -0
  65. package/dist/lowering.d.ts +25 -0
  66. package/dist/lowering.js +500 -0
  67. package/dist/lowering.js.map +1 -0
  68. package/dist/module_loader.d.ts +25 -0
  69. package/dist/module_loader.js +126 -0
  70. package/dist/module_loader.js.map +1 -0
  71. package/dist/optimizer.d.ts +26 -0
  72. package/dist/optimizer.js +158 -0
  73. package/dist/optimizer.js.map +1 -0
  74. package/dist/parse_decls.d.ts +13 -0
  75. package/dist/parse_decls.js +442 -0
  76. package/dist/parse_decls.js.map +1 -0
  77. package/dist/parse_decls2.d.ts +13 -0
  78. package/dist/parse_decls2.js +295 -0
  79. package/dist/parse_decls2.js.map +1 -0
  80. package/dist/parse_expr.d.ts +7 -0
  81. package/dist/parse_expr.js +197 -0
  82. package/dist/parse_expr.js.map +1 -0
  83. package/dist/parse_types.d.ts +6 -0
  84. package/dist/parse_types.js +51 -0
  85. package/dist/parse_types.js.map +1 -0
  86. package/dist/parser.d.ts +10 -0
  87. package/dist/parser.js +62 -0
  88. package/dist/parser.js.map +1 -0
  89. package/dist/parser_base.d.ts +19 -0
  90. package/dist/parser_base.js +50 -0
  91. package/dist/parser_base.js.map +1 -0
  92. package/dist/parser_recovery.d.ts +26 -0
  93. package/dist/parser_recovery.js +140 -0
  94. package/dist/parser_recovery.js.map +1 -0
  95. package/dist/scaffold.d.ts +13 -0
  96. package/dist/scaffold.js +376 -0
  97. package/dist/scaffold.js.map +1 -0
  98. package/dist/solver.d.ts +26 -0
  99. package/dist/solver.js +281 -0
  100. package/dist/solver.js.map +1 -0
  101. package/dist/typechecker.d.ts +52 -0
  102. package/dist/typechecker.js +534 -0
  103. package/dist/typechecker.js.map +1 -0
  104. package/dist/types.d.ts +38 -0
  105. package/dist/types.js +85 -0
  106. package/dist/types.js.map +1 -0
  107. package/dist/verifier.d.ts +46 -0
  108. package/dist/verifier.js +307 -0
  109. package/dist/verifier.js.map +1 -0
  110. package/package.json +52 -0
  111. package/src/algorithm_catalog.ts +345 -0
  112. package/src/ast.ts +334 -0
  113. package/src/cli.ts +624 -0
  114. package/src/emit_batch.ts +140 -0
  115. package/src/emit_capability.ts +436 -0
  116. package/src/emit_composition.ts +196 -0
  117. package/src/emit_deploy.ts +190 -0
  118. package/src/emit_events.ts +307 -0
  119. package/src/emit_extras.ts +240 -0
  120. package/src/emit_full.ts +309 -0
  121. package/src/emit_maintenance.ts +459 -0
  122. package/src/emit_runtime.ts +731 -0
  123. package/src/emit_sourcemap.ts +140 -0
  124. package/src/emit_tests.ts +205 -0
  125. package/src/emit_websocket.ts +229 -0
  126. package/src/emitter.ts +566 -0
  127. package/src/extension_manager.ts +187 -0
  128. package/src/formatter.ts +297 -0
  129. package/src/index.ts +88 -0
  130. package/src/ir.ts +215 -0
  131. package/src/lexer.ts +630 -0
  132. package/src/lowering.ts +556 -0
  133. package/src/module_loader.ts +114 -0
  134. package/src/optimizer.ts +196 -0
  135. package/src/parse_decls.ts +409 -0
  136. package/src/parse_decls2.ts +244 -0
  137. package/src/parse_expr.ts +197 -0
  138. package/src/parse_types.ts +54 -0
  139. package/src/parser.ts +64 -0
  140. package/src/parser_base.ts +57 -0
  141. package/src/parser_recovery.ts +153 -0
  142. package/src/scaffold.ts +375 -0
  143. package/src/solver.ts +330 -0
  144. package/src/typechecker.ts +591 -0
  145. package/src/types.ts +122 -0
  146. package/src/verifier.ts +348 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solver.js","sourceRoot":"","sources":["../src/solver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * BoneScript Type Checker — Stage 3 of the compilation pipeline.
3
+ * Implements spec/04_TYPE_SYSTEM.md.
4
+ *
5
+ * Responsibilities:
6
+ * 1. Build symbol table from entity declarations
7
+ * 2. Verify all field types resolve to valid types
8
+ * 3. Verify all constraint expressions type to bool
9
+ * 4. Verify capability preconditions type to bool
10
+ * 5. Verify effects are well-typed (target and value match)
11
+ * 6. Verify emitted events exist
12
+ * 7. Verify state machine transitions reference valid states
13
+ * 8. Verify flow steps reference valid capabilities
14
+ *
15
+ * Deterministic: same AST always produces same errors in same order.
16
+ */
17
+ import * as AST from "./ast";
18
+ export interface TypeError {
19
+ code: string;
20
+ message: string;
21
+ loc: AST.ASTNode["loc"];
22
+ }
23
+ export declare class TypeChecker {
24
+ private errors;
25
+ private symbols;
26
+ check(program: AST.ProgramNode): TypeError[];
27
+ private addError;
28
+ private checkSystem;
29
+ private registerDeclaration;
30
+ private registerEntity;
31
+ private registerCapability;
32
+ private registerEvent;
33
+ private checkDeclaration;
34
+ private checkEntity;
35
+ private checkCapability;
36
+ private checkEffect;
37
+ private checkChannel;
38
+ private checkFlow;
39
+ private checkConstraint;
40
+ private inferExprType;
41
+ private inferLiteralType;
42
+ private inferFieldRefType;
43
+ private resolveFieldPath;
44
+ private inferBinaryType;
45
+ private inferUnaryType;
46
+ private inferCallType;
47
+ private inferTernaryType;
48
+ private resolveTypeExpr;
49
+ private isBoolish;
50
+ private isAssignable;
51
+ private checkExtensionPoint;
52
+ }
@@ -0,0 +1,534 @@
1
+ "use strict";
2
+ /**
3
+ * BoneScript Type Checker — Stage 3 of the compilation pipeline.
4
+ * Implements spec/04_TYPE_SYSTEM.md.
5
+ *
6
+ * Responsibilities:
7
+ * 1. Build symbol table from entity declarations
8
+ * 2. Verify all field types resolve to valid types
9
+ * 3. Verify all constraint expressions type to bool
10
+ * 4. Verify capability preconditions type to bool
11
+ * 5. Verify effects are well-typed (target and value match)
12
+ * 6. Verify emitted events exist
13
+ * 7. Verify state machine transitions reference valid states
14
+ * 8. Verify flow steps reference valid capabilities
15
+ *
16
+ * Deterministic: same AST always produces same errors in same order.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.TypeChecker = void 0;
20
+ const types_1 = require("./types");
21
+ // ─── Type Checker ────────────────────────────────────────────────────────────
22
+ class TypeChecker {
23
+ constructor() {
24
+ this.errors = [];
25
+ this.symbols = {
26
+ entities: new Map(),
27
+ capabilities: new Map(),
28
+ events: new Map(),
29
+ stores: new Set(),
30
+ channels: new Set(),
31
+ flows: new Set(),
32
+ };
33
+ }
34
+ check(program) {
35
+ this.errors = [];
36
+ for (const system of program.systems) {
37
+ this.checkSystem(system);
38
+ }
39
+ return this.errors;
40
+ }
41
+ addError(code, message, loc) {
42
+ this.errors.push({ code, message, loc });
43
+ }
44
+ // ─── Phase 1: Build Symbol Table ──────────────────────────────────────────
45
+ checkSystem(system) {
46
+ // First pass: register all declarations
47
+ for (const decl of system.declarations) {
48
+ this.registerDeclaration(decl);
49
+ }
50
+ // Second pass: type check all declarations
51
+ for (const decl of system.declarations) {
52
+ this.checkDeclaration(decl);
53
+ }
54
+ }
55
+ registerDeclaration(decl) {
56
+ switch (decl.kind) {
57
+ case "EntityDecl":
58
+ this.registerEntity(decl);
59
+ break;
60
+ case "CapabilityDecl":
61
+ this.registerCapability(decl);
62
+ break;
63
+ case "EventDecl":
64
+ this.registerEvent(decl);
65
+ break;
66
+ case "StoreDecl":
67
+ this.symbols.stores.add(decl.name);
68
+ break;
69
+ case "ChannelDecl":
70
+ this.symbols.channels.add(decl.name);
71
+ break;
72
+ case "FlowDecl":
73
+ this.symbols.flows.add(decl.name);
74
+ break;
75
+ }
76
+ }
77
+ registerEntity(decl) {
78
+ const fields = new Map();
79
+ // Ontology-entailed fields (always present)
80
+ fields.set("id", (0, types_1.prim)("uuid"));
81
+ fields.set("created_at", (0, types_1.prim)("timestamp"));
82
+ fields.set("updated_at", (0, types_1.prim)("timestamp"));
83
+ // Declared fields
84
+ for (const field of decl.owns) {
85
+ const resolved = this.resolveTypeExpr(field.type);
86
+ if (resolved) {
87
+ fields.set(field.name, resolved);
88
+ }
89
+ }
90
+ const states = decl.states
91
+ ? decl.states.nodes.map(n => n.name)
92
+ : [];
93
+ this.symbols.entities.set(decl.name, {
94
+ name: decl.name,
95
+ type: (0, types_1.record)(decl.name, fields),
96
+ states,
97
+ capabilities: [],
98
+ });
99
+ }
100
+ registerCapability(decl) {
101
+ const params = new Map();
102
+ for (const p of decl.params) {
103
+ const resolved = this.resolveTypeExpr(p.type);
104
+ if (resolved)
105
+ params.set(p.name, resolved);
106
+ }
107
+ this.symbols.capabilities.set(decl.name, { name: decl.name, params });
108
+ }
109
+ registerEvent(decl) {
110
+ const fields = new Map();
111
+ for (const f of decl.payload) {
112
+ const resolved = this.resolveTypeExpr(f.type);
113
+ if (resolved)
114
+ fields.set(f.name, resolved);
115
+ }
116
+ this.symbols.events.set(decl.name, { name: decl.name, payloadFields: fields });
117
+ }
118
+ // ─── Phase 2: Type Check Declarations ─────────────────────────────────────
119
+ checkDeclaration(decl) {
120
+ switch (decl.kind) {
121
+ case "EntityDecl":
122
+ this.checkEntity(decl);
123
+ break;
124
+ case "CapabilityDecl":
125
+ this.checkCapability(decl);
126
+ break;
127
+ case "ChannelDecl":
128
+ this.checkChannel(decl);
129
+ break;
130
+ case "FlowDecl":
131
+ this.checkFlow(decl);
132
+ break;
133
+ case "ConstraintDecl":
134
+ this.checkConstraint(decl);
135
+ break;
136
+ case "ExtensionPointDecl":
137
+ this.checkExtensionPoint(decl);
138
+ break;
139
+ }
140
+ }
141
+ // ─── Entity Checking ──────────────────────────────────────────────────────
142
+ checkEntity(decl) {
143
+ // Check for duplicate field names
144
+ const seen = new Set();
145
+ for (const field of decl.owns) {
146
+ if (seen.has(field.name)) {
147
+ this.addError("T009", `Duplicate field name '${field.name}' in entity '${decl.name}'`, field.loc);
148
+ }
149
+ seen.add(field.name);
150
+ }
151
+ // Check field types resolve
152
+ for (const field of decl.owns) {
153
+ const resolved = this.resolveTypeExpr(field.type);
154
+ if (!resolved) {
155
+ this.addError("T001", `Undefined type in field '${field.name}'`, field.loc);
156
+ }
157
+ }
158
+ // Check constraints type to bool
159
+ const entitySym = this.symbols.entities.get(decl.name);
160
+ if (entitySym) {
161
+ const ctx = new TypeContext(entitySym.type.fields, this.symbols);
162
+ for (const constraint of decl.constraints) {
163
+ const ctype = this.inferExprType(constraint, ctx);
164
+ if (ctype && ctype.tag !== "primitive") {
165
+ this.addError("T005", `Constraint expression must type to bool, got ${(0, types_1.typeToString)(ctype)}`, constraint.loc);
166
+ }
167
+ else if (ctype && ctype.tag === "primitive" && ctype.name !== "bool") {
168
+ // Allow — many constraints are comparison exprs that return bool
169
+ // The expression inferrer returns bool for comparisons
170
+ }
171
+ }
172
+ }
173
+ // Check state machine
174
+ if (decl.states) {
175
+ const stateNames = new Set(decl.states.nodes.map(n => n.name));
176
+ for (const node of decl.states.nodes) {
177
+ for (const target of node.transitions) {
178
+ if (!stateNames.has(target)) {
179
+ this.addError("T010", `Undefined state '${target}' in transition from '${node.name}'`, decl.states.loc);
180
+ }
181
+ }
182
+ for (const target of node.branches) {
183
+ if (!stateNames.has(target)) {
184
+ this.addError("T010", `Undefined state '${target}' in branch from '${node.name}'`, decl.states.loc);
185
+ }
186
+ }
187
+ }
188
+ }
189
+ }
190
+ // ─── Capability Checking ───────────────────────────────────────────────────
191
+ checkCapability(decl) {
192
+ // Build typing context from parameters
193
+ const fields = new Map();
194
+ for (const p of decl.params) {
195
+ const resolved = this.resolveTypeExpr(p.type);
196
+ if (resolved) {
197
+ fields.set(p.name, resolved);
198
+ }
199
+ else {
200
+ this.addError("T006", `Parameter '${p.name}' references undeclared type`, p.loc);
201
+ }
202
+ }
203
+ const ctx = new TypeContext(fields, this.symbols);
204
+ // Check requires clauses type to bool
205
+ for (const req of decl.requires) {
206
+ const rtype = this.inferExprType(req, ctx);
207
+ if (rtype && !this.isBoolish(rtype)) {
208
+ this.addError("T005", `Requires expression must type to bool, got ${(0, types_1.typeToString)(rtype)}`, req.loc);
209
+ }
210
+ }
211
+ // Check effects are well-typed
212
+ for (const effect of decl.effects) {
213
+ this.checkEffect(effect, ctx);
214
+ }
215
+ // Check emitted events exist
216
+ for (const emit of decl.emits) {
217
+ if (!this.symbols.events.has(emit.eventName)) {
218
+ this.addError("T011", `Emitted event '${emit.eventName}' is not declared`, emit.loc);
219
+ }
220
+ }
221
+ }
222
+ checkEffect(effect, ctx) {
223
+ const targetType = this.inferExprType(effect.target, ctx);
224
+ const valueType = this.inferExprType(effect.value, ctx);
225
+ if (!targetType || !valueType)
226
+ return; // already errored
227
+ switch (effect.op) {
228
+ case "=":
229
+ if (!(0, types_1.typeEquals)(targetType, valueType) && !this.isAssignable(valueType, targetType)) {
230
+ this.addError("T003", `Type mismatch in assignment: target is ${(0, types_1.typeToString)(targetType)}, value is ${(0, types_1.typeToString)(valueType)}`, effect.loc);
231
+ }
232
+ break;
233
+ case "+=":
234
+ // target must be set<T> or numeric, value must be T or numeric
235
+ if (targetType.tag === "generic" && targetType.name === "set") {
236
+ if (!(0, types_1.typeEquals)(targetType.args[0], valueType)) {
237
+ this.addError("T008", `Set += requires element type ${(0, types_1.typeToString)(targetType.args[0])}, got ${(0, types_1.typeToString)(valueType)}`, effect.loc);
238
+ }
239
+ }
240
+ else if ((0, types_1.isNumeric)(targetType)) {
241
+ if (!(0, types_1.isNumeric)(valueType)) {
242
+ this.addError("T003", `Numeric += requires numeric value, got ${(0, types_1.typeToString)(valueType)}`, effect.loc);
243
+ }
244
+ }
245
+ else {
246
+ this.addError("T008", `+= requires set or numeric target, got ${(0, types_1.typeToString)(targetType)}`, effect.loc);
247
+ }
248
+ break;
249
+ case "-=":
250
+ if (targetType.tag === "generic" && targetType.name === "set") {
251
+ if (!(0, types_1.typeEquals)(targetType.args[0], valueType)) {
252
+ this.addError("T008", `Set -= requires element type ${(0, types_1.typeToString)(targetType.args[0])}, got ${(0, types_1.typeToString)(valueType)}`, effect.loc);
253
+ }
254
+ }
255
+ else if ((0, types_1.isNumeric)(targetType)) {
256
+ if (!(0, types_1.isNumeric)(valueType)) {
257
+ this.addError("T003", `Numeric -= requires numeric value, got ${(0, types_1.typeToString)(valueType)}`, effect.loc);
258
+ }
259
+ }
260
+ else {
261
+ this.addError("T008", `-= requires set or numeric target, got ${(0, types_1.typeToString)(targetType)}`, effect.loc);
262
+ }
263
+ break;
264
+ }
265
+ }
266
+ // ─── Channel Checking ──────────────────────────────────────────────────────
267
+ checkChannel(decl) {
268
+ // Verify participants type is set<Entity>
269
+ if (decl.participants) {
270
+ const ptype = this.resolveTypeExpr(decl.participants);
271
+ if (ptype && ptype.tag === "generic" && ptype.name === "set") {
272
+ const inner = ptype.args[0];
273
+ if (inner.tag === "record" && !this.symbols.entities.has(inner.name)) {
274
+ this.addError("T001", `Channel participants reference undeclared entity '${inner.name}'`, decl.loc);
275
+ }
276
+ }
277
+ }
278
+ }
279
+ // ─── Flow Checking ─────────────────────────────────────────────────────────
280
+ checkFlow(decl) {
281
+ for (const step of decl.steps) {
282
+ // Check step action references a valid capability or function
283
+ if (!this.symbols.capabilities.has(step.action.name) &&
284
+ !this.symbols.entities.has(step.action.name)) {
285
+ // Allow — could be a helper function not yet declared
286
+ // In strict mode this would be T012
287
+ }
288
+ // Check compensation exists if step has one
289
+ if (step.compensate) {
290
+ // Same check — compensation should reference a valid capability
291
+ }
292
+ }
293
+ // Check at least 2 steps (ontology requirement)
294
+ if (decl.steps.length < 2) {
295
+ this.addError("T012", `Flow '${decl.name}' must have at least 2 steps`, decl.loc);
296
+ }
297
+ }
298
+ // ─── Constraint Checking ───────────────────────────────────────────────────
299
+ checkConstraint(decl) {
300
+ // Top-level constraints are checked in a global context
301
+ const globalCtx = new TypeContext(new Map(), this.symbols);
302
+ const ctype = this.inferExprType(decl.expr, globalCtx);
303
+ if (ctype && !this.isBoolish(ctype)) {
304
+ this.addError("T005", `Top-level constraint '${decl.name}' must type to bool`, decl.loc);
305
+ }
306
+ }
307
+ // ─── Expression Type Inference ─────────────────────────────────────────────
308
+ inferExprType(expr, ctx) {
309
+ switch (expr.kind) {
310
+ case "Literal":
311
+ return this.inferLiteralType(expr);
312
+ case "FieldRef":
313
+ return this.inferFieldRefType(expr, ctx);
314
+ case "BinaryExpr":
315
+ return this.inferBinaryType(expr, ctx);
316
+ case "UnaryExpr":
317
+ return this.inferUnaryType(expr, ctx);
318
+ case "CallExpr":
319
+ return this.inferCallType(expr, ctx);
320
+ case "TernaryExpr":
321
+ return this.inferTernaryType(expr, ctx);
322
+ default:
323
+ return null;
324
+ }
325
+ }
326
+ inferLiteralType(expr) {
327
+ switch (expr.type) {
328
+ case "string": return (0, types_1.prim)("string");
329
+ case "int": return (0, types_1.prim)("uint"); // default to uint per spec
330
+ case "float": return (0, types_1.prim)("float");
331
+ case "bool": return (0, types_1.prim)("bool");
332
+ case "none": return types_1.BOTTOM;
333
+ case "list": return (0, types_1.generic)("list", (0, types_1.prim)("json")); // infer element type later
334
+ case "map": return (0, types_1.prim)("json");
335
+ }
336
+ }
337
+ inferFieldRefType(expr, ctx) {
338
+ const path = expr.path;
339
+ if (path.length === 0)
340
+ return null;
341
+ // First segment: look up in context
342
+ let currentType = ctx.lookup(path[0]);
343
+ if (!currentType) {
344
+ // Try as entity name (for top-level constraints like Player.active_trades)
345
+ const entity = this.symbols.entities.get(path[0]);
346
+ if (entity) {
347
+ currentType = entity.type;
348
+ return this.resolveFieldPath(currentType, path.slice(1), expr);
349
+ }
350
+ // Unknown — don't error here, could be a forward reference
351
+ return (0, types_1.prim)("json"); // permissive fallback
352
+ }
353
+ return this.resolveFieldPath(currentType, path.slice(1), expr);
354
+ }
355
+ resolveFieldPath(baseType, remaining, expr) {
356
+ let current = baseType;
357
+ for (const segment of remaining) {
358
+ // Handle .unique, .length, .size as derived properties
359
+ if (segment === "unique")
360
+ return (0, types_1.prim)("bool");
361
+ if (segment === "length")
362
+ return (0, types_1.prim)("uint");
363
+ if (segment === "size")
364
+ return (0, types_1.prim)("uint");
365
+ if (current.tag === "record") {
366
+ const field = current.fields.get(segment);
367
+ if (field) {
368
+ current = field;
369
+ }
370
+ else {
371
+ // Field not found — could be a derived property
372
+ return (0, types_1.prim)("json"); // permissive
373
+ }
374
+ }
375
+ else if (current.tag === "generic") {
376
+ // Accessing property on generic type (e.g., list.size)
377
+ if (segment === "size" || segment === "length")
378
+ return (0, types_1.prim)("uint");
379
+ return (0, types_1.prim)("json");
380
+ }
381
+ else {
382
+ return (0, types_1.prim)("json"); // permissive fallback
383
+ }
384
+ }
385
+ return current;
386
+ }
387
+ inferBinaryType(expr, ctx) {
388
+ const left = this.inferExprType(expr.left, ctx);
389
+ const right = this.inferExprType(expr.right, ctx);
390
+ switch (expr.op) {
391
+ // Comparison operators → bool
392
+ case "==":
393
+ case "!=":
394
+ case "<":
395
+ case ">":
396
+ case "<=":
397
+ case ">=":
398
+ case "in":
399
+ case "contains":
400
+ case "and":
401
+ case "or":
402
+ return (0, types_1.prim)("bool");
403
+ // Range operator
404
+ case "..":
405
+ return (0, types_1.generic)("list", (0, types_1.prim)("uint")); // range produces a range object
406
+ // Arithmetic → numeric
407
+ case "+":
408
+ case "*":
409
+ case "/":
410
+ case "%":
411
+ if (left && right && (0, types_1.isNumeric)(left) && (0, types_1.isNumeric)(right)) {
412
+ // Promote to widest type
413
+ if (left.name === "float" || right.name === "float")
414
+ return (0, types_1.prim)("float");
415
+ if (left.name === "int" || right.name === "int")
416
+ return (0, types_1.prim)("int");
417
+ return (0, types_1.prim)("uint");
418
+ }
419
+ if (expr.op === "+" && left?.tag === "primitive" && left.name === "string") {
420
+ return (0, types_1.prim)("string"); // string concatenation
421
+ }
422
+ return (0, types_1.prim)("uint");
423
+ case "-":
424
+ return (0, types_1.prim)("int"); // subtraction may produce negative
425
+ default:
426
+ return (0, types_1.prim)("bool");
427
+ }
428
+ }
429
+ inferUnaryType(expr, ctx) {
430
+ if (expr.op === "not")
431
+ return (0, types_1.prim)("bool");
432
+ if (expr.op === "-")
433
+ return (0, types_1.prim)("int");
434
+ return (0, types_1.prim)("json");
435
+ }
436
+ inferCallType(expr, ctx) {
437
+ // Built-in functions
438
+ if (expr.name === "now")
439
+ return (0, types_1.prim)("timestamp");
440
+ if (expr.name === "count")
441
+ return (0, types_1.prim)("uint");
442
+ if (expr.name === "sum")
443
+ return (0, types_1.prim)("uint");
444
+ // User-defined — return json as permissive fallback
445
+ return (0, types_1.prim)("json");
446
+ }
447
+ inferTernaryType(expr, ctx) {
448
+ // condition must be bool
449
+ const condType = this.inferExprType(expr.condition, ctx);
450
+ if (condType && !this.isBoolish(condType)) {
451
+ this.addError("T005", "Ternary condition must be bool", expr.loc);
452
+ }
453
+ // result type is type of consequent (assume both branches same type)
454
+ return this.inferExprType(expr.consequent, ctx);
455
+ }
456
+ // ─── Helpers ───────────────────────────────────────────────────────────────
457
+ resolveTypeExpr(typeExpr) {
458
+ switch (typeExpr.kind) {
459
+ case "PrimitiveType":
460
+ return (0, types_1.prim)(typeExpr.name);
461
+ case "GenericType": {
462
+ const args = typeExpr.typeArgs.map(a => this.resolveTypeExpr(a)).filter(Boolean);
463
+ return (0, types_1.generic)(typeExpr.name, ...args);
464
+ }
465
+ case "EntityRefType": {
466
+ const entity = this.symbols.entities.get(typeExpr.name);
467
+ if (entity)
468
+ return entity.type;
469
+ // Could be a forward reference — register as unknown record
470
+ return (0, types_1.record)(typeExpr.name, new Map());
471
+ }
472
+ case "TupleType": {
473
+ const elements = typeExpr.elements.map(e => this.resolveTypeExpr(e)).filter(Boolean);
474
+ return { tag: "tuple", elements };
475
+ }
476
+ case "UnionType": {
477
+ const members = typeExpr.members.map(m => this.resolveTypeExpr(m)).filter(Boolean);
478
+ return { tag: "union", members };
479
+ }
480
+ }
481
+ }
482
+ isBoolish(t) {
483
+ return (t.tag === "primitive" && t.name === "bool") || t.tag === "bottom";
484
+ }
485
+ isAssignable(source, target) {
486
+ if ((0, types_1.typeEquals)(source, target))
487
+ return true;
488
+ // Numeric widening: uint → int → float
489
+ if (source.tag === "primitive" && target.tag === "primitive") {
490
+ if (source.name === "uint" && (target.name === "int" || target.name === "float"))
491
+ return true;
492
+ if (source.name === "int" && target.name === "float")
493
+ return true;
494
+ }
495
+ // json accepts anything and anything accepts json (permissive for unresolved)
496
+ if (target.tag === "primitive" && target.name === "json")
497
+ return true;
498
+ if (source.tag === "primitive" && source.name === "json")
499
+ return true;
500
+ return false;
501
+ }
502
+ checkExtensionPoint(decl) {
503
+ for (const p of decl.params) {
504
+ const resolved = this.resolveTypeExpr(p.type);
505
+ if (!resolved) {
506
+ this.addError("T001", "Extension point '" + decl.name + "' param '" + p.name + "' references undefined type", p.loc);
507
+ }
508
+ }
509
+ if (decl.returns) {
510
+ const resolved = this.resolveTypeExpr(decl.returns);
511
+ if (!resolved) {
512
+ this.addError("T001", "Extension point '" + decl.name + "' return type is undefined", decl.loc);
513
+ }
514
+ }
515
+ }
516
+ }
517
+ exports.TypeChecker = TypeChecker;
518
+ // ─── Type Context ────────────────────────────────────────────────────────────
519
+ class TypeContext {
520
+ constructor(locals, symbols) {
521
+ this.locals = locals;
522
+ this.symbols = symbols;
523
+ }
524
+ lookup(name) {
525
+ const local = this.locals.get(name);
526
+ if (local)
527
+ return local;
528
+ const entity = this.symbols.entities.get(name);
529
+ if (entity)
530
+ return entity.type;
531
+ return null;
532
+ }
533
+ }
534
+ //# sourceMappingURL=typechecker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typechecker.js","sourceRoot":"","sources":["../src/typechecker.ts"],"names":[],"mappings":"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"}