skittles 1.6.1 → 1.6.3

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 (48) hide show
  1. package/dist/compiler/codegen/expressions.d.ts.map +1 -1
  2. package/dist/compiler/codegen/expressions.js +5 -0
  3. package/dist/compiler/codegen/expressions.js.map +1 -1
  4. package/dist/compiler/codegen/helpers.d.ts.map +1 -1
  5. package/dist/compiler/codegen/helpers.js +74 -0
  6. package/dist/compiler/codegen/helpers.js.map +1 -1
  7. package/dist/compiler/expression-parser.d.ts.map +1 -1
  8. package/dist/compiler/expression-parser.js +196 -33
  9. package/dist/compiler/expression-parser.js.map +1 -1
  10. package/dist/compiler/type-parser.d.ts.map +1 -1
  11. package/dist/compiler/type-parser.js +4 -0
  12. package/dist/compiler/type-parser.js.map +1 -1
  13. package/dist/index.js +0 -0
  14. package/dist/types/ir.d.ts +1 -0
  15. package/dist/types/ir.d.ts.map +1 -1
  16. package/package.json +1 -1
  17. package/dist/commands/test.d.ts +0 -7
  18. package/dist/commands/test.d.ts.map +0 -1
  19. package/dist/commands/test.js +0 -60
  20. package/dist/commands/test.js.map +0 -1
  21. package/dist/stdlib/contracts/access/Ownable.d.ts +0 -33
  22. package/dist/stdlib/contracts/access/Ownable.d.ts.map +0 -1
  23. package/dist/stdlib/contracts/access/Ownable.js +0 -50
  24. package/dist/stdlib/contracts/access/Ownable.js.map +0 -1
  25. package/dist/stdlib/contracts/index.d.ts +0 -22
  26. package/dist/stdlib/contracts/index.d.ts.map +0 -1
  27. package/dist/stdlib/contracts/index.js +0 -25
  28. package/dist/stdlib/contracts/index.js.map +0 -1
  29. package/dist/stdlib/contracts/security/Pausable.d.ts +0 -27
  30. package/dist/stdlib/contracts/security/Pausable.d.ts.map +0 -1
  31. package/dist/stdlib/contracts/security/Pausable.js +0 -41
  32. package/dist/stdlib/contracts/security/Pausable.js.map +0 -1
  33. package/dist/stdlib/contracts/security/ReentrancyGuard.d.ts +0 -17
  34. package/dist/stdlib/contracts/security/ReentrancyGuard.d.ts.map +0 -1
  35. package/dist/stdlib/contracts/security/ReentrancyGuard.js +0 -25
  36. package/dist/stdlib/contracts/security/ReentrancyGuard.js.map +0 -1
  37. package/dist/stdlib/contracts/token/ERC20.d.ts +0 -64
  38. package/dist/stdlib/contracts/token/ERC20.d.ts.map +0 -1
  39. package/dist/stdlib/contracts/token/ERC20.js +0 -117
  40. package/dist/stdlib/contracts/token/ERC20.js.map +0 -1
  41. package/dist/stdlib/contracts/token/ERC721.d.ts +0 -80
  42. package/dist/stdlib/contracts/token/ERC721.d.ts.map +0 -1
  43. package/dist/stdlib/contracts/token/ERC721.js +0 -166
  44. package/dist/stdlib/contracts/token/ERC721.js.map +0 -1
  45. package/dist/testing.d.ts +0 -93
  46. package/dist/testing.d.ts.map +0 -1
  47. package/dist/testing.js +0 -143
  48. package/dist/testing.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../../src/compiler/codegen/expressions.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,YAAY,EAElB,MAAM,sBAAsB,CAAC;AAO9B,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAmCvD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAM5D;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAMpE;AAeD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAwF3D;AAcD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B,GAAG,MAAM,GAAG,IAAI,CAuHhB"}
1
+ {"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../../src/compiler/codegen/expressions.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,YAAY,EAElB,MAAM,sBAAsB,CAAC;AAO9B,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAmCvD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAM5D;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAMpE;AAeD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CA2F3D;AAcD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B,GAAG,MAAM,GAAG,IAAI,CAyHhB"}
@@ -139,6 +139,9 @@ export function generateExpression(expr) {
139
139
  const values = expr.properties
140
140
  .map((p) => generateExpression(p.value))
141
141
  .join(", ");
142
+ if (expr.structName) {
143
+ return `${expr.structName}(${values})`;
144
+ }
142
145
  return values;
143
146
  }
144
147
  case "tuple-literal":
