Skip to content

Commit c2bdec7

Browse files
authored
add fresh* cheatcodes with string args (#16)
1 parent f42ba5f commit c2bdec7

2 files changed

Lines changed: 271 additions & 0 deletions

File tree

src/IKontrolCheatsBase.sol

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ interface KontrolCheatsBase {
2020
function expectCreate2(address,uint256,bytes calldata) external;
2121
// Makes the storage of the given address completely symbolic.
2222
function symbolicStorage(address) external;
23+
// Makes the storage of the given address completely symbolic with specified K variable name.
24+
function symbolicStorage(address, string calldata) external;
25+
// Makes the storage of the given address completely symbolic with specified K variable name.
26+
function setArbitraryStorage(address, string calldata) external;
2327
// Adds an address to the whitelist.
2428
function allowCallsToAddress(address) external;
2529
// Adds an address and a storage slot to the whitelist.
@@ -30,12 +34,20 @@ interface KontrolCheatsBase {
3034
function setGas(uint256) external;
3135
// Returns a symbolic unsigned integer
3236
function freshUInt(uint8) external view returns (uint256);
37+
// Returns a symbolic unsigned integer with specified K variable name.
38+
function freshUInt(uint8, string calldata) external returns (uint256);
3339
// Returns a symbolic boolean value
3440
function freshBool() external view returns (bool);
41+
// Returns a symbolic boolean value with specified K variable name.
42+
function freshBool(string calldata) external returns (bool);
3543
// Returns a symbolic byte array
3644
function freshBytes(uint256) external view returns (bytes memory);
45+
// Returns a symbolic byte array with specified K variable name.
46+
function freshBytes(uint256, string calldata) external returns (bytes memory);
3747
// Returns a symbolic address
3848
function freshAddress() external view returns (address);
49+
// Returns a symbolic address with specified K variable name.
50+
function freshAddress(string calldata) external returns (address);
3951
// Removes a branching condition from the path constraints
4052
function forgetBranch(uint256, ComparisonOperator, uint256) external;
4153
}

src/KontrolCheats.sol

Lines changed: 259 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,4 +272,263 @@ abstract contract KontrolCheats {
272272
function freshSInt8() internal view returns (int8) {
273273
return int8(uint8((kevm.freshUInt(1))));
274274
}
275+
function freshUInt256(string memory var_name) internal returns (uint256) {
276+
return kevm.freshUInt(32, var_name);
277+
}
278+
279+
function freshUInt248(string memory var_name) internal returns (uint248) {
280+
return uint248(kevm.freshUInt(31, var_name));
281+
}
282+
283+
function freshUInt240(string memory var_name) internal returns (uint240) {
284+
return uint240(kevm.freshUInt(30, var_name));
285+
}
286+
287+
function freshUInt232(string memory var_name) internal returns (uint232) {
288+
return uint232(kevm.freshUInt(29, var_name));
289+
}
290+
291+
function freshUInt224(string memory var_name) internal returns (uint224) {
292+
return uint224(kevm.freshUInt(28, var_name));
293+
}
294+
295+
function freshUInt216(string memory var_name) internal returns (uint216) {
296+
return uint216(kevm.freshUInt(27, var_name));
297+
}
298+
299+
function freshUInt208(string memory var_name) internal returns (uint208) {
300+
return uint208(kevm.freshUInt(26, var_name));
301+
}
302+
303+
function freshUInt200(string memory var_name) internal returns (uint200) {
304+
return uint200(kevm.freshUInt(25, var_name));
305+
}
306+
307+
function freshUInt192(string memory var_name) internal returns (uint192) {
308+
return uint192(kevm.freshUInt(24, var_name));
309+
}
310+
311+
function freshUInt184(string memory var_name) internal returns (uint184) {
312+
return uint184(kevm.freshUInt(23, var_name));
313+
}
314+
315+
function freshUInt176(string memory var_name) internal returns (uint176) {
316+
return uint176(kevm.freshUInt(22, var_name));
317+
}
318+
319+
function freshUInt168(string memory var_name) internal returns (uint168) {
320+
return uint168(kevm.freshUInt(21, var_name));
321+
}
322+
323+
function freshUInt160(string memory var_name) internal returns (uint160) {
324+
return uint160(kevm.freshUInt(20, var_name));
325+
}
326+
327+
function freshUInt152(string memory var_name) internal returns (uint152) {
328+
return uint152(kevm.freshUInt(19, var_name));
329+
}
330+
331+
function freshUInt144(string memory var_name) internal returns (uint144) {
332+
return uint144(kevm.freshUInt(18, var_name));
333+
}
334+
335+
function freshUInt136(string memory var_name) internal returns (uint136) {
336+
return uint136(kevm.freshUInt(17, var_name));
337+
}
338+
339+
function freshUInt128(string memory var_name) internal returns (uint128) {
340+
return uint128(kevm.freshUInt(16, var_name));
341+
}
342+
343+
function freshUInt120(string memory var_name) internal returns (uint120) {
344+
return uint120(kevm.freshUInt(15, var_name));
345+
}
346+
347+
function freshUInt112(string memory var_name) internal returns (uint112) {
348+
return uint112(kevm.freshUInt(14, var_name));
349+
}
350+
351+
function freshUInt104(string memory var_name) internal returns (uint104) {
352+
return uint104(kevm.freshUInt(13, var_name));
353+
}
354+
355+
function freshUInt96(string memory var_name) internal returns (uint96) {
356+
return uint96(kevm.freshUInt(12, var_name));
357+
}
358+
359+
function freshUInt88(string memory var_name) internal returns (uint88) {
360+
return uint88(kevm.freshUInt(11, var_name));
361+
}
362+
363+
function freshUInt80(string memory var_name) internal returns (uint80) {
364+
return uint80(kevm.freshUInt(10, var_name));
365+
}
366+
367+
function freshUInt72(string memory var_name) internal returns (uint72) {
368+
return uint72(kevm.freshUInt(9, var_name));
369+
}
370+
371+
function freshUInt64(string memory var_name) internal returns (uint64) {
372+
return uint64(kevm.freshUInt(8, var_name));
373+
}
374+
375+
function freshUInt56(string memory var_name) internal returns (uint56) {
376+
return uint56(kevm.freshUInt(7, var_name));
377+
}
378+
379+
function freshUInt48(string memory var_name) internal returns (uint48) {
380+
return uint48(kevm.freshUInt(6, var_name));
381+
}
382+
383+
function freshUInt40(string memory var_name) internal returns (uint40) {
384+
return uint40(kevm.freshUInt(5, var_name));
385+
}
386+
387+
function freshUInt32(string memory var_name) internal returns (uint32) {
388+
return uint32(kevm.freshUInt(4, var_name));
389+
}
390+
391+
function freshUInt24(string memory var_name) internal returns (uint24) {
392+
return uint24(kevm.freshUInt(3, var_name));
393+
}
394+
395+
function freshUInt16(string memory var_name) internal returns (uint16) {
396+
return uint16(kevm.freshUInt(2, var_name));
397+
}
398+
399+
function freshUInt8(string memory var_name) internal returns (uint8) {
400+
return uint8(kevm.freshUInt(1, var_name));
401+
}
402+
403+
function freshAddress(string memory var_name) internal returns (address) {
404+
return address(uint160(kevm.freshUInt(20, var_name)));
405+
}
406+
407+
function freshSInt256(string memory var_name) internal returns (int256) {
408+
return int256(kevm.freshUInt(32, var_name));
409+
}
410+
411+
function freshSInt248(string memory var_name) internal returns (int248) {
412+
return int248(uint248(kevm.freshUInt(31, var_name)));
413+
}
414+
415+
function freshSInt240(string memory var_name) internal returns (int240) {
416+
return int240(uint240(kevm.freshUInt(30, var_name)));
417+
}
418+
419+
function freshSInt232(string memory var_name) internal returns (int232) {
420+
return int232(uint232(kevm.freshUInt(29, var_name)));
421+
}
422+
423+
function freshSInt224(string memory var_name) internal returns (int224) {
424+
return int224(uint224(kevm.freshUInt(28, var_name)));
425+
}
426+
427+
function freshSInt216(string memory var_name) internal returns (int216) {
428+
return int216(uint216(kevm.freshUInt(27, var_name)));
429+
}
430+
431+
function freshSInt208(string memory var_name) internal returns (int208) {
432+
return int208(uint208(kevm.freshUInt(26, var_name)));
433+
}
434+
435+
function freshSInt200(string memory var_name) internal returns (int200) {
436+
return int200(uint200(kevm.freshUInt(25, var_name)));
437+
}
438+
439+
function freshSInt192(string memory var_name) internal returns (int192) {
440+
return int192(uint192(kevm.freshUInt(24, var_name)));
441+
}
442+
443+
function freshSInt184(string memory var_name) internal returns (int184) {
444+
return int184(uint184(kevm.freshUInt(23, var_name)));
445+
}
446+
447+
function freshSInt176(string memory var_name) internal returns (int176) {
448+
return int176(uint176(kevm.freshUInt(22, var_name)));
449+
}
450+
451+
function freshSInt168(string memory var_name) internal returns (int168) {
452+
return int168(uint168(kevm.freshUInt(21, var_name)));
453+
}
454+
455+
function freshSInt160(string memory var_name) internal returns (int160) {
456+
return int160(uint160(kevm.freshUInt(20, var_name)));
457+
}
458+
459+
function freshSInt152(string memory var_name) internal returns (int152) {
460+
return int152(uint152(kevm.freshUInt(19, var_name)));
461+
}
462+
463+
function freshSInt144(string memory var_name) internal returns (int144) {
464+
return int144(uint144(kevm.freshUInt(18, var_name)));
465+
}
466+
467+
function freshSInt136(string memory var_name) internal returns (int136) {
468+
return int136(uint136(kevm.freshUInt(17, var_name)));
469+
}
470+
471+
function freshSInt128(string memory var_name) internal returns (int128) {
472+
return int128(uint128(kevm.freshUInt(16, var_name)));
473+
}
474+
475+
function freshSInt120(string memory var_name) internal returns (int120) {
476+
return int120(uint120(kevm.freshUInt(15, var_name)));
477+
}
478+
479+
function freshSInt112(string memory var_name) internal returns (int112) {
480+
return int112(uint112(kevm.freshUInt(14, var_name)));
481+
}
482+
483+
function freshSInt104(string memory var_name) internal returns (int104) {
484+
return int104(uint104(kevm.freshUInt(13, var_name)));
485+
}
486+
487+
function freshSInt96(string memory var_name) internal returns (int96) {
488+
return int96(uint96(kevm.freshUInt(12, var_name)));
489+
}
490+
491+
function freshSInt88(string memory var_name) internal returns (int88) {
492+
return int88(uint88(kevm.freshUInt(11, var_name)));
493+
}
494+
495+
function freshSInt80(string memory var_name) internal returns (int80) {
496+
return int80(uint80(kevm.freshUInt(10, var_name)));
497+
}
498+
499+
function freshSInt72(string memory var_name) internal returns (int72) {
500+
return int72(uint72(kevm.freshUInt(9, var_name)));
501+
}
502+
503+
function freshSInt64(string memory var_name) internal returns (int64) {
504+
return int64(uint64(kevm.freshUInt(8, var_name)));
505+
}
506+
507+
function freshSInt56(string memory var_name) internal returns (int56) {
508+
return int56(uint56(kevm.freshUInt(7, var_name)));
509+
}
510+
511+
function freshSInt48(string memory var_name) internal returns (int48) {
512+
return int48(uint48(kevm.freshUInt(6, var_name)));
513+
}
514+
515+
function freshSInt40(string memory var_name) internal returns (int40) {
516+
return int40(uint40(kevm.freshUInt(5, var_name)));
517+
}
518+
519+
function freshSInt32(string memory var_name) internal returns (int32) {
520+
return int32(uint32(kevm.freshUInt(4, var_name)));
521+
}
522+
523+
function freshSInt24(string memory var_name) internal returns (int24) {
524+
return int24(uint24(kevm.freshUInt(3, var_name)));
525+
}
526+
527+
function freshSInt16(string memory var_name) internal returns (int16) {
528+
return int16(uint16(kevm.freshUInt(2, var_name)));
529+
}
530+
531+
function freshSInt8(string memory var_name) internal returns (int8) {
532+
return int8(uint8((kevm.freshUInt(1, var_name))));
533+
}
275534
}

0 commit comments

Comments
 (0)