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.
- package/dist/compiler/codegen/expressions.d.ts.map +1 -1
- package/dist/compiler/codegen/expressions.js +5 -0
- package/dist/compiler/codegen/expressions.js.map +1 -1
- package/dist/compiler/codegen/helpers.d.ts.map +1 -1
- package/dist/compiler/codegen/helpers.js +74 -0
- package/dist/compiler/codegen/helpers.js.map +1 -1
- package/dist/compiler/expression-parser.d.ts.map +1 -1
- package/dist/compiler/expression-parser.js +196 -33
- package/dist/compiler/expression-parser.js.map +1 -1
- package/dist/compiler/type-parser.d.ts.map +1 -1
- package/dist/compiler/type-parser.js +4 -0
- package/dist/compiler/type-parser.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/types/ir.d.ts +1 -0
- package/dist/types/ir.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/commands/test.d.ts +0 -7
- package/dist/commands/test.d.ts.map +0 -1
- package/dist/commands/test.js +0 -60
- package/dist/commands/test.js.map +0 -1
- package/dist/stdlib/contracts/access/Ownable.d.ts +0 -33
- package/dist/stdlib/contracts/access/Ownable.d.ts.map +0 -1
- package/dist/stdlib/contracts/access/Ownable.js +0 -50
- package/dist/stdlib/contracts/access/Ownable.js.map +0 -1
- package/dist/stdlib/contracts/index.d.ts +0 -22
- package/dist/stdlib/contracts/index.d.ts.map +0 -1
- package/dist/stdlib/contracts/index.js +0 -25
- package/dist/stdlib/contracts/index.js.map +0 -1
- package/dist/stdlib/contracts/security/Pausable.d.ts +0 -27
- package/dist/stdlib/contracts/security/Pausable.d.ts.map +0 -1
- package/dist/stdlib/contracts/security/Pausable.js +0 -41
- package/dist/stdlib/contracts/security/Pausable.js.map +0 -1
- package/dist/stdlib/contracts/security/ReentrancyGuard.d.ts +0 -17
- package/dist/stdlib/contracts/security/ReentrancyGuard.d.ts.map +0 -1
- package/dist/stdlib/contracts/security/ReentrancyGuard.js +0 -25
- package/dist/stdlib/contracts/security/ReentrancyGuard.js.map +0 -1
- package/dist/stdlib/contracts/token/ERC20.d.ts +0 -64
- package/dist/stdlib/contracts/token/ERC20.d.ts.map +0 -1
- package/dist/stdlib/contracts/token/ERC20.js +0 -117
- package/dist/stdlib/contracts/token/ERC20.js.map +0 -1
- package/dist/stdlib/contracts/token/ERC721.d.ts +0 -80
- package/dist/stdlib/contracts/token/ERC721.d.ts.map +0 -1
- package/dist/stdlib/contracts/token/ERC721.js +0 -166
- package/dist/stdlib/contracts/token/ERC721.js.map +0 -1
- package/dist/testing.d.ts +0 -93
- package/dist/testing.d.ts.map +0 -1
- package/dist/testing.js +0 -143
- 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,
|
|
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,
|
|
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,
|
|
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
|
|
124
|
-
value
|
|
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
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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:
|
|
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 (
|
|
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
|
-
|
|
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:
|
|
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(
|
|
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(
|
|
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",
|
|
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",
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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) {
|