@@ -202,6 +205,8 @@ export function tryGenerateBuiltinCall(expr) {
202
205
  return `${expr.typeArgs[0].structName}(${args})`;
203
206
  }
204
207
  throw new Error("Contract<T>() requires a contract interface type argument, e.g. Contract<IToken>(address)");
208
+ case "Number":
209
+ return `uint256(${args})`;
205
210
  case "string.concat":
206
211
  return `string.concat(${args})`;
207
212
  case "bytes.concat":
@@ -1 +1 @@
1
- {"version":3,"file":"expressions.js","sourceRoot":"","sources":["../../../src/compiler/codegen/expressions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expressions.js","sourceRoot":"","sources":["../../../src/compiler/codegen/expressions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/compiler/codegen/helpers.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,MAAM,EAAE,CAAA;CAAE,CAoQ1E,CAAC;AAEF,eAAO,MAAM,oBAAoB,aAoB/B,CAAC;AAEH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,EAChC,WAAW,GAAG,CAAC,MAAM,CAAC,KACrB,OACyE,CAAC;AAO7E,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,EAC/D,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EACzC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,GACrB,IAAI,CA8JN"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/compiler/codegen/helpers.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,MAAM,EAAE,CAAA;CAAE,CAoQ1E,CAAC;AAEF,eAAO,MAAM,oBAAoB,aAoB/B,CAAC;AAEH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,EAChC,WAAW,GAAG,CAAC,MAAM,CAAC,KACrB,OACyE,CAAC;AAO7E,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,EAC/D,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EACzC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,GACrB,IAAI,CAkPN"}
@@ -433,6 +433,80 @@ export function emitHelperFunctions(parts, addOrigin, functionOrigins, ancestors
433
433
  ` }`,
434
434
  ]);
435
435
  }
436
+ // Memory-based variants for chained array operations (intermediate results are memory arrays)
437
+ const memEqCheck = useHashEq
438
+ ? `keccak256(abi.encodePacked(arr[i])) == keccak256(abi.encodePacked(value))`
439
+ : `arr[i] == value`;
440
+ if (method === "memIncludes" && needsHelper(`_arrMemIncludes_${suffix}`, true)) {
441
+ emitHelper(`_arrMemIncludes_${suffix}`, [
442
+ ` function _arrMemIncludes_${suffix}(${solType}[] memory arr, ${solType} ${memAnnotation}value) internal pure returns (bool) {`,
443
+ ` for (uint256 i = 0; i < arr.length; i++) {`,
444
+ ` if (${memEqCheck}) return true;`,
445
+ ` }`,
446
+ ` return false;`,
447
+ ` }`,
448
+ ]);
449
+ }
450
+ if (method === "memIndexOf" && needsHelper(`_arrMemIndexOf_${suffix}`, true)) {
451
+ emitHelper(`_arrMemIndexOf_${suffix}`, [
452
+ ` function _arrMemIndexOf_${suffix}(${solType}[] memory arr, ${solType} ${memAnnotation}value) internal pure returns (uint256) {`,
453
+ ` for (uint256 i = 0; i < arr.length; i++) {`,
454
+ ` if (${memEqCheck}) return i;`,
455
+ ` }`,
456
+ ` return type(uint256).max;`,
457
+ ` }`,
458
+ ]);
459
+ }
460
+ if (method === "memLastIndexOf" &&
461
+ needsHelper(`_arrMemLastIndexOf_${suffix}`, true)) {
462
+ emitHelper(`_arrMemLastIndexOf_${suffix}`, [
463
+ ` function _arrMemLastIndexOf_${suffix}(${solType}[] memory arr, ${solType} ${memAnnotation}value) internal pure returns (uint256) {`,
464
+ ` for (uint256 i = arr.length; i > 0; i--) {`,
465
+ ` if (${memEqCheck.replace(/arr\[i\]/g, "arr[i - 1]")}) return i - 1;`,
466
+ ` }`,
467
+ ` return type(uint256).max;`,
468
+ ` }`,
469
+ ]);
470
+ }
471
+ if (method === "memReverse" && needsHelper(`_arrMemReverse_${suffix}`, true)) {
472
+ emitHelper(`_arrMemReverse_${suffix}`, [
473
+ ` function _arrMemReverse_${suffix}(${solType}[] memory arr) internal pure {`,
474
+ ` uint256 len = arr.length;`,
475
+ ` for (uint256 i = 0; i < len / 2; i++) {`,
476
+ ` ${solType} ${memAnnotation}temp = arr[i];`,
477
+ ` arr[i] = arr[len - 1 - i];`,
478
+ ` arr[len - 1 - i] = temp;`,
479
+ ` }`,
480
+ ` }`,
481
+ ]);
482
+ }
483
+ if (method === "memSlice" && needsHelper(`_arrMemSlice_${suffix}`, true)) {
484
+ emitHelper(`_arrMemSlice_${suffix}`, [
485
+ ` function _arrMemSlice_${suffix}(${solType}[] memory arr, uint256 start, uint256 end) internal pure returns (${solType}[] memory) {`,
486
+ ` if (end > arr.length) end = arr.length;`,
487
+ ` require(start <= end, "invalid slice range");`,
488
+ ` ${solType}[] memory result = new ${solType}[](end - start);`,
489
+ ` for (uint256 i = start; i < end; i++) {`,
490
+ ` result[i - start] = arr[i];`,
491
+ ` }`,
492
+ ` return result;`,
493
+ ` }`,
494
+ ]);
495
+ }
496
+ if (method === "memConcat" && needsHelper(`_arrMemConcat_${suffix}`, true)) {
497
+ emitHelper(`_arrMemConcat_${suffix}`, [
498
+ ` function _arrMemConcat_${suffix}(${solType}[] memory arr, ${solType}[] memory other) internal pure returns (${solType}[] memory) {`,
499
+ ` ${solType}[] memory result = new ${solType}[](arr.length + other.length);`,
500
+ ` for (uint256 i = 0; i < arr.length; i++) {`,
501
+ ` result[i] = arr[i];`,
502
+ ` }`,
503
+ ` for (uint256 i = 0; i < other.length; i++) {`,
504
+ ` result[arr.length + i] = other[i];`,
505
+ ` }`,
506
+ ` return result;`,
507
+ ` }`,
508
+ ]);
509
+ }
436
510
  }
