@ball-lang/encoder 1.62.0 → 1.63.1

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.
package/dist/encoder.d.ts CHANGED
@@ -24,6 +24,17 @@ export declare class TsEncoder {
24
24
  private strictBehaviorAffecting;
25
25
  /** Monotonic counter for the synthetic loop variables `.forEach` desugars to. */
26
26
  private desugarCounter;
27
+ /**
28
+ * The file currently being encoded, and the semantic model over it (#506).
29
+ *
30
+ * The checker is built LAZILY — the first time a method name that exists on
31
+ * both `String` and `Array` actually shows up. Creating a `ts.Program` costs
32
+ * orders of magnitude more than parsing one file, and the overwhelming
33
+ * majority of encodes never contain an ambiguous name, so they must not pay
34
+ * for it.
35
+ */
36
+ private inputFile;
37
+ private checker;
27
38
  private static readonly OPERATOR_CANONICAL_NAMES;
28
39
  encode(source: string, options?: EncodeOptions): Program;
29
40
  private encodeFunction;
@@ -101,6 +112,19 @@ export declare class TsEncoder {
101
112
  private encodeTypeAlias;
102
113
  private encodeEnum;
103
114
  private encodeTaggedTemplate;
115
+ /**
116
+ * Classify a method call's receiver as a `String`, an `Array`, or neither
117
+ * (#506). Only consulted for the three names that exist on both.
118
+ *
119
+ * Deliberately conservative: anything the checker cannot pin down — `any`
120
+ * (which is also what an unresolved name resolves to), `unknown`, a bare
121
+ * type parameter, or a union whose members disagree — comes back
122
+ * `"unknown"`, which keeps the warn-loud String fallback rather than
123
+ * guessing.
124
+ */
125
+ private resolveReceiverKind;
126
+ /** `resolveReceiverKind`'s body, once the Map-prototype guard is in place. */
127
+ private classifyReceiver;
104
128
  /**
105
129
  * Map a JS/TS method name to its Ball std function equivalent.
106
130
  * Returns null if no mapping exists (falls through to generic method call).
@@ -1 +1 @@
1
- {"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../src/encoder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EAGR,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;;;;;OAUG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAmED,qBAAa,SAAS;IACpB,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,uBAAuB,CAAS;IACxC,iFAAiF;IACjF,OAAO,CAAC,cAAc,CAAK;IAQ3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAqB9C;IAEF,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO;IA2F5D,OAAO,CAAC,cAAc;IAwCtB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,eAAe;IA8HvB,OAAO,CAAC,UAAU;IAgMlB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAuBpB;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,YAAY;IA6DpB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,iBAAiB;IAyCzB,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,UAAU;IA8LlB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,cAAc;IAsCtB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,kBAAkB;IA+D1B,+EAA+E;IAC/E,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,YAAY;IA8CpB,OAAO,CAAC,QAAQ;IAsBhB,OAAO,CAAC,SAAS;IAqCjB,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,SAAS;IA2BjB,OAAO,CAAC,YAAY;IAsBpB,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,WAAW;IA4GnB,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,oBAAoB;IAsB5B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,cAAc;IA+GtB,OAAO,CAAC,OAAO;IAaf,OAAO,CAAC,gBAAgB;IA4BxB,OAAO,CAAC,WAAW;IAInB;;;;;;;;OAQG;IACH,OAAO,CAAC,IAAI;IAaZ,WAAW,IAAI,MAAM,EAAE;CAGxB;AAyCD,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;gBAChB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;CAKhD;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAQD,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAE3E;AAID,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,YAAY,CAI5F"}
1
+ {"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../src/encoder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EAGR,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;;;;;OAUG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAiLD,qBAAa,SAAS;IACpB,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,uBAAuB,CAAS;IACxC,iFAAiF;IACjF,OAAO,CAAC,cAAc,CAAK;IAC3B;;;;;;;;OAQG;IACH,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,OAAO,CAA6B;IAQ5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAqB9C;IAEF,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO;IAgG5D,OAAO,CAAC,cAAc;IAwCtB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,eAAe;IA8HvB,OAAO,CAAC,UAAU;IAgMlB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAuBpB;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,YAAY;IA6DpB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,iBAAiB;IAyCzB,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,UAAU;IA8LlB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,cAAc;IAsCtB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,kBAAkB;IA+D1B,+EAA+E;IAC/E,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,YAAY;IA8CpB,OAAO,CAAC,QAAQ;IAsBhB,OAAO,CAAC,SAAS;IAqCjB,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,SAAS;IA2BjB,OAAO,CAAC,YAAY;IAsBpB,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,WAAW;IA4GnB,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,oBAAoB;IAsB5B;;;;;;;;;OASG;IACH,OAAO,CAAC,mBAAmB;IAQ3B,8EAA8E;IAC9E,OAAO,CAAC,gBAAgB;IA6BxB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,cAAc;IA4HtB,OAAO,CAAC,OAAO;IAaf,OAAO,CAAC,gBAAgB;IA4BxB,OAAO,CAAC,WAAW;IAInB;;;;;;;;OAQG;IACH,OAAO,CAAC,IAAI;IAaZ,WAAW,IAAI,MAAM,EAAE;CAGxB;AAyCD,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;gBAChB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;CAKhD;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAQD,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAE3E;AAID,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,YAAY,CAI5F"}
package/dist/encoder.js CHANGED
@@ -59,6 +59,106 @@ const COMPOUND_OPS = {
59
59
  [ts.SyntaxKind.QuestionQuestionEqualsToken]: "??=",
60
60
  [ts.SyntaxKind.AsteriskAsteriskEqualsToken]: "**=",
61
61
  };
62
+ /**
63
+ * The single synthetic file every `encode()` call is parsed into. It is a
64
+ * relative name so the `ts.Program` never touches the real working directory
65
+ * for it, and it is fixed so the lib-file cache below is shared across calls.
66
+ */
67
+ const INPUT_FILE_NAME = "ball_encoder_input.ts";
68
+ /**
69
+ * Compiler options for the checker-backed `ts.Program`.
70
+ *
71
+ * `lib` is pinned to the non-`.full` ES2022 library on purpose: the default
72
+ * for this target is `lib.es2022.full.d.ts`, which drags in the whole DOM
73
+ * (~2 MB of extra declarations) that the encoder has no use for. ES2022 alone
74
+ * still declares `String` and `Array`, which is all the String-vs-Array
75
+ * resolution needs. `types: []` keeps `@types/*` off the graph for the same
76
+ * reason. Diagnostics are never read — the encoder must encode a file with
77
+ * type errors exactly as before — so nothing here affects correctness beyond
78
+ * which globals resolve.
79
+ */
80
+ const CHECKER_OPTIONS = {
81
+ target: ts.ScriptTarget.Latest,
82
+ module: ts.ModuleKind.ESNext,
83
+ moduleResolution: ts.ModuleResolutionKind.Bundler,
84
+ lib: ["lib.es2022.d.ts"],
85
+ types: [],
86
+ noEmit: true,
87
+ skipLibCheck: true,
88
+ allowJs: false,
89
+ };
90
+ /**
91
+ * `Map.prototype` members the Ball TS runtime preamble replaces with Dart-style
92
+ * GETTERS (`ts/compiler/src/preamble.ts` — Dart spells `map.keys`, JS spells
93
+ * `map.keys()`). That shadowing is process-global, so once a compiled Ball
94
+ * program (e.g. `@ball-lang/engine`) is loaded, every `map.keys()` call in the
95
+ * process throws `keys is not a function` — including the ones inside
96
+ * TypeScript's own type checker. `withNativeMapPrototype` below hands the
97
+ * natives back for as long as the checker is running.
98
+ */
99
+ const SHADOWABLE_MAP_MEMBERS = ["entries", "keys", "values"];
100
+ /**
101
+ * The native descriptors, captured at module load — i.e. before an
102
+ * `await import()` of a compiled Ball program can shadow them. (If this module
103
+ * is itself loaded after such a program, these are already the getters and the
104
+ * guard degrades to a no-op: the checker then fails loudly rather than
105
+ * silently mis-resolving. See ts/encoder/AGENTS.md.)
106
+ */
107
+ const NATIVE_MAP_DESCRIPTORS = Object.fromEntries(SHADOWABLE_MAP_MEMBERS.map((name) => [name, Object.getOwnPropertyDescriptor(Map.prototype, name)]));
108
+ /** Run `fn` with native `Map.prototype` iteration methods, then put back what was there. */
109
+ function withNativeMapPrototype(fn) {
110
+ const shadowed = SHADOWABLE_MAP_MEMBERS.filter((name) => Object.getOwnPropertyDescriptor(Map.prototype, name)?.get !== undefined);
111
+ if (shadowed.length === 0)
112
+ return fn();
113
+ const saved = shadowed.map((name) => [name, Object.getOwnPropertyDescriptor(Map.prototype, name)]);
114
+ for (const name of shadowed)
115
+ Object.defineProperty(Map.prototype, name, NATIVE_MAP_DESCRIPTORS[name]);
116
+ try {
117
+ return fn();
118
+ }
119
+ finally {
120
+ for (const [name, descriptor] of saved)
121
+ Object.defineProperty(Map.prototype, name, descriptor);
122
+ }
123
+ }
124
+ /**
125
+ * Parsed `lib.*.d.ts` files, keyed by the name the compiler host asked for.
126
+ *
127
+ * Creating a `ts.Program` is far heavier than `ts.createSourceFile` — the bulk
128
+ * of it is parsing and BINDING the standard library. Both are cached on the
129
+ * `SourceFile` objects themselves, so reusing them across `encode()` calls
130
+ * turns every call after the first back into roughly single-file cost. Without
131
+ * this cache the ts/encoder suite's ~250 encodes would each re-parse the whole
132
+ * ES2022 lib.
133
+ *
134
+ * `undefined` is a legitimate cached value (the host could not find the file),
135
+ * hence `has()` rather than a truthiness check.
136
+ */
137
+ const LIB_FILE_CACHE = new Map();
138
+ /**
139
+ * Build a `TypeChecker` that has bound `sourceFile` — the very object the
140
+ * encoder is already walking, so every node it holds is one the checker knows.
141
+ *
142
+ * The public API takes a bare source string, so there is no real file to point
143
+ * a `ts.Program` at. An in-memory host serves that one file and delegates
144
+ * everything else — crucially the `lib.*.d.ts` lookup and its `/// <reference
145
+ * lib="..." />` chain — to the stock compiler host, which already knows how to
146
+ * find them inside the resolved `typescript` package.
147
+ */
148
+ function createChecker(sourceFile) {
149
+ const host = ts.createCompilerHost(CHECKER_OPTIONS, /* setParentNodes */ true);
150
+ const readLib = host.getSourceFile.bind(host);
151
+ host.getSourceFile = (fileName, languageVersion, onError, shouldCreateNewSourceFile) => {
152
+ if (fileName === INPUT_FILE_NAME)
153
+ return sourceFile;
154
+ if (LIB_FILE_CACHE.has(fileName))
155
+ return LIB_FILE_CACHE.get(fileName);
156
+ const lib = readLib(fileName, languageVersion, onError, shouldCreateNewSourceFile);
157
+ LIB_FILE_CACHE.set(fileName, lib);
158
+ return lib;
159
+ };
160
+ return ts.createProgram([INPUT_FILE_NAME], CHECKER_OPTIONS, host).getTypeChecker();
161
+ }
62
162
  export class TsEncoder {
63
163
  stdFunctions = new Set();
64
164
  warnings = [];
@@ -66,6 +166,17 @@ export class TsEncoder {
66
166
  strictBehaviorAffecting = false;
67
167
  /** Monotonic counter for the synthetic loop variables `.forEach` desugars to. */
68
168
  desugarCounter = 0;
169
+ /**
170
+ * The file currently being encoded, and the semantic model over it (#506).
171
+ *
172
+ * The checker is built LAZILY — the first time a method name that exists on
173
+ * both `String` and `Array` actually shows up. Creating a `ts.Program` costs
174
+ * orders of magnitude more than parsing one file, and the overwhelming
175
+ * majority of encodes never contain an ambiguous name, so they must not pay
176
+ * for it.
177
+ */
178
+ inputFile;
179
+ checker;
69
180
  // Maps an operator lexeme to the canonical, language-agnostic Ball method
70
181
  // name every compiler already understands for operator overloads — mirrors
71
182
  // dart/encoder's `_canonicalOperatorName` exactly (same lexemes, same
@@ -99,7 +210,12 @@ export class TsEncoder {
99
210
  const entryFn = options.entryFunction ?? "main";
100
211
  this.strict = options.strict ?? false;
101
212
  this.strictBehaviorAffecting = options.strictBehaviorAffecting ?? false;
102
- const sourceFile = ts.createSourceFile("input.ts", source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
213
+ const sourceFile = ts.createSourceFile(INPUT_FILE_NAME, source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
214
+ // `resolveReceiverKind` wraps this file in a real `ts.Program` on demand,
215
+ // so `slice`/`indexOf`/`includes` resolve against the receiver's static
216
+ // type instead of lookup-table order (#506).
217
+ this.inputFile = sourceFile;
218
+ this.checker = undefined;
103
219
  const functions = [];
104
220
  const typeDefs = [];
105
221
  const typeAliases = [];
@@ -795,7 +911,7 @@ export class TsEncoder {
795
911
  const isOptionalCall = node.expression.questionDotToken !== undefined || node.questionDotToken !== undefined;
796
912
  // Map common JS/TS method calls to their Ball std equivalents.
797
913
  // The engine's std module uses snake_case names with type prefixes.
798
- const stdMethod = this.mapMethodToStd(method, args);
914
+ const stdMethod = this.mapMethodToStd(method, args, node.expression.expression);
799
915
  if (stdMethod) {
800
916
  const callWith = (receiver) => this.stdCall(stdMethod.fn, [
801
917
  { name: stdMethod.selfName ?? "value", value: receiver },
@@ -1377,6 +1493,55 @@ export class TsEncoder {
1377
1493
  { name: "expressions", value: { literal: { listValue: { elements: exprs } } } },
1378
1494
  ]);
1379
1495
  }
1496
+ /**
1497
+ * Classify a method call's receiver as a `String`, an `Array`, or neither
1498
+ * (#506). Only consulted for the three names that exist on both.
1499
+ *
1500
+ * Deliberately conservative: anything the checker cannot pin down — `any`
1501
+ * (which is also what an unresolved name resolves to), `unknown`, a bare
1502
+ * type parameter, or a union whose members disagree — comes back
1503
+ * `"unknown"`, which keeps the warn-loud String fallback rather than
1504
+ * guessing.
1505
+ */
1506
+ resolveReceiverKind(receiver) {
1507
+ const inputFile = this.inputFile;
1508
+ if (!inputFile || !receiver)
1509
+ return "unknown";
1510
+ // Everything that touches the checker — construction AND every query it
1511
+ // lazily runs — needs native `Map.prototype` iteration methods.
1512
+ return withNativeMapPrototype(() => this.classifyReceiver(inputFile, receiver));
1513
+ }
1514
+ /** `resolveReceiverKind`'s body, once the Map-prototype guard is in place. */
1515
+ classifyReceiver(inputFile, receiver) {
1516
+ // The checker is built on first use, then reused for the rest of the encode.
1517
+ const checker = this.checker ?? (this.checker = createChecker(inputFile));
1518
+ const classify = (type) => {
1519
+ // `any`/`unknown`/a type parameter carry no receiver information. The
1520
+ // error type produced by an unresolved name is an `any`, so this arm
1521
+ // covers `nowhere.includes(x)` too.
1522
+ if (type.flags & (ts.TypeFlags.Any | ts.TypeFlags.Unknown | ts.TypeFlags.TypeParameter)) {
1523
+ return "unknown";
1524
+ }
1525
+ // StringLike covers `string`, string literal types, template literal
1526
+ // types and `Uppercase<T>`-style string mappings.
1527
+ if (type.flags & ts.TypeFlags.StringLike)
1528
+ return "string";
1529
+ // `String` (the boxed object type) has no StringLike flag.
1530
+ if (type.getSymbol()?.getName() === "String")
1531
+ return "string";
1532
+ // `T[]`, `ReadonlyArray<T>` and every tuple shape.
1533
+ if (checker.isArrayType(type) || checker.isTupleType(type))
1534
+ return "array";
1535
+ return "unknown";
1536
+ };
1537
+ const type = checker.getTypeAtLocation(receiver);
1538
+ if (!type.isUnion())
1539
+ return classify(type);
1540
+ // A union resolves only when every member agrees; `string | number[]`
1541
+ // genuinely is ambiguous and must keep warning.
1542
+ const kinds = type.types.map(classify);
1543
+ return kinds.every((k) => k === kinds[0]) ? kinds[0] : "unknown";
1544
+ }
1380
1545
  /**
1381
1546
  * Map a JS/TS method name to its Ball std function equivalent.
1382
1547
  * Returns null if no mapping exists (falls through to generic method call).
@@ -1389,7 +1554,7 @@ export class TsEncoder {
1389
1554
  * each read off the corresponding `case` body in ts/compiler/src/compiler.ts
1390
1555
  * (#489).
1391
1556
  */
1392
- mapMethodToStd(method, _args) {
1557
+ mapMethodToStd(method, _args, receiver) {
1393
1558
  /** Name the i-th argument after `names[i]`, falling back to `argN`. */
1394
1559
  const named = (...names) => (a) => a.map((x, i) => ({ name: names[i] ?? `arg${i}`, value: x.value }));
1395
1560
  // String methods: `value` is the receiver.
@@ -1445,36 +1610,48 @@ export class TsEncoder {
1445
1610
  // made the dedicated `toString` mapping below unreachable and produced a
1446
1611
  // corrupt call.function (a function object, not "to_string") in the Ball
1447
1612
  // IR. Found via coverage analysis of the always-dead toString branch.
1613
+ /** The `std_collections` mapping for `method`, in the shape callers want. */
1614
+ const arrayMapping = () => {
1615
+ const m = ARR_METHODS[method];
1616
+ return {
1617
+ fn: m.fn,
1618
+ module: "std_collections",
1619
+ selfName: "list",
1620
+ extraFields: named(...m.args),
1621
+ };
1622
+ };
1448
1623
  if (Object.prototype.hasOwnProperty.call(STR_METHODS, method)) {
1449
1624
  const m = STR_METHODS[method];
1450
- // `slice`, `indexOf` and `includes` exist on BOTH String and Array, and
1451
- // this syntax-only encoder (no ts.Program/TypeChecker) resolves them to
1452
- // the STRING mapping because STR_METHODS is consulted first. On an Array
1453
- // receiver that is wrong: `arr.slice(1, 3)` compiles to
1454
- // `arr.substring(1, 3)`, which throws. ENCODER_CARVEOUTS.md documents
1455
- // the ambiguity, but this branch never called `warn()`, so the encode
1456
- // was completely silent even under `{ strictBehaviorAffecting: true }`
1457
- // — contradicting that file's own "every entry here warns" policy.
1458
- // Same mechanism and severity as the ArraySplice warning in encodeCall.
1459
- // Resolving it correctly (rather than merely loudly) needs the TS
1460
- // semantic model tracked by #506.
1625
+ // `slice`, `indexOf` and `includes` exist on BOTH String and Array, so
1626
+ // the table this branch reaches first cannot decide the mapping — the
1627
+ // RECEIVER'S STATIC TYPE does. Before #506 the encoder was syntax-only
1628
+ // (no ts.Program/TypeChecker) and STR_METHODS simply won, so
1629
+ // `arr.slice(1, 3)` compiled to `arr.substring(1, 3)` and threw at
1630
+ // runtime; #525 made that loud but still wrong. `encode()` now builds a
1631
+ // real Program, so ask the checker.
1632
+ //
1633
+ // The warning survives for the receivers the checker CANNOT type (`any`,
1634
+ // an unresolved identifier, a mixed union, a type parameter): guessing
1635
+ // there would trade today's honest warn-loud fallback for a new class of
1636
+ // silent mis-encode, which is strictly worse (Core Invariant: fail loud).
1461
1637
  if (Object.prototype.hasOwnProperty.call(ARR_METHODS, method)) {
1462
- this.warn(`\`.${method}(...)\` exists on both String and Array; the syntax-only ` +
1463
- `encoder resolves it to std.${m.fn} (the String mapping), which is ` +
1464
- `wrong for an Array receiver — see ts/encoder/ENCODER_CARVEOUTS.md ` +
1465
- `"Ambiguous without a type checker"`, "AmbiguousStringArrayMethod");
1638
+ const kind = this.resolveReceiverKind(receiver);
1639
+ if (kind === "array")
1640
+ return arrayMapping();
1641
+ if (kind === "unknown") {
1642
+ this.warn(`\`.${method}(...)\` exists on both String and Array and the type ` +
1643
+ `checker could not resolve this receiver (\`any\`, an unresolved ` +
1644
+ `name, a mixed union or a type parameter); the encoder falls back ` +
1645
+ `to std.${m.fn} (the String mapping), which is wrong for an Array ` +
1646
+ `receiver — see ts/encoder/ENCODER_CARVEOUTS.md ` +
1647
+ `"Ambiguous without a type checker"`, "AmbiguousStringArrayMethod");
1648
+ }
1466
1649
  }
1467
1650
  return { fn: m.fn, selfName: "value", extraFields: named(...m.args) };
1468
1651
  }
1469
1652
  // Same hasOwnProperty rationale as STR_METHODS above.
1470
1653
  if (Object.prototype.hasOwnProperty.call(ARR_METHODS, method)) {
1471
- const m = ARR_METHODS[method];
1472
- return {
1473
- fn: m.fn,
1474
- module: "std_collections",
1475
- selfName: "list",
1476
- extraFields: named(...m.args),
1477
- };
1654
+ return arrayMapping();
1478
1655
  }
1479
1656
  // toString
1480
1657
  if (method === "toString") {
@@ -1 +1 @@
1
- {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../src/encoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"encoder.js","sourceRoot":"","sources":["../src/encoder.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ball-lang/encoder",
3
- "version": "1.62.0",
3
+ "version": "1.63.1",
4
4
  "description": "TypeScript → Ball encoder. Parses TypeScript source and produces Ball IR (protobuf Program).",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/encoder.ts CHANGED
@@ -89,6 +89,116 @@ const COMPOUND_OPS: Record<number, string> = {
89
89
  [ts.SyntaxKind.AsteriskAsteriskEqualsToken]: "**=",
90
90
  };
91
91
 
92
+ /**
93
+ * The single synthetic file every `encode()` call is parsed into. It is a
94
+ * relative name so the `ts.Program` never touches the real working directory
95
+ * for it, and it is fixed so the lib-file cache below is shared across calls.
96
+ */
97
+ const INPUT_FILE_NAME = "ball_encoder_input.ts";
98
+
99
+ /**
100
+ * Compiler options for the checker-backed `ts.Program`.
101
+ *
102
+ * `lib` is pinned to the non-`.full` ES2022 library on purpose: the default
103
+ * for this target is `lib.es2022.full.d.ts`, which drags in the whole DOM
104
+ * (~2 MB of extra declarations) that the encoder has no use for. ES2022 alone
105
+ * still declares `String` and `Array`, which is all the String-vs-Array
106
+ * resolution needs. `types: []` keeps `@types/*` off the graph for the same
107
+ * reason. Diagnostics are never read — the encoder must encode a file with
108
+ * type errors exactly as before — so nothing here affects correctness beyond
109
+ * which globals resolve.
110
+ */
111
+ const CHECKER_OPTIONS: ts.CompilerOptions = {
112
+ target: ts.ScriptTarget.Latest,
113
+ module: ts.ModuleKind.ESNext,
114
+ moduleResolution: ts.ModuleResolutionKind.Bundler,
115
+ lib: ["lib.es2022.d.ts"],
116
+ types: [],
117
+ noEmit: true,
118
+ skipLibCheck: true,
119
+ allowJs: false,
120
+ };
121
+
122
+ /**
123
+ * `Map.prototype` members the Ball TS runtime preamble replaces with Dart-style
124
+ * GETTERS (`ts/compiler/src/preamble.ts` — Dart spells `map.keys`, JS spells
125
+ * `map.keys()`). That shadowing is process-global, so once a compiled Ball
126
+ * program (e.g. `@ball-lang/engine`) is loaded, every `map.keys()` call in the
127
+ * process throws `keys is not a function` — including the ones inside
128
+ * TypeScript's own type checker. `withNativeMapPrototype` below hands the
129
+ * natives back for as long as the checker is running.
130
+ */
131
+ const SHADOWABLE_MAP_MEMBERS = ["entries", "keys", "values"] as const;
132
+
133
+ /**
134
+ * The native descriptors, captured at module load — i.e. before an
135
+ * `await import()` of a compiled Ball program can shadow them. (If this module
136
+ * is itself loaded after such a program, these are already the getters and the
137
+ * guard degrades to a no-op: the checker then fails loudly rather than
138
+ * silently mis-resolving. See ts/encoder/AGENTS.md.)
139
+ */
140
+ const NATIVE_MAP_DESCRIPTORS: Record<string, PropertyDescriptor> = Object.fromEntries(
141
+ SHADOWABLE_MAP_MEMBERS.map((name) => [name, Object.getOwnPropertyDescriptor(Map.prototype, name)!]),
142
+ );
143
+
144
+ /** Run `fn` with native `Map.prototype` iteration methods, then put back what was there. */
145
+ function withNativeMapPrototype<T>(fn: () => T): T {
146
+ const shadowed = SHADOWABLE_MAP_MEMBERS.filter(
147
+ (name) => Object.getOwnPropertyDescriptor(Map.prototype, name)?.get !== undefined,
148
+ );
149
+ if (shadowed.length === 0) return fn();
150
+ const saved = shadowed.map(
151
+ (name) => [name, Object.getOwnPropertyDescriptor(Map.prototype, name)!] as const,
152
+ );
153
+ for (const name of shadowed) Object.defineProperty(Map.prototype, name, NATIVE_MAP_DESCRIPTORS[name]);
154
+ try {
155
+ return fn();
156
+ } finally {
157
+ for (const [name, descriptor] of saved) Object.defineProperty(Map.prototype, name, descriptor);
158
+ }
159
+ }
160
+
161
+ /**
162
+ * Parsed `lib.*.d.ts` files, keyed by the name the compiler host asked for.
163
+ *
164
+ * Creating a `ts.Program` is far heavier than `ts.createSourceFile` — the bulk
165
+ * of it is parsing and BINDING the standard library. Both are cached on the
166
+ * `SourceFile` objects themselves, so reusing them across `encode()` calls
167
+ * turns every call after the first back into roughly single-file cost. Without
168
+ * this cache the ts/encoder suite's ~250 encodes would each re-parse the whole
169
+ * ES2022 lib.
170
+ *
171
+ * `undefined` is a legitimate cached value (the host could not find the file),
172
+ * hence `has()` rather than a truthiness check.
173
+ */
174
+ const LIB_FILE_CACHE = new Map<string, ts.SourceFile | undefined>();
175
+
176
+ /** What a method call's receiver statically is, as far as the checker knows. */
177
+ type ReceiverKind = "string" | "array" | "unknown";
178
+
179
+ /**
180
+ * Build a `TypeChecker` that has bound `sourceFile` — the very object the
181
+ * encoder is already walking, so every node it holds is one the checker knows.
182
+ *
183
+ * The public API takes a bare source string, so there is no real file to point
184
+ * a `ts.Program` at. An in-memory host serves that one file and delegates
185
+ * everything else — crucially the `lib.*.d.ts` lookup and its `/// <reference
186
+ * lib="..." />` chain — to the stock compiler host, which already knows how to
187
+ * find them inside the resolved `typescript` package.
188
+ */
189
+ function createChecker(sourceFile: ts.SourceFile): ts.TypeChecker {
190
+ const host = ts.createCompilerHost(CHECKER_OPTIONS, /* setParentNodes */ true);
191
+ const readLib = host.getSourceFile.bind(host);
192
+ host.getSourceFile = (fileName, languageVersion, onError, shouldCreateNewSourceFile) => {
193
+ if (fileName === INPUT_FILE_NAME) return sourceFile;
194
+ if (LIB_FILE_CACHE.has(fileName)) return LIB_FILE_CACHE.get(fileName);
195
+ const lib = readLib(fileName, languageVersion, onError, shouldCreateNewSourceFile);
196
+ LIB_FILE_CACHE.set(fileName, lib);
197
+ return lib;
198
+ };
199
+ return ts.createProgram([INPUT_FILE_NAME], CHECKER_OPTIONS, host).getTypeChecker();
200
+ }
201
+
92
202
  export class TsEncoder {
93
203
  private stdFunctions = new Set<string>();
94
204
  private warnings: string[] = [];
@@ -96,6 +206,17 @@ export class TsEncoder {
96
206
  private strictBehaviorAffecting = false;
97
207
  /** Monotonic counter for the synthetic loop variables `.forEach` desugars to. */
98
208
  private desugarCounter = 0;
209
+ /**
210
+ * The file currently being encoded, and the semantic model over it (#506).
211
+ *
212
+ * The checker is built LAZILY — the first time a method name that exists on
213
+ * both `String` and `Array` actually shows up. Creating a `ts.Program` costs
214
+ * orders of magnitude more than parsing one file, and the overwhelming
215
+ * majority of encodes never contain an ambiguous name, so they must not pay
216
+ * for it.
217
+ */
218
+ private inputFile: ts.SourceFile | undefined;
219
+ private checker: ts.TypeChecker | undefined;
99
220
 
100
221
  // Maps an operator lexeme to the canonical, language-agnostic Ball method
101
222
  // name every compiler already understands for operator overloads — mirrors
@@ -133,8 +254,13 @@ export class TsEncoder {
133
254
  this.strictBehaviorAffecting = options.strictBehaviorAffecting ?? false;
134
255
 
135
256
  const sourceFile = ts.createSourceFile(
136
- "input.ts", source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS
257
+ INPUT_FILE_NAME, source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS
137
258
  );
259
+ // `resolveReceiverKind` wraps this file in a real `ts.Program` on demand,
260
+ // so `slice`/`indexOf`/`includes` resolve against the receiver's static
261
+ // type instead of lookup-table order (#506).
262
+ this.inputFile = sourceFile;
263
+ this.checker = undefined;
138
264
 
139
265
  const functions: FunctionDef[] = [];
140
266
  const typeDefs: TypeDefinition[] = [];
@@ -851,7 +977,7 @@ export class TsEncoder {
851
977
 
852
978
  // Map common JS/TS method calls to their Ball std equivalents.
853
979
  // The engine's std module uses snake_case names with type prefixes.
854
- const stdMethod = this.mapMethodToStd(method, args);
980
+ const stdMethod = this.mapMethodToStd(method, args, node.expression.expression);
855
981
  if (stdMethod) {
856
982
  const callWith = (receiver: Expression): Expression => this.stdCall(stdMethod.fn, [
857
983
  { name: stdMethod.selfName ?? "value", value: receiver },
@@ -1487,6 +1613,54 @@ export class TsEncoder {
1487
1613
  ]);
1488
1614
  }
1489
1615
 
1616
+ /**
1617
+ * Classify a method call's receiver as a `String`, an `Array`, or neither
1618
+ * (#506). Only consulted for the three names that exist on both.
1619
+ *
1620
+ * Deliberately conservative: anything the checker cannot pin down — `any`
1621
+ * (which is also what an unresolved name resolves to), `unknown`, a bare
1622
+ * type parameter, or a union whose members disagree — comes back
1623
+ * `"unknown"`, which keeps the warn-loud String fallback rather than
1624
+ * guessing.
1625
+ */
1626
+ private resolveReceiverKind(receiver: ts.Expression | undefined): ReceiverKind {
1627
+ const inputFile = this.inputFile;
1628
+ if (!inputFile || !receiver) return "unknown";
1629
+ // Everything that touches the checker — construction AND every query it
1630
+ // lazily runs — needs native `Map.prototype` iteration methods.
1631
+ return withNativeMapPrototype(() => this.classifyReceiver(inputFile, receiver));
1632
+ }
1633
+
1634
+ /** `resolveReceiverKind`'s body, once the Map-prototype guard is in place. */
1635
+ private classifyReceiver(inputFile: ts.SourceFile, receiver: ts.Expression): ReceiverKind {
1636
+ // The checker is built on first use, then reused for the rest of the encode.
1637
+ const checker = this.checker ?? (this.checker = createChecker(inputFile));
1638
+
1639
+ const classify = (type: ts.Type): ReceiverKind => {
1640
+ // `any`/`unknown`/a type parameter carry no receiver information. The
1641
+ // error type produced by an unresolved name is an `any`, so this arm
1642
+ // covers `nowhere.includes(x)` too.
1643
+ if (type.flags & (ts.TypeFlags.Any | ts.TypeFlags.Unknown | ts.TypeFlags.TypeParameter)) {
1644
+ return "unknown";
1645
+ }
1646
+ // StringLike covers `string`, string literal types, template literal
1647
+ // types and `Uppercase<T>`-style string mappings.
1648
+ if (type.flags & ts.TypeFlags.StringLike) return "string";
1649
+ // `String` (the boxed object type) has no StringLike flag.
1650
+ if (type.getSymbol()?.getName() === "String") return "string";
1651
+ // `T[]`, `ReadonlyArray<T>` and every tuple shape.
1652
+ if (checker.isArrayType(type) || checker.isTupleType(type)) return "array";
1653
+ return "unknown";
1654
+ };
1655
+
1656
+ const type = checker.getTypeAtLocation(receiver);
1657
+ if (!type.isUnion()) return classify(type);
1658
+ // A union resolves only when every member agrees; `string | number[]`
1659
+ // genuinely is ambiguous and must keep warning.
1660
+ const kinds = type.types.map(classify);
1661
+ return kinds.every((k) => k === kinds[0]) ? kinds[0] : "unknown";
1662
+ }
1663
+
1490
1664
  /**
1491
1665
  * Map a JS/TS method name to its Ball std function equivalent.
1492
1666
  * Returns null if no mapping exists (falls through to generic method call).
@@ -1502,6 +1676,7 @@ export class TsEncoder {
1502
1676
  private mapMethodToStd(
1503
1677
  method: string,
1504
1678
  _args: { name: string; value: Expression }[],
1679
+ receiver?: ts.Expression,
1505
1680
  ): { fn: string; module?: string; selfName?: string; extraFields: (a: typeof _args) => FieldValuePair[] } | null {
1506
1681
  /** Name the i-th argument after `names[i]`, falling back to `argN`. */
1507
1682
  const named = (...names: string[]) =>
@@ -1562,40 +1737,52 @@ export class TsEncoder {
1562
1737
  // made the dedicated `toString` mapping below unreachable and produced a
1563
1738
  // corrupt call.function (a function object, not "to_string") in the Ball
1564
1739
  // IR. Found via coverage analysis of the always-dead toString branch.
1740
+ /** The `std_collections` mapping for `method`, in the shape callers want. */
1741
+ const arrayMapping = () => {
1742
+ const m = ARR_METHODS[method];
1743
+ return {
1744
+ fn: m.fn,
1745
+ module: "std_collections",
1746
+ selfName: "list",
1747
+ extraFields: named(...m.args),
1748
+ };
1749
+ };
1750
+
1565
1751
  if (Object.prototype.hasOwnProperty.call(STR_METHODS, method)) {
1566
1752
  const m = STR_METHODS[method];
1567
- // `slice`, `indexOf` and `includes` exist on BOTH String and Array, and
1568
- // this syntax-only encoder (no ts.Program/TypeChecker) resolves them to
1569
- // the STRING mapping because STR_METHODS is consulted first. On an Array
1570
- // receiver that is wrong: `arr.slice(1, 3)` compiles to
1571
- // `arr.substring(1, 3)`, which throws. ENCODER_CARVEOUTS.md documents
1572
- // the ambiguity, but this branch never called `warn()`, so the encode
1573
- // was completely silent even under `{ strictBehaviorAffecting: true }`
1574
- // — contradicting that file's own "every entry here warns" policy.
1575
- // Same mechanism and severity as the ArraySplice warning in encodeCall.
1576
- // Resolving it correctly (rather than merely loudly) needs the TS
1577
- // semantic model tracked by #506.
1753
+ // `slice`, `indexOf` and `includes` exist on BOTH String and Array, so
1754
+ // the table this branch reaches first cannot decide the mapping — the
1755
+ // RECEIVER'S STATIC TYPE does. Before #506 the encoder was syntax-only
1756
+ // (no ts.Program/TypeChecker) and STR_METHODS simply won, so
1757
+ // `arr.slice(1, 3)` compiled to `arr.substring(1, 3)` and threw at
1758
+ // runtime; #525 made that loud but still wrong. `encode()` now builds a
1759
+ // real Program, so ask the checker.
1760
+ //
1761
+ // The warning survives for the receivers the checker CANNOT type (`any`,
1762
+ // an unresolved identifier, a mixed union, a type parameter): guessing
1763
+ // there would trade today's honest warn-loud fallback for a new class of
1764
+ // silent mis-encode, which is strictly worse (Core Invariant: fail loud).
1578
1765
  if (Object.prototype.hasOwnProperty.call(ARR_METHODS, method)) {
1579
- this.warn(
1580
- `\`.${method}(...)\` exists on both String and Array; the syntax-only ` +
1581
- `encoder resolves it to std.${m.fn} (the String mapping), which is ` +
1582
- `wrong for an Array receiver — see ts/encoder/ENCODER_CARVEOUTS.md ` +
1583
- `"Ambiguous without a type checker"`,
1584
- "AmbiguousStringArrayMethod",
1585
- );
1766
+ const kind = this.resolveReceiverKind(receiver);
1767
+ if (kind === "array") return arrayMapping();
1768
+ if (kind === "unknown") {
1769
+ this.warn(
1770
+ `\`.${method}(...)\` exists on both String and Array and the type ` +
1771
+ `checker could not resolve this receiver (\`any\`, an unresolved ` +
1772
+ `name, a mixed union or a type parameter); the encoder falls back ` +
1773
+ `to std.${m.fn} (the String mapping), which is wrong for an Array ` +
1774
+ `receiver — see ts/encoder/ENCODER_CARVEOUTS.md ` +
1775
+ `"Ambiguous without a type checker"`,
1776
+ "AmbiguousStringArrayMethod",
1777
+ );
1778
+ }
1586
1779
  }
1587
1780
  return { fn: m.fn, selfName: "value", extraFields: named(...m.args) };
1588
1781
  }
1589
1782
 
1590
1783
  // Same hasOwnProperty rationale as STR_METHODS above.
1591
1784
  if (Object.prototype.hasOwnProperty.call(ARR_METHODS, method)) {
1592
- const m = ARR_METHODS[method];
1593
- return {
1594
- fn: m.fn,
1595
- module: "std_collections",
1596
- selfName: "list",
1597
- extraFields: named(...m.args),
1598
- };
1785
+ return arrayMapping();
1599
1786
  }
1600
1787
 
1601
1788
  // toString