437
511
  }
438
512
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/compiler/codegen/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/compiler/codegen/helpers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"expression-parser.d.ts","sourceRoot":"","sources":["../../src/compiler/expression-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EACL,KAAK,UAAU,EAMhB,MAAM,mBAAmB,CAAC;AA6C3B,wBAAgB,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,GAAG,UAAU,CA8hC/D;AAgdD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,GAAG,OAAO,CAalE"}
1
+ {"version":3,"file":"expression-parser.d.ts","sourceRoot":"","sources":["../../src/compiler/expression-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EACL,KAAK,UAAU,EAMhB,MAAM,mBAAmB,CAAC;AA6C3B,wBAAgB,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,GAAG,UAAU,CAoqC/D;AAigBD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,GAAG,OAAO,CAalE"}
@@ -117,11 +117,20 @@ export function parseExpression(node) {
117
117
  }
118
118
  const operator = getBinaryOperator(opKind);
119
119
  if (isAssignmentOperator(opKind)) {
120
+ const target = parseExpression(node.left);
121
+ const value = parseExpression(node.right);
122
+ // Annotate object literal with struct name when assigning to a struct-typed target
123
+ if (value.kind === "object-literal" && !value.structName) {
124
+ const targetType = inferType(target, ctx.currentVarTypes);
125
+ if (targetType?.kind === SkittlesTypeKind.Struct && targetType.structName) {
126
+ value.structName = targetType.structName;
127
+ }
128
+ }
120
129
  return {
121
130
  kind: "assignment",
122
131
  operator,
123
- target: parseExpression(node.left),
124
- value: parseExpression(node.right),
132
+ target,
133
+ value,
125
134
  };
126
135
  }
127
136
  const left = parseExpression(node.left);
@@ -201,13 +210,31 @@ export function parseExpression(node) {
201
210
  right: defaultExpr,
202
211
  };
203
212
  }
204
- // Array method calls on storage arrays
213
+ // Array method calls on storage arrays and chained array calls
205
214
  if (ts.isPropertyAccessExpression(node.expression) &&
206
215
  isArrayLikeReceiver(node.expression.expression)) {
207
216
  const methodName = node.expression.name.text;
208
- const elementType = resolveArrayElementType(node.expression.expression);
217
+ const isChainedCall = ts.isCallExpression(node.expression.expression);
218
+ // Parse receiver first so chained helpers are generated before we resolve types
209
219
  const receiverExpr = parseExpression(node.expression.expression);
220
+ let elementType = resolveArrayElementType(node.expression.expression);
221
+ if (elementType === undefined && isChainedCall) {
222
+ elementType = resolveChainedElementType(receiverExpr);
223
+ }
210
224
  const typeSuffix = getArrayHelperSuffix(elementType);
225
+ // For chained calls, cache the intermediate array result in a local variable
226
+ // to avoid re-executing the inner helper on every access.
227
+ let effectiveArrayExpr = receiverExpr;
228
+ let chainCacheStmts = [];
229
+ if (isChainedCall) {
230
+ const cacheName = "__sk_arr";
231
+ const arrType = {
232
+ kind: SkittlesTypeKind.Array,
233
+ valueType: elementType ?? UINT256_TYPE,
234
+ };
235
+ chainCacheStmts = [mkVarDecl(cacheName, arrType, receiverExpr)];
236
+ effectiveArrayExpr = mkId(cacheName);
237
+ }
211
238
  const NON_COMPARABLE_KINDS = new Set([
212
239
  SkittlesTypeKind.Struct,
213
240
  SkittlesTypeKind.Array,
@@ -215,44 +242,50 @@ export function parseExpression(node) {
215
242
  SkittlesTypeKind.Mapping,
216
243
  ]);
217
244
  const isNonComparable = elementType != null && NON_COMPARABLE_KINDS.has(elementType.kind);
218
- // includes(value) → _arrIncludes_T(arr, value)
245
+ // includes(value) → _arrIncludes_T(arr, value) or _arrMemIncludes_T for chained calls
219
246
  if (methodName === "includes" && node.arguments.length === 1) {
220
247
  if (isNonComparable)
221
248
  throw new Error(`Unsupported: .includes() on ${typeSuffix}[] arrays. Element type does not support equality in Solidity. Use .some() with a callback instead.`);
222
- ctx.neededArrayHelpers.add(`includes_${typeSuffix}`);
249
+ const helperPrefix = isChainedCall ? "memIncludes" : "includes";
250
+ const helperName = isChainedCall ? `_arrMemIncludes_${typeSuffix}` : `_arrIncludes_${typeSuffix}`;
251
+ ctx.neededArrayHelpers.add(`${helperPrefix}_${typeSuffix}`);
223
252
  return {
224
253
  kind: "call",
225
254
  callee: {
226
255
  kind: "identifier",
227
- name: `_arrIncludes_${typeSuffix}`,
256
+ name: helperName,
228
257
  },
229
258
  args: [receiverExpr, parseExpression(node.arguments[0])],
230
259
  };
231
260
  }
232
- // indexOf(value) → _arrIndexOf_T(arr, value)
261
+ // indexOf(value) → _arrIndexOf_T(arr, value) or _arrMemIndexOf_T for chained calls
233
262
  if (methodName === "indexOf" && node.arguments.length === 1) {
234
263
  if (isNonComparable)
235
264
  throw new Error(`Unsupported: .indexOf() on ${typeSuffix}[] arrays. Element type does not support equality in Solidity. Use .findIndex() with a callback instead.`);
236
- ctx.neededArrayHelpers.add(`indexOf_${typeSuffix}`);
265
+ const helperPrefix = isChainedCall ? "memIndexOf" : "indexOf";
266
+ const helperName = isChainedCall ? `_arrMemIndexOf_${typeSuffix}` : `_arrIndexOf_${typeSuffix}`;
267
+ ctx.neededArrayHelpers.add(`${helperPrefix}_${typeSuffix}`);
237
268
  return {
238
269
  kind: "call",
239
270
  callee: {
240
271
  kind: "identifier",
241
- name: `_arrIndexOf_${typeSuffix}`,
272
+ name: helperName,
242
273
  },
243
274
  args: [receiverExpr, parseExpression(node.arguments[0])],
244
275
  };
245
276
  }
246
- // lastIndexOf(value) → _arrLastIndexOf_T(arr, value)
277
+ // lastIndexOf(value) → _arrLastIndexOf_T(arr, value) or _arrMemLastIndexOf_T for chained calls
247
278
  if (methodName === "lastIndexOf" && node.arguments.length === 1) {
248
279
  if (isNonComparable)
249
280
  throw new Error(`Unsupported: .lastIndexOf() on ${typeSuffix}[] arrays. Element type does not support equality in Solidity.`);
250
- ctx.neededArrayHelpers.add(`lastIndexOf_${typeSuffix}`);
281
+ const helperPrefix = isChainedCall ? "memLastIndexOf" : "lastIndexOf";
282
+ const helperName = isChainedCall ? `_arrMemLastIndexOf_${typeSuffix}` : `_arrLastIndexOf_${typeSuffix}`;
283
+ ctx.neededArrayHelpers.add(`${helperPrefix}_${typeSuffix}`);
251
284
  return {
252
285
  kind: "call",
253
286
  callee: {
254
287
  kind: "identifier",
255
- name: `_arrLastIndexOf_${typeSuffix}`,
288
+ name: helperName,
256
289
  },
257
290
  args: [receiverExpr, parseExpression(node.arguments[0])],
258
291
  };
@@ -272,7 +305,7 @@ export function parseExpression(node) {
272
305
  }
273
306
  return mkElem(receiverExpr, parseExpression(indexArg));
274
307
  }
275
- // slice(start?, end?) → _arrSlice_T(arr, start, end)
308
+ // slice(start?, end?) → _arrSlice_T(arr, start, end) or _arrMemSlice_T for chained calls
276
309
  if (methodName === "slice") {
277
310
  if (node.arguments.length > 2)
278
311
  throw new Error("Array .slice() accepts at most 2 arguments: .slice(start?, end?).");
@@ -282,7 +315,9 @@ export function parseExpression(node) {
282
315
  throw new Error("Array .slice() does not support negative indices. Solidity uses uint256 for array indices.");
283
316
  }
284
317
  }
285
- ctx.neededArrayHelpers.add(`slice_${typeSuffix}`);
318
+ const sliceHelperPrefix = isChainedCall ? "memSlice" : "slice";
319
+ const sliceHelperName = isChainedCall ? `_arrMemSlice_${typeSuffix}` : `_arrSlice_${typeSuffix}`;
320
+ ctx.neededArrayHelpers.add(`${sliceHelperPrefix}_${typeSuffix}`);
286
321
  const startArg = node.arguments.length >= 1
287
322
  ? parseExpression(node.arguments[0])
288
323
  : mkNum("0");
@@ -293,15 +328,16 @@ export function parseExpression(node) {
293
328
  kind: "call",
294
329
  callee: {
295
330
  kind: "identifier",
296
- name: `_arrSlice_${typeSuffix}`,
331
+ name: sliceHelperName,
297
332
  },
298
333
  args: [receiverExpr, startArg, endArg],
299
334
  };
300
335
  }
301
- // concat(other) → _arrConcat_T(arr, other)
336
+ // concat(other) → _arrConcat_T(arr, other) or _arrMemConcat_T for chained calls
302
337
  if (methodName === "concat" && node.arguments.length === 1) {
303
338
  const otherArg = node.arguments[0];
304
- if (ts.isPropertyAccessExpression(otherArg) &&
339
+ if (!isChainedCall &&
340
+ ts.isPropertyAccessExpression(otherArg) &&
305
341
  otherArg.expression.kind === ts.SyntaxKind.ThisKeyword) {
306
342
  const otherType = ctx.currentVarTypes.get(otherArg.name.text);
307
343
  if (otherType?.kind === SkittlesTypeKind.Array) {
@@ -309,12 +345,14 @@ export function parseExpression(node) {
309
345
  "Use .slice() to copy to memory first: this.a.concat(this.b.slice(0, this.b.length)).");
310
346
  }
311
347
  }
312
- ctx.neededArrayHelpers.add(`concat_${typeSuffix}`);
348
+ const concatHelperPrefix = isChainedCall ? "memConcat" : "concat";
349
+ const concatHelperName = isChainedCall ? `_arrMemConcat_${typeSuffix}` : `_arrConcat_${typeSuffix}`;
350
+ ctx.neededArrayHelpers.add(`${concatHelperPrefix}_${typeSuffix}`);
313
351
  return {
314
352
  kind: "call",
315
353
  callee: {
316
354
  kind: "identifier",
317
- name: `_arrConcat_${typeSuffix}`,
355
+ name: concatHelperName,
318
356
  },
319
357
  args: [receiverExpr, parseExpression(otherArg)],
320
358
  };
@@ -371,7 +409,11 @@ export function parseExpression(node) {
371
409
  args: [],
372
410
  });
373
411
  if (methodName === "filter" && condExpr) {
374
- const helper = generateFilterHelper(receiverExpr, elementType, callback.paramName, condExpr);
412
+ const helper = generateFilterHelper(effectiveArrayExpr, elementType, callback.paramName, condExpr);
413
+ if (isChainedCall) {
414
+ helper.body = [...chainCacheStmts, ...helper.body];
415
+ helper.stateMutability = inferStateMutability(helper.body, ctx.currentVarTypes);
416
+ }
375
417
  ctx.generatedArrayFunctions.push(helper);
376
418
  return mkHelperCall(helper.name);
377
419
  }
@@ -380,27 +422,47 @@ export function parseExpression(node) {
380
422
  if (callback.paramName && elementType)
381
423
  callbackEnv.set(callback.paramName, elementType);
382
424
  const resultType = inferType(condExpr, callbackEnv);
383
- const helper = generateMapHelper(receiverExpr, elementType, callback.paramName, condExpr, resultType);
425
+ const helper = generateMapHelper(effectiveArrayExpr, elementType, callback.paramName, condExpr, resultType);
426
+ if (isChainedCall) {
427
+ helper.body = [...chainCacheStmts, ...helper.body];
428
+ helper.stateMutability = inferStateMutability(helper.body, ctx.currentVarTypes);
429
+ }
384
430
  ctx.generatedArrayFunctions.push(helper);
385
431
  return mkHelperCall(helper.name);
386
432
  }
387
433
  if (methodName === "some" && condExpr) {
388
- const helper = generateSomeEveryHelper("some", receiverExpr, elementType, callback.paramName, condExpr);
434
+ const helper = generateSomeEveryHelper("some", effectiveArrayExpr, elementType, callback.paramName, condExpr);
435
+ if (isChainedCall) {
436
+ helper.body = [...chainCacheStmts, ...helper.body];
437
+ helper.stateMutability = inferStateMutability(helper.body, ctx.currentVarTypes);
438
+ }
389
439
  ctx.generatedArrayFunctions.push(helper);
390
440
  return mkHelperCall(helper.name);
391
441
  }
392
442
  if (methodName === "every" && condExpr) {
393
- const helper = generateSomeEveryHelper("every", receiverExpr, elementType, callback.paramName, condExpr);
443
+ const helper = generateSomeEveryHelper("every", effectiveArrayExpr, elementType, callback.paramName, condExpr);
444
+ if (isChainedCall) {
445
+ helper.body = [...chainCacheStmts, ...helper.body];
446
+ helper.stateMutability = inferStateMutability(helper.body, ctx.currentVarTypes);
447
+ }
394
448
  ctx.generatedArrayFunctions.push(helper);
395
449
  return mkHelperCall(helper.name);
396
450
  }
397
451
  if (methodName === "find" && condExpr) {
398
- const helper = generateFindHelper(receiverExpr, elementType, callback.paramName, condExpr);
452
+ const helper = generateFindHelper(effectiveArrayExpr, elementType, callback.paramName, condExpr);
453
+ if (isChainedCall) {
454
+ helper.body = [...chainCacheStmts, ...helper.body];
455
+ helper.stateMutability = inferStateMutability(helper.body, ctx.currentVarTypes);
456
+ }
399
457
  ctx.generatedArrayFunctions.push(helper);
400
458
  return mkHelperCall(helper.name);
401
459
  }
402
460
  if (methodName === "findIndex" && condExpr) {
403
- const helper = generateFindIndexHelper(receiverExpr, elementType, callback.paramName, condExpr);
461
+ const helper = generateFindIndexHelper(effectiveArrayExpr, elementType, callback.paramName, condExpr);
462
+ if (isChainedCall) {
463
+ helper.body = [...chainCacheStmts, ...helper.body];
464
+ helper.stateMutability = inferStateMutability(helper.body, ctx.currentVarTypes);
465
+ }
404
466
  ctx.generatedArrayFunctions.push(helper);
405
467
  return mkHelperCall(helper.name);
406
468
  }
@@ -411,18 +473,23 @@ export function parseExpression(node) {
411
473
  throw new Error("Array .reduce() requires an initial value as the second argument.");
412
474
  const initialValue = parseExpression(node.arguments[1]);
413
475
  const accType = inferType(initialValue, ctx.currentVarTypes);
414
- const helper = generateReduceHelper(receiverExpr, elementType, callback.paramName, callback.secondParamName, condExpr, initialValue, accType);
476
+ const helper = generateReduceHelper(effectiveArrayExpr, elementType, callback.paramName, callback.secondParamName, condExpr, initialValue, accType);
477
+ if (isChainedCall) {
478
+ helper.body = [...chainCacheStmts, ...helper.body];
479
+ helper.stateMutability = inferStateMutability(helper.body, ctx.currentVarTypes);
480
+ }
415
481
  ctx.generatedArrayFunctions.push(helper);
416
482
  return mkHelperCall(helper.name);
417
483
  }
418
- // sort: in-place insertion sort using comparator (statement-only like reverse)
484
+ // sort: in-place insertion sort using comparator (statement-only for storage, returns array when chained)
419
485
  if (methodName === "sort" && condExpr) {
420
486
  if (!callback.secondParamName)
421
487
  throw new Error("Array .sort() callback must have two parameters: (a, b) => expression.");
422
488
  if (callback.paramName === callback.secondParamName) {
423
489
  throw new Error("Array .sort() callback parameters must have distinct names, e.g. (a, b) => expression. Using the same identifier for both parameters would generate invalid Solidity.");
424
490
  }
425
- if (node.parent && !ts.isExpressionStatement(node.parent)) {
491
+ // Only enforce statement-only for non-chained (storage array) usage
492
+ if (!isChainedCall && node.parent && !ts.isExpressionStatement(node.parent)) {
426
493
  throw new Error("Array .sort() modifies the array in place and does not return a value. Use it as a standalone statement.");
427
494
  }
428
495
  const sortElemKind = elementType?.kind;
@@ -451,7 +518,17 @@ export function parseExpression(node) {
451
518
  comparatorKind !== "int256") {
452
519
  throw new Error(`Array .sort() comparator must return an int256 or uint256. Got ${comparatorKind} instead.`);
453
520
  }
454
- const helper = generateSortHelper(receiverExpr, elementType, callback.paramName, callback.secondParamName, condExpr);
521
+ const helper = generateSortHelper(effectiveArrayExpr, elementType, callback.paramName, callback.secondParamName, condExpr);
522
+ // For chained calls, cache the source array and return it after sorting
523
+ if (isChainedCall) {
524
+ const arrType = {
525
+ kind: SkittlesTypeKind.Array,
526
+ valueType: elementType ?? UINT256_TYPE,
527
+ };
528
+ helper.body = [...chainCacheStmts, ...helper.body, mkReturn(mkId("__sk_arr"))];
529
+ helper.returnType = arrType;
530
+ helper.stateMutability = inferStateMutability(helper.body, ctx.currentVarTypes);
531
+ }
455
532
  ctx.generatedArrayFunctions.push(helper);
456
533
  return mkHelperCall(helper.name);
457
534
  }
@@ -460,7 +537,7 @@ export function parseExpression(node) {
460
537
  const helperName = `_forEach_${ctx.arrayMethodCounter++}`;
461
538
  const elemType = elementType ?? UINT256_TYPE;
462
539
  const forBody = [
463
- mkVarDecl(callback.paramName, elemType, mkElem(receiverExpr, mkId("__sk_i"))),
540
+ mkVarDecl(callback.paramName, elemType, mkElem(effectiveArrayExpr, mkId("__sk_i"))),
464
541
  ];
465
542
  if (callback.bodyExpr) {
466
543
  forBody.push(mkExprStmt(callback.bodyExpr));
@@ -469,7 +546,8 @@ export function parseExpression(node) {
469
546
  forBody.push(...callback.bodyStmts);
470
547
  }
471
548
  const body = [
472
- mkForLoop("__sk_i", receiverExpr, forBody),
549
+ ...(isChainedCall ? chainCacheStmts : []),
550
+ mkForLoop("__sk_i", effectiveArrayExpr, forBody),
473
551
  ];
474
552
  const helperMutability = inferStateMutability(body, ctx.currentVarTypes);
475
553
  const helper = {
@@ -503,9 +581,43 @@ export function parseExpression(node) {
503
581
  }
504
582
  // reverse() → _arrReverse_T(arr)
505
583
  if (methodName === "reverse" && node.arguments.length === 0) {
506
- if (node.parent && !ts.isExpressionStatement(node.parent)) {
584
+ // Only enforce statement-only for non-chained (storage array) usage
585
+ if (!isChainedCall && node.parent && !ts.isExpressionStatement(node.parent)) {
507
586
  throw new Error("Array .reverse() modifies the array in place and does not return a value. Use it as a standalone statement.");
508
587
  }
588
+ if (isChainedCall) {
589
+ // For chained calls, generate a helper that caches the array, reverses it, and returns it
590
+ const helperName = `_reverse_${ctx.arrayMethodCounter++}`;
591
+ const elemType = elementType ?? UINT256_TYPE;
592
+ const arrType = { kind: SkittlesTypeKind.Array, valueType: elemType };
593
+ ctx.neededArrayHelpers.add(`memReverse_${typeSuffix}`);
594
+ const body = [
595
+ ...chainCacheStmts,
596
+ mkExprStmt({
597
+ kind: "call",
598
+ callee: { kind: "identifier", name: `_arrMemReverse_${typeSuffix}` },
599
+ args: [effectiveArrayExpr],
600
+ }),
601
+ mkReturn(effectiveArrayExpr),
602
+ ];
603
+ const helper = {
604
+ name: helperName,
605
+ parameters: [],
606
+ returnType: arrType,
607
+ visibility: "private",
608
+ stateMutability: inferStateMutability(body, ctx.currentVarTypes),
609
+ isVirtual: false,
610
+ isOverride: false,
611
+ body,
612
+ };
613
+ ctx.generatedArrayFunctions.push(helper);
614
+ const mkHelperCall = (name) => ({
615
+ kind: "call",
616
+ callee: mkProp(mkId("this"), name),
617
+ args: [],
618
+ });
619
+ return mkHelperCall(helperName);
620
+ }
509
621
  ctx.neededArrayHelpers.add(`reverse_${typeSuffix}`);
510
622
  return {
511
623
  kind: "call",
@@ -595,6 +707,20 @@ export function parseExpression(node) {
595
707
  callee: parseExpression(node.expression),
596
708
  args: node.arguments.map(parseExpression),
597
709
  };
710
+ // Annotate object literal arguments with struct name for push calls
711
+ if (callExpr.callee.kind === "property-access" &&
712
+ callExpr.callee.property === "push") {
713
+ const arrayType = inferType(callExpr.callee.object, ctx.currentVarTypes);
714
+ if (arrayType?.kind === SkittlesTypeKind.Array &&
715
+ arrayType.valueType?.kind === SkittlesTypeKind.Struct &&
716
+ arrayType.valueType.structName) {
717
+ for (const arg of callExpr.args) {
718
+ if (arg.kind === "object-literal" && !arg.structName) {
719
+ arg.structName = arrayType.valueType.structName;
720
+ }
721
+ }
722
+ }
723
+ }
598
724
  if (node.typeArguments && node.typeArguments.length > 0) {
599
725
  const firstTypeArg = node.typeArguments[0];
600
726
  if (ts.isTupleTypeNode(firstTypeArg)) {
@@ -816,6 +942,8 @@ export function parseExpression(node) {
816
942
  }
817
943
  throw new Error(`Unsupported expression: ${ts.SyntaxKind[node.kind]}`);
818
944
  }
945
+ // Methods that return a new array (used for chaining detection)
946
+ const ARRAY_RETURNING_METHODS = new Set(["filter", "map", "slice", "concat", "sort", "reverse"]);
819
947
  function isArrayLikeReceiver(node) {
820
948
  if (ts.isPropertyAccessExpression(node) &&
821
949
  node.expression.kind === ts.SyntaxKind.ThisKeyword) {
@@ -823,6 +951,14 @@ function isArrayLikeReceiver(node) {
823
951
  const type = ctx.currentVarTypes.get(name);
824
952
  return type?.kind === SkittlesTypeKind.Array;
825
953
  }
954
+ // Chained array method call: e.g., this.values.filter(fn) or this.values.filter(fn).map(fn2)
955
+ if (ts.isCallExpression(node) &&
956
+ ts.isPropertyAccessExpression(node.expression)) {
957
+ const methodName = node.expression.name.text;
958
+ if (ARRAY_RETURNING_METHODS.has(methodName)) {
959
+ return isArrayLikeReceiver(node.expression.expression);
960
+ }
961
+ }
826
962
  return false;
827
963
  }
828
964
  function resolveArrayElementType(node) {
@@ -834,6 +970,33 @@ function resolveArrayElementType(node) {
834
970
  return type.valueType;
835
971
  }
836
972
  }
973
+ // Chained: filter/slice/concat preserve the element type from the inner array
974
+ if (ts.isCallExpression(node) &&
975
+ ts.isPropertyAccessExpression(node.expression)) {
976
+ const methodName = node.expression.name.text;
977
+ if (["filter", "slice", "concat"].includes(methodName)) {
978
+ return resolveArrayElementType(node.expression.expression);
979
+ }
980
+ // map: element type changes — resolved later via resolveChainedElementType
981
+ }
982
+ return undefined;
983
+ }
984
+ /**
985
+ * Resolve the element type of a chained array call from its generated helper function.
986
+ * This is used after parseExpression has processed the inner chain step,
987
+ * so the helper function is already registered in ctx.generatedArrayFunctions.
988
+ */
989
+ function resolveChainedElementType(expr) {
990
+ if (expr.kind === "call" &&
991
+ expr.callee.kind === "property-access" &&
992
+ expr.callee.object.kind === "identifier" &&
993
+ expr.callee.object.name === "this") {
994
+ const helperName = expr.callee.property;
995
+ const helper = ctx.generatedArrayFunctions.find((f) => f.name === helperName);
996
+ if (helper?.returnType?.kind === SkittlesTypeKind.Array) {
997
+ return helper.returnType.valueType;
998
+ }
999
+ }
837
1000
  return undefined;
838
1001
  }
839
1002
  function resolveSpreadElementType(node